Différences
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
fr:informatics:piloter_les_moteurs [15/01/2025 11:09] Keuronde créée |
fr:informatics:piloter_les_moteurs [29/01/2025 09:56] (Version actuelle) Keuronde [Module PWM et Raspberry Pi Pico] |
||
---|---|---|---|
Ligne 3: | Ligne 3: | ||
===== Objectif ===== | ===== Objectif ===== | ||
- | Créer les fonctions pour piloter les moteurs à différentes vitesses | + | Créer les fonctions pour piloter les moteurs à différentes vitesses. |
===== Pré-requis ===== | ===== Pré-requis ===== | ||
- | Avant de commencer, vous devez | + | Avant de commencer, vous devez : |
* savoir programmer votre microcontrôleur ; | * savoir programmer votre microcontrôleur ; | ||
* avoir testé le bon fonctionnement des moteurs. | * avoir testé le bon fonctionnement des moteurs. | ||
Ligne 13: | Ligne 13: | ||
Lorsque vous avez testé le bon fonctionnement des moteurs, vous vous êtes assuré qu' | Lorsque vous avez testé le bon fonctionnement des moteurs, vous vous êtes assuré qu' | ||
- | Mais pour le faire tourner à la moitié de sa vitesse, envoyer une tension de 1,5V ne fera pas l’affaire. Il faut voir le L293 comme un composant tout ou rien. Le moyen de piloter une vitesse intermédiaire avec ce type de composant est d’alterner, | + | Mais pour le faire tourner à la moitié de sa vitesse, envoyer une tension de 1,5V ne fera pas l’affaire. Il faut voir le L293 comme un composant tout ou rien. Le moyen de piloter une vitesse intermédiaire avec ce type de composant est d’alterner, |
Voici un exemple de signal envoyant une commande de 10% au moteur. | Voici un exemple de signal envoyant une commande de 10% au moteur. | ||
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. |