ultimo aggiornamento 14 gennaio 2012 |
|
La versione preliminare di
BUG prevede l'utilizzo dei soli sensori frontali per il riconoscimento
dell'ambiente circostante.
Per l’assemblaggio del robot si sono
utilizzati componenti derivati dalle opere a fascicoli
“COSTRUISCI E PROGRAMMA IL TUO ROBOT"
con cui si assemblava il
robot
Panettone e
“Ultimate Real Robot”
con cui si costruiva il
robot Cybot
(telaio e gruppo motoriduttori) entrambe
le opere edite dalla DeAgostini.
Il tutto integrato da alcune parti auto costruite.
BUG prima versione
Di questo robot è
stato pubblicato un articolo sulla rivista
Fare
Elettronica sul
numero 263 pubblicata nel mese di Maggio 2007.
|
La scheda di controllo
è la
DeA Basic Stamp Board, prodotta dalla Parallax per la DeAgostini ed utilizzata per il robot
Panettone allegata ai fascicoli n° 11-12-13-21.
Il microcontrollore utilizzato sulla scheda è un chip PIC16C57C (di cui è
proprietaria l'industria Microchip), sul quale è stato integrato l'interprete
del linguaggio PBASIC (ossia Parallax Basic, un'estensione dei linguaggio BASIC
realizzata dalla Parallax ) chip e interprete, insieme, formano il circuito
proprietario BASIC STAMP 2 di Parallax.
L'interprete opera da interfaccia tra il programma PBASIC, memorizzato nella
EEPROM, e il microcontrollore.
Sulla scheda è inoltre presente un chip di memoria EEPROM di 2048 byte di
capacità, per lo sviluppo del programma, il modello utilizzato e il 24LC16B
prodotto dalla Microchip.
Alcune altre caratteristiche della scheda
Presa d’alimentazione con jack da 2,1 mm per alimentatore.
Regolatore + 5Vcc a bordo
Connettore seriale DB 9 poli per la programmazione e comunicazione con il PC
Area prototipale bread boad per sperimentazione immediata
16 pin di I/O P0 - P15 , su strip femmina, adiacenti all'area prototipale
Alimentazione Vdd e Vss adiacenti all'area prototipale
Connettore femmina per moduli applicativi opzionali App Mods
Misure: 77mm X 102 mm
La scheda di azionamento dei due motori elettrici
a corrente continua è realizzata utilizzando una
piccola schedina prodotta dalla
Pololu Robotics
and
Electronics, si tratta di Micro Dual Serial
Motor Control, in cui è presente un doppio ponte H formato
dall'integrato
LB 1836M (prodotto dalla SANYO) e un
PIC12F629 per la
gestione del ponte e per la comunicazione con la scheda di controllo.
Questo controller consente di pilotare due motori CC fino ad 1A di
assorbimento con 127 passi di velocità in due direzioni tramite semplici
comandi.
Caratteristiche Tecniche
Velocità Seriale 1.200 - 19.200 baud (autodetect)
Tensione motori compresa tra 1.8 - 9V
Corrente motore 1A x 2 (continua) - 2A collegando 1 solo motore
Tensione Logica Compresa tra 2.6 - 5.5 V
Frequenza PWM 2 motori 600Hz - 1 motore 750Hz
Passi Velocità 127 avanti /127 indietro / off
Motori 1 o 2
Dimensioni 22.8 x 11.4mm
Fotografie del prototipo montato
Listato del programma di prova
Il programma di gestione del robot deriva da quello prelevato dal sito della Pololu “front-bumperbot.bs2”, che ho modificato.
La modifica principale è stata quella di inserire due diversi valori per la
velocità in avanti dei due motori: variabili SPEED_R e
SPEED_L questi andranno
trovati per tentativi in modo che l’andamento del robot sia il più rettilineo
possibile.
'{$stamp BS2} '************************************************************************* 'bug_program Ver 1.0 'Programma per Robot BUG 'di Adriano Gandolfo 'sito www.adrirobot.it '************************************************************************* 'P0 Libera 'P1 Libera 'P2 Libera 'P3 Libera 'P4 Baffo Destro (X6) 'P5 Libera 'P6 Baffo Sinistro (X5) 'P7 Libera 'P8 Libera 'P9 Libera 'P10 Libera 'P11 Libera 'P12 Libera 'P13 Libera 'P14 Pololu micro dual serial motor controller linea di controllo 'P15 Pololu micro dual serial motor controller linea di reset '--I/O linee RBUMP VAR IN4 LBUMP VAR IN6 MC_RESET CON 15 'Porta reset MC_SOUT CON 14 'Porta di controllo DIRS = (1<<MC_RESET) | (1<<MC_SOUT) '***Variabili SPEED_R VAR Byte SPEED_L VAR Byte SPEED VAR Byte SLOWSPEED VAR Byte TURNTIME VAR Byte '***Numero motore e direzione per il controllo del Pololu LFWD CON 0 'Motore sinistro avanti LBAK CON 1 'Motore sinistro indietro RFWD CON 2 'Motore destro avanti RBAK CON 3 'Motore destro indietro '***Programma HIGH MC_SOUT 'serial line idle state LOW MC_RESET 'reset motor controller HIGH MC_RESET PAUSE 100 SPEED_R = 50 'Velocità motore Destro da 0 a 127 SPEED_L = 62 'Velocità motore Sinistro da 0 a 127 SPEED = 55 'Velocità motore per rotazione da 0 a 127 SLOWSPEED = 20 'Velocità per entambi i motori lenta TURNTIME = 37 'Tempo per rotazione twiddling: 'Premere un sensore per far muovere il robot IF RBUMP = 0 THEN go IF LBUMP = 0 THEN go GOTO twiddling go: PAUSE 1000 loop: 'Vai avanti sino a che il sensore tocca qualcosa SEROUT MC_SOUT, 84, [$80, 0, LFWD, SPEED_L] SEROUT MC_SOUT, 84, [$80, 0, RFWD, SPEED_R] 'Motori DX e SX avanti alle rispettive velocità IF (RBUMP = 0) THEN rbumped IF (LBUMP = 0) THEN lbumped 'Se il sensore si attiva il robot ruota nell'appropriata direzione GOTO loop rbumped: 'Routine per contatto sensore Destro SEROUT MC_SOUT, 84, [$80, 0, LBAK, SPEED] SEROUT MC_SOUT, 84, [$80, 0, RBAK, SLOWSPEED] PAUSE 1000 SEROUT MC_SOUT, 84, [$80, 0, LBAK, SPEED] SEROUT MC_SOUT, 84, [$80, 0, RFWD, SPEED] RANDOM TURNTIME PAUSE (TURNTIME*5) + 250 'pausa tra 0.25 e 1.5 secondi GOTO loop lbumped: 'Routine per contatto sensore Sinistro SEROUT MC_SOUT, 84, [$80, 0, LBAK, SLOWSPEED] SEROUT MC_SOUT, 84, [$80, 0, RBAK, SPEED] PAUSE 1000 SEROUT MC_SOUT, 84, [$80, 0, LFWD, SPEED] SEROUT MC_SOUT, 84, [$80, 0, RBAK, SPEED] RANDOM TURNTIME PAUSE (TURNTIME*5) + 250 GOTO loop |
Elenco revisioni | |
14/01/2012 | Aggiornato pagina |
14/09/2007 | Aggiornato pagina |
20/12/2006 | Emissione preliminare |