FirstBot Proyect

> First Bot Project
> Studio teorico/pratico

> | Inizio | Avanti--> |

> Domenica 11-2-2001
> Obiettivo:
> Realizzare un robot autonomo funzionante secondo le specifiche presenti nel regolamento della competizione tra minirobot che si tiene periodicamente all'Istituto Professionale Fascetti di Pisa. Non ho la minima idea se questo studio andra' in porto o se difficolta' costi e tempi di realizzazione geologici a un certo punto ne decreteranno la fine, intanto pero' voglio fare qualche prova :)

> Fase1 - Realizzare la base mobile con motori e controllo motori.
> Nel regolamento si legge che il robot deve muoversi su terreno piano in spazi non piu' stretti di 30cm. Le sue dimensioni massime devono essere contenute in un parallelepipedo di 20*20cm di base e max 25cm di altezza. Per sicurezza possiamo contenere le dimensioni della base i un cerchio di diametro pari a 18cm. Realizzando una geometria di movimento "cilindrica" (cioe' facendo in modo che il robot possa ruotare su se' stesso rimanendo fermo nello stesso punto) si semplifica molto il problema del controllo del movimento.

> Picture by http://www.seattlerobotics.org/encoder/jun98/sr04.htm

> Come motori si possono usare dei servocomandi modificati, a cui e' stata tolta sia l'elettronica interna che i fermi meccanici che ne impediscono la rotazione continua. Si ha cosi' a disposizione un gruppo motore+riduttore completo a cui possono essere direttamente attaccate delle ruote (indicativamente da circa 5 cm di diametro). Per quanto riguarda le velocita' come prima valutazione penso che tre velocita' per ogni senso di rotazione possono bastare, inoltre per una maggiore precisione nella rotazione e minor consumo e' il caso di comandare i motori in PWM.

> Per quanto riguarda il sistema controllo dei motori si deve considerare che il robot verra' comandato da uno o piu' microcontrollori, pertanto e' utile pensare a un sistema che, con pochi fili di ingresso/uscita, metta il micro in grado di regolare sia la velocita' che il senso di rotazione di ciascun motore. Mi interessa pero' anche la possibilita' di controllare eventualmente i motori tramite una tensione continua. Una prima idea puo' intanto essere quella dello schema a blocchi seguente:

> Il micro carica serialmente 6 bit su un registro a scorrimento SIPO tipo CD4094. Ogni motore e' comandato da 3 bit, i primi 2 vanno a un DAC converter che trasforma il codice in 4 livelli di tensione (compreso lo zero), un terzo bit controlla la direzione di rotazione. I DAC possono essere realizzati con due reti ladder R-2R, composte ciascuna da 5 resistenze a bassa tolleranza (1%) seguite da un circuito a operazionale per il condizionamento del segnale. La tensione cosi' ottenuta va inviata ai modulatori PWM, che non sono altro che due comparatori a cui arriva anche un segnale triangolare a qualche Khz prodotto da un apposito oscillatore. All'uscita dei modulatori abbiamo due segnali PWM che possono pilotare lo stadio di potenza, a cui arriva anche il segnale per il senso di rotazione. Considerando l'aspetto economico mi conviene riutilizzare il piu' possibile i componenti di recupero a mia disposizione, pertanto come stadio di potenza inizierei a fare delle prove con dei semplici transistor darlington e due microrele' per invertire il senso di rotazione. Un circuito cosi' composto richiede solo uno shift register e due quadrupli operazionali tipo TL084 (con cui si realizza anche l'oscillatore triangolare), piu' i due rele', i transistor e uno stadietto di alimentazione per gli amp-op.

> Un primo problema meccanico gia' e' rappresentato dai due motori diversi l'uno dall'altro, sia come dimensioni che come velocita' di rotazione a parita' di tensione. Spero che con il circuito di condizionamento del segnale dei DAC riusciro' a fare in modo che, a parita' di codice di pilotaggio, le ruote girino alla stessa velocita', altrimenti sara' arduo far muovere il bot in linea retta.... o mi rassegnero' a prendere un altro servo uguale a uno degli altri due. In ogni caso quello descritto e' un sistema di controllo ad anello aperto, e solo una prova pratica puo' mostrare se funziona oppure no.

> Come alimentazione pensavo a una batteria al piombo 12V 1,2Ah oppure a 10 elementi nichel-cadmio, non avendo a disposizione nessuna delle due batterie dovro' valutare l'alternativa piu' economica. La batteria al piombo mi piacerebbe di piu' (e' compatta e non ha effetto memoria) ma e' anche piu' pesante, e, non conoscendo il peso finale del bot, non sono in grado di valutare quanto influirebbe sulle prestazioni.

> Problematiche immediate da affrontare:

> - Scelta della base e fissaggio motori (prevedere batterie).
> - Costruzione / reperimento / fissaggio delle ruote.
> - Reperimento resistenze di precisione e operazionali.
> - Reperimento parti di recupero, transistor, diodi shottky, rele'.
> - Progettazione / montaggio circuito di controllo e primo debug.
> - Programmazione PIC per debug controllo motori.
> Obiettivo immediato:
> Realizzare una base motorizzata a 3 velocita' per senso di marcia che si muova in linea retta, e che possa ruotare su se' stessa rimanendo ferma nello stesso punto senza occupare uno spazio circolare superiore ai 18cm di diametro. Come terzo punto di appoggio della base si puo' prevedere o una ruota libera o una sfera, o comunque un punto di appoggio di minimo attrito (ma non troppo piccolo da essere disturbato da piccole fessure sul terreno come le giunture dei tavoloni che formano il campo).

> | Il terzo punto di appoggio potrebbe provvisoriamente essere formato da un semplice dado cieco da almeno 8 mm.

> Il circuito di controllo:

> Schema di principio convertitore DAC e condizionamento segnale.

> Il 4094 accetta 6 bit trasmessi serialmente su ser-in, le uscite Q8 e Q7 portano i primi 2 bit con il codice binario della velocita' (da 0 a 3). Il convertitore DAC a 2 bit e' formato dalla rete ladder di cinque resistenze di precisione. Il primo operazionale e' un buffer ad alta impedenza e serve per non caricare il DAC. Il secondo operazionale permette di regolare offset e amplificazione della tensione del DAC in modo da scegliere il punto di lavoro del modulatore PWM.

> Schema di principio modulatore PWM con stadio di potenza e oscillatore triangolare.

> I due operazionali in alto sono il classico oscillatore a onda triangolare formato dalla coppia integratore-trigger di Shmitt. Il comparatore al centro e' il vero modulatore e comanda direttamente il transistor di potenza che alimenta il motore. Il segnale DIR inverte la polarita' con cui viene alimentato il motore.

> Schema di principio alimentazione.

> Gli operazionali vanno alimentati con una tensione duale di +-8V, il 4094 con i classici 5V. La tensione negativa viene generata con un classico circuito "pompa di carica" realizzato con un 555 e una rete diodi-condensatori.

> Tutti questi sono schemi di principio da sperimentare e suscettibili di modifiche...

> | Inizio | Avanti--> |

> "I passi successivi saranno prima di tutto studiare il sistema anticollisione a infrarossi, che dovra' essere in grado di arrestare la base qualche centimetro prima del contatto con un qualsiasi oggetto (di quelli previsti nel regolamento) orientato in qualsiasi modo. Se anche questo obiettivo sara' raggiunto si potra' studiare il modo di seguire i contorni o i bordi degli oggetti. Il sistema a infrarossi dovra' permettere una grossolana misurazione delle distanze, almeno suddivisa in: nessun rilevamento, nelle vicinanze, vicino, troppo vicino. Considerando che gli obiettivi da rilevare si trovano a 10 e 15 cm da terra, i sensori a infrarossi potrebbero stare a qualche centimetro dal pavimento.

> Il resto del lavoro poi sara' la parte di implementazione dei sensori per il rilevamento degli obiettivi (luci suoni gas) e la strategia di ricerca / esplorazione, che potrebbe anche prevedere un grossolano senso dell'orientamento fornito da una bussola elettronica (e' da vedere quanto puo' essere influenzata dalle parti magnetiche del bot, e comunque andrebbe piazzata al centro nel punto piu' in alto possibile)."

> Pagina realizzata da Claudio Fin - Ultimo aggiornamento 14-2-2002