Contrôler un servomoteur

Les bases à connaitre

Le servo du mot servomoteur, provient non pas du mot cerveau mais du latin servus qui signifie exclave.

Le servomoteur est un moteur « intelligent » qui se positionne et maintient cette position à un angle prédéfini.

Dès que cet angle est modifié par une force, le servomoteur corrige sa position pour revenir à l’angle demandé.

Généralement le cerveau moteur se compose d’un boîtier plastique contenant un très petit moteur, son électronique de commande, un capteur de position (potentiomètre) et des engrenages pour réduire la vitesse et augmenter le couple.

Ces servomoteurs peuvent être utilisés dans les usines industrielles pour gérer des procédés hydrauliques. Il s’occupe d’ouvrir et de fermer les vannes de manière précise. Ces vannes peuvent peser plusieurs centaines de kilos.

Ce dont nous allons parler aujourd’hui, ce sont les servomoteurs dits de modélisme. Ils peuvent être utilisés pour des projets personnels, de la robotique mais leur emplois premier reste dans le domaine du modélisme et des maquettes.

Le choix du servomoteur :

Un exemple de servomoteur classique serait le S 3002 de Futaba. Il mesure 31 x 16 x 30.2 millimètres et pèse 35 g, malgré son petit poids il est très utile et très costaud.

Pour utiliser du matériel approprié, vous devez regarder l’angle que propose le cerveau moteur.

En effet des servomoteurs moins chers ne peuvent effectuer que 90 ou 120°.

C’est très peu quand on sait que la majeure partie des servomoteurs peuvent aller jusqu’à 180° voir faire une rotation complète (360°).

L’aspect le plus important est tout de même sa force. Selon vos besoins vous choisirez un servomoteur plus ou moins gros et donc qui consomme différemment selon sa capacité de levage. Plus un servomoteur sera gros, plus il sera fort, mais il consommera aussi plus d’intensité. Si vous réalisez un projet robotique, une alimentation adéquate sera nécessaire au bon fonctionnement du servomoteur.

Par exemple, lors des choix des servomoteurs pour construire le bras robotique de My_Electronic_Kit, j’ai opté pour des servomoteurs légers mais à la fois durable dans le temps.

Comment fonctionne la commande sur un cerveau moteur ?

On va utiliser dans cette explication, le PWM (MLI ; en anglais : Pulse Width Modulation, soit PWM).

Il s’agit d’une technique couramment utilisée pour synthétiser des signaux pseudo analogiques grâce à des circuits numériques (TOR).

 Il s’agit de la durée des impulsions qui déterminent l’angle absolu de l’axe de sortie et donc la position du bras de commande du servomoteur, le signal est généré toutes les 20 millisecondes ce qui permet à l’électronique de contrôle dans le servomoteur de corriger continuellement sa position grâce au potentiomètre.

Comment brancher mon servomoteur ?

Les servomoteurs sont généralement équipés de 3 fils, un + et un – pour l’alimentation, et un fil de signal où est envoyer le PWM.

Il ne faut jamais alimenter le + et le – du servomoteur directement depuis la carte Arduino. Ces cartes de programmation ne suffisent pas à alimenter ces moteurs car ils consomment trop d’intensité.

Il faut donc relier le + du servomoteur sur une alimentation externe (dans cet exemple : une batterie 5 volts) et le – du cerveau moteur sur la masse de la batterie externe.

Le fil de commande (ici jaune) peut se brancher sur tous les pins de l’Arduino Uno entre le pin 2 et le pin 12.

Dans cet exemple je vais le brancher sur le pin 9.

Il faudra ensuite relier un fil de la masse du – de la batterie externe jusqu’à la masse de l’Arduino, sans ça le moteur ne fonctionnera pas.

Et voilà le câblage est réalisé !

La partie programmation

Tout d’abord, allez dans « croquis », « inclure une bibliothèque », « gérer les bibliothèques ».

Vous aurez alors une fenêtre montrant plusieurs bibliothèques. Entrer la recherche suivante : « servo ». Et télécharger la bibliothèque « servo ».

Dans la partie suivante, grâce à l’IDE d’Arduino (téléchargeable sur arduino.com), on va pouvoir faire tourner notre moteur dans un sens puis dans l’autre.

Voici le code en C : 

Le fait de recopier le code manuellement vous apprend à écrire manuellement du code. Les erreurs que vous risquez de faire vous forge à écrire et lire le langage C. Je vous invite donc à recopier ce code manuellement dans votre IDE favoris.

Les phrases après les doubles slashs ne sont pas prises en compte par le programme. Il s’agit en fait de commentaires pour permettre de mieux comprendre le code de programmation.

À partir de là, n’oubliez pas de sélectionner le bon Port USB dans « outils », « port », et sélectionner votre COM. Ne pas oublier aussi dans le même onglet de choisir le bon type de carte.

Et voilà ! Votre servomoteur va de 0° puis à 90° et enfin à 180°. Vous pouvez modifier les valeurs des angles et mettre par exemple 38°.

La valeur 1000 dans la variable « delay » et le temps d’attente du servomoteur après s’être mis à la position demandée. Vous pouvez également changer cette valeur.

J’ai moi-même commencé par apprendre de cette manière pour réaliser le bras robotique. Aujourd’hui j’ai ajouté un axe et d’autres servomoteurs dans son prolongement, ce qui m’a donné le bras robotique que l’on peut voir actuellement dans la boutique My_Electronic_Kit.

Si des questions ou des problèmes persistent n’hésitez pas à les écrire en commentaire.

Laisser un commentaire