samedi 24 avril 2021

Contrôler un servomoteur avec le Raspberry Pi Pico (MicroPython)

Il n'est pas très difficile de contrôler un servomoteur au moyen du Raspberry Pi Pico programmé en MicroPython.


Un petit servomoteur se contrôle au moyen d'un signal modulé en largeur d'impulsion (PWM) de 50 Hz de fréquence. La position du servomoteur dépend de la durée des impulsions, qu'on fait typiquement varier entre 1 ms et 2 ms.

Connexions du servomoteur au Rasperry Pi Pico

Ces servomoteurs sont conçus pour fonctionner à une tension de 5 V.  Pour faire mes tests, puisqu'il n'y avait qu'un seul petit servomoteur, j'ai utilisé la broche VBUS du Pico comme sortie 5 V. Il est toutefois préférable d'alimenter le servomoteur avec une alimentation distincte.

N'importe quelle broche GPIO du Pico peut générer un signal PWM. Le script ci-dessous suppose que le servomoteur est contrôlé par la broche GP 15.

  • Fil brun du servomoteur: broche GND du Pico
  • Fil rouge du servomoteur: broche VBUS du Pico (ou autre alimentation 5 V)
  • Fil jaune du servomoteur: broche GP 15 du Pico


Exemple de script en MicroPython

Le script ci-dessous fait tourner le servomoteur dans un sens, puis dans l'autre. Par expérimentation, vous devriez pouvoir déterminer les valeur exactes à utiliser comme paramètre à duty_u16() pour que votre servomoteur atteigne les positions extrêmes de son mouvement.  En principe, ça devrait aller d'environ 3000 à 6500, mais ça peut varier un peu d'un servomoteur à l'autre.

Plutôt que duty_u16(), j'aurais pu utiliser la méthode duty_ns(). Mais puisque la durée d'une impulsion de 1,5 milliseconde correspond à 1500000 nanosecondes, les valeurs numériques à utiliser m'ont semblé peu pratiques.

-


-

À lire également


Yves Pelletier 
(TwitterFacebook)

Aucun commentaire:

Enregistrer un commentaire