Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
fr:informatics:piloter_les_moteurs [15/01/2025 11:12] Keuronde [Le module PWM] |
fr:informatics:piloter_les_moteurs [29/01/2025 09:56] (Version actuelle) Keuronde [Module PWM et Raspberry Pi Pico] |
||
---|---|---|---|
Ligne 30: | Ligne 30: | ||
==== Initialisation des moteurs ==== | ==== Initialisation des moteurs ==== | ||
- | Voici le code d’initialisation des moteurs. Les broches de sens en sortie, la broche « Enable » en PWM configurée | + | Initialisez les broches de sens en sortie, |
+ | |||
+ | Idéalement nous aimerions configurer notre fonction PWM à une fréquence | ||
+ | |||
+ | * Un diviseur de fréquence en entrée du bloc PWM | ||
+ | * La valeur de rebouclage du module PWM | ||
+ | Commencez par déterminer la valeur de rebouclage du PWM avec la formule suivante : | ||
+ | Rebouclage=FmicrocontrôleurFdésirée | ||
+ | Si votre valeur de rebouclage est plus grande que celle admise par votre microcontrôleur, | ||
+ | |||
+ | Dans notre cas, F_microcontrôleur = 125 MHz, F_désirée = 5 kHz. Nous trouvons une valeur de rebouclage à 25 000. cette valeur est admissible par le module PWM qui est sur 16 bits (max 65 535). | ||
==== Commande en vitesse ==== | ==== Commande en vitesse ==== | ||
- | Le module PWM du RP2040 fonctionne sur 16 bits. 16 bits permet de coder des nombres de 0 à 65535. Tel que nous avons initialisé le module PWM, nous profitons de toute la plage des 16bits. | + | Le module PWM du RP2040 fonctionne sur 16 bits. 16 bits permet de coder des nombres de 0 à 65535. Tel que nous avons initialisé le module PWM, nous profitons |
^ Vitesse souhaitée ^ Commande ^ | ^ Vitesse souhaitée ^ Commande ^ | ||
| 0 % | 0 | | | 0 % | 0 | | ||
- | | 10 % | 6554 | | + | | 10 % | 2500 | |
- | | 50 % | 32768 | | + | | 50 % | 12500 | |
- | | 90 % | 58982 | | + | | 90 % | 22500 | |
- | | 100 % | 65536 | | + | | 100 % | 25000 | |
Voici qui est vrai pour le module PWM, mais pour notre fonction qui gère la commande de la vitesse du moteur, nous souhaitons gérer une subtilité supplémentaire : | Voici qui est vrai pour le module PWM, mais pour notre fonction qui gère la commande de la vitesse du moteur, nous souhaitons gérer une subtilité supplémentaire : | ||
===== Structure du code ===== | ===== Structure du code ===== | ||
Ligne 53: | Ligne 63: | ||
* Nous voulons que cette fonction prenne en argument le moteur à piloter. Ceci afin de simplifier le code qui utilisera cette fonction. | * Nous voulons que cette fonction prenne en argument le moteur à piloter. Ceci afin de simplifier le code qui utilisera cette fonction. | ||
+ | Dans le fichier .h, définissez une constante MOTEUR_COMMANDE_MAX, | ||
==== Module PWM et Raspberry Pi Pico ==== | ==== Module PWM et Raspberry Pi Pico ==== | ||
Attention, pour utiliser le module PWM, vous devez éditer votre fichier CMakeLists.txt pour ajouter hardware_pwm dans « target_ling_libraries », | Attention, pour utiliser le module PWM, vous devez éditer votre fichier CMakeLists.txt pour ajouter hardware_pwm dans « target_ling_libraries », | ||
target_link_libraries(PAMI_Cours_Moteurs | target_link_libraries(PAMI_Cours_Moteurs | ||
- | | + | |
- | hardware_pwm | + | hardware_pwm |
- | ... | + | ... |
) | ) | ||
Ligne 88: | Ligne 99: | ||
Avec ce bout de code, votre robot avance et recule comme s’il accélérait progressivement. | Avec ce bout de code, votre robot avance et recule comme s’il accélérait progressivement. | ||
+ | |||
+ | Voir la branche [[https:// | ||
Aller, courage ! Encore une étape et nous pourrons entrer dans le vif du sujet. | Aller, courage ! Encore une étape et nous pourrons entrer dans le vif du sujet. |