Projet 12 Servo
1. Description
Ce servo offre des performances élevées et une grande précision avec un angle de rotation maximal de 180°. Pesant seulement 9g, il est parfaitement adapté à tout mini dispositif dans de multiples occasions. De plus, il bénéficie d’un temps de démarrage court, d’un faible bruit et d’une grande stabilité.
2. Principe de fonctionnement
Plage d’angle : 180° (360°, 180° et 90°)
Tension d’alimentation : 3.3V ou 5V
Broche : Trois fils

GND : Masse (marron)
VCC : Broche rouge connectée à une alimentation +5V (3.3V)
S : Broche signal orange contrôlée via un signal PWM

Principe de contrôle : L’angle de rotation est contrôlé via le rapport cyclique du PWM. Théoriquement, le cycle PWM standard est de 20ms (50Hz), donc la largeur d’impulsion doit se situer entre 1ms et 2ms. Cependant, la largeur d’impulsion réelle varie de 0.5ms à 2.5ms, ce qui correspond à 0°~180°. Notez que, pour un même signal, l’angle de rotation peut varier selon les marques de servo.
3. Schéma de câblage

Ajoutez une source d’alimentation externe au lieu d’utiliser uniquement l’USB pour l’alimentation.

4. Code de test
int servoPin = 4;//servo PIN
void setup()
{
pinMode(servoPin, OUTPUT);//servo pin is set to output
}
void loop()
{
for(int i = 0 ; i <= 180 ; i++)
{
servopulse(servoPin, i);//Set the servo to rotate from 0° to 180°
delay(10);//delay 10ms
}
for(int i = 180 ; i >= 0 ; i--)
{
servopulse(servoPin, i);//Set the servo to rotate from 180° to 0°
delay(10);//delay 10ms
}
}
void servopulse(int pin, int myangle)
{ //Impulse function
int pulsewidth = map(myangle, 0, 180, 500, 2500); //Map Angle to pulse width
for (int i = 0; i < 10; i++)
{ //Output a few more pulses
digitalWrite(pin, HIGH);//Set the servo interface level to high
delayMicroseconds(pulsewidth);//The number of microseconds of delayed pulse width value
digitalWrite(pin, LOW);//Lower the level of servo interface
}
}
5. Résultat du test
Après avoir connecté le câblage et téléchargé le code, le servo commence à tourner de 0° à 180° puis inverse sa rotation.