Daniele Mazzei
Obbiettivi del progetto
Realizzazione di un minirobot utilizzando
componenti elettronici di base.
Apprendere i sistemi di programmazione e
controllo dei microcontrollori
Scrittura di un software di gestione del
comportamento reattivo che possa funzionare su
un PIC.
Realizzazione di sensori per robot
Il comportamento
L’idea è di realizzare un robot con comportamento
bio-ispirato
Alcuni insetti volano in modo apparentemente
casuale fino a che non sentono il bisogno di
nutrirsi o di riprodursi
Iniziano quindi a seguire le tracce di odoranti per
trovare una fonte di nutrimento o un partner
(feromoni)
Durante il loro moto devono evitare ostacoli
Il Robot
Struttura in materiale
plastico.
Gruppo meccanico di
riduzione preassemblato
Elettronica costruita su
una board “millefori”
sagomata
Ruote in gomma modello
“Lego Mindstorm”
L’Hardware
Elettronica di controllo e
alimentazione PIC
Sensori
Motori
Gruppo batterie
Elettronica carica
batterie
Il microcontrollore
I Sensori
Controllo Batteria
• Partitore di tensione che invia al PIC un voltaggio
pari alla metà della tensione sul pacco batterie
2 Sensori IR
• Fotodiodo montato in configurazione a partitore
di tensione
• Led IR ad alta luminosità
2 Sensori di contatto
• Switch realizzati con sistema “ago-molla”
2 Sensori di luminosità
• Fotoresistenze montate in configurazione
partitore di tensione
I sensori sono
collegati ai
convertitori
analogico digitale
del PIC che leggono
con una risoluzione
di 10 Bit e accettano
ingresso tensioni
variabili tra 0 e Vdd
I Motori
I 2 motori vengono controllati
mediante un ponte H
I due segnali PWM vengono inviati
come “Enable” del ponte
Vengono utilizzati 4 pin digitali del
pic per controllare il verso di
rotazione dei motori.
La porta seriale
Grazie alla presenza della porta seriale
risulta notevolmente più semplice la
fase di debug del software
E’ possibile il download del software sul
PIC direttamente dalla seriale senza
dover togliere il micocontrollore dallo
zoccolo
Il segnale della porta seriale è stato
adattato alla standard RS232 mediante
l’utilizzo dell’integrato MAX232
Il software
Stato 1
(Contatt
o a Sx
evita
ostacolo
)
Il software è scritto in
Basic mediante l’ambiente
di sviluppo MicroBasic
della Mikroelettronica.
Con l’ausilio della libreria
fornita dal software sono
state scritte le varie
funzioni di controllo dei
PWM e di lettura degli
ADC
Il software è concepito
come una macchina a stati
finiti
Le interazioni con
l’ambiente comportano i
passaggi da uno stato
all’altro
Stato 4
(fine
batterie
cerca la
luce)
Stato 0
(Movimento
random)
Stato 3
(Ostacolo
frontale o
fine
paviment
o
indietregg
ia e gira)
Stato 2
(Contatto
a Dx evita
ostacolo)
Il software
Per simulare correttamente il comportamento di un
insetto è necessario inserire un altro stato (Stato “5”)
Quando la batteria scende sotto una soglia prefissata il
robot passa dalla modalità random a quella
inseguimento luce (Stato “4”)
Smette di cercare la luce quando la batteria scende
sotto una seconda soglia e si ferma per ricaricarsi
mediante la cella fotovoltaica (Stato “5”)
Quando la batteria torna sopra un valore prefissato
ricomincia l’andamento random (sato “o”)
Il software
Nel Main vengono chiamate le varie
funzioni di inizializzazione del
controllore e di configurazione delle porte
Mediante uno “switch” viene analizzata la
variabile “State” che indica lo stato di
lavoro
All’avvio il robot parte nello stato “0”,
muovendosi random e controllando gli
ostacoli
Le funzioni di rilevamento ostacoli hanno
diritto di cambiare il valore della variabile
globale “State”
Al giro successivo del main se la variabile
“State” è diversa da “0” si attua la strategia
di evitamento prescelta
Leggi stato
Setta led in base
allo stato
Controlla
contatti
Controlla
ostacoli o
pavimento
Delay 100 ms
Evitamento ostacoli
Le funzioni “Collision_Detection”
e “Obstacle_Avoidance” vengono
chiamate dal Main nello stato “0”
Se viene rilevato un contatto lo
stato viene cambiato da “0” a:
Stato 1 -> Contatto a Sx
Stato 2 -> Contatto a Dx
Stato 3 -> Contatto frontale o
mancanza suolo
Al successivo giro del Main si entra
nella strategia di evitamento
dipendente dallo stato
Imposta
velocità ad x
Inverti motori
Motore del
contato aventi,
altro fermo
Delay 1
Delay 2
Stato = 0
Torna al Main
Randoom
E’ stata realizzata una funzione in grado di
generare numeri random:
X=mod{(a*Timer),P} Dove:
X = numero random generato
a = costante
Timer = Valore del clock
P = Numero primo a scelta
Mod{a,b} restituisce il resto della divisone intera fra
aeb
Inseguimento luce
I sensori di luminosità restituiscono valori fra 50 e 200
(200 -> buio, 50 -> max luce)
I motori accettano in ingresso valori di velocità (Duty
cicle PWM) fra 50 e 150
Il livello di luminosità viene quindi inviato al motore
corrispondente limitandolo ad un max di 150
Essendo inverso l’andamento dei sensori di luminosità
si ottiene un fenomeno di inseguimento senza dover
incrociare le connessioni
I Test
Evitamento ostacoli.
Il robot è stato
programmato per evitare
ostacoli rilevati dai
sensori di contatto a
switch o dal senore IR
frontale
E’ stata disattivata la
funzione di andamento
random per facilitare la
ripresa
Avvicinamento alla luce
Il test è stato
condotto in
ambiente
buio,
ponendo una
torcia in un
angolo
Fuga dalla luce
Il software è stato modificato per invertire il
comportamento del robot
Ogni sensore di luminosità influenza il motore
opposto
Risultati
Il robot si è rivelato essere un ottimo strumento di
apprendimento per le problematiche relative
all’assemblaggio di componenti elettronici di base
E’ stato possibile implementare con un solo PIC numerose
funzioni tipiche dei comportamenti reattivi della robotica
I test hanno dimostrato come il robot sia in grado di
seguire la luce ed evitare ostacoli
La realizzazione delle varie funzioni ha permesso al robot
di avere un comportamento simile ad un insetto
Pro
Il robot si è rilevato essere uno strumento funzionale a
bassissimo costo per lo studio dell’elettronica, dei
microcontrollori e della programmazione di minirobot
La realizzazione di robot non in Kit permette una
continua evoluzione dell’architettura ed infinite
possibilità di utilizzo
La presenza della porta seriale funzionante non solo
per il download del software è una caratteristica che
spesso non è presente sui robot in Kit
Grazie alla presenza del caricabatterie integrato il
robot si ricarica con qualsiasi tensione in ingresso
compresa fra 7 e 14 Volt
Contro
La programmazione dei PIC si è rilevata essere di
livello non abbastanza alto per essere utilizzata
come controllore principale di un robot
L’utilizzo delle fotoresistenze come rilevatori di
luce in configurazione a partitore di tensione si è
rilevata essere una soluzione troppo semplificata
La realizzazione della scheda elettronica su board
millefori ha comportato numerosi problemi di
falso-contatto durante la fase di test
Sviluppi futuri
Realizzazione di un PCB dell’architettura elettronica
definitiva
Sostituzione delle fotoresistenze con fototransistor e
mosfet di condizionamento segnale
Scrittura del codice in C
Implementazione di uno Heap al fine di gestire in
modo parallelo i vari task previsti dal comportamento
reattivo del robot
Inserimento di una connessione wireless per debug
senza fili
Collegamento della cella fotovoltaica per la ricarica
solare