Table des matières:
- Étape 1: Liste des pièces
- Étape 2: La solution évidente
- Étape 3: Minuteries en cascade pour une résolution plus élevée
Vidéo: Génération de signaux PWM haute résolution pour servos RC avec dispositifs STM32 : 3 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:06
Actuellement, je construis un émetteur/récepteur RC basé sur la puce RF SX1280. L'un des objectifs du projet est que je veux une résolution de servo de 12 bits des bâtons jusqu'aux servos. En partie parce que les servos numériques modernes ont une résolution de 12 bits, deuxièmement, un émetteur haut de gamme utilise de toute façon 12 bits. J'étudiais comment générer des signaux PWM haute résolution sur des appareils STM32. J'utilise actuellement la pilule noire (STM32F103C8T8) pour le prototype.
Étape 1: Liste des pièces
Matériel
- Toute carte de développement STM32F103 (pilule bleue, pilule noire, etc.)
- Une banque d'alimentation USB comme alimentation
- Programmeur STM32 (Segger j-links, ST-LINK/V2, ou simplement un clone st-link)
Logiciel
- STM32CubeMX
- Atollic TrueSTUDIO pour STM32
- Source du projet depuis github
Étape 2: La solution évidente
La solution la plus simple consiste probablement à utiliser l'une des minuteries pouvant générer des signaux PWM, comme TIM1-3 sur un STM32F103. Pour un servo numérique moderne, la fréquence d'images peut descendre à environ 5 ms, mais pour un ancien servo analogique, elle devrait être de 20 ms ou 50 Hz. Donc, dans le pire des cas, générons cela. Avec une horloge de 72 MHz et une résolution de compteur de temporisateur de 16 bits, nous devons régler le pré-échelonneur du temporisateur au minimum à 23 afin de couvrir la fréquence d'images de 20 ms. J'ai sélectionné 24 car pendant 20 ms, je dois régler le compteur exactement sur 60000. Vous pouvez voir la configuration de CubeMX et les signaux PWM de 1 et 1,5 ms générés dans les captures d'écran. Malheureusement, pendant 1 ms, le compteur du timer devrait être réglé sur 3000, ce qui ne nous donnerait qu'une résolution de 11 bits. Pas mal, mais le but était de 12 bits, alors essayons autre chose.
Bien sûr, si je sélectionnais un microcontrôleur avec un compteur de temps 32 bits, comme le STM32L476, cette résolution peut être beaucoup plus élevée et le problème serait résolu.
Mais ici, je voudrais proposer une solution alternative qui augmentera encore la résolution même sur le STM32F103.
Étape 3: Minuteries en cascade pour une résolution plus élevée
Le principal problème avec la solution précédente est que la fréquence d'images (20 ms) est relativement élevée par rapport au signal PWM réellement généré (entre 1 et 2 ms), nous gaspillons donc des bits de valeur pour les 18 ms restants lorsque nous attendons l'image suivante. Cela peut être résolu en mettant en cascade des minuteries à l'aide de la fonction de liaison de minuterie pour la synchronisation.
L'idée est que j'utiliserai TIM1 comme maître pour générer la fréquence d'images (20 ms) et TIM2, TIM3 pour gérer les signaux PWM comme esclaves. Lorsque le maître déclenche les esclaves, ils ne génèrent qu'un signal PWM en un seul mode d'impulsion. Par conséquent, je n'ai besoin que de couvrir 2 ms dans ces minuteries. Heureusement, vous pouvez cascader ces temporisateurs dans le matériel afin que cette synchronisation ne nécessite aucune intervention du processeur et qu'elle soit également très précise, la gigue est dans la région ps. Vous pouvez voir la configuration de CubeMX sur les captures d'écran.
Comme vous pouvez le voir, j'ai sélectionné 3 comme précalaires, donc pour les 2 ms, je dois définir 48000 dans le compteur de la minuterie. Cela nous donne 24000 pour 1 ms, ce qui est en fait plus ce dont nous avons besoin pour une résolution de 14 bits. Tadaaaa…
Veuillez jeter un œil aux captures d'écran de l'oscilloscope dans l'introduction pour le résultat final. Le canal 3 (violet) est l'interruption de la minuterie principale qui déclenchera les salves pour générer une impulsion. Les canaux 1 et 4 (faisceau jaune et vert) sont les signaux PWM réels générés par différentes minuteries. Notez qu'ils sont synchronisés mais qu'ils sont synchronisés sur les bords arrière, c'est à cause du mode PWM 2. Ce n'est pas un problème, car le taux PWM pour le servo particulier est toujours correct.
Un autre avantage de cette solution est que changer la fréquence d'images signifierait changer la période dans TIM1 uniquement. Pour les servos numériques modernes, vous pouvez même descendre jusqu'à 200-300 Hz, mais veuillez consulter le manuel du servo si vous voulez affiner le réglage.
Conseillé:
Compteur de fréquence haute résolution : 5 étapes (avec photos)
Compteur de fréquence haute résolution : cette instructable montre un compteur de fréquence réciproque capable de mesurer les fréquences rapidement et avec une précision raisonnable. Il est fabriqué avec des composants standard et peut être fabriqué en un week-end (cela m'a pris un peu plus de temps :-)) EDIT : Le code est maintenant disponible
Webcam haute résolution : 9 étapes (avec photos)
Webcam haute résolution : Pendant quelques années, j'ai utilisé une webcam basée sur RPi (avec le module PiCam). Les images produites étaient correctes mais ensuite, il y a eu un moment où je n'étais plus satisfait de la qualité. J'ai décidé de faire une webcam haute résolution. Les parties suivantes w
OpenLogger : un enregistreur de données portable haute résolution, compatible Wi-Fi, open source : 7 étapes
OpenLogger : un enregistreur de données portable haute résolution, compatible Wi-Fi, open source : OpenLogger est un enregistreur de données portable, open source, à faible coût et haute résolution conçu pour fournir des mesures de haute qualité sans nécessiter de logiciel coûteux ou de logiciel d'écriture de zéro. Si vous êtes un ingénieur, un scientifique ou un passionné qui ne
DIY Givi V56 Kit d'éclairage pour Topbox de moto avec signaux intégrés: 4 étapes (avec photos)
Kit d'éclairage pour topbox pour moto Givi V56 DIY avec signaux intégrés: En tant que motard, je suis trop habitué à être traité comme si j'étais invisible sur la route. Une chose que j'ajoute toujours à mes vélos est un top case qui a généralement un éclairage intégré. J'ai récemment mis à niveau vers un nouveau vélo et acheté le Givi V56 Monokey
Comment obtenir des images haute résolution à partir d'Instructables : 4 étapes
Comment obtenir des images haute résolution à partir d'Instructables : Avez-vous vraiment apprécié cette image instructable et souhaitez en enregistrer une copie haute résolution ? Cette grande petite fonctionnalité est facilement négligée