Accueil | Arduino | Comment piloter un servomoteur avec un Arduino (librairie servo.h)

Comment piloter un servomoteur avec un Arduino (librairie servo.h)

Vous aurez certainement besoin d’utiliser des servomoteurs dans bon nombre de vos projets Arduino (ou Raspberry). Il existe trois grandes familles de servomoteurs : positionnement angulaire, rotation continue, déplacement linéaire. Cet article ne traite que des servomoteurs de positionnement angulaire. Les servomoteurs à déplacement linéaire (par exemple ceux que vous pourrez récupérer en recyclant un lecteur de DVD) fait l’objet d’un article dédié car ils sont gérés par la même librairie que les moteurs pas à pas.

La librairie Servo.h

Pour piloter vos servomoteurs, vous aurez besoin de la librairie servo.h qui fait partie des librairies de base de l’environnement Arduino. Parmi les fonctions proposées par la librairie servo.h, deux sont les plus utilisées :

  • attach(pin) : permet d’attacher le servomoteur au Pin d’asservissement
  • write(angle) : envoi le servo à l’angle spécifié

Ces quatre autres fonctions pourront être utiles pour gérer plus finement les servomoteurs

  • writeMicroseconds(us) : permet d’ajuster les positions limites si votre servomoteur n’est pas standard.
  • read(pin) : permet de lire l’angle sur lequel est actuellement positionné le servo
  • attached(pin) : permet de savoir sur un servomoteur est attaché au Pin spécifié
  • detach(pin) : pour détacher votre servomoteur du Pin spécifié.

La librairie servo.h supporte jusqu’à 12 servomoteurs. Sachez toutefois que l’utilisation de servos entraîne des limitations sur votre Arduino. En effet, sur les cartes autres que la Mega, il n’est plus possible d’écrite avec l’instruction analogWrite() sur les broches 9 et 10 (même s’il n’y a aucun servo de branché dessus). Si votre projet nécessite plus de 12 servos, il faudra passer à l’Arduino Mega qui permet d’en piloter jusqu’à 48. Sur la Mega, à partir du 13ème servo, les impulsions PWM seront désactivées sur les broches 11 et 13.

Utiliser un servomoteur de positionnement angulaire sur un Arduino

Les servomoteurs de positionnement angulaire permettent de positionner (ou déplacer) précisément un objet dans une plage de 0 à 180° (le plus courant). Le branchement est presque toujours le même et se fera à l’aide de 3 fils dont voici les principales couleurs que vous pourrez rencontrer :

  • Rouge : alimentation +5V.
  • Noir ou marron : commun à relier au Pin GND de l’Arduino
  • Orange, jaune ou blanc : signal de positionnement envoyé par l’Arduino.

Attention, les servomoteurs sont gourmands en énergie. Si vous en avez besoin de plusieurs pour votre projet, l’alimentation du port USB peut ne pas être suffisant, vous devrez ajouter une alimentation externe.

brancher un servomoteur arduino uno

Programme de test va-et-vient

J’ai traduit et ajouté quelques variables de configuration les programme de test proposé par la fondation Arduino. Il permet de tester rapidement votre servo en faisant balayant une plage angulaire dans un sens puis dans l’autre.

Voici également un petit programme de test pour déplacer votre servo à une position donnée.

Piloter un servomoteur à l’aide d’un potentiomètre

Par terminer cet article, voici un petit montage et son programme pour piloter la position d’un servomoteur à l’aide d’un potentiomètre. Pour réaliser ce montage vous aurez besoin :

Tout le matériel nécessaire est disponible dans le Starter Kit Arduino.

Il suffit d’ajouter le potentiomètre au montage précédent en suivant le schéma de câblage suivant.

piloter un servomoteur avec un potentiometre sur un arduino

Si vous voulez connaître la position de votre servo à chaque variation du potentiomètre, passez la variable “angle_actuel” à True puis ouvrez le moniteur du port série.