Nipi
-
Upload
ivan-cunningham -
Category
Documents
-
view
36 -
download
0
description
Transcript of Nipi
Obbiettivi del progettoRealizzazione di un minirobot utilizzando
componenti elettronici di base.Apprendere i sistemi di programmazione e
controllo dei microcontrolloriScrittura di un software di gestione del
comportamento reattivo che possa funzionare su un PIC.
Realizzazione di sensori per robot
Il comportamentoL’idea è di realizzare un robot con
comportamento bio-ispiratoAlcuni 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 RobotStruttura in materiale
plastico.Gruppo meccanico di
riduzione preassemblato
Elettronica costruita su una board “millefori” sagomata
Ruote in gomma modello “Lego Mindstorm”
I Sensori
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 MotoriI 2 motori vengono controllati
mediante un ponte HI 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 serialeGrazie 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 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
Il softwarePer 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
Evitamento ostacoliLe 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 SxStato 2 -> Contatto a DxStato 3 -> Contatto frontale o mancanza suolo
Al successivo giro del Main si entra nella strategia di evitamento dipendente dallo stato
RandoomE’ stata realizzata una funzione in grado di
generare numeri random:X=mod{(a*Timer),P} Dove:
X= numero random generatoa = costanteTimer = Valore del clockP = Numero primo a sceltaMod{a,b} restituisce il resto della divisone
intera fra a e b
Inseguimento luceI 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 150Il 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 TestEvitamento 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
Fuga dalla luceIl software è stato modificato per invertire
il comportamento del robotOgni sensore di luminosità influenza il
motore opposto
RisultatiIl 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
ProIl 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
ControLa 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 futuriRealizzazione di un PCB dell’architettura
elettronica definitivaSostituzione delle fotoresistenze con fototransistor
e mosfet di condizionamento segnaleScrittura del codice in CImplementazione 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