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…


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.