A - Sensori e attuatori�ES05 - I Servomotori
FB - 10.2021 - v1.1
Utilizzo dei servomotori
Vediamo come funzionano i servomotori e alcuni modi per comandarli
© FB - 10.2021
Indice
© FB - 10.2020
Obiettivi didattici
4
Obiettivi didattici
© FB - 10.2020
Introduzione teorica
6
I servomotori
Un servomotore è un particolare tipo di motore, generalmente di piccola potenza. A differenza dei motori tradizionali che ruotano in modo continuo, rimane fisso su una posizione in base al segnale periodico utilizzato per comandarlo.
Può essere elettrico, pneumatico, idraulico.
I servomotori trovano applicazione nei controlli di posizione, nelle macchine a controllo numerico, nei sistemi automatici di regolazione e nelle periferiche di sistema, come stampanti e plotter. [wikipedia]
© FB - 10.2020
I servomotori
possono ruotare con un angolo compreso tra 0° e 180°, mantenendo stabilmente la posizione raggiunta. (in realtà esistono anche alcuni servo che ruotano a 360° ma sono una minoranza)
© FB - 10.2020
I servomotori
© FB - 10.2020
Utilizzo dei servomotori
---
© FB - 10.2020
Utilizzo dei servomotori
---
© FB - 10.2020
I servomotori
© FB - 10.2020
I servomotori
© FB - 10.2020
Collegamenti
© FB - 10.2020
Pilotaggio di un servomotore
Dobbiamo generare un segnale impulsivo con periodo di 20ms e impostare il duty cycle in modo da avere la parte impulsiva con durata tra 1 e 2ms. L’ampiezza del segnale dipenda dal servomotore scelta ed è di solito compresa tra 3,3V e 7,2V
© FB - 10.2020
I Servomotori con Arduino
16
© FB - 02.2021
Arduino e Servomotori
Utilizziamo Arduino di Tinkercad per generare un’onda impulsiva da utilizzare per comandare un servomotore
© FB - 10.2020
Istruzioni pinMode() e digitalWrite()
18
© FB - 03.2021
L’istruzione delay() e delayMicroseconds()
L’esecuzione delle singole istruzione, dipende dalla velocità del clock del microcontrollore ed è solitamente molto veloce, parliamo di usec
L’istruzione delay(int millisecondi); blocca il microcontrollore per il tempo indicato
L’istruzione delayMicroseconds(int microsecondi); blocca il microcontrollore per il tempo indicato
© FB - 04.2020
Libreria Servo.h
Questa libreria consente alla scheda Arduino di controllare i servomotori. I servomotori standard consentono di posizionare l'albero su vari angoli, solitamente tra 0 e 180 gradi. I servomotori a rotazione continua consentono di impostare la rotazione dell'albero a varie velocità. La libreria Servo supporta fino a 12 motori sulla maggior parte delle schede Arduino. [codice sorgente]
myservo.attach(pin) Collega la variabile servo ad un pin
#include <Servo.h>
Servo myservo;
void setup()
{
myservo.attach(9);
}
void loop() {}
© FB - 11.2020
Libreria Servo.h
myservo.write(angle) Scrive un valore sul servomotore, controllando di conseguenza la posizione dell'albero. Su un servomotore standard, imposterà l'angolo dell'albero (in gradi). Su un servomotore a rotazione continua, questo imposterà la velocità del servo (dove 0 è la massima velocità in una direzione, 180 è la massima velocità nell'altra e un valore vicino a 90 è nessun movimento).
#include <Servo.h>
Servo myservo;
void setup()
{
myservo.attach(9);� myservo.write(90); // set servo to mid-point
}
void loop() {}
© FB - 11.2020
Esercitazione
22
Esercizio a
23
© FB - 02.2021
Esercitazione a
© FB - 10.2020
Esercizio b
25
© FB - 02.2021
Esercizio b
Trovare il numero dell'iniziale del proprio cognome IC e del proprio nome IN (es Bianchi Dario IC=2, IN=4)�Generare un segnale impulsivo con TH=((int)IC/5+1)*100ms e TL=((int)IN/5+1)*300ms sul pin ((int)IC/3+1) di Arduino. Collegare un led con resistenza e l’oscilloscopio per verificare il corretto funzionamento del programma.
26
© FB - 10.2020
Esercizio b
Nel progetto inserire la cattura dell’oscilloscopio in modo che si possa vedere bene il segnale generato.
27
© FB - 10.2020
Esercizio c
28
© FB - 02.2021
Esercizio c
Scrivere un programma (oppure tre diversi programmi) capace di pilotare le diverse posizioni di un servo motore (0°, 90° e 180°). Collegare servomotore e oscilloscopio ad Arduino per verificare il corretto funzionamento del programma.
29
© FB - 11.2020
Esercizio c
30
© FB - 11.2020
Esercizio c
31
© FB - 11.2020
Esercizio d
32
© FB - 02.2021
Esercizio d
Scrivere una funzione capace di pilotare le diverse posizioni di un servomotore (angolo X)(es. servoPos(int angolo). Quindi in base al parametro angolo il servo dovrà ruotare con l’angolo specificato.�Scrivere un programma di test per testare la funzione scritta (ad es. impostare il servo nelle posizioni da 0° a 180° ad incrementi di step° e tenerlo fermo per N sec) �Collegare servomotore e oscilloscopio ad Arduino per verificare il corretto funzionamento del programma.
33
© FB - 11.2020
Valutazione
34
Consegna del lavoro
Raccogliere in un documento, da aggiungere alla tabella progetti, i passaggi principali dell’esercitazione
35
© FB - 10.2021
Grazie per l’attenzione
Link/Riferimenti
© FB - 10.2021
Revisioni
v1.0 01/10/20 - versione iniziale �v1.1 03/10/21 - (da TEL2_ES04 e TEL2_ES05) nuovi esercizi �