Controllo del Motore Servo Arduino Utilizzando un Potenziometro

Controllo del Motore Servo Arduino Utilizzando un Potenziometro

In questo tutorial, esploreremo come controllare un servomotore utilizzando un potenziometro con un Arduino. L'obiettivo è creare un circuito semplice in cui la posizione del servomotore viene regolata in base alla rotazione del potenziometro. Alla fine di questo progetto, avrai un modello funzionante che varia dolcemente l'angolo del servomotore da 0 a 180 gradi mentre giri il potenziometro. Questo è un ottimo modo per comprendere le basi dell'input analogico e del controllo del servomotore in Arduino.

Per raggiungere questo obiettivo, utilizzeremo una scheda Arduino, un servomotore e un potenziometro. Il potenziometro funge da resistore variabile, fornendo un ingresso analogico all'Arduino, che poi determinerà la posizione del servomotore di conseguenza. Questo progetto è non solo divertente ma anche educativo, poiché dimostra concetti chiave nell'elettronica e nella programmazione. Per una spiegazione più approfondita, assicurati di controllare il video (nel video a 00:00).

Hardware Spiegato

In questo progetto, i componenti principali sono la scheda Arduino, il servomotore e il potenziometro. L'Arduino è il cervello dell'operazione, che elabora gli input e controlla gli output. Il servomotore è ciò che si muoverà fisicamente in base ai comandi ricevuti dall'Arduino. Il potenziometro può essere da 1k ohm a 1M ohm e consente agli utenti di fornire un input variabile che si traduce in movimento del servomotore.

Il servomotore funziona ricevendo un segnale PWM (Modulazione di Larghezza di Impulso) che indica la posizione desiderata. Il potenziometro, quando viene ruotato, cambia la sua resistenza, che viene letta dall'Arduino come una tensione analogica. Il servomotore opera a 5V. Non funziona a 3.3V. Questa tensione viene quindi mappata all'intervallo di movimento del servomotore, consentendo un movimento fluido da 0 gradi a 180 gradi.

Dettagli della scheda tecnica per il servomotore SG90

ProduttoreParallasse
Numero di parteSG90
Tensione di logica/IO5 V
Tensione di alimentazione4,8-6 V
Corrente di uscita (per canale)~500 mA
Corrente di picco (per canale)1 A
Linee guida sulla frequenza PWM50 Hz
Soglie logiche di ingresso0,5 V (basso), 2,5 V (alto)
Caduta di tensione / RDS(on)/ saturazione0,5 V a 500 mA
Limiti termici0°C a 60°C
PacchettoServo standard da 9g
Note / variantiComunemente usato nelle applicazioni RC

  • Assicurati che il servo non superi il suo valore massimo di corrente.
  • Utilizzare un dissipatore di calore se il servomotore opera continuamente a carichi elevati.
  • Collegare il potenziometro a un pin analogico per letture accurate.
  • Fai attenzione al timing del segnale PWM per il controllo del servo.
  • Controlla il campo di movimento del servocomando per evitare ostacoli fisici.

Istruzioni di cablaggio

Arduino wiring for controlling Servo motor with Potentiometer
Arduino wiring for controlling Servo motor with Potentiometer
Arduino wiring for servo motor
Arduino wiring for servo motor

Per questa configurazione, dovrai collegare i componenti come segue:

Collega il pin centrale del potenziometro (wiper) al pin analogico dell'Arduino.A0. Gli altri due pin del potenziometro dovrebbero essere collegati a5VeGNDsull'Arduino. Per il servomotore, collega il filo rosso a5V, il filo nero aGNDe il filo giallo o bianco al pin digitale9sull'Arduino. Questa disposizione consente al potenziometro di fornire un input analogico all'Arduino, che controllerà la posizione del servomotore in base a quell'input.

Assicurati di verificare tutte le connessioni e di garantire che il servo non sia ostruito nel suo campo di movimento. Se utilizzi un modello di Arduino diverso, conferma che le assegnazioni dei pin per l'ingresso analogico e l'uscita del servo siano compatibili.

Esempi di codice e guida passo passo

Di seguito è riportato un estratto del codice che inizializza il servo e legge il valore del potenziometro:


#include 

Servo myservo;  // create servo object to control a servo
int pos = 0;    // variable to store the servo position

void setup() {
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
}

In questo codice, includiamo la libreria Servo e creiamo un oggetto servo chiamatomyservoIl servocomando è collegato al pin9, che ci consente di controllarlo utilizzando questo pin.


void loop() {
  int sensorValue = analogRead(A0);  // read the potentiometer
  pos = map(sensorValue, 0, 1023, 0, 180);  // map to servo position
  myservo.write(pos);  // move servo to position
  delay(15);  // waits 15ms for the servo to reach the position
}

Nella funzione loop, leggiamo il valore del potenziometro dal pinA0e mappalo dal suo intervallo (0-1023) all'intervallo del servo (0-180 gradi). Ilmyservo.write(pos)Il comando sposta quindi il servo nella posizione desiderata in base alla rotazione del potenziometro.

Dimostrazione / Cosa Aspettarsi

Quando esegui questo programma, dovresti vedere il servomotore muoversi dolcemente da 0 a 180 gradi mentre giri il potenziometro. Se il servomotore non si muove come previsto, controlla il cablaggio e assicurati che il potenziometro funzioni correttamente. Inoltre, assicurati che l'Arduino sia alimentato correttamente e che il codice sia caricato senza errori. Puoi aspettarti di vedere il servomotore riflettere la posizione del potenziometro in tempo reale (nel video alle 02:00).

Timestamp video

  • 00:00- Introduzione al progetto
  • 01:30- Spiegazione della configurazione hardware
  • 03:45- Istruzioni per il cablaggio
  • 05:00- Revisione del codice
  • 07:30- Dimostrazione del progetto completato

Immagini

Arduino wiring for controlling Servo motor with Potentiometer
Arduino wiring for controlling Servo motor with Potentiometer
Arduino wiring for servo motor
Arduino wiring for servo motor
11-Controlling a servo position using a potentiometer using Arduino
Lingua: C++
Copia!

Risorse e riferimenti

Nessuna risorsa ancora.

File📁

Nessun file disponibile.