giovedì 23 giugno 2016

Controllo DC motor con encoder e L293D

Ormai i motori Servo motori si trovano ovunque, ma cosa possiamo dire dei motori DC?
Che differenze fondamentali bisogna tener ben presente per utilizzare un motore DC rispetto ad un Servo?
Per prima cosa, dove troviamo i motori DC? 
Vi sarà capitato di vederli nelle mini 4 WD oppure in tutti i "motorini" per far girare una ruota. Ebbene si, sono proprio quelli che si utilizzano per i line follower!

Differenze tra DC e Servo

La prima differenza tra DC e Servo sta nell'angolo utile, infatti i primi possono ruotare a 360°, a differenza dei Servo che, spesso, fanno solo angoli piatti.

La seconda differenza è rappresentata dal controllo, i Servo sono comodi perchè una volta alimentati, hanno bisogno solo d'un segnale di controllo per essere pilotati.
Ed i DC? 
Hanno solo due pin, + e - . Insomma solo l'alimentazione.

La domanda sorge spontanea, ma come li controllo se sono ON/OFF? 
Semplicemente controllando molto finemente l'accensione e lo spegnimento.

Ma possono andare anche nel senso opposto?
Si, basta scambiare il + con il - .

Dando un comando, come i Servo a cui do un angolo, il DC lo raggiunge?
Purtroppo no.

ALT, come no? Mi stai dicendo che non sono controllabili???

Per poter controllare un motore DC, serve un conta passi, un Encoder.


L'encoder è una sorta di conta passi, fissato all'estremità opposta al pignone del motore DC. 
Conta il numero di giri dell'albero, grazie ed una piccola palettina da 3 o 5 alette.

Questa palettina, girando solidale con il motore, passa davanti a due sensori, spesso ottici, permettendo all'encoder di "contare" i giri.

Spesso i motori DC vengono venduti con un riduttore di numero di giri, questo aumenta la precisione del motore.

Per riduttore s'intende un rapporto diverso tra pignone frontale e posteriore. 
Se per esempio il vostro DC motor ha un rapporto di 1:100, il pignone frontale farà un giro completo quando quello posteriore, collegato all'encoder, avrà fatto 100 giri.

Posso collegare un motore DC ad Arduino?
Nudo e crudo, assolutamente NO. Vedi punto 11 mille modi per distruggere Arduino.

In nostro aiuto servirà un Driver per motori DC, tipicamente l'L293D.


Primo test

Per prima cosa facciamo un piccolo riassunto del materiale necessario:
  • Motore DC
  • L293D
  • Encoder
  • Arduino
  • Batteria esterna, 4 AA, per alimentare il motore. Arduino penserà al resto tramite USB.

Come sempre il codice Arduino necessario e commentato è reperibile su GIT:


Plus:
Perchè ho due sensori ottici sull'encoder? non ne basta uno?
Utilizzandone due, si può capire se il motore sta ruotando in senso orario oppure anti orario, esempio.

Nessun commento:

Posta un commento