UPPDATERAD 200-09-12
 

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

'---------------------------------------------------------------------------------

****************************************

 


Click Here!

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

 
OBS! Dessa sidor läses bäst med ver 4 eller senare av: Netscape, Internet Explorer
Click Here!


© MUX Elektronik. Adress: Kjellbergsgatan 5, 411 32 Göteborg Telefon: 031 16 33 90 . Fax: 08-600 0177
Ansvarig utgivare:
Hans Forsberg
mailto:mux@lls.se

   
 
UppTill toppen av sidan