Controllare un servomotore con un potenziometro usando Arduino
In questo tutorial impareremo come controllare un servomotore usando un potenziometro con un Arduino. Il potenziometro ci permette di regolare l'angolo del servomotore in modo fluido, offrendoci il controllo in tempo reale sulla sua posizione. Al termine di questo progetto avrai una configurazione funzionante che visualizza il valore del potenziometro e l'angolo corrispondente del servomotore.

Mentre il potenziometro viene ruotato, l'angolo del servomotore cambia da 0 a 180 gradi. Useremo l'ingresso analogico dell'Arduino per leggere il valore del potenziometro e poi mappare questo valore sull'intervallo del servomotore usando una semplice formula. Questo progetto è un ottimo modo per capire come funzionano gli ingressi analogici e come controllare i motori con essi (nel video a 01:45).
Hardware spiegato
Per questo progetto, abbiamo bisogno di una scheda Arduino, di un servomotore e di un potenziometro. Il potenziometro funge da resistenza variabile, fornendo una tensione in uscita che corrisponde alla sua posizione. Questa uscita viene letta dall'ingresso analogico dell'Arduino, permettendoci di determinare di quanto far ruotare il servomotore.
Il servomotore è un tipo di motore che può essere posizionato a un angolo specifico. Riceve un segnale di controllo che gli indica la posizione desiderata. Il servomotore ruoterà fino a quell'angolo in base al segnale che riceve dall'Arduino, rendendolo utile per varie applicazioni come la robotica e i dispositivi radiocomandati.
Dettagli della scheda tecnica
| Produttore | Diversi |
|---|---|
| Numero di parte | Servo standard |
| Tensione logica/I/O | 5 V |
| Tensione di alimentazione | 4,8 - 6 V |
| Corrente di uscita (per canale) | Fino a 1 A |
| Corrente di picco (per canale) | Fino a 2 A |
| Indicazioni sulla frequenza PWM | 50 Hz |
| Soglie logiche di ingresso | 0.8 V (basso) / 2.0 V (alto) |
| Caduta di tensione / RDS(on)/ saturazione | 0.5 V |
| Limiti termici | 85 °C |
| Pacchetto | Dimensione standard |
| Note / varianti | Disponibile in diverse dimensioni e valori di coppia |
- Assicurarsi che l'alimentazione sia entro i limiti (4.8 - 6 V).
- Usa un valore di resistenza adatto per il potenziometro (10 kΩ consigliato).
- Verificare la polarità delle connessioni per evitare il funzionamento inverso
- Fai attenzione al calore; assicurati che il servo non sia sovraccarico.
- Mantieni i cablaggi corti per ridurre le interferenze.
- Usare condensatori di disaccoppiamento tra le linee di alimentazione, se necessario.
- Verifica che il potenziometro sia correttamente collegato al pin analogico A0.
Istruzioni di cablaggio

Per cablare i componenti, collega prima il potenziometro. Il pin centrale del potenziometro dovrebbe essere collegato al pin analogicoA0sull'Arduino. Il pin sinistro dovrebbe andare al pin 5V sull'Arduino, e il pin destro dovrebbe connettersi alla massa (GND).
Successivamente, collega il servomotore. Il filo di massa (tipicamente nero o marrone) del servomotore dovrebbe essere collegato al GND dell'Arduino. Il filo di alimentazione (di solito rosso) dovrebbe essere collegato al pin 5V dell'Arduino. Infine, il filo di controllo (spesso giallo o bianco) dovrebbe essere collegato al pin digitale9sull'Arduino. Questa configurazione permetterà all'Arduino di controllare il servomotore in base alla posizione del potenziometro.

Esempi di codice e guida passo passo
Diamo un'occhiata alle parti chiave del codice. Per prima cosa, includiamo la libreria Servo e creiamo un oggetto servo:
#include
Servo myservo; // create servo object to control a servo
Questo codice inizializza il servomotore e lo prepara per il controllo. Il passo successivo consiste nel leggere il valore del potenziometro:
int val = analogRead(potpin); // reads the value of the potentiometer
Qui, il valore letto dal potenziometro viene memorizzato nella variabileval. Il valore sarà compreso tra 0 e 1023, corrispondente alla posizione del potenziometro. Quindi mappiamo questo valore nell'intervallo del servo:
val = map(val, 0, 1023, 0, 180); // scale it to use it with the servo
Questa riga converte il valore del potenziometro in un intervallo adatto al servomotore. Infine, impostiamo il servomotore sulla posizione calcolata:
myservo.write(val); // sets the servo position according to the scaled value
Questo comando indica al servo di muoversi all'angolo specificato in base alla posizione del potenziometro. Puoi trovare il codice completo caricato sotto l'articolo.
Dimostrazione / Cosa aspettarsi
Quando esegui il programma, ruotando il potenziometro l'angolo del servomotore si regolerà in modo fluido. Dovresti vedere i valori dell'angolo stampati sul monitor seriale mentre giri la manopola. Se il servo si comporta in modo inaspettato, controlla il cablaggio, in particolare le connessioni al potenziometro e al servo (nel video a 04:30).
Il servo dovrebbe rispondere immediatamente alle variazioni nella posizione del potenziometro. Se noti ritardi o scatti, considera di ridurre il ritardo nel codice per migliorare la reattività.
Cose di cui potresti avere bisogno
-
AmazonServo motor on Amazonamzn.to
-
AliExpressPurchase SG90 Servo motor 180 or 360 from AliExpresss.click.aliexpress.com
Risorse e riferimenti
-
EsternoSG90 servomotoriamzn.to
File📁
Nessun file disponibile.