Le servomoteur en général, est un petit moteur ayant un axe de rotation de 0 à 180°. Il existe biensur des servomoteurs à rotation continue mais nous ne les verrons pas dans cet article.
LE servo de base, sans doute le moins chère est le Tower pro sg90. On le trouve a environ 2€. Celui dont on se sert pour s’amuser.
Spécifications d’un Servo Sg90:
- Son poid : 9g pour un sg90.
- Ses dimension: 22.2 x 11.8 x 31 mm approximativement.
- Son couple qui s’exprime en kg par cm : 1.8kg par cm.
- La vitesse de rotation: 0.1 s pour 60 degree
- Sa tension d’alimentation: 4.8 V (~5V)
Ce dont vous aurez besoin
- Un ou plusieurs servomoteurs - disponible ici
- Un Arduino – Disponible ici
- Quelques câbles de prototypage – Disponibles ici
Branchement du servomoteur à l’Arduino
Niveau branchement, on part sur 3 cables:
- Rouge : Alimentation (5V).
- Noir ou marron : La masse.
- Jaune, orange ou blanc : “Sig”, c’est le signal, controlé par une sortie PWM.
Des tutos sur les servos, il y en à a la pelle.
Je vous met le code le plus simple qu’il y ai. Il se trouve directement dans les exemples de l’IDE: Fichiers -> Exemples -> Servo -> knob.
Le code est comme celui-ci, il sagit de commander un servo par le biais d’un potentiomètre.
Et l’image officiel d’Arduino.cc
Code / programme Arduino pour le servomoteur
/*
Controlling a servo position using a potentiometer (variable resistor)
by Michal Rinott <http://people.interaction-ivrea.it/m.rinott>
modified on 8 Nov 2013
by Scott Fitzgerald
http://arduino.cc/en/Tutorial/Knob
*/
#include <Servo.h>
Servo myservo; // create servo object to control a servo
int potpin = 0; // analog pin used to connect the potentiometer
int val; // variable to read the value from the analog pin
void setup()
{
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
void loop()
{
val = analogRead(potpin); // reads the value of the potentiometer (value between 0 and 1023)
val = map(val, 0, 1023, 0, 180); // scale it to use it with the servo (value between 0 and 180)
myservo.write(val); // sets the servo position according to the scaled value
delay(15); // waits for the servo to get there
}Pour ma part pour pouvoir tester mon servo directement, j’ai décidé de me passer du potentiomètre et de définir un déplacement bien spécifique et en boucle. Voici le code:
#include <Servo.h>
Servo myservo; // create servo object to control a servo
void setup()
{
myservo.attach(9); // On défini la pin 9 PWM
}
void loop()
{
myservo.write(5); // Positionnement du servo à 5°
delay(1000); // délais d'une seconde
myservo.write(175); // Positionnement du servo à 175°
delay(1000); // délais d'une seconde
} Il va pour commencer se positionner à 5°, patienter une seconde, se positionner à 175°, patienter une seconde, etc.. etc.. en boucle.
Pour mon modèle de servomoteur, le SG90 qui est un servomoteur d’entrée de gamme. Son angle est de 0° à 180° Je le fais passer de 5 à 175 pour éviter le grésillement qu’il se passe lors qu’il est en fin ou en début de sa course.
0 commentaires