1 of 38

A - Sensori e attuatori�ES05 - I Servomotori

FB - 10.2021 - v1.1

2 of 38

Utilizzo dei servomotori

Vediamo come funzionano i servomotori e alcuni modi per comandarli

© FB - 10.2021

3 of 38

Indice

© FB - 10.2020

4 of 38

Obiettivi didattici

4

5 of 38

Obiettivi didattici

  • Conoscere il funzionamento di un servomotore

© FB - 10.2020

6 of 38

Introduzione teorica

6

7 of 38

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

8 of 38

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

9 of 38

I servomotori

© FB - 10.2020

10 of 38

Utilizzo dei servomotori

---

© FB - 10.2020

11 of 38

Utilizzo dei servomotori

---

© FB - 10.2020

12 of 38

I servomotori

© FB - 10.2020

13 of 38

I servomotori

© FB - 10.2020

14 of 38

Collegamenti

© FB - 10.2020

15 of 38

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

16 of 38

I Servomotori con Arduino

16

© FB - 02.2021

17 of 38

Arduino e Servomotori

Utilizziamo Arduino di Tinkercad per generare un’onda impulsiva da utilizzare per comandare un servomotore

© FB - 10.2020

18 of 38

Istruzioni pinMode() e digitalWrite()

  • pinMode() Configura il pin specificato in modo che si comporti come input o output.

  • digitalWrite() Scrive un valore ALTO o BASSO su un pin digitale. Se il pin è stato configurato come OUTPUT con pinMode (), la sua tensione sarà impostata al valore corrispondente: 5V (o 3.3V su schede 3.3V) per HIGH, 0V (ground) per LOW.

18

© FB - 03.2021

19 of 38

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

20 of 38

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

21 of 38

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

22 of 38

Esercitazione

22

23 of 38

Esercizio a

23

© FB - 02.2021

24 of 38

Esercitazione a

  1. Onda quadra con periodo 20ms, th=1ms, Vmin=0V, Vmax=5V (Offset 2.5V)
    1. verificare il segnale generato con l’oscilloscopio
    2. collegare il servomotore
  2. Onda quadra con periodo 20ms, th=1,5ms, Vmin=0V, Vmax=5V
  3. Onda quadra con periodo 20ms, th=2ms, Vmin=0V, Vmax=5V
  4. Preparare una tabella con i servomotori testati e indicare i parametri di funzionamento

© FB - 10.2020

25 of 38

Esercizio b

25

© FB - 02.2021

26 of 38

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.

  1. Montare il circuito su Tinkercad
  2. Scrivere lo sketch
  3. Avviare la simulazione e spiegare�il risultato ottenuto
  4. consegnare il progetto contenente lo �screenshot della simulazione, il �codice e la spiegazione del collaudo.
  5. E’ vietato usare la libreria servo.h

26

© FB - 10.2020

27 of 38

Esercizio b

Nel progetto inserire la cattura dell’oscilloscopio in modo che si possa vedere bene il segnale generato.

27

© FB - 10.2020

28 of 38

Esercizio c

28

© FB - 02.2021

29 of 38

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.

  1. consegnare gli screenshot delle simulazioni (raccogliere tutti gli screenshot in un unico documento) e del codice scritto.

29

© FB - 11.2020

30 of 38

Esercizio c

30

© FB - 11.2020

31 of 38

Esercizio c

31

© FB - 11.2020

32 of 38

Esercizio d

32

© FB - 02.2021

33 of 38

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.

  • consegnare gli screenshot delle simulazioni (raccogliere tutti gli screenshot in un unico documento)

33

© FB - 11.2020

34 of 38

Valutazione

34

35 of 38

Consegna del lavoro

Raccogliere in un documento, da aggiungere alla tabella progetti, i passaggi principali dell’esercitazione

35

© FB - 10.2021

36 of 38

Grazie per l’attenzione

37 of 38

Link/Riferimenti

© FB - 10.2021

38 of 38

Revisioni

v1.0 01/10/20 - versione iniziale �v1.1 03/10/21 - (da TEL2_ES04 e TEL2_ES05) nuovi esercizi