Home
Accesso / Registrazione
 di 

Prima parte: Creare una macchinina telecomandata che evita gli ostacoli e segue un percorso

RCcar

Secondo di una serie di articoli in cui vedremo come realizzare una macchina telecomandata che tramite un sensore ottico segue un percorso ed evita gli ostacoli frontali. In questo articolo affronteremo il progetto della parte hardware.

Dopo aver introdotto il progetto della nostra macchinina telecomandata "intelligente" tramite schemi a blocchi scendiamo più nel dettaglio della parte hardware lasciando la parte software per il prossimo ed ultimo articolo che concluderà il ciclo.

Partiamo come al solito con l'elenco del materiale necessario:

Come avevamo già detto la parte "meccanica" del nostro modellino sarà dato come un punto di partenza, quindi occorre procurarsi un modellino di auto telecomandata come ad esempio quello in figura sottostante dal quale sono già state rimosse alcune parti non necessarie per il progetto.

Tipicamente le macchinine giocattolo come quella sopra non sono munite di datasheet con indicazione dei pin di controllo del motore e delle relative componenti, sarà quindi necessario fare qualche prova per capire quali terminali controllano i movimenti della macchina e come per poi potervi agire in una fase successiva. Questa è sicuramente la parte più tediosa dell'intero lavoro.

Suggerisco di semplificare l'operazione rimuovendo la parte per il controllo remoto del modellino che tanto non ci servirà iniziando a testare i collegamenti relativi a questa che potrebbero dare utili indicazioni sul controllo del modellino. Alla fine dovreste riuscire ad individuare una coppia di cavi per il controllo delle route anteriori ed una coppia per le ruote posteriori.

Il sensore ad infrarossi è molto semplice da usare e poco costoso. Ha solo tre collegamenti: terra, alimentazione ed il segnale che indica la prossimità di oggetti. La curva che descrive la relazione tra la tensione in uscita dal sensore e la distanza di un oggetto è mostrata nella figura sottostante.

L'alimentazione del sensore dovrà essere tra +4.5 e +5.5 V, si usano quindi tre batteria AA in serie per ottenere i 4.5V necessari.

Il sensore IR consuma parecchio (30mA), inoltre usando la stessa alimentazione che sarà usata per la telecamera per il riconoscimento del percorso introduce molto rumore sulla linea della telecamera deteriorando l'acquisizione dati. Si sono quindi distinte le due alimentazioni, sensore IR e restati componenti per risolvere questi problemi mantenendo un riferimento comune di tensione di modo che l'output del sensore potesse essere interpretato correttamente dal microcontrollore.

L'uscita del sensore IR è collegata direttamente all'ATmel Mega per fare la conversione da analogico a digitale di modo da processare i dati. Dato che la gestione del sensore di prossimità non è prioritaria, poichè possiamo rilevare oggetti a distanza di 80 cm e la velocità di spostamento del modellino non è molto alta, la conversione AD deve essere il più rapida possibile come anche l'interpretazione dei dati per lasciare quanto più tempo possibile all'analisi dei dati provenienti dalla telecamera.

Per quanto riguarda invece il circuito di controllo del motore, come possiamo vedere dallo schema elettrico sottostante, si tratta di una soluzione classica.

 

L'uscita di controllo del microcontrollore è collegata al circuito per la gestione del motore tramite un isolatore ottico per evitare che picchi di corrente tornino nel microcontrollore causando danni.

Per far muovere in tutte le direzioni il modellino bisogna generare sia una tensione positiva che negativa, ciò si ottiene tipicamente con un ponte H come quello riportato in figura sotto.

Passiamo alla telecamera per il riconoscimento del percorso. Abbiamo suggerito il Mitsubishi M64282FP Image Sensor, sensore ottico con risoluzione 128x123 pixel basato sulla tecnologia CMOS. Vogliamo distinguere linee nere su sfondo nero. Vediamo in breve come funziona il sensore ottico che useremo. Lo schema a blocchi sottostante riassume le principali operazioni svolte dalla telecamera.

Per prima cosa bisogna resettare i vari registri, che poi vengono inizializzati, dopo di che si entra nel ciclo di acquisizione dati. L'uotput della telecamera è un sengnale analogico che dovrà essere convertito in digitale per poi essere analizzato. I vari collegamenti della telecamera sono mostrati nelle figure sottostanti.

Dovendo ottimizzare al massimo le operazioni per poterle svolgere con il microcontrollore la conversione AD è molto spartana. Sostanzialmente il segnale analogico associato ad ogni pixel, solitamente compreso tra 0 e 5V per questa telecamera, viene mandato ad un comparatore di soglia con soglia fissa a 0V. Tutto ciò che risulta sotto la soglia è considerato zero (pixel nero), oppure uno (pixel bianco). In questo modo si semplifica notevolmente l'acquisizione dei dati, la conversione AD e si riduce l'uso di memoria del microcontrollore. Lo schema del comparatore è mostrato sotto.

Per concludere riassumiamo le varie fonti di alimentazione per la varie parti descritte sopra. Come già detto il sensore di prossimità ha una su alimentazione basata su tre batteria AA. Il microcontrollore richiede invece una batteria da 9V. La linea di alimentazione a 5V del microcontrollore viene usata per alimentare la telecamera. Il motore DC ed il servo motore del modellino sono alimentati dalle 5 batteria AA che fanno già parte del sistema di alimentazione del modellino.

In fase di test conviene usare una alimentazione più stabile e constante delle batterie dette sopra poichè altrimenti variazioni di tensione dovute alla scarica delle batterie potrebbero essere erroneamente interpretate come un malfunzionamento del sistema.

Data la scarsa risoluzione dei sensori ottici usati, quindi sia la telecamera che il sensore IR di prossimità, in condizioni di luce ridotta le distanze ed il percorso non vengono più interpretati correttamente. Si potrebbe in parte ovviare a questo problema rendendo più accurata l'interpretazione dei segnali analogici e la loro analisi ma ciò richiederebbe un incremento delle prestazioni hardware per gestire i calcoli nettamente più onerosi.

Abbiamo visto la parte hardware di questo progetto molto complesso. Come sempre l'automazione richiede di fare scelte di compromesso tra la qualità del risultato e l'hardware a disposizione. La gestione di segnali analogici complessi come il flusso video di una telecamera aggiunta ad una sensore di prossimità richiedono potenze di calcolo ben superiori a quelle messe a disposizione da un microcontrollore, ma con una attenta progettazione è possibile ottenere un risultato decoroso.

 

 

Scrivi un commento all'articolo esprimendo la tua opinione sul tema, chiedendo eventuali spiegazioni e/o approfondimenti e contribuendo allo sviluppo dell'argomento proposto. Verranno accettati solo commenti a tema con l'argomento dell'articolo stesso. Commenti NON a tema dovranno essere necessariamente inseriti nel Forum creando un "nuovo argomento di discussione". Per commentare devi accedere al Blog
ritratto di Matteo156

ArduRacing

Approfitto per segnalare anche questo progetto che stiamo portando avanti al Luccalug, sempre di auto che si muove in maniera autonoma. In questo caso il modellino sarà in grado di muoversi all'interno di un circuito racchiuso tra pareti. La parte di programmazione farà parte di un contest che terminerà per il Linuxday lucchese con relativa gara a tempo.

http://matteo.luccalug.it/arduracing/

ritratto di Berni

Wow!

Molto interessante 

Grazie per la segnalazione 

ritratto di Ionela

Date un'occhiata sul video

Date un'occhiata sul video della macchina telecomandata come evita gli ostacoli

ritratto di luk1560

Anche io ho un video

 

 

Login   
 Twitter Facebook LinkedIn Youtube Google RSS

Chi è online

Ci sono attualmente 0 utenti e 22 visitatori collegati.

Ultimi Commenti