Pilotare un motore elettrico usando Arduino

Jun 12, 2020

Lo leggi in 5 minuti

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.

Questo lo schema dei terminali del transistor “Darlington” TIP120

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


La macrofotografia del TIP120
transistor TIP120

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:

  -  Arduino UNO
  -  Transistor TIP120 - NpN
  -  Motorino elettrico "brushed" (il tipo più comune)
  -  Diodo N 4001
  -  Breadboard
  -  Resistenza 2200 Ohm
  -  Batteria 9V o alimentatore
  -  Portabatteria con Jack standard 9V
  -  Jumper e connettori vari


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

(clicca sulla foto per ingrandire)

Come collegare Arduino al transistor TIP120

nella parte sinistra i pin della Breadboard, a destra quelli di Arduino

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


e infine Il codice completo…

/* 
  Driver per motore elettrico brushed
  Robotdazero - https://www.robotdazero.it
    
  Il circuito:
  - pin 9 di Arduino collegato alla base del TIP120
  
  creato     16 Maggio   2018
  modificato 18 Febbraio 2020
 by sebadima 

  - This example code is in the public domain.
  - Questo programma viene fornito gratuitamente 
    anche per usi commerciali.
*/
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);
}

source

source

Clicca sulla icona di Github per il codice originale oppure clicca
sulla icona più a destra per scaricare il file dal nostro canale #Slack



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.



Se hai delle proposte interessanti o dei link da sottoporre usa la sezione sottostante, puoi commentare semplicemente avendo un account Facebook.


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.

newsletter