Visualizzazione post con etichetta driver motori CC. Mostra tutti i post
Visualizzazione post con etichetta driver motori CC. Mostra tutti i post

mercoledì 28 febbraio 2018

L298N Driver Motori con Arduino








Oggi mi e' capitato sotto mano una scheda driver motore basata sull'integrato L298N.

In questo post faccio la prova della scheda e la interfaccio ad Arduino.


Scheda Motori L298N


La schedina e' un controller/driver per 2 motori DC che si può' interfacciare ad Arduino e ESP8266 e ovviamente a moltissimi altri micro o schede di sviluppo.

Questa scheda può' essere usata anche per controllare dei motori passo passo ma non e' oggetto di questo post.











La scheda si basa sull'integrato L298N che e' un doppio H-Bridge e può' controllare 2 motori DC per un totale di 4A.



Scheda L298N Piedinatura


In foto vediamo i pin ed i connettori disponibili sulla scheda




I due connettori laterali sono dedicati alla connessione dei due motori DC. L'ordine di connessione dei fili non e' importante.

Il connettore frontale serve per l'alimentazione:

  • +12V: alimentazione fino a 12V
  • GND
  • +5V: questo pin e' un uscita e fornisce 5 Volt. L'uscita e' attiva solo se il relativo ponticello (+5V Enable) e' presente

Il successivo connettore e' formato da 2 ponticelli e 4 pin:

  • Enable Output A: abilita il motore A
  • IN1 - IN2: controllo rotazione motore A
  • IN3 - IN4: controllo rotazione motore B
  • Enable Output B: abilita motore B


E' importante notare come i pin di Enable Output A/B permettano di controllare la velocità' di rotazione dei due motore.










Rotazione senza controllo di velocità


Vediamo ora l'utilizzo di questa scheda driver con Arduino.

Nell'esempio sotto riportato vediamo come effettuare il circuito su breadboard per controllare la rotazione in senso orario e antiorario di un motore DC.






Qui la realizzazione su breadboard






Come si può' osservare in questo case ho lasciato il ponticello su Enable Output A.

Vediamo ora un semplice codice di controllo




Come si vede ci sono tre stati per i GPIO 7 e 8:


  1. GPIO 7 = HIGH - GPIO 8 = LOW --> il motore ruota in senso orario
  2. GPIO 7 = LOW - GPIO 8 = HIGH --> il motore ruota in senso antiorario
  3. GPIO 7 = LOW - GPIO 8 = LOW --> il motore e' fermo

Quindi questa scheda ci permette di controllare la rotazione di uno o due motori DC in maniera semplicissima utilizzando solamente 2 GPIO per motore.

I motori ovviamente sono controllabili indipendentemente l'uno dall'altro. 

Questo per esempio e' molto utile nei classici progetti di RobotCar o simili














Rotazione con controllo di velocità'


Nell'esempio sotto riportato vediamo come effettuare il circuito su breadboard per controllare la rotazione in senso orario e antiorario di un motore DC con controllo di velocità'.

Nello sketch vedremo come e' possibile anche variare la velocità' di rotazione del motore permettendo di accelerare e decelerare (io lo faccio vedere con accelerazione costante per semplicità').





Come si vede l'unica differenza con lo schema precedente e' che ho rimosso il ponticello Enable Output A ed ho collegato il pin and un GPIO PWM (#9) di Arduino.

E' importante che sia connesso ad un GPIO con uscita PWM, solo cosi' potremo controllare la velocità' proporzionalmente al valore in uscita sul pin PWM.


Qui la realizzazione su breadboard






Vediamo ora un semplice codice di controllo




Come si vede la gestione dei GPIO 7 e 8 e' uguale al caso precedente.

Nella funzione motor_accel ho aggiunto il controllo della velocità' accelerando in modo uniforme da zero alla massima velocità' e analogamente decelerando fino a zero prima di cambiare senso di rotazione.

Nella funzione si vede chiaramente che il controllo della velocità' di rotazione e' determinato dalla scrittura sul GPIO 9 di un valore tra 0 (fermo) e 255 (massima velocità').












lunedì 7 agosto 2017

L293D breakout board

In uno dei miei post precedenti [Robot Car - Assemblaggio Driver dei Motori -] relativo alla serie del Robot Car [Robot Car - Assemblaggio -] ho spiegato come realizzare un semplice circuito per il pilotaggio dei due motori DC montati sul Robot Car utilizzando un unico integrato L293D ed una breadboard.



La realizzazione di questo semplice circuito e' immediata ed alla portata di tutti. Chiaramente il risultato finale risulta un po' poco stabile e disordinato, il che va' bene per un prototipo. 

In questo post spiego e fornisco tutti i dettagli sul come realizzare lo stesso circuito  su PCB.








Data la semplicita' del circuito e del relativo PCB, questo progetto e' realizzabile da chiunque anche dai piu' giovani ed inesperti





Schema Elettrico



La realizzazione dello schema elettrico e del PCB e' stata fatta con il software OpenSource KiCad

In figura si vede il semplice schema elettrico che riproduce i collegamenti fatti sulla breadboard nel post precedente.
Sono stati aggiunti 2 condensatori che non complicano eccessivamente il circuito. Ho aggiunto anche un Led che indica quando il circuito e' in funzione

Nota:
Ho intenzionalmente omesso i 4 condensatori di filtro sui piedini dei motori in quanto non pregiudicano il buon funzionamento del driver e mantengono lo schema ed il PCB ad un basso livello di complessita' (questo post e' rivolto ai giovanissimi e a chi e' agli inizi)

PCB




Qui il progetto del PCB a singolo layer in modo da poter essere realizzato facilmente anche a casa.

Progetto KiCad

Ho messo a disposizione di tutti il progetto Kicad su GitHub [L293D-Breakout Board]
In questo modo chiunque puo' studiarlo, modificarlo e migliorarlo e realizzarlo

Realizzazione


Il PCB e' di semplicissima realizzazione e puo' essere facilmente realizzato a casa o a scuola seguendo la tecnica del toner transfer, da me decritta in questo post [Realizzazione di un Circuito Stampato con tecnica del Toner Transfer]


Lista Materiale

Per realizzare questo progetto serve il seguente materiale


  • 1x Integrato L293D con zoccolo a 16 pin
  • 3x Screw Header da 5 mm
  • 1x Led
  • 1x Resistenza da 220 Ohm
  • 1x Condensatore Elettrolitico da 100uF
  • 1x Condensatore ceramico a disco da 0,1 uF
  • 1x Basetta Ramata con dimensioni superiori a 3,5cm x 4,5cm
  • Materiale di consumo per la realizzazione del PCB (vedi link sopra per tutti i dettagli)






Conclusioni

La realizzazione di questo semplice PCB permette di creare un driver per i motori del Robot Car che risulta pulito e pratico. Nella realizzazione si puo' sperimentare una tecnica casalinga/hobbystica per realizzare PCB di complessità' media.

Suggerisco a chiunque sia alle prime armi e voglia impratichirsi di realizzare questo progetto.

Come sempre se avete suggerimenti positivi sono sempre benvenuti. Per qualsiasi problema contattatemi nei commenti sotto



venerdì 28 luglio 2017

Robot Car - Assemblaggio Driver dei Motori -

Nel primo post della serie [qui] ho descritto come assemblare i vari componenti che formano il kit del robot car.

A questo punto il robot car ha la necessita' di essere controllato per potersi muovere.
In questo post descrivo i passi necessari per installare il cervello (un raspberry pi zero) ed il driver dei 2 motori CC collegati alle ruote.

Componenti Necessari


Per portare a termine i passi descritti in questo post sono necessari i seguenti componenti

Raspberry Pi Zero





Io uso un Raspberry pi zero per le ridotte dimensioni. Altre versioni del Raspberry Pi possono essere utilizzate per questo progetto senza particolari problemi.

Suggerisco se possibile l'utilizzo di un Raspberry Pi Zero W in quanto include a bordo il wifi senza la necessita' di dongle esterni.


(Mini) BreadBoard




Per comodita' ho usato una mini breadboard con 170 punti di connessione.
E' possibile usare una piu' comune breadboard da 400 punti senza particolari problemi



IC L293(D)




Per comodita' ho usato un integrato L293D. Se avete un L293 ancora meglio.


Filo e Cavetti di connessione







Passiamo ora all'assemblaggio e alla realizzazione del driver per i motori collegati alle ruote.



Passo 1:  Saldatura alimentazione motori






I motori sono dotati di due terminali metallici su cui bisogna saldare un filo di alimentazione.
Inseriamo un filo e ripieghiamo leggermente l'estremita' quasi a formare un piccolo uncino. Questo rende il collegamento piu' solido e duraturo.










Ora con il saldatore ben caldo applicate un po' di stagno in modo da saldare i fili di alimentazione al connettore metallico del motore.








Questo e' il risultato che si dovrebbe ottenere.





Passo 2:  Fissaggio Raspberry Pi Zero al telaio

Per eseguire questo passo,  oltre al Rapsberry Pi, c'e' bisogno di una vite e bulloncino (presenti nel kit RobotCar) e opzionalmente di un punto gomma adesiva.




Come si nota il Raspberry Pi e' dotato di 4 fori di ancoraggio. Noi ne useremo uno solo in questo post.







Qui indico con une freccia il foro su cui avvitare il Raspberry Pi





Dall'estremita' opposta, siccome non e' presente un foro nel telaio, applico un punto gomma adesivo per fissare meglio la scheda Raspberry Pi al telaio del RobotCar





Questo e' il risultato finale che si dovrebbe ottenere











Passo 3:  Applicazione mini Breaboard sul telaio





Ho rimosso la pellicola protettiva dal fondo della mini breaboard  e l'ho fissata sul telaio nello spazio disponibile tra il porta batterie e la scheda Raspberry Pi installata al passo precedente.




Passo 4:  Passaggio fili alimentazione motore


Faccio passare i fili di alimentazione dei motori nelle fessure presenti nel telaio del RobotCar come indicato in figura




Fate passare i fili con delicatezza onde evitare di staccarli dai motori.




Questo e' l'effetto finale che dovreste ottenere








Passo 5:  Montaggio IC L293

In questo passo ho inserito il circuito integrato L293D, a 16 pin, nella mini breadboard

Importantissimo notare il riferimento su un lato del chip (una mezza luna scanalata) e un cerchietto scanalato che indica il pin #1 come indicato in figura





Ho inserito con delicatezza l'integrato con il pin #1 in corrispondenza della linea 6 come indicato in figura.

Nota:

Alle volte risulta un po' difficile inserire l'integrato nella breadboard. Se capita cio' non insistere e non sforzare.
Consiglio di guardare bene i pin dell'integrato e di raddrizzarli in caso alcuno siano leggermente piegati.






Questo e' il risultato che si dovrebbe ottenere


Passo 6:  Cablaggio circuito driver per motori

Ho eseguito i cablaggi come indicato nelle figure qui sotto














Ora inserisco i fili di alimentazione del motore di sinistra




Ora inserisco i fili di alimentazione del motore destra



Ora inserisco il filo nero che esce dal porta batterie (negativo o massa)





Ora collego il pin #2 del Raspberry Pi (+5V) al pin #1 del L293D come indicato in figura











Ora inserisco il filo rosso che esce dal porta batterie (positivo) ed aggiungo un filo dal piedino #12 del L293 a massa (basso a destra sulla mini breadboard)






Ora porto a massa il pin # 5 del L293D






Ora collego i pin #35 e #37 del Raspberry Pi (GPIO 19 e GPIO 26) alla breadboard come indicato in figura






Ora collego i pin #38 e #40 del Raspberry Pi (GPIO 20 e GPIO 21) alla breadboard come indicato in figura






Ora collego i pin #39 (GND o massa)alla breadboard come indicato in figura







Questo e' il risultato finale che dovreste ottenere










Conclusioni

Al termine di questo secondo post abbiamo montato sul telaio il cervello del RobotCar e cioe' il Raspberry Pi Zero

Abbiamo anche creato, utilizzando un unico integrato  L293, il driver per i due motori. Questo ci permette di pilotare ogni singolo motore e farlo girare in avanti e all'indietro a differenti velocita', quindi permettendo al RobotCar di muoversi andando avanti e indietro e di ruotare a destra e sinistra.

Nei prossimi post trattero' la parte software di controllo.

Come al solito commenti costruttivi sono ben accetti