Progetto 12 Servo
1. Descrizione
Questo servo offre alte prestazioni e alta precisione con un angolo massimo di rotazione di 180°. Pesando solo 9g, è perfettamente adatto a qualsiasi dispositivo mini in molteplici occasioni. Inoltre, presenta un tempo di avvio breve, basso rumore e forte stabilità.
2. Principio di Funzionamento
Intervallo angolare: 180° (360°, 180° e 90°)
Tensione di alimentazione: 3.3V o 5V
Pin: Tre fili

GND: Messa a terra (marrone)
VCC: Un pin rosso che si collega a un’alimentazione +5V (3.3V)
S: Un pin di segnale arancione controllato tramite segnale PWM

Principio di Controllo: L’angolo di rotazione è controllato tramite il duty cycle del PWM. Teoricamente, il ciclo standard del PWM è 20ms (50Hz), quindi la larghezza dell’impulso dovrebbe variare tra 1ms e 2ms. Tuttavia, la larghezza reale dell’impulso raggiunge 0.5ms~2.5ms, corrispondente a 0°~180°. Si noti che, per lo stesso segnale, l’angolo di rotazione può variare a seconda della marca del servo.
3. Schema di Collegamento

Aggiungere una fonte di alimentazione esterna invece di usare solo l’USB per l’alimentazione.

4. Codice di 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. Risultato del Test
Dopo aver collegato i fili e caricato il codice, il servo inizia a ruotare da 0° a 180° e poi in senso inverso.