![Δημιουργία σήματος PWM υψηλής ανάλυσης για RC Servos με συσκευές STM32: 3 βήματα Δημιουργία σήματος PWM υψηλής ανάλυσης για RC Servos με συσκευές STM32: 3 βήματα](https://i.howwhatproduce.com/images/010/image-27969-j.webp)
Πίνακας περιεχομένων:
2025 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2025-01-23 14:39
![Δημιουργία σήματος PWM υψηλής ανάλυσης για RC Servos με συσκευές STM32 Δημιουργία σήματος PWM υψηλής ανάλυσης για RC Servos με συσκευές STM32](https://i.howwhatproduce.com/images/010/image-27969-1-j.webp)
![Δημιουργία σήματος PWM υψηλής ανάλυσης για RC Servos με συσκευές STM32 Δημιουργία σήματος PWM υψηλής ανάλυσης για RC Servos με συσκευές STM32](https://i.howwhatproduce.com/images/010/image-27969-2-j.webp)
![Παραγωγή σήματος PWM υψηλής ανάλυσης για RC Servos με συσκευές STM32 Παραγωγή σήματος PWM υψηλής ανάλυσης για RC Servos με συσκευές STM32](https://i.howwhatproduce.com/images/010/image-27969-3-j.webp)
Επί του παρόντος, χτίζω έναν πομπό/δέκτη RC βασισμένο στο τσιπ SX1280 RF. Ένας από τους στόχους του έργου είναι ότι θέλω 12 bit servo ανάλυση από τα sticks μέχρι τα servos. Εν μέρει επειδή τα σύγχρονα ψηφιακά servos έχουν ανάλυση 12 bit, δεύτερον ένας πομπός υψηλής τεχνολογίας χρησιμοποιεί ούτως ή άλλως 12 bit. Διερευνούσα πώς μπορώ να δημιουργήσω σήματα PWM υψηλής ανάλυσης σε συσκευές STM32. Χρησιμοποιώ μαύρο χάπι (STM32F103C8T8) αυτή τη στιγμή για το πρωτότυπο.
Βήμα 1: Λίστα μερών
Σκεύη, εξαρτήματα
- Οποιοσδήποτε πίνακας ανάπτυξης STM32F103 (μπλε χάπι, μαύρο χάπι κλπ.)
- Μια τράπεζα τροφοδοσίας USB ως τροφοδοτικό
- Προγραμματιστής STM32 (Segger j-links, ST-LINK/V2, ή απλώς κλώνος st-link)
Λογισμικό
- STM32CubeMX
- Atollic TrueSTUDIO για STM32
- Πηγή έργου από το github
Βήμα 2: Η προφανής λύση
![Η Προφανής Λύση Η Προφανής Λύση](https://i.howwhatproduce.com/images/010/image-27969-4-j.webp)
![Η Προφανής Λύση Η Προφανής Λύση](https://i.howwhatproduce.com/images/010/image-27969-5-j.webp)
![Η Προφανής Λύση Η Προφανής Λύση](https://i.howwhatproduce.com/images/010/image-27969-6-j.webp)
Σως η ευκολότερη λύση είναι να χρησιμοποιήσετε ένα από τα χρονόμετρα που μπορεί να παράγει σήματα PWM, όπως το TIM1-3 σε ένα STM32F103. Για ένα σύγχρονο ψηφιακό σερβο, ο ρυθμός καρέ μπορεί να μειωθεί στα 5 ms περίπου, αλλά για ένα παλιό αναλογικό σερβο πρέπει να είναι 20 ms ή 50 Hz. Έτσι, ως το χειρότερο σενάριο, ας το δημιουργήσουμε. Με ρολόι 72 MHz και ανάλυση μετρητή χρονοδιακόπτη 16 bit, πρέπει να ορίσουμε την προκαθορισμένη τιμή του χρονοδιακόπτη στο 23 για να καλύψει το ρυθμό καρέ των 20 ms. Επέλεξα 24 γιατί τότε για 20 ms πρέπει να ορίσω τον μετρητή ακριβώς στα 60000. Μπορείτε να δείτε τη ρύθμιση CubeMX και τα δημιουργημένα σήματα PWM 1 και 1,5 ms στα στιγμιότυπα οθόνης. Δυστυχώς, για 1ms ο μετρητής του χρονοδιακόπτη πρέπει να οριστεί σε 3000, πράγμα που θα μας έδινε μόνο ανάλυση 11 bit. Δεν είναι κακό, αλλά ο στόχος ήταν 12 bit, οπότε ας δοκιμάσουμε κάτι άλλο.
Φυσικά Αν επέλεγα έναν μικροελεγκτή με μετρητή χρονοδιακόπτη 32 bit, όπως το STM32L476, αυτή η ανάλυση μπορεί να είναι πολύ υψηλότερη και το πρόβλημα θα λυθεί.
Αλλά εδώ, θα ήθελα να προτείνω μια εναλλακτική λύση που θα αυξήσει περαιτέρω την ανάλυση ακόμη και στο STM32F103.
Βήμα 3: Χρονοδιακόπτες για υψηλότερη ανάλυση
![Διαδοχικά χρονοδιακόπτες για υψηλότερη ανάλυση Διαδοχικά χρονοδιακόπτες για υψηλότερη ανάλυση](https://i.howwhatproduce.com/images/010/image-27969-7-j.webp)
![Διαδοχικά χρονοδιακόπτες για υψηλότερη ανάλυση Διαδοχικά χρονοδιακόπτες για υψηλότερη ανάλυση](https://i.howwhatproduce.com/images/010/image-27969-8-j.webp)
![Διαδοχικά χρονοδιακόπτες για υψηλότερη ανάλυση Διαδοχικά χρονοδιακόπτες για υψηλότερη ανάλυση](https://i.howwhatproduce.com/images/010/image-27969-9-j.webp)
Το κύριο πρόβλημα με την προηγούμενη λύση είναι ότι ο ρυθμός καρέ (20 ms) είναι σχετικά υψηλός σε σύγκριση με το πραγματικά παραγόμενο σήμα PWM (μεταξύ 1 και 2 ms), οπότε σπαταλάμε ορισμένα bit για τα υπόλοιπα 18 ms όταν περιμένουμε το επόμενο πλαίσιο. Αυτό μπορεί να λυθεί με διαδοχικούς χρονομετρητές χρησιμοποιώντας τη λειτουργία σύνδεσης χρονοδιακόπτη για συγχρονισμό.
Η ιδέα είναι ότι θα χρησιμοποιήσω το TIM1 ως κύριο για να δημιουργήσω το ρυθμό καρέ (20 ms) και το TIM2, το TIM3 για να αντιμετωπίσω τα σήματα PWM ως υποτελείς. Όταν ο κύριος πυροδοτεί τους υποτελείς, παράγουν μόνο ένα σήμα PWM σε μία λειτουργία παλμού. Επομένως, πρέπει να καλύψω μόνο 2 ms σε αυτούς τους χρονοδιακόπτες. Ευτυχώς, μπορείτε να προσθέσετε αυτά τα χρονόμετρα στο υλικό, οπότε αυτός ο συγχρονισμός δεν χρειάζεται καμία παρέμβαση από τον επεξεργαστή και είναι επίσης πολύ ακριβής, το jitter βρίσκεται στην περιοχή ps. Μπορείτε να δείτε τη ρύθμιση CubeMX στα στιγμιότυπα οθόνης.
Όπως μπορείτε να δείτε, επέλεξα το 3 ως prescalar, οπότε για τα 2 ms πρέπει να ορίσω 48000 στον μετρητή του χρονοδιακόπτη. Αυτό μας δίνει 24000 για 1 ms, το οποίο είναι στην πραγματικότητα περισσότερο από αυτό που χρειαζόμαστε για ανάλυση 14 bit. Tadaaaa…
Ρίξτε μια ματιά στα στιγμιότυπα οθόνης του παλμογράφου στην εισαγωγή για το τελικό αποτέλεσμα. Το κανάλι 3 (μωβ) είναι η διακοπή του κύριου χρονοδιακόπτη, η οποία θα ενεργοποιήσει τα αποθέματα να δημιουργήσουν έναν παλμό. Τα κανάλια 1 και 4 (κίτρινη και πράσινη δέσμη) είναι τα πραγματικά σήματα PWM που δημιουργούνται από διαφορετικά χρονόμετρα. Σημειώστε ότι είναι σε συγχρονισμό αλλά συγχρονίζονται στις άκρες που ακολουθούν, δηλαδή λόγω της λειτουργίας PWM 2. Αυτό δεν αποτελεί πρόβλημα, επειδή ο ρυθμός PWM για το συγκεκριμένο σερβο είναι ακόμα σωστός.
Ένα άλλο όφελος αυτής της λύσης είναι ότι η αλλαγή του ρυθμού καρέ θα σήμαινε την αλλαγή της περιόδου μόνο στο TIM1. Για τα σύγχρονα ψηφιακά servos μπορείτε να κατεβάσετε ακόμη και τα 200-300 Hz, αλλά συμβουλευτείτε το εγχειρίδιο του σερβο αν θέλετε να ρυθμίσετε σωστά.
Συνιστάται:
Μετρητής συχνότητας υψηλής ανάλυσης: 5 βήματα (με εικόνες)
![Μετρητής συχνότητας υψηλής ανάλυσης: 5 βήματα (με εικόνες) Μετρητής συχνότητας υψηλής ανάλυσης: 5 βήματα (με εικόνες)](https://i.howwhatproduce.com/images/002/image-3585-j.webp)
Μετρητής συχνοτήτων υψηλής ανάλυσης: Αυτό το διδακτικό δείχνει έναν αμοιβαίο μετρητή συχνοτήτων ικανό να μετρήσει τις συχνότητες γρήγορα και με λογική ακρίβεια. Είναι κατασκευασμένο με τυπικά εξαρτήματα και μπορεί να γίνει μέσα σε ένα Σαββατοκύριακο (μου πήρε λίγο περισσότερο χρόνο :-)) ΕΠΕΞΕΡΓΑΣΙΑ: Ο κωδικός είναι πλέον διαθέσιμος
Διακόπτης Tuchless για οικιακές συσκευές -- Ελέγξτε τις οικιακές σας συσκευές χωρίς κανέναν διακόπτη: 4 βήματα
![Διακόπτης Tuchless για οικιακές συσκευές -- Ελέγξτε τις οικιακές σας συσκευές χωρίς κανέναν διακόπτη: 4 βήματα Διακόπτης Tuchless για οικιακές συσκευές -- Ελέγξτε τις οικιακές σας συσκευές χωρίς κανέναν διακόπτη: 4 βήματα](https://i.howwhatproduce.com/images/001/image-1756-14-j.webp)
Διακόπτης Tuchless για οικιακές συσκευές || Ελέγξτε τις οικιακές σας συσκευές χωρίς κανέναν διακόπτη: Αυτός είναι ένας διακόπτης χωρίς κάλυμμα για οικιακές συσκευές. Μπορείτε να το χρησιμοποιήσετε σε οποιονδήποτε δημόσιο χώρο έτσι ώστε να βοηθήσει στην καταπολέμηση οποιουδήποτε ιού. Το κύκλωμα βασίζεται σε κύκλωμα σκοτεινού αισθητήρα που κατασκευάζεται από το Op-Amp και το LDR. Δεύτερο σημαντικό μέρος αυτού του κυκλώματος SR Flip-Flop με Sequencell
Κάμερα Web υψηλής ανάλυσης: 9 βήματα (με εικόνες)
![Κάμερα Web υψηλής ανάλυσης: 9 βήματα (με εικόνες) Κάμερα Web υψηλής ανάλυσης: 9 βήματα (με εικόνες)](https://i.howwhatproduce.com/images/005/image-14719-j.webp)
Κάμερα Web υψηλής ανάλυσης: Για μερικά χρόνια χρησιμοποιούσα μια κάμερα web βασισμένη σε RPi (με τη μονάδα PiCam). Οι εικόνες που παρήχθησαν ήταν εντάξει, αλλά τότε, ήταν η στιγμή που δεν ήμουν πλέον ικανοποιημένος με την ποιότητα. Αποφάσισα να φτιάξω μια κάμερα Web υψηλής ανάλυσης. Τα παρακάτω μέρη με
OpenLogger: Υψηλής ανάλυσης, Ενεργοποιημένο Wi-Fi, Ανοιχτού κώδικα, Φορητός καταγραφέας δεδομένων: 7 βήματα
![OpenLogger: Υψηλής ανάλυσης, Ενεργοποιημένο Wi-Fi, Ανοιχτού κώδικα, Φορητός καταγραφέας δεδομένων: 7 βήματα OpenLogger: Υψηλής ανάλυσης, Ενεργοποιημένο Wi-Fi, Ανοιχτού κώδικα, Φορητός καταγραφέας δεδομένων: 7 βήματα](https://i.howwhatproduce.com/images/009/image-26593-j.webp)
OpenLogger: Υψηλής ανάλυσης, Ενεργοποιημένο Wi-Fi, Ανοικτού κώδικα, Φορητός καταγραφέας δεδομένων: Το OpenLogger είναι ένα φορητό, ανοιχτού κώδικα, χαμηλού κόστους, καταγραφικό δεδομένων υψηλής ανάλυσης σχεδιασμένο να παρέχει μετρήσεις υψηλής ποιότητας χωρίς να απαιτεί ακριβό λογισμικό ή λογισμικό γραφής από την αρχή. Εάν είστε μηχανικός, επιστήμονας ή λάτρης που δεν
Πώς να αποκτήσετε εικόνες υψηλής ανάλυσης από οδηγίες χρήσης: 4 βήματα
![Πώς να αποκτήσετε εικόνες υψηλής ανάλυσης από οδηγίες χρήσης: 4 βήματα Πώς να αποκτήσετε εικόνες υψηλής ανάλυσης από οδηγίες χρήσης: 4 βήματα](https://i.howwhatproduce.com/images/002/image-5539-77-j.webp)
Πώς να αποκτήσετε εικόνες υψηλής ανάλυσης από οδηγίες χρήσης: Σας άρεσε πολύ αυτή η διδακτική εικόνα και θέλετε να αποθηκεύσετε ένα αντίγραφο αυτής υψηλής ανάλυσης; Αυτό το υπέροχο μικρό χαρακτηριστικό παραβλέπεται εύκολα