Controllare un servomotore con un potenziometro usando Arduino

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

ProduttoreDiversi
Numero di parteServo standard
Tensione logica/I/O5 V
Tensione di alimentazione4,8 - 6 V
Corrente di uscita (per canale)Fino a 1 A
Corrente di picco (per canale)Fino a 2 A
Indicazioni sulla frequenza PWM50 Hz
Soglie logiche di ingresso0.8 V (basso) / 2.0 V (alto)
Caduta di tensione / RDS(on)/ saturazione0.5 V
Limiti termici85 °C
PacchettoDimensione standard
Note / variantiDisponibile 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

Arduino wiring or servo motor with pot
Arduino wiring or servo motor with pot

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.

Arduino Schemtic of wiring servo motor with pot

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à.

Immagini

Arduino wiring or servo motor with pot
Arduino wiring or servo motor with pot
Arduino Schemtic of wiring servo motor with pot
Arduino Schemtic of wiring servo motor with pot
SG90_servo_motor-1
SG90_servo_motor-1
SG90_servo_motor-0
SG90_servo_motor-0
96-Controlling a servo position using a potentiometer
Lingua: C++
Copia!

Cose di cui potresti avere bisogno

Risorse e riferimenti

File📁

Nessun file disponibile.