Comment contrôler le servomoteur avec Arduino

Comment contrôler le servomoteur avec Arduino
Servomoteur est un type de dispositif électrique qui peut changer ou faire tourner la position d'un objet avec une grande précision. Au début, ils ont été utilisés pour contrôler les ailes d'avion RC quelques instants plus tard, ils se sont rendus à la robotique, aux robots humanoïdes et à de nombreux projets d'automatisation. Contrairement aux moteurs pas à pas, leur mouvement est limité entre 0o et 180o.

Habituellement, les servomoteurs ont des bras qui peuvent être contrôlés à l'aide d'Arduino. Les servomoteurs se composent d'un système de contrôle qui fournit retour À propos de la position actuelle de l'arbre du moteur, cette rétroaction permet de se déplacer à une grande précision.

Pin de piqûre à moteur

En règle générale, la plupart des servomoteurs ont trois épingles:

  • PIN VCC (normalement rouge 5V)
  • Pin GND (normalement noir 0v)
  • Pin de signal d'entrée (recevoir le signal PWM d'Arduino)

Fonctionnement du servomoteur

Nous pouvons contrôler le servomoteur en connectant la broche VCC à la broche 5V et GND à 0V. Sur le terminal de couleur jaune, nous fournissons un PWM signal qui contrôle l'angle rotatif du servomoteur. La largeur du signal PWM nous donne l'angle auquel le moteur tourne son bras.

Si nous examinons la fiche technique des servomoteurs, nous obtenons les paramètres suivants:

  • Période de temps de signal PWM
  • Largeur minimale pour PWM
  • Largeur maximale pour PWM

Tous ces paramètres sont prédéfinis dans la bibliothèque Arduino Servo.

Servomoteurs avec arduino

Les servomoteurs sont super faciles à contrôler avec Arduino, grâce au Servo-bibliothèque ce qui nous aide à personnaliser notre code en fonction des besoins et nous permet de faire pivoter le bras servo à notre angle souhaité.

Les trois paramètres mentionnés ci-dessus sont fixés dans la bibliothèque servo. En utilisant ces paramètres, nous pouvons contrôler l'angle de servomoteur de manière suivante:

  • Si la largeur du signal PWM = width_max, servo tournera à 180o
  • Si la largeur du signal PWM = width_miin, le servo tourne à 0o
  • Si la largeur du signal PWM se situe entre les deux Width_max et width_min, Le servomoteur tournera entre 0o et 180o

Nous pouvons générer un signal PWM souhaité sur certaines des broches Arduino. Le signal PWM sera donné à la broche du signal d'entrée du servomoteur. Connexion restante de deux broches de servo à 5V et GND d'Arduino.

Comment contrôler le servomoteur à l'aide d'Arduino

Ici, je vais expliquer comment nous pouvons connecter et programmer notre servomoteur à l'aide d'Arduino. Tout ce dont tu as besoin c'est:

  • Arduino Uno
  • Câble USB B
  • Servomoteur
  • Fils de cavalier

Comment programmer le servo avec Arduino

Voici quelques étapes simples:

Étape 1: Inclure la bibliothèque servo prédéfinie:

#inclure

Étape 2: Créer un objet servo:

Servo MyServo;

Astuce: Dans le cas où vous contrôlez plus d'un servomoteur, vous devez créer plus d'objets de servo:

Servo MyServo1;
Servo MyServo2;

Étape 3: Définir la broche de commande (9) sur Arduino Uno qui envoie le signal PWM au port de signal d'entrée de servo:

myservo.attacher (9);

Étape 4: Faites pivoter l'angle de moteur du servomoteur à la valeur souhaitée par exemple 90o:

myservo.écrire (pos);

Code arduino

Exemple de servomoteur ouvert à partir de Fichier> Exemple> Servo> balayage, Une nouvelle fenêtre s'ouvrira en nous montrant notre croquis de servo:

#inclure
Servo MyServo; // L'objet servo est créé pour contrôler le servomoteur
int pos = 0; // Pour stocker le servo position, une nouvelle variable est créée
void setup()
myservo.attacher (9); // Cela définira Arduino Pin 9 pour la sortie PWM

VOID LOOP ()
pour (pos = 0; pos = 0; pos - = 1) // passe de 180 à 0 degrés
myservo.écrire (pos); // dire à servo d'aller à la position «pos»
retard (5); // attend 5 ms pour que le servo puisse atteindre pour positionner

Une fois le programme compilé et téléchargé, le servomoteur commencera à tourner lentement de la position de départ de 0 degrés à 180 degrés, un degré à la fois tout comme les étapes. Lorsque le moteur aura terminé la rotation de 180 degrés, il commencera sa rotation dans la direction opposée vers son point de départ I.e., 0 degré.

Schémas

Comment contrôler le servomoteur à l'aide du potentiomètre

Nous pouvons également contrôler la position du servomoteur à la main. Pour ce faire, nous avons besoin d'un Potentiomètre. Le potentiomètre a trois broches. Connectez les deux broches extérieures à 5V VCC et GND d'Arduino et un milieu à la broche A0 sur la carte Arduino.

Comment programmer le servo avec le potentiomètre

La plupart des croquis du potentiomètre sont les mêmes que l'exemple précédent. La seule différence est une nouvelle variable val et potpin est défini avant la section de configuration et de boucle du code.

int potpin = a0;
int Val;

Dans la section de boucle, la broche analogique A0 est utilisée pour lire les valeurs du potentiomètre avec fonction analogread (). Les cartes Arduino contiennent un ADC 10 bits (convertisseur analogique à numérique), ce qui nous donne des valeurs entre 0 et 1023 selon la position du potentiomètre:

val = analograread (Potpin);

Enfin, nous avons utilisé carte() fonction pour refaire des nombres de 0 à 1023 selon l'angle de servo car nous savons que les moteurs de servo ne peuvent tourner que entre 00 et 1800.

val = map (val, 0, 1023, 0, 180);

Code arduino

Sketch de bouton ouvert disponible dans Arduino IDE, allez à Fichiers> Exemples> Servo> Bouton. Une nouvelle fenêtre s'ouvrira qui nous montre notre croquis de bouton pour servo:

#inclure
Servo MyServo; // Création d'un nom d'objet servo MyServo
int potpin = a0; // Définition de la broche analogique pour le potentiomètre
int Val; // Variable qui lira les valeurs de broches analogiques pour le potentiomètre
void setup()
myservo.attacher (9); // PIN 9 définie pour le signal d'entrée PWM de Servo sur Arduino

VOID LOOP ()
val = analograread (Potpin); // lit la valeur du potentiomètre (valeur entre 0 et 1023)
val = map (val, 0, 1023, 0, 180); // Échelle la valeur à utiliser avec le servo (valeur entre 0 et 180)
myservo.écrire (val); // Définit le service de service avec une valeur à l'échelle
retard (15); // attend que le servo puisse se mettre en position

Le code ci-dessus nous aidera à contrôler l'arbre du servomoteur à l'aide du potentiomètre, l'arbre tournera entre 0 et 180 degrés. Nous pouvons également maintenir la vitesse avec la direction du servo en l'utilisant.

Schéma

Combien de servomoteurs puis-je me connecter avec Arduino?

Le nombre maximum de servo-moteurs Arduino Uno peut gérer est jusqu'à 12 avec une bibliothèque Arduino pour servo, et maximum de 48 servos peut être connecté avec des planches comme Mega.

Conseil: Nous pouvons directement exécuter le servo en utilisant le courant Arduino, mais rappelez-vous si les servos moteurs dessinent plus que 500mA Ensuite, votre carte Arduino peut réinitialiser et perdre automatiquement l'énergie. Il est recommandé d'utiliser toujours une alimentation électrique dédiée pour les servomoteurs.

Conclusion

Dans ce tutoriel, nous avons couvert le mécanisme de contrôle des servomoteurs avec Arduino. Nous avons couvert les bases du contrôle du servomoteur et de la vitesse à l'aide du potentiomètre. Maintenant, vous avez une idée du servo et des possibilités pour votre robotique, vos projets RC et votre automatisation à l'aide de servo sont sans fin.