Ciao a tutti! Questo nuovo episodio del tutorial di Arduino sarà dedicato al motore DC. Impareremo quindi a comandarlo con Arduino, servendosi di un transistor che permette alla scheda di gestire carichi che richiedono un'elevata quantità di corrente. Vedremo inoltre come proteggere la scheda e gli altri componenti dalle correnti inverse che vengono generate dal motore quando li togliamo all'alimentazione.
Il motore a corrente continua è un componente che non può essere comandato direttamente da Arduino in quanto richiede una corrente e a volte anche una tensione troppo elevata rispetto a quello che la scheda di Arduino può offrire. Per fortuna possiamo usare dei transistor che permettono di pilotare le correnti e le tensioni elevate usando delle correnti e delle tensioni molto più basse. Esistono diversi tipi di transistor, che principalmente possiamo catalogare come transistor a giunzione bipolare e transistor ad effetto di campo.
I transistor bipolari a sua volta possono essere di tipo NPN o PNP, mentre i transistor ad effetto di campo, chiamati anche MOSFET, possono essere a canale P o N. Nonostante tutte queste varietà, il funzionamento generale è praticamente sempre lo stesso. ed in particolare controllare il flusso della corrente tra il pin collettore ed emettitore usando il pin chiamato base per i MOSFET vengono usati nomi diversi dei pin e in questo caso la corrente scorre tra source e drain e viene controllata dal pin gate usando la tensione, a differenza della corrente come accade invece nei transistor bipolari il tipo NPN e PNP così come il canale P o N nel caso dei MOSFET determina il verso in cui scorre la corrente I transistor possono essere usati come amplificatori del segnale oppure come interruttori elettrici. In questo video li utilizzeremo come interruttori in modo da accendere e spegnere il motore. Il funzionamento del motore DC è relativamente semplice.
Quando riceve la corrente genera un campo magnetico, grazie ai magneti presenti al suo interno, che a sua volta fanno girare l'albero centrale. Invertendo i poli dell'alimentazione il motore agirerà nella direzione opposta. Oltre alla trasformazione dell'energia elettrica in energia meccanica, i motori possono essere usati anche per il procedimento inverso, diventando di conseguenza dei generatori. Come esperimento possiamo per esempio collegare un led alla estremità di un motore DC e farlo girare manualmente per far accendere il led.
Andiamo adesso a costruire il circuito per far ruotare il motore elettricamente. Come al solito riportiamo i pin 5V e GND sulla breadboard. Per far funzionare il motore, oltre ai classici 5V forniti da Arduino, abbiamo bisogno di un'alimentazione esterna.
Colleghiamo quindi il polo positivo e negativo dell'alimentatore rispettivamente alle righe più e meno della breadboard. La tensione 5V di Arduino e quella dell'alimentazione esterna devono rimanere sempre separate. Per quanto riguarda invece i poli negativi, dobbiamo unirli. Al posto di un alimentatore potete ovviamente usare delle batterie o qualsiasi altra fonte di alimentazione in grado di fornire un'adeguata tensione che va scelta in base al motore da pilotare.
Se non è sufficiente il motore non girerà, nel caso opposto invece rischiate di bruciarlo. Arrivati a questo punto possiamo collegare il motore DC alla breadboard. Inseriamo anche il transistor.
In questo video utilizzeremo il modello di tipo NPN. Uno dei due connettori del motore lo colleghiamo alla tensione positiva dell'alimentazione esterna, mentre l'altro lo colleghiamo al collettore del transistor, ovvero al piedino di sinistra. Non tutti i transistor hanno la stessa disposizione dei piedini, quindi dovete controllarla nel datasheet se usate un modello diverso. L'amortitore va collegato alla massa, mentre il piedino centrale, ovvero la base, la colleghiamo attraverso un resistore da 330 ohm ad uno dei pin PWM di Arduino. Quando togliamo la corrente, il motore crea una tensione opposta alla tensione di alimentazione che è stata tolta.
Questa tensione può generare dei picchi di corrente inversa che può danneggiare il transistor o altri componenti collegati. Per evitare questo fenomeno dobbiamo inserire un diodo in parallelo al motore, inserendo il catodo, ovvero la parte con la striscia grigia, rivolta verso il polo positivo. Questi collegamenti sono sufficienti per far girare il motore.
Però per facilitare il controllo inseriamo anche un pulsante di accensione e spegnimento e un potenziometro per poter regolare la velocità. Non ci soffermiamo troppo sui collegamenti del pulsante e del potenziometro in quanto sono stati già spiegati nei precedenti video. In ogni caso comunque in descrizione troverete il link per poter scaricare lo schema del circuito.
Passando allo sketch, per prima cosa dobbiamo Possiamo creare delle costanti per i numeri dei pin collegati con il motore, il pulsante e il potenziometro. Dato che nella fase di accensione il motore ha bisogno di una massima potenza per poter iniziare a muoversi, definiamo anche la durata del tempo iniziale nella quale impostiamo la velocità massima indipendentemente dal valore del potenziometro. Scegliamo per esempio 400 ms. Successivamente creiamo delle variabili che verranno usate durante la lettura del pulsante per sapere se il motore deve essere acceso o spento. E creiamo anche una variabile per memorizzare il tempo nel quale il motore è stato acceso.
Nella funzione setup impostiamo il pin del motore in modalità output e del pulsante in modalità input. Nella funzione loop invece per prima cosa leggiamo il valore del pulsante. Controlliamo se è cambiato dall'ultima lettura e se attualmente è uguale a HIGH, che vuol dire che è stato appena premuto. Se il motore non era acceso, salviamo il tempo attuale nella variabile START TIME e poi invertiamo lo stato del motore. Fuori da LEAF aggiorniamo la variabile che verrà utilizzata per il confronto successivo.
Se il motore è acceso, Se abbiamo superato la fase iniziale dell'accensione, allora possiamo leggere il valore del potenziometro per sapere la velocità che dovrà avere il motore. Ovviamente i pin analogici restituiscono un valore da 0 a 1023 che non è compatibile con i valori dei pin PWM che possono essere da 0 a 255, per cui dobbiamo prima effettuare una conversione proporzionale usando la funzione MAP. In questo caso riduciamo ulteriormente il range, non considerando i valori troppo bassi per i quali il motore non è in grado di girare. Scegliamo per esempio 70 come valore minimo.
Potete usare il monitor seriale per scoprire il valore sotto il quale il vostro motore smette di girare. A questo punto possiamo impostare la velocità usando la funzione Analog Write. Se siamo ancora nella fase iniziale, impostiamo il valore 255 indipendentemente dalla posizione del potenziometro. Se invece abbiamo schiacciato il bottone per spegnere il motore, e quindi la variabile Enabled è falsa, impostiamo la velocità a 0. Infine aggiungiamo 50 millisecondi di ritardo, che serviranno anche per evitare i rimbalzi del pulsante.
Possiamo verificare il codice e se non ci sono problemi caricarlo sulla scheda di Arduino. Per questo esempio utilizzeremo semplicemente un disco colorato. costruito con un vecchio cd collegato al motore. Premendo il pulsante il disco comincia a girare e se vogliamo possiamo premere di nuovo il pulsante per fermarlo. Come potete vedere il motore parte senza problemi anche con una bassa velocità impostata dal potenziometro, cosa che invece non sarebbe possibile senza aver forzato la velocità massima subito dopo l'accensione.
Girando il potenziometro possiamo aumentare la velocità. Se adesso proviamo a spegnere il motore non si fermerà immediatamente. ma continuerà a girare per inerzia prima di arrestarsi.
In questo video abbiamo imparato uno dei modi più basilari per gestire un motore DC con Arduino. Un solo transisto però non basta per far girare il motore in entrambe le direzioni. Per poterlo fare abbiamo bisogno di un ponte H o un motor driver.
Nei prossimi video vedremo come utilizzare questi componenti per avere più controllo sul motore. Come sempre in descrizione troverete il link per poter scaricare lo schema del circuito e lo sketch utilizzato. Iscrivetevi al canale e sui social per rimanere sempre aggiornati e scrivete nei commenti le vostre considerazioni, le domande e delle nuove idee. Condividete il video se vi è piaciuto e mettete un mi piace.