Come usare un servomotore con Arduino: collegamenti, 180° e 360°
Descrizione
In questa lezione vedremo come funziona un servomotore con Arduino, quali sono i modelli più usati, come collegarlo e come controllare sia un servo da 180 gradi sia un servo a rotazione continua 360 gradi. È una guida rapida pensata per robot, bracci meccanici, sensori orientabili e piccoli progetti Arduino.
Componenti necessari:
- 1x Arduino UNO
- 1x Servomotore (consigliato SG90)
- Cavi jumper (e breadboard opzionale)
Servomotore con Arduino: come funziona e come controllarlo
Cosa è un servomotore?
Un servomotore, spesso chiamato semplicemente servo, è un piccolo attuatore che integra motore,
ingranaggi ed elettronica di controllo.
Arduino invia al servo un segnale di comando e il circuito interno regola automaticamente il movimento.
Nei servo posizionali questo permette di raggiungere un angolo preciso; nei servo a rotazione continua permette invece di controllare direzione e velocità.
Tipi di servomotore: SG90S, MG90S e MG996R
I servo cambiano soprattutto per dimensioni, coppia, materiale degli ingranaggi e tipo di movimento.
Per Arduino i modelli più comuni appartengono alla famiglia dei micro servo oppure ai servo standard ad alta coppia.
SG90S: micro servo leggero
Lo SG90S è un micro servo piccolo e leggero, adatto a progetti semplici, sensori orientabili e piccoli meccanismi. È una buona scelta quando servono poco peso e poca coppia.
MG90S: micro servo con ingranaggi metallici
Il MG90S mantiene dimensioni compatte ma utilizza ingranaggi metallici. È generalmente più resistente di un micro servo con ingranaggi in plastica ed è utile per piccoli robot e meccanismi sottoposti a maggiore sforzo.
MG996R: servo standard ad alta coppia
Il MG996R è più grande e potente ed è usato quando il progetto deve muovere carichi maggiori, per esempio in bracci robotici o articolazioni. Richiede più corrente rispetto ai micro servo, quindi è consigliata un'alimentazione esterna adeguata.
Wiring: come collegare un servomotore ad Arduino
Signal → pin 9 · VCC → 5V · GND → GND
Il filo di segnale controlla il servo e nel nostro esempio è collegato al pin digitale 9.
I colori dei fili possono cambiare tra i produttori, quindi controlla sempre le indicazioni del tuo modello.
Per servo potenti come MG996R è preferibile usare un'alimentazione esterna e collegare il GND dell'alimentatore al GND di Arduino.
Servo da 180 gradi: controllo della posizione con Arduino
Un servomotore da 180° è un servo posizionale: Arduino gli indica un angolo e il servo si sposta verso quella posizione.
Con la libreria Servo puoi utilizzare servo.write() con valori indicativamente compresi tra 0 e 180.
L'escursione reale può variare leggermente in base al modello.
// https://nemiatools.com
#include <Servo.h>
Servo myServo;
void setup() {
myServo.attach(9); // Pin PWM del servo
}
void loop() {
myServo.write(0); // Muovi a 0 gradi
delay(1000);
myServo.write(90); // Muovi a 90 gradi
delay(1000);
myServo.write(180); // Muovi a 180 gradi
delay(1000);
}
In questo esempio il servo si sposta tra 0°, 90° e 180°. Puoi sostituire questi valori con l'angolo richiesto dal tuo progetto.
Servo da 360 gradi: controllo di direzione e velocità con Arduino
Un servo da 360° a rotazione continua funziona in modo diverso: non puoi chiedergli di raggiungere un angolo preciso.
Il comando determina invece direzione e velocità di rotazione.
Con molti modelli, un valore vicino a 90 arresta il servo, valori inferiori lo fanno ruotare in una direzione e valori superiori nell'altra.
// https://nemiatools.com
#include <Servo.h>
Servo myServo;
void setup() {
myServo.attach(9); // Pin PWM del servo
}
void loop() {
myServo.write(0); // Ruota in una direzione
delay(2000);
myServo.write(90); // Stop
delay(1000);
myServo.write(180); // Ruota nella direzione opposta
delay(2000);
myServo.write(90); // Stop
delay(1000);
}
Il punto di arresto di un servo 360° non è sempre esattamente 90.
Se il servo si muove lentamente quando dovrebbe essere fermo, prova valori vicini come 89, 90 o 91 fino a trovare il centro corretto.