Pilotiamo un servomotore con ESPertino

L'articolo non spiegherà la teoria di funzionamento dei servo, in quanto ampiamente trattata in molti articoli del nostro blog. Si soffermerà, piuttosto, sulle soluzioni da adottare per la loro implementazione, in quanto le porte logiche della nostra scheda ESPertino erogano una tensione di 3.3V.

Introduzione

I servo sono utilizzati molto nei sistemi di automazione e danno un grande contributo, probabilmente, pari ai motori passo-passo. Consentono di ottenere precisi movimenti angolari utilizzando una sola connessione verso la porta logica della MCU.

Collegamento a ESPertino

La maggioranza dei servo in circolazione funziona con una tensione di alimentazione di +5V e lo stesso dicasi per il segnale logico di pilotaggio. Il loro funzionamento diretto con ESPertino, pertanto, potrebbe avvenire con molti problemi, dal momento che le uscite digitali assicurano un potenziale di +3.3V. Molti servo motori, comunque, alimentati a 5V funzionano bene anche se il segnale di controllo è limitato a 3.3V quindi, prima di provare a usare circuiterie più complesse, si sperimenti lo schema di base proposto in figura 1. Anche se tale schema è funzionale, converrebbe sempre collegare l'alimentazione del servomotore (filo rosso e nero) direttamente a un'altra fonte esterna. La linea del segnale, invece, è quella più "inoffensiva" e a basso assorbimento di corrente. Esistono, per fortuna, anche diverse soluzioni alternative per effettuare una buona traslazione dei livelli logici.

Figura 1: collegamento di principio di un servo a ESPertino

Figura 1: collegamento di principio di un servo a ESPertino

Lo sketch destra, centro e sinistra

Come si sa, per effettuare delle rotazioni occorre "bombardare" il servo con alcuni impulsi modulati (PWM). A seconda del duty cycle dell'impulso cambia la distanza angolare percorsa. Gli impulsi quadri devono avere una durata di circa 20ms totali (pari a una frequenza di 50 Hz). La tolleranza, comunque, è molto alta e anche diverse temporizzazioni funzionano egregiamente. Il fronte attivo (ON) deve avere una durata compresa tra 1ms e 2ms (altri modelli potrebbero esigere diverse temporizzazioni). Diverse durate modificano l'angolo di rotazione. Lo sketch che segue ha il compito di far muovere il perno del servo a sinistra, al centro, a destra e al centro nuovamente, all'infinito, dando luogo al movimento visibile nell'animazione di cui alla figura 2.

void setup() {
   pinMode(13, OUTPUT);
}
//-------------LOOP----------------
void loop() {
  for(int k=0;k<20;k++) {
    digitalWrite(13,HIGH);
    delayMicroseconds(1000);
    digitalWrite(13,LOW);
    delay(19);
  }
  delay(500);
  for(int k=0;k<20;k++) {
    digitalWrite(13,HIGH);
    delayMicroseconds(1500);
    digitalWrite(13,LOW);
    delay(18.5);
  }  
  delay(500);
  for(int k=0;k<20;k++) {
    digitalWrite(13,HIGH);
    delayMicroseconds(2000);
    digitalWrite(13,LOW);
    delay(18);
  } 
  delay(500);
  for(int k=0;k<20;k++) {
    digitalWrite(13,HIGH);
    delayMicroseconds(1500);
    digitalWrite(13,LOW);
    delay(18.5);
  }
  delay(500);  
}
Figura 2: l'animazione di un servo mosso dallo sketch proposto

Figura 2: l'animazione di un servo mosso dallo sketch proposto

La larghezza dell'impulso alto determina, dunque, il grado di angolazione del servo motore. Scegliendo opportunamente diversi valori, compresi tra il minimo e il massimo, è possibile orientare il perno in qualsiasi direzione consentita, come mostrato in figura 3.

Figura 3: la larghezza dell'impulso determina una diversa angolazione

Figura 3: la larghezza dell'impulso determina una diversa angolazione

Traslazioni dei segnali

Per innalzare, a ogni modo, il livello del segnale logico da 3.3V a 5V sono possibili diverse soluzioni. Alcune di esse sono le seguenti:

  • usare un transistor o un mosfet in uscita. Fare attenzione alle inversioni di fase del segnale;
  • usare i traslatori a pompa di carico LTC1516 o LTC1754-5 della Linear Tecnology (vedi figura 4);
  • usare i traslatori MAX1840 o MAX1841;
  • usare il MAX3370;
  • e molte, molte altre...

La cosa più importante da considerare, al di la della corretta tensione elettrica in uscita, è quella che il traslatore deve assicurare un'alta velocità di commutazione e deve "seguire", alla perfezione, il segnale in ingresso, senza "perdere colpi".

Figura 4: Il regolatore DC/DC LTC1754 con pompa di carica

Figura 4: Il regolatore DC/DC LTC1754 con pompa di carica

 

Scrivi un commento

EOS-Academy

Ricevi GRATIS le pillole di Elettronica

Ricevi via EMAIL 10 articoli tecnici di approfondimento sulle ultime tecnologie