Arduino, Tutoriels

Comment utiliser SG90 servomoteur avec Arduino

Sg90 Servomoteur Arduino

Description du SG90 servomoteur

Vente Servomoteur Mini Towerpro Sg90 9G Electronique Maroc

Le servo moteur SG90 est un type de moteur à rotation continue contrôlé par un signal numérique. Il est utilisé dans des projets tels que la robotique, les systèmes de contrôle de position et les projets DIY. Il est généralement utilisé pour des applications qui nécessitent un mouvement de rotation précis à un angle spécifique.

Lorsque le servo reçoit un signal numérique sur sa broche de commande, il analyse ce signal pour déterminer la position souhaitée pour l’arbre de sortie. Le circuit de rétroaction de position utilise alors un capteur pour mesurer la position actuelle de l’arbre de sortie, et un comparateur pour comparer la position demandée à la position actuelle. Si la position demandée ne correspond pas à la position actuelle, le circuit de rétroaction de position utilise un circuit intégré de commande de moteur pour ajuster la position de l’arbre de sortie jusqu’à ce qu’elle corresponde à la position demandée.

Le servo moteur SG90 est capable de tourner son axe à un angle de 0 à 180 degrés. Il est généralement contrôlé par un signal PWM qui est généralement envoyé par un microcontrôleur comme Arduino. Il est alimenté par une tension de 5V et peut être commandé à l’aide d’un signal PWM. Il est équipé d’un circuit de rétroaction de position pour ajuster la position de l’arbre de sortie en fonction de la position demandée.

Il est important de noter que le SG90 a des limites de vitesse et de couple, il ne peut donc pas être utilisé pour des applications nécessitant des mouvements rapides ou des charges lourdes. Il est également important de noter que le SG90 n’est pas étanche, il ne doit donc pas être utilisé dans des environnements humides ou exposé à de l’eau.

Les broches du SG90 servo moteur

Sg90 Servo Moteur

Les broches du SG90 sont généralement étiquetées comme suit: alimentation Vcc (rouge), masse GND (noir/marron) et signal SIG (jaune/orange). Il est important de brancher correctement ces broches pour assurer un fonctionnement correct du servo.

Bibliothèque « servo » d’Arduino

Il est facile de contrôler des servomoteurs avec Arduino en utilisant la bibliothèque Servo . Cependant, l’utilisation de cette bibliothèque désactive la fonction PWM sur les broches 9 et 10 sur certaines cartes Arduino.

Pour plus d’information sur la bibliothèque : https://github.com/arduino-libraries/Servo

Composants nécessaires

Schéma de montage

SG90Arduino
Vcc 5V
GND GND de l’Arduino
SIG Pin 9 de l’Arduino
Sg90 Servomoteur Arduino

Code pour faire tourner le moteur de 0º à 180º

#include <Servo.h>
Servo monServo;

void setup() {
  monServo.attach(9);
}

void loop() {
  for (int i = 0; i <= 180; i++) {
    monServo.write(i);
    delay(15);
  }
  for (int i = 180; i >= 0; i--) {
    monServo.write(i);
    delay(15);
  }
}

Explication du code

Ce programme utilise la bibliothèque “Servo” pour communiquer avec le servo.

La première ligne “#include <Servo.h>” permet d’inclure la bibliothèque “Servo” pour utiliser les fonctions dédiées à cette bibliothèque.

La ligne “Servo monServo;” déclare un objet “monServo” de la classe “Servo”.

La fonction “setup()” est exécutée une seule fois au démarrage du programme. La ligne “monServo.attach(9);” relie l’objet “monServo” au pin 9 de l’Arduino.

La fonction “loop()” est exécutée en boucle continuellement après le setup. La première boucle “for (int i = 0; i <= 180; i++)” fait tourner le servo de 0 à 180 degrés en incrémentant la valeur de i à chaque tour de boucle. La ligne “monServo.write(i);” envoie la valeur de i au servo pour définir son angle de rotation. La fonction “delay(15);” permet de définir un délai entre chaque incrémentation de i pour permettre au servo de se déplacer en douceur.

La seconde boucle “for (int i = 180; i >= 0; i–)” fait tourner le servo de 180 à 0 degrés en décrémentant la valeur de i à chaque tour de boucle. La même logique que précédemment est utilisée pour envoyer la valeur de i au servo pour définir son angle de rotation.

Ce code permet donc de faire tourner le servo de 0 à 180 degrés puis de 180 à 0 degrés en boucle. Il est possible de moduler les vitesses de rotation en modifiant les valeurs du delay.

Code pour faire avancer le servo degré à degré

Pour faire avancer un servo degré à degré, vous devez utiliser la fonction “writeMicroseconds ()” de la bibliothèque Servo. Cette fonction prend en entrée un nombre en microsecondes correspondant à la position souhaitée. Les valeurs de temps en microsecondes pour les différents angles de rotation varient selon les différents modèles de servomoteurs, mais pour le SG90 on peut utiliser les valeurs suivantes:

  • 0 degrés: 600 microsecondes
  • 45 degrés: 750 microsecondes
  • 90 degrés: 900 microsecondes
  • 135 degrés: 1050 microsecondes
  • 180 degrés: 1200 microsecondes

Voici un exemple de code qui utilise la fonction “writeMicroseconds ()” pour faire avancer un servo SG90 degré à degré:

#include <Servo.h>
Servo monServo;

void setup() {
  monServo.attach(9);
}

void loop() {
  for (int i = 0; i <= 180; i++) {
    int microseconds = 600 + i * 5;
    monServo.writeMicroseconds(microseconds);
    delay(15);
  }
  for (int i = 180; i >= 0; i--) {
    int microseconds = 600 + i * 5;
    monServo.writeMicroseconds(microseconds);
    delay(15);
  }
}

Dans ce code, la fonction “attach(9)” relie l’objet “monServo” au pin 9 de l’Arduino. La première boucle “for (int i = 0; i <= 180; i++)” fait tourner le servo de 0 à 180 degrés en incrémentant la valeur de i à chaque tour de boucle. La ligne “int microseconds = 600 + i * 5;” calcule la valeur en microsecondes correspondant à l’angle en degrés souhaité. La fonction “monServo.writeMicroseconds(microseconds);” envoie la valeur en microsecondes au servo pour définir son angle de rotation. La fonction “delay(15);” permet de définir un délai entre chaque incrémentation de i pour permettre au servo de se déplacer en douceur.

La seconde boucle “for (int i = 180; i >= 0; i–)” fait tourner le servo de 180 à 0 degrés en décrémentant la valeur de i à chaque tour de boucle. La même logique que précédemment est utilisée pour envoyer la valeur en microsecondes au servo pour définir son angle de rotation .

Contrôle d’un servomoteur à travers d’un potentiomètre

Il est possible de contrôler un servomoteur SG90 à travers un potentiomètre en utilisant Arduino. Le potentiomètre peut être utilisé pour ajuster la position de l’arbre de sortie du servo en fonction de la valeur de résistance mesurée.

Pour utiliser un potentiomètre pour contrôler un servo SG90, vous devez d’abord connecter les broches du potentiomètre à l’Arduino. Il est généralement nécessaire de connecter la broche centrale du potentiomètre au pin d’entrée analogique de l’Arduino (par exemple, A0) et les broches extérieures à la masse et à l’alimentation de l’Arduino.

Sg90 Servomoteur Avec Un Potentiomètre Et Arduino

Voici un exemple de code qui utilise un potentiomètre pour contrôler la position d’un servo SG90 :

#include <Servo.h>
Servo monServo;
int potPin = A0; // Pin de lecture du potentiomètre

void setup() {
  monServo.attach(9); // Liaison du servo au pin 9
}

void loop() {
  int potValue = analogRead(potPin); // Lecture de la valeur du potentiomètre
  int angle = map(potValue, 0, 1023, 0, 180); // Conversion de la valeur en angle (de 0 à 180 degrés)
  monServo.write(angle); // Envoi de l'angle au servo pour définir sa position
  delay(15); // Délai pour permettre au servo de se déplacer en douceur
}

Dans ce code, la fonction “attach(9)” relie l’objet “monServo” au pin 9 de l’Arduino. La variable “potPin” est déclarée pour stocker la lecture analogique du potentiomètre sur le pin A0. Dans la boucle “loop ()”, la variable “potValue” est définie comme la lecture analogique du potentiomètre, et la variable “angle” est définie comme la valeur de “potValue” convertie en degrés en utilisant la fonction “map ()”. Enfin, la fonction “write ()” est utilisée pour définir la position du servo en fonction de la valeur de “angle”.

Lien pour plus d’informations

Video du tutoriel SG90 avec Arduino : https://www.youtube.com/watch?v=SfmHNb5QAzc

Video du tutoriel SG90 avec un potentiomètre et l’Arduino : https://www.youtube.com/watch?v=A8-l-xF2jlE