Πίνακας περιεχομένων:
- Βήμα 1: Δημιουργία σήματος Pwm για 50Hz
- Βήμα 2: Πρόγραμμα Arduino για μεταβλητό κύκλο εργασίας
- Βήμα 3: Εναλλαγή σε ακροδέκτες Arduino 50Hz
- Βήμα 4: Οδήγηση σε γέφυρα H και φιλτράρισμα του σήματος Pwm
Βίντεο: Arduino Sinewave για μετατροπείς: 4 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:37
Σε αυτό το έργο έχω δημιουργήσει ένα σήμα SPWM (ημιτονοειδές παλμό ευρείας διαμόρφωσης) από δύο ψηφιακές εξόδους arduino pwm.
Επειδή για να φτιάξω ένα τέτοιο πρόγραμμα πρέπει να μιλήσω για πολλές άλλες λειτουργίες και ιδιότητες του arduino το πλήρες έργο, συμπεριλαμβανομένων των εικόνων παλμογράφων και για διαφορετικές συχνότητες, επισκεφθείτε την ιστοσελίδα μου:
eprojectszone
Βήμα 1: Δημιουργία σήματος Pwm για 50Hz
Για να δημιουργήσετε ένα σήμα 50Hz σε υψηλότερη συχνότητα, είναι απαραίτητο να κάνετε κάποιους υπολογισμούς. Οι συχνότητες από το arduino μπορεί να είναι στα 8MHz, αλλά θέλουμε ένα σήμα με μεταβλητό κύκλο λειτουργίας.
Για να κατανοήσετε τους τύπους μεταβλητών κύκλων λειτουργίας του arduino, μπορείτε να διαβάσετε αυτά τα 3 μέρη της ίδιας ανάρτησης 1, 2 και 3.
Ας υποθέσουμε ότι η συχνότητά μας είναι 50Hz, που σημαίνει ότι η χρονική περίοδος είναι 20ms. Έτσι, τα 10ms είναι περίοδος μισού κύκλου. Σε αυτά τα 10ms πρέπει να έχουμε πολλούς παλμούς με διαφορετικούς κύκλους λειτουργίας ξεκινώντας από μικρούς κύκλους λειτουργίας, στη μέση του σήματος έχουμε μέγιστους κύκλους λειτουργίας και τελειώνουμε επίσης με μικρούς κύκλους λειτουργίας. Για να δημιουργήσουμε ένα ημιτονοειδές κύμα θα χρησιμοποιήσουμε δύο ακίδες θετικός μισός κύκλος και ένας αρνητικός μισός κύκλος. Στην ανάρτησή μας για αυτό χρησιμοποιούμε τις καρφίτσες 5 και 6 που σημαίνει χρονόμετρο 0.
Για ένα ομαλό σήμα επιλέγουμε τη σωστή φάση pwm σε συχνότητα 31372 Hz-δείτε την προηγούμενη ανάρτηση. Ένα από τα μεγαλύτερα προβλήματα είναι ότι υπολογίζουμε τον απαραίτητο κύκλο λειτουργίας για κάθε παλμό. Επομένως, επειδή η συχνότητά μας είναι f = 31372Hz, η περίοδος για κάθε παλμό είναι T = 1/31372 = 31,8 us, οπότε ο αριθμός των παλμών για μισό κύκλο είναι N = 10ms/31,8us = 314 παλμοί. Τώρα για να υπολογίσουμε τον κύκλο λειτουργίας για κάθε παλμό έχουμε y = sinx, αλλά σε αυτήν την εξίσωση χρειαζόμαστε μοίρες, οπότε ο μισός κύκλος έχει 180deg για 314 παλμούς. Για κάθε παλμό έχουμε 180/314 = 0,57deg/παλμό. Αυτό σημαίνει ότι για κάθε παλμό προχωρούμε με 0,57 βαθμούς.
y είναι ο κύκλος λειτουργίας και x η τιμή της θέσης στον μισό κύκλο εργασίας. στην αρχή το x είναι 0, μετά το x = 0,57, x = 1,14 και ούτω καθεξής μέχρι x = 180.
Αν υπολογίσουμε όλες τις 314 τιμές, λαμβάνουμε έναν πίνακα 314 στοιχεία (ο τύπος "int" υπολογίζεται ευκολότερα από το arduino).
Ένας τέτοιος πίνακας είναι:
int sinPWM = {1, 2, 5, 7, 10, 12, 15, 17, 19, 22, 24, 27, 30, 32, 34, 37, 39, 42, 44, 47, 49, 52, 54, 57, 59, 61, 64, 66, 69, 71, 73, 76, 78, 80, 83, 85, 88, 90, 92, 94, 97, 99, 101, 103, 106, 108, 110, 113, 115, 117, 119, 121, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 169, 171, 173, 175, 177, 178, 180, 182, 184, 185, 187, 188, 190, 192, 193, 195, 196, 198, 199, 201, 202, 204, 205, 207, 208, 209, 211, 212, 213, 215, 216, 217, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 237, 238, 239, 240, 240, 241, 242, 242, 243, 243, 244, 244, 245, 245, 246, 246, 247, 247, 247, 248, 248, 248, 248, 249, 249, 249, 249, 249, 250, 250, 250, 250, 249, 249, 249, 249, 249, 248, 248, 248, 248, 248, 247, 247, 247, 246, 246, 245, 245, 244, 244, 243, 243, 242, 242, 241, 240, 240, 240, 239, 238, 237, 237, 236, 235, 234, 233, 232, 231, 230, 229, 228, 227, 226, 225, 224, 223, 222, 221, 220, 219, 217, 21 6, 215, 213, 212, 211, 209, 208, 207, 205, 204, 202, 201, 199, 198, 196, 195, 193, 192, 190, 188, 187, 185, 184, 182, 180, 178, 177, 175, 173, 171, 169, 168, 166, 164, 162, 160, 158, 156, 154, 152, 150, 148, 146, 144, 142, 140, 138, 136, 134, 132, 130, 128, 126, 124, 121, 119, 117, 115, 113, 110, 108, 106, 103, 101, 99, 97, 94, 92, 90, 88, 85, 83, 80, 78, 76, 73, 71, 69, 66, 64, 61, 59, 57, 54, 52, 49, 47, 44, 42, 39, 37, 34, 32, 30, 27, 24, 22, 19, 17, 15, 12, 10, 7, 5, 2, 1};
Μπορείτε να δείτε ότι σαν ημιτονοειδές κύκλο ο κύκλος λειτουργίας είναι χαμηλότερος στο πρώτο και τελευταίο στοιχείο και υψηλότερος στη μέση.
Βήμα 2: Πρόγραμμα Arduino για μεταβλητό κύκλο εργασίας
Στην παραπάνω εικόνα έχουμε μεταβλητά σήματα κύκλων λειτουργίας με τιμές από τον πίνακα.
Αλλά πώς να κάνει ένα τέτοιο σήμα;
το τμήμα του παρακάτω προγράμματος χρησιμοποιεί διακοπή για να αλλάξει τις τιμές των κύκλων λειτουργίας
sei (); // ενεργοποίηση διακοπών
}
ISR (TIMER1_COMPA_vect) {// διακοπή όταν το χρονόμετρο 1 ταιριάζει με την τιμή OCR1A
if (i> 313 && OK == 0) {// τελική τιμή από το διάνυσμα για την ακίδα 6
i = 0; // μετάβαση στην πρώτη τιμή του διανύσματος (πίνακας)
OK = 1; // ενεργοποιήστε το pin 5
}
x = sinPWM ; // x λαμβάνει την τιμή από το διάνυσμα που αντιστοιχεί στη θέση i (i είναι μηδενικός δείκτης) -τιμή του κύκλου λειτουργίας
i = i+1; // μεταβείτε στην επόμενη θέση
}
Βήμα 3: Εναλλαγή σε ακροδέκτες Arduino 50Hz
Επειδή κάθε καρφίτσα δημιουργεί μόνο έναν κύκλο μισής λειτουργίας για να δημιουργήσει ένα πλήρες ημιτονοειδές κύκλο, χρησιμοποιούμε δύο ακίδες που εναλλάσσονται η μία μετά την άλλη μετά από ακριβή 10 δευτερόλεπτα (για 50Hz). Αυτή η αλλαγή των ακίδων γίνεται στο τέλος του πίνακα- αφού ας πούμε ότι ο πείρος 5 έχει δημιουργήσει 314 παλμούς, αυτός ο πείρος απενεργοποιείται και ενεργοποιείται ο πείρος 6 που κάνει το ίδιο πράγμα, αλλά για τον αρνητικό κύκλο λειτουργίας.
Επειδή το arduino μπορεί να παράγει μόνο θετικά σήματα, ο αρνητικός κύκλος λειτουργίας γίνεται σε h Bridge- μπορείτε να διαβάσετε εδώ σχετικά
Το πρόγραμμα για αλλαγή καρφιτσών:
sei (); // ενεργοποίηση διακοπών
}
ISR (TIMER1_COMPA_vect) {// διακοπή όταν το χρονόμετρο 1 ταιριάζει με την τιμή OCR1A
if (i> 313 && OK == 0) {// τελική τιμή από το διάνυσμα για την ακίδα 6
i = 0; // μετάβαση στην πρώτη τιμή του διανύσματος
OK = 1; // ενεργοποιήστε το pin 5
}
if (i> 313 && OK == 1) {// τελική τιμή από το διάνυσμα για την ακίδα 5
i = 0; // μετάβαση στην πρώτη τιμή του διανύσματος
ΟΚ = 0; // ενεργοποιήστε το pin 6
}
x = sinPWM ; // x λαμβάνει την τιμή από το διάνυσμα που αντιστοιχεί στη θέση i (i είναι μηδενικός δείκτης)
i = i+1; // μεταβείτε στην επόμενη θέση
αν (ΟΚ == 0) {
OCR0B = 0; // κάντε pin 5 0
OCR0A = x; // ενεργοποιήστε τον πείρο 6 στον αντίστοιχο κύκλο λειτουργίας
αν (ΟΚ == 1) {
OCR0A = 0; // κάντε pin 6 0
OCR0B = x; // ενεργοποιήστε τον πείρο 5 στον αντίστοιχο κύκλο εργασιών
}
}
Βήμα 4: Οδήγηση σε γέφυρα H και φιλτράρισμα του σήματος Pwm
Τα σήματα που λαμβάνονται από το arduino είναι το τμήμα ελέγχου για εφαρμογές inverter επειδή και τα δύο είναι θετικά. Για να κάνουμε ένα πλήρη ημιτονοειδές κύμα και έναν πρακτικό μετατροπέα πρέπει να χρησιμοποιήσουμε μια γέφυρα h και να καθαρίσουμε το pwm ένα φίλτρο χαμηλής διέλευσης.
Η γέφυρα Η παρουσιάζεται εδώ.
Το φίλτρο χαμηλής διέλευσης δοκιμάστηκε με μικρούς κινητήρες Ac-εδώ.
Συνιστάται:
Μετατροπείς κωδικοποίησης σειριακής γραμμής DIY: 15 βήματα
Μετατροπείς κωδικοποίησης σειριακών γραμμών DIY: Η επικοινωνία σειριακών δεδομένων έχει γίνει πανταχού παρούσα σε πολλές βιομηχανικές εφαρμογές και υπάρχουν αρκετές προσεγγίσεις για το σχεδιασμό οποιασδήποτε διεπαφής επικοινωνίας σειριακών δεδομένων. Είναι βολικό να χρησιμοποιήσετε ένα από τα τυπικά πρωτόκολλα, δηλαδή UART, I2C ή SPI. Επιπλέον
Αισθητήρας θερμοκρασίας για Arduino Εφαρμόστηκε για βήματα COVID 19: 12 (με εικόνες)
Αισθητήρας θερμοκρασίας για Arduino Εφαρμόστηκε για COVID 19: Ο αισθητήρας θερμοκρασίας για το Arduino είναι ένα θεμελιώδες στοιχείο όταν θέλουμε να μετρήσουμε τη θερμοκρασία ενός επεξεργαστή του ανθρώπινου σώματος. Ο αισθητήρας θερμοκρασίας με το Arduino πρέπει να είναι σε επαφή ή κοντά για να λάβει και να μετρήσει το επίπεδο θερμότητας. Έτσι
Γρήγοροι και βρώμικοι μετατροπείς τρανζίστορ SMD SOT: 4 βήματα
Γρήγοροι και βρώμικοι μετατροπείς τρανζίστορ SMD SOT: Μερικές φορές πρέπει να συνδέσετε καλώδια σε τρανζίστορ επιφανειακής τοποθέτησης. Μερικοί λόγοι που μπορεί να θέλετε να το κάνετε αυτό είναι: έχετε ένα τρανζίστορ που θέλετε να χρησιμοποιήσετε και το οποίο τυχαίνει να τοποθετείται στην επιφάνεια, θέλετε να δοκιμάσετε κάτι σε ένα ψωμί χωρίς κόλλα
Οδηγός για αρχάριους για τη χρήση αισθητήρων DHT11/ DHT22 W/ Arduino: 9 βήματα
Οδηγός για αρχάριους για τη χρήση αισθητήρων DHT11/ DHT22 W/ Arduino: Μπορείτε να διαβάσετε αυτό και άλλα εκπληκτικά σεμινάρια στον επίσημο ιστότοπο της ElectroPeak Μάθετε: DHT11 και DHT22
Πίνακας αναμετάδοσης για Arduino για λιγότερο από $ 8 .: 5 βήματα
Relay Board για Arduino με λιγότερα από $ 8 .: Γεια σας φίλοι, σήμερα θα σας πω πώς να φτιάξετε έναν πίνακα ρελέ για το Arduino για λιγότερο από $ 8. Σε αυτό το κύκλωμα, δεν πρόκειται να χρησιμοποιήσουμε κανένα IC ή τρανζίστορ. Λοιπόν, ας το κάνουμε