CONTENUTO ►
- Caratteristiche del micro servo SG90 Arduino
- Collegare del micro servo SG90 ad Arduino Uno
- Codice Arduino per pilotare del servomotore
- Controllo servomotore con potenziometro Arduino
- Codice per pilotare del servo a potenziometro
- Controllo micro servomotore con pulsante Arduino
- Codice Arduino per pilotare del servo a pulsante
Il servomotore Arduino è un elemento importante nella progettazione di vari robot e meccanismi. È un attuatore di precisione dotato di feedback per controllare con precisione i movimenti del meccanismo. Vediamo il dispositivo e il principio di funzionamento di un micro servomotore SG90 con un microcontrollore Arduino. Consideriamo alcuni semplici esempi di codice per controllare il servo utilizzando un potenziometro e un pulsante.
Per questa attività sono necessari:
- Arduino Uno / Arduino Nano / Arduino Mega
- micro servo 9g
- potenziometro
- pulsante
- breadboard
- cavi di collegamento
Micro servomotore SG90 datasheet, pinout
I servomotori sono ampiamente utilizzati per simulare i movimenti meccanici dei robot costruiti con Arduino. Un micro servomotore 9g è costituito da un sensore (di velocità, di posizione, ecc.), da un’unità di controllo del sistema meccanico e da circuiti elettronici. Gli ingranaggi del dispositivo sono realizzati in metallo, fibra di carbonio o plastica. Gli ingranaggi in plastica del servomotore non possono sopportare carichi pesanti e urti.
Caratteristiche del micro servo SG90 Arduino:
- Tensione di alimentazione: 4,5 – 6 V
- Coppia: 1,2 kg/cm a 4,5 V – 1,4 kg/cm a 6 V
- Velocità: 0,12 sec/60° a 4,5 V – 0,10 sec/60° a 6 V
- Rotazione: 180
Il servomotore per il microcontrollore Arduino ha un potenziometro incorporato collegato all’albero di uscita. Ruotando l’albero, il servomotore modifica il valore della tensione sul potenziometro incorporato. La scheda analizza la tensione del segnale di ingresso e la confronta con quella del potenziometro. In base alla differenza, l’albero ruota lentamente finché la tensione di uscita e quella del potenziometro non sono uguali.
Come collegare servomotore Arduino
Nel primo programma vedremo come controllare un servomotore su Arduino utilizzando il comando myservo.write(). A questo scopo viene utilizzata la libreria standard Servo.h (non è necessario installarla). I servomotori hanno angoli di rotazione di 180° e 360°, che devono essere tenuti in considerazione durante lo sviluppo dei progetti. Collegare il servo alla scheda Arduino come mostrato nello schema precedente e caricare il codice pronto all’uso.
Programma Arduino per controllare servomotore
#include "Servo.h" Servo servo; // creazione dell'oggetto "servo" void setup() { servo.attach(10); } void loop() { servo.write(0); // ruotare il servo nella nuova posizione delay(1000); servo.write(90); // ruotare il servo nella nuova posizione delay(1000); servo.write(180); // ruotare il servo nella nuova posizione delay(1000); }
Spiegazione del codice per controllare servomotore Arduino:
- il comando servo.attach(10); collega il servo all’uscita digitale 10 di Arduino;
- nel void loop() ruotiamo il servomotore di 0-90-180 gradi.
Collegamento del servo e del potenziometro Arduino
Ricevendo un valore del segnale di controllo dal microcontrollore Arduino, il servomotore mira a mantenere lo stesso valore all’uscita del suo attuatore. Vediamo un esempio più complesso di controllo di un servomotore da un microcontrollore utilizzando un potenziometro. Assemblate un circuito con un potenziometro come nell’immagine precedente e caricate il seguente programma in Arduino Uno per controllare il micro servomotore 9g.
Programma Arduino per controllo servo con potenziometro
#include "Servo.h" Servo servo; // creazione dell'oggetto "servo" void setup() { servo.attach(10); pinMode(A1, INPUT); Serial.begin(9600); } void loop() { int val = analogRead(A1); // lettura del valore corrente del potenziometro val = map(val, 0, 1023, 0, 180); Serial.println(val); Serial.println(); servo.write(val); delay(100); }
Spiegazione del codice per controllo del servo a potenziometro:
- se si utilizzano due servi contemporaneamente, il nome di ciascun oggetto servo deve essere unico nel programma, ad esempio servo1 e servo2;
- il comando Serial.println(val); invia le informazioni dal potenziometro alla porta seriale.
Collegamento del servo e del pulsante Arduino
Se durante la compilazione dello sketch viene visualizzato l’errore “Servo.h No such file or directory”, significa che non è presente la libreria Servo.h in Arduino IDE. Se il servomotore non gira o smette di funzionare a un certo punto, nella maggior parte dei casi il problema è nel collegamento o nell’alimentazione del micro servo 9g. L’alimentatore potrebbe non avere una corrente di uscita sufficiente per far funzionare il servo mg995 / servo sg90.
Programma Arduino per controllo servo con pulsante
#include "Servo.h" Servo servo; // creazione dell'oggetto "servo" void setup() { servo.attach(10); pinMode(A1, INPUT); Serial.begin(9600); } void loop() { int val = analogRead(A1); // lettura del valore corrente del pulsante Serial.println(val); if (val < 512) { servo.write(0); } if (val > 512) { servo.write(90); } delay(100); }
Spiegazione del codice per controllo del servo a pulsante:
- i valori della variabile val possono variare (tutto dipende dalla resistenza del resistore nel circuito) e possono assumere valori compresi tra 0 e 1023.
Conclusione. I servomotori sono spesso utilizzati in vari progetti Arduino per svolgere diverse funzioni: rotazione di strutture, spostamento di parti di meccanismi, movimento di robot, ecc. Poiché il micro-servo cerca costantemente di mantenere un determinato angolo di rotazione, bisogna prepararsi a un maggiore consumo di energia. Ciò sarà particolarmente evidente nei robot autonomi basati sul microcontrollore Arduino, alimentati da batterie.
Lascia un commento