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

homotix

PCBA

Di questo robot è stato pubblicato un articolo sulla rivista Fare Elettronica  sul numero 263 pubblicata nel mese di Maggio 2007.
In questo articolo sono descritte le fasi di costruzione ed è presente un programma per la sua gestione.

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

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

 

Fotografie del prototipo montato

bug_vista_frontale.jpg bug_vista_posteriore.jpg
bug_vista_laterale_2.jpg bug_vista_laterale_1.jpg
 
Fotografie del prototipo montato
(versione con ponte H originale DeAgostini)
 
 

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.


Programma BUG

'{$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
Private Policy Cookie Policy