Servomoteurs Arduino
Les servomoteurs sont d'excellents appareils qui peuvent tourner dans une position spécifiée.
Habituellement, ils ont un bras servo qui peut tourner à 180 degrés. En utilisant l'Arduino, nous pouvons dire à un servo d'aller à une position spécifiée et il y ira. Aussi simple que cela!
Les servomoteurs ont été utilisés pour la première fois dans le monde de la télécommande (RC), généralement pour contrôler la direction des voitures RC ou les volets d'un avion RC. Avec le temps, ils ont trouvé leurs utilisations dans la robotique, l'automatisation et bien sûr, le monde Arduino.
Nous verrons ici comment connecter un servomoteur, puis comment le tourner dans différentes positions.
Le premier moteur que j'ai jamais connecté à un Arduino, il y a sept ans, était un servomoteur. Moment nostalgique terminé, retour au travail!
Nous aurons besoin des choses suivantes:
- Une carte Arduino connectée à un ordinateur via USB
- Un servomoteur
- Fils de connexion
Il y a peu de grands noms dans le monde des servomoteurs. Hitec et Futaba sont les principaux fabricants de servomoteurs RC. Les bons endroits pour les acheter sont Servocity, Sparkfun et Hobbyking.
Cette instruction et bien d'autres peuvent être trouvées dans mon livre de recettes de développement Arduino disponible ici. :RÉÉtape 1: comment les connecter

Un servomoteur a tout intégré: un moteur, un circuit de rétroaction et, plus important encore, un pilote de moteur. Il a juste besoin d'une ligne d'alimentation, d'une terre et d'une broche de contrôle.
Voici les étapes pour connecter un servomoteur à l'Arduino:
- Le servomoteur a un connecteur femelle à trois broches. Le plus sombre ou même noir est généralement le sol. Connectez-le à l'Arduino GND.
- Connectez le câble d'alimentation qui, dans toutes les normes, doit être rouge à 5 V sur l'Arduino.
- Connectez la ligne restante du connecteur servo à une broche numérique sur l'Arduino.
Vérifiez l'image pour une vue du servo connecté à l'Arduino.
Étape 2: Code
Le code suivant fera tourner un servomoteur à 0 degrés, attendez 1 seconde, puis tournez-le à 90, attendez encore une seconde, tournez-le à 180, puis revenez en arrière.
// Inclure la bibliothèque ServoSi le servomoteur est connecté sur une autre broche numérique, changez simplement la valeur de servoPin à la valeur de la broche numérique qui a été utilisée.
#include // Déclarez la broche Servo int servoPin = 3; // Créer un objet servo Servo Servo1; void setup () {// Nous devons attacher le servo au numéro de broche utilisé Servo1.attach (servoPin); } void loop () {// Faire passer le servo à 0 degré Servo1.write (0); retard (1000); // Faire passer le servo à 90 degrés Servo1.write (90); retard (1000); // Faire passer le servo à 180 degrés Servo1.write (180); retard (1000); }
Pièces jointes
Servo_motor.ino Télécharger
Étape 3: Comment ça marche

Les servos sont des appareils intelligents. En utilisant une seule broche d'entrée, ils reçoivent la position de l'Arduino et ils y vont. En interne, ils ont un pilote de moteur et un circuit de rétroaction qui s'assure que le bras d'asservissement atteint la position souhaitée. Mais quel type de signal reçoivent-ils sur la broche d'entrée?
Il s'agit d'une onde carrée similaire à PWM. Chaque cycle du signal dure 20 millisecondes et la plupart du temps, la valeur est FAIBLE. Au début de chaque cycle, le signal est ÉLEVÉ pendant un temps compris entre 1 et 2 millisecondes. À 1 milliseconde, il représente 0 degré et à 2 millisecondes, il représente 180 degrés. Entre les deux, il représente la valeur de 0 à 180. Il s'agit d'une méthode très bonne et fiable. Le graphique le rend un peu plus facile à comprendre.
N'oubliez pas que l'utilisation de la bibliothèque de servomoteurs désactive automatiquement la fonctionnalité PWM sur les broches PWM 9 et 10 sur l'Arduino UNO et les cartes similaires.
Répartition du code
Le code déclare simplement l'objet servo, puis initialise le servo à l'aide de la fonction servo.attach () . Nous ne devons pas oublier d'inclure la bibliothèque de servomoteurs. Dans la boucle (), nous réglons le servo à 0 degrés, attendons, puis le réglons à 90 et plus tard à 180 degrés.
Étape 4: Plus de choses sur les servos
Le contrôle des servos est facile, et voici quelques astuces supplémentaires que nous pouvons utiliser:
Contrôle du temps d'impulsion exact
Arduino a une fonction intégrée d'écriture servo (degrés) qui simplifie le contrôle des servos. Cependant, tous les servos ne respectent pas les mêmes horaires pour toutes les positions. Habituellement, 1 milliseconde signifie 0 degré, 1, 5 milliseconde signifie 90 degrés et, bien sûr, 2 millisecondes signifie 180 degrés. Certains servos ont des gammes plus petites ou plus grandes.
Pour un meilleur contrôle, nous pouvons utiliser la fonction servo.writeMicroseconds (us), qui prend le nombre exact de microsecondes comme paramètre. N'oubliez pas, 1 milliseconde équivaut à 1 000 microsecondes.
Plus de servos
Afin d'utiliser plus d'un servo, nous devons déclarer plusieurs objets servo, attacher différentes broches à chacun et adresser chaque servo individuellement. Tout d'abord, nous devons déclarer les objets servo - autant que nous en avons besoin:
// Créer des objets servo Servo Servo1, Servo2, Servo3;
Ensuite, nous devons attacher chaque objet à un servomoteur. N'oubliez pas que chaque servomoteur utilise une broche individuelle:
Servo1.attach (servoPin1); Servo2.attach (servoPin2); Servo3.attach (servoPin3);
Au final, il suffit d'adresser chaque objet servo individuellement:
Servo1.write (0); // Réglez Servo 1 sur 0 degrés Servo2.write (90); // Réglez le servo 2 à 90 degrés
Côté connexion, les masses des servos vont à GND sur l'Arduino, la puissance du servo à 5V ou VIN (selon l'entrée d'alimentation), et à la fin, chaque ligne de signal doit être connectée à une broche numérique différente. Contrairement à la croyance populaire, les servos n'ont pas besoin d'être contrôlés par des broches PWM - n'importe quelle broche numérique fonctionnera.
Servos à rotation continue
Il existe une race spéciale de servos appelés servos à rotation continue . Alors qu'un servo normal va dans une position spécifique en fonction du signal d'entrée, un servo à rotation continue tourne dans le sens horaire ou antihoraire à une vitesse proportionnelle au signal. Par exemple, la fonction Servo1.write (0) fera tourner le servomoteur dans le sens antihoraire à pleine vitesse. La fonction Servo1.write (90) arrêtera le moteur et Servo1.write (180) fera tourner le moteur dans le sens horaire à pleine vitesse.
Il existe de multiples utilisations pour ces servos; cependant, ils sont vraiment lents. Si vous construisez un micro-ondes et avez besoin d'un moteur pour transformer les aliments, c'est votre choix. Mais attention, les micro-ondes sont dangereux!
Étape 5: Découvrez plus
Plus de sujets concernant les moteurs tels que les moteurs sans balais, les pilotes de transistor ou le contrôle de la vitesse du moteur peuvent être trouvés dans mon livre de recettes de développement Arduino disponible ici. :RÉ