Pilotare un motore elettrico usando Arduino

Come azionare Robot, servomandi e luci ad alto assorbimento usando un semplice transistor di tipo darlington, il TIP120 collegato al tuo Arduino.

Pilotare un motore elettrico usando Arduino

Nelle applicazioni industriali della Robotica ci troviamo in genere a lavorare con dispositivi ad alto assorbimento, assai più ostici di LED o piccoli servocomandi: nulla che i delicati circuiti della microelettronica potrebbero mai pilotare. Ci servono i muscoli dei transistor di grande e media potenza come il TIP120.

Uno dei malintesi più comuni tra chi inizia con la microelettronica e i Robots è l’idea di pilotare motori elettrici, servocomandi o decine di Led usando solo le uscite di Arduino. Purtroppo tutte queste e molte altre applicazioni richiedono correnti e tensioni molto più alte di quelle disponibili su Arduino (40mA ~ 5.0V).

Solo per fare un esempio, il piccolo motore elettrico che useremo in questo progetto richiede correnti di 500mA (milliampere) per potere funzionare: pensate alla corrente che sarebbe necessaria per spostare un cancello automatico!

Detto questo, la soluzione ai problemi di corrente o tensione è davvero semplice: usare un transistor come interruttore o “switch”, e per questo compito non esiste nulla di meglio che usarne uno di tipo Darlington, come ad esempio il TIP120.

Non appena applichiamo una piccola tensione alla Base di un transistor Darlington, il componente si attiva e permette alla corrente ad alto amperaggio di passare liberamente.

Se vuoi approfondire la differenza tra corrente e tensione ti consiglio di leggere questo articolo del blog. Usando il TIP120 come un interruttore velocissimo, possiamo regolare la velocità del motorino usando la tecnica Pulse Width Modulation o Modulazione a larghezza di impulso se preferisci leggere la pagina di wikipedia in italiano. Per applicare la PWM al nostro controller useremo la piccola tensione proveniente dal pin 9 di Arduino per “attivare” il Tip 120 in modo discontinuo. Con delle pause sempre più lunghe tra un impulso e l’altro possiamo rallentare la velocità del motorino, mentre con pause ridotte a zero possiamo mandarlo al massimo.

schema dei PIN del TIP120

La cosa che ti darà più noia nell’usare il TIP120 è vedere nello schema teorico ufficiale la “Base” al CENTRO del transistor e nel componente fisico ritrovarla piazzata a SINISTRA! Perciò pensa solo ai PIN fisici, così disposti: B – C – E

Nel circuito useremo anche un piccolo diodo, l’ N4001 destinato a proteggere il transistor dalle correnti prodotte dal motorino quando, ad esempio, lo fai girare manualmente: il diodo serve appunto come una “conduttore a senso unico” e impedirà alle correnti parassite o in “reverse” di danneggiare il TIP120.

Ho scelto il terminale 9 di Arduino non a caso ma perchè facilissimo da inviduare sulla scheda: se guardi altri progetti vedrai come in molti abbiano fatto la stessa scelta ma non per esigenze tecniche, ma solo perchè è estremamente comodo.

Le parti richieste

Ecco una lista delle cose che ti serviranno:

Lo schema

Segui attentamente la disposizione dei connettori, studia la foto e potrai collegare Il TIP120 al tuo Arduino in pochi minuti.

schema del driver per motore elettrico con TIP120 pr Arduino


     Breadboard     Arduino
  -  VCC            <------>  5V
  -  base Tip 120   <------>  Pin 9
  -  GND            <------>  GND

 

e infine Il codice completo…

/* 
  Driver per motore elettrico brushed
  - pin 9 di Arduino collegato alla base del TIP120
*/
int pinMotorino = 9;

void setup() {
  Serial.begin(9600);
  pinMode(pinMotorino, OUTPUT);  
}

void loop() {
  Serial.print("LOOP\n");
    // accelerazione progressiva del motore
    for(int x = 0; x <= 255; x++){ analogWrite(pinMotorino, x); delay(10); } // rallentamento progressivo for(int x = 255; x >= 20; x--){
      analogWrite(pinMotorino, x);
      delay(10);
    }    

  // pausa brevissima introdotto solo per precauzione
  delay(1);
}

programma driver per motore elettrico

Schermata del programma caricato sull’ IDE di Arduino del mio Pc con Windows 10. (clicca sulla foto per ingrandire) Questo post è stato scritto usando Windows 10. In genere utilizzo solo Linux nei miei progetti per un motivi semplicissimo: se devo programmare delle schede di tipo Raspberry o delle potenti CPU BeagleBone non è possibile installarci Windows neppure in linea di principio. Per questo motivo ti consiglio di installare subito Linux Debian o Ubuntu 18.04 (il mio preferito), non fosse altro che per conoscere il terminale a “Linea di Comando”.

In questo progetto “statico” dove la logica di comando sta tutta su Arduino senza CPU esterne, usare Windows o Linux non comportava alcuna differenza, ma in altri progetti del Blog useremo solo Linux.



Iscriviti ora alla nostra newsletter e dopo avere confermato la tua iscrizione troverai ogni 15 gg nella tua mail un argomento o un progetto pratico da seguire, con la lista dei componenti e il software necessario.

cta