
Billig labbplatta till BASIC
Stamp 2
Ansluta spänningen till en BS2:a är ingen match, men hur skall
man enkelt ansluta seriekabeln
Javisst, du vill koppla upp ett labbkort för din BS2:a och testa
en uppkoppling, men...
2000-11-14
Bilder och ny kod för fjärrkontroll, koden ligger längst
ned på sidan.
Tips från en kund:
När jag byggde min buget BoeBot så använde jag en gammal pingis-boll
som bakhjul. Jag borrade ett hål vid "norr" och "syd-polen och fäste den
med en genomgående spik.
Vi får ofta önskemål om en "billig" robot.
OK,
vi gör ett försök.
Låt oss försöka bygga en "kopia" av den populära
BOE-BOT roboten. Det är inte alls säkert att det hela blir billigare
om du skall köpa allt, troligen inte...MEN flera av er därute
verkar ha stora högar av servon komponenter ackar osv...
Vi kommer att bygga en liten robot som direkt med lite kod vi bjussar
på kan köra omkring och väja för hinder och låta
sig fjärrstyra via en TV-fjärrkontroll. Roboten har massor av
kapacitet kvar för allsköns skojiga sensorer.
Robotens motorer är två modifierade
R/C servon, "alla" servon kan styras från STAMPEN,
det gäller att lyckas med konverteringen. Hjulen monterar du på
de "ok" som finns till servot med genomgående M2 skruv
tex. se bilden. Hjulen på bilden kommer från en hobbybutik
och används som landningsställ på modellflygplan, finns
i olika storlekar. Tänk på att storleken påverkar hastigheten!
I robotens "akter" monterar du ett lämpligt "möbelhjul"
eller dylikt. Genom att placera batterier mm på smart sätt
kan du "sätta tyngdpunkten" på ett sådant sätt
att tredjehjulet blir en lågbelastad stödpunkt, och nästan
vad som helst kan användas som stöd. Om du skall köra på
knepiga underlag, tjocka mattor, asfalt, gräs etc...måste du
vara mer omsorgsfull med tredjehjulets konstruktion.
 |
Du behöver:
1 BASIC Stamp 2 ( Vad trodde ni ;-)
2 IR-lysdioder
1 IR-detektor
2 st motstånd, ca 220 ohm (detta värde kan behöva justeras)
1 st Elektrolyt kondensator 3300 uF 16V
Batterier eller ackar tex 6*1.2 Volt
Labbplatta av något slag , tex "veroboard" eller "breadboard"
2 st R/C Servon ( av modifierbar typ, Tex vårt Parallax servo, eller
Futaba FP-s 148
2st hjul, tex "modellflygs hjul"
1 litet "möbelhjul" gärna på "vridbar platta"
1 platta ca 22 * 15 cm tex "Plexiglas", "exposkiva",
aluminium, plywood etc
färstanordning för servona, tex dubbelhäftande "kuddar"
självhäftande kardborreband, lång skruv...
Skriv ut bilden av roboten i naturligskala tex, genom att ta hem den högupplösta
bilden och öppna den i photoshop, tänk på att ställa
utskriften i "Landscape", då skall den få plats
och bli 221 * 139 mm
Klipp ut bilden med några mm marginal, klistra upp den på
din platta med kontorslim. Sedan är det bara att såga efter
ytterkonturen.
Något om formen. Vi har försökt bygga bort ett par BOE-BOT
egenheter som kan få den att fastna. Därför har vi gjort
den lite spetsig i fronten (vi kör våra trehjulingar med de
två drivhjulen först, gäller BOE-BOT och RoboCut också...)
Genom att "skydda hjulen" hoppas vi att den inte skall fastna
med hjulen i sladdar och stolsben...
 |
 |
Styrningen.
Ja, det är "bara" att montera upp en BS2 på lämplig
labbplatta.
Några alternativ:
-"Vero-Board" Experiment-kort för lödning, massor
med små hål och lödöar på baksidan
-"Bread-Board" Kopplingsdäck med fjädrande anslutningar
som du sticker ned komponenter i.
-"Etsa ett eget kretskort" En klassiker, med filmer, UV-lampor,
järnklorid etc...
-BS2 Carrier Board, ett labbkort för lödniung som vi säljer
-Board of Education, ja nu börjar det likna BOE-BOT...men för
all del, vårt favorit kort!
Slarva inte med den stora elektrolyt kondensatorn över matningsspänningen,
utan denna kommer BS2:an "resetta" när motorerna startar...ett
av de allra vanligaste orsakerna till "obegripliga fel"...
Om du tänker använda BS2:ans 5Volts utgång, var noggrann,
denna 5V regulator kan du knappast byta om du eldar upp den. Skall du
använda mycket 5V föreslåtr vi att du bygger in en egen
5V-reg på kortet, men nu var det ju Budget det gällde, "friskt
kopplat är hälften brunnet"
 |
Lysdioderna skall peka snett framåt höger resp vänster,
IR motttagaren skall sitta mitt emellan och vara vänd framåt.
Detta kan du läsa om i de olika robotics kompendierna som finns på
vår filcentral, tänk på att programmen inte direkt kan
användas...vi har snållat bort en IR-mottagare, budget igen...IR-dioderna
behöver kapslas in med krympslang eller isolerband etc, för
att inte IR-ljus skall läcka ut åt sidorna/bakåt, även
detta beskrivs i Robotics kompendierna.
Här kommer ett program som får budget roboten att köra
omkring och väja för hinder.
***************************************************
'---------------------------------------------------------------------------------
' RobotShop Budget Robot
' Servo vänster till P15, servo höger till P14
'Ir-lysdiod vänster till P13, IR-lysdiod höger till P2, IR-mottagare
till P0
'---------------------------------------------------------------------------------
declarations: ' Constants
' Output
l_servo con 15 ' Left servo I/O pin P15.
r_servo con 14 ' Right servo I/O pin P1.
speaker con 12 ' Speaker output on I/O pin P12.
l_IR_LED con 13 ' Left IR LED.
r_IR_LED con 2 ' Right IR LED.
' Input
l_IR_det_pin con 14 ' Left IR detector.
r_IR_det_pin con 0 ' Right IR detector.
' Time
center con 750 ' Center pulse width.
l_fine_tune con 0 ' Fine tune center - left servo.
r_fine_tune con 0 ' Fine tune center - right servo.
pause_time con 25 ' Pause between pulses.
sp_duration con 2000 ' Speaker duration - 3 seconds.
sp_freq con 3000 ' Speaker frequency - 2 kHz
IR_LED_freq con 37500 ' IR LED modulation frequency.
mod_time con 1 ' 1 ms freqout to IR LEDs.
' Variables
' I/O registers.
l_IR_detect var in14 ' Reads right IR detector output.
r_IR_detect var in0 ' Reads left IR detector output.
' RAM variables for data storage & calcs.
sensors var nib ' Stores sensor data, replaces "direction".
speed var word ' Pos => forward; neg => backward.
turn var word ' Pos => right; neg => left.
l_pulse var word ' Stores pulse width to left servo.
r_pulse var word ' Stores pulse width to right servo.
loop var byte
stuck_detector var word
'---------------------------------------------------------------------------------
initialize: ' Boot routine.
output l_servo ' Declare outputs & data table.
output r_servo
output speaker
output l_IR_LED
output r_IR_LED
' Indicates start program & reset.
'---------------------------------------------------------------------------------
main: ' Main routine
gosub check_sensors
gosub navigate
gosub servo_pulse
stuck_detector=stuck_detector + 1
goto main ' Infinite loop
'---------------------------------------------------------------------------------
check_sensors: ' Set "speed" & "turn" using "direction".
freqout l_IR_led,mod_time,ir_LED_freq
sensors.bit0 = r_IR_detect
pause 10
freqout r_IR_led,mod_time,ir_LED_freq
sensors.bit1 = r_IR_detect
return
'---------------------------------------------------------------------------------
navigate: ' Set "speed" & "turn" using "direciton".
if stuck_detector > 500 then right
branch sensors,[backward,right,left,forward]
backward:
stuck_detector = 0 ' reset stuck_detector
for loop =0 to 20
speed = -100
turn = 0
gosub servo_pulse
next
goto exit_navigate
left:
stuck_detector = 0 ' reset stuck_detector
for loop =0 to 12
speed = 0
turn = 150
gosub servo_pulse
next
goto exit_navigate
right:
stuck_detector = 0 ' reset stuck_detector
for loop =0 to 12
speed = 0
turn = -150
gosub servo_pulse
next
goto exit_navigate
forward: speed = 300: turn = 0: goto exit_navigate
exit_navigate:
return
'---------------------------------------------------------------------------------
servo_pulse: ' Calculate & send pulses, then pause.
l_pulse = speed + turn + center + l_fine_tune ' Calculate
r_pulse = - speed + turn + center + r_fine_tune
pulsout l_servo,l_pulse ' Send pulses.
pulsout r_servo,r_pulse
pause pause_time ' Pause.
return
*********************************************
Nedan ett BS2 program som låter dig styra budget-bot med en fjärrkontroll
av SONY-typ.
Flera olika protokoll finns för fjärrkontroller och detta program
kodar alltså av SONY. Flera
fabrikat av "ersättnings kontroller" som finns att köpa
för den som hällt coca-cola eller dylika olyckor med sin original
kontroll, kan sända enligt SONY-protokoll. Protokollet är ganska
avancerat, protokoll-delen av programmet är skrivet av en kille på
parallax, mycket finurligt. Hör av er om ni vill veta mer, har några
prog. stumpar till. På vår SONY kontroll (till en CD-spelare)
är det knapparna 1,2,3 & 4 som "används"
******************************
'---------------------------------------------------------------------------------
' RobotShop Budget Robot
' Servo vänster till P15, servo höger till P14
' IR-mottagare till P0
'---------------------------------------------------------------------------------
declarations: ' Constants
' Output
l_servo con 15 ' Left servo I/O pin P15.
r_servo con 14 ' Right servo I/O pin P1.
speaker con 12 ' Speaker output on I/O pin P12.
l_IR_LED con 13 ' Left IR LED.
r_IR_LED con 2 ' Right IR LED.
' Input
l_IR_det_pin con 0 ' Left IR detector.
r_IR_det_pin con 0 ' Right IR detector.
' Time
center con 750 ' Center pulse width.
l_fine_tune con 0 ' Fine tune center - left servo.
r_fine_tune con 0 ' Fine tune center - right servo.
pause_time con 20 ' Pause between pulses.
sp_duration con 2000 ' Speaker duration - 3 seconds.
sp_freq con 3000 ' Speaker frequency - 2 kHz
IR_LED_freq con 38500 ' IR LED modulation frequency.
neg_edge con 0 ' For 0-1-0 config on "pulsin".
' Variables
' I/O registers.
l_IR_detect var in14 ' Reads right IR detector output.
r_IR_detect var in0 ' Reads left IR detector output.
' RAM variables for data storage & calcs.
data_remote var nib ' Stores remote data, replaces "direction".
speed var word ' Pos => forward; neg => backward.
turn var word ' Pos => right; neg => left.
l_pulse var word ' Stores pulse width to left servo.
r_pulse var word ' Stores pulse width to right servo.
start_remote var word '
input_remote_0 var word '
input_remote_1 var word '
'---------------------------------------------------------------------------------
initialize: ' Boot routine.
output l_servo ' Declare outputs & data table.
output r_servo
output speaker
output l_IR_LED
output r_IR_LED
gosub speaker_tone ' Indicates start program & reset.
'---------------------------------------------------------------------------------
main: ' Main routine
gosub check_remote
gosub navigate
gosub servo_pulse
goto main ' Infinite loop
'---------------------------------------------------------------------------------
check_remote:
pulsin l_IR_det_pin,neg_edge,start_remote
pulsin l_IR_det_pin,neg_edge,input_remote_0
pulsin l_IR_det_pin,neg_edge,input_remote_1
if start_remote < 1000 then check_remote
data_remote.bit0=input_remote_0.bit9
data_remote.bit1=input_remote_1.bit9
return
'---------------------------------------------------------------------------------
navigate: ' Set "speed" & "turn" using "direciton".
branch data_remote,[forward,backward,right,left]
backward: speed = -100: turn = 0: goto exit_navigate
left: speed = 0: turn = 100: goto exit_navigate
right: speed = 0: turn = -100: goto exit_navigate
forward: speed = 100: turn = 0: goto exit_navigate
exit_navigate:
return
'---------------------------------------------------------------------------------
servo_pulse: ' Calculate & send pulses, then pause.
l_pulse = speed + turn + center + l_fine_tune ' Calculate
r_pulse = - speed + turn + center + r_fine_tune
pulsout l_servo,l_pulse ' Send pulses.
pulsout r_servo,r_pulse
' pause pause_time ' Pause.
return
'---------------------------------------------------------------------------------
speaker_tone: ' Beep on reset.
freqout speaker,sp_duration,sp_freq ' Beep at 2 kHz for
3 seconds.
return
'---------------------------------------------------------------------------------
****************************************

mailing-lista RoboCut/RoboClean/BASIC
Stamp
Du är förstås välkommen till vår butik
för att diskutera och titta på BASIC Stamp sortimentet, vi
har dessutom alltid någon robot att visa! Kjellbergsgatan
5
RoboCut Vårt uppmärksammade
gräsklipparprojekt
Hans Forsberg / MUX info@robotshop.nu http://www.robotshop.nu
Butik: Kjellbergsgatan 5
|