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






mercoledì 2 agosto 2017

Robot Car - Pilotaggio via Scratch -

Questo post e' il quarto di una serie di post legati alla realizzazione e alla programmazione di un Robot Car





Nel primo post [Robot Car - Assemblaggio -] ho spiegato come assemblare il kit di montaggio del Robot Car che si puo' comprare online [qui]

Nel secondo post [Robot Car - Assemblaggio Driver dei Motori -] ho spiegato come realizzare un semplice driver per i motori collegati alle ruote del Robot Car






Nel terzo post [s2pi - Programmare Raspberry Pi usando Scratch 2.0] ho spiegato come tramite l'utilizzo di s2pi (da me sviluppato) sia possibile programmare il Raspberry Pi usando l'ambiente off-line Scratch 2.0




In questo posto spiego come far muovere il Robot Car tramite un semplice programma Scratch.


Pannello di Comando


L'interfaccia di pilotaggio del Robot Car e' molto semplice. Comprende 4 frecce per i movimenti in avanti e indietro e per le rotazioni a destra e sinistra.
Al cento delle 4 frecce si trova un pulsante che serve per arrestare il Robot Car in caso di necessita'

Per semplicita' ho usato degli sprite che sono presenti nella libreria di immagini inclusa in Scratch 2.0




Una volta premuta la bandierina verde per far inizare il programma, Robot Car rimane fermo in attesa di un comando. Il pilota facendo click con il mouse su una delle frecce invia il comando relativo di movimento al Robot Car che quindi si spostera' in avanti o indietro per 1 secondo, oppure ruotera verso destra o verso sinistra in funzione del comando ricevuto.


Programma Scratch


Di seguito il programma Scratch commentato.
Per semplicita' usiamo il costrutto dei messaggi disponibile in Scratch.

Per ogni freccia definiamo un semplice codice che invia un messaggio broadcast includendo la direzione di movimento.

Per la freccia in avanti definiamo il messaggio: avanti.
In maniera analoga per la freccia indietro definiamo il messaggio: indietro
Seguendo la stessa logica definiamo i messaggi per le frecce di rotazione














In questo modo ogni volta che il pilota, con il mouse, fa' click su una freccia un messaggio broadcast relativo viene inviato


Qui sotto vediamo il programma Scratch da assegnare allo sfondo.
La logica e' molto semplice:

All'avvio del programma inizializziamo i motori chiamati DX (destra) e SX(sinistra) andando ad impostare il numero di pin GPIO del Raspberry Pi che sono usati per controllare il motore. 

A questo punto il Robot Car e' pronto per muoversi e rimane in attesa di un comando.
Sempre nello script dello sfondo andiamo ad intercettare i messaggi broadcast inviati tramite il click su una delle frecce o del pulsante di stop.

Se il messaggio ricevuto e' avanti allora andiamo ad attivare sia il motore DX che il motore SX con la velocita' massima 0.99 (range utilizzabile 0.4 - 0.99) in direzione avanti. A questo punto il Robot Car inizia a muoversi in avanti. Dopo 1 secondo fermiamo entrambi i motori.

Stessa logica per tutti gli altri messaggi di direzione.

L'unica differenza e' che per i messaggi destra e sinistra solo uno dei due motori viene attivato, permettendo quindi al Robot Car di fare una rotazione verso la direzione voluta.

Per semplicita' ho anche definito un blocco Ferma_Motore in quanto viene utilizzato varie volte nel codice.





A questo punto non ci resta che far partire il programma e pilotare il Robot Car. :)