Autonoma/RC mänskliga Bot (3 / 4 steg)
Steg 3: elektronik
Jag valde att använda elektronik är alla från Parallax. Jag använder 2 grundläggande stämpel usb Utbildningsstyrelsen microcontrollers. En är en Basic Stamp bs2 och andra är en högpresterande stämpel bs2PX. Jag använder också en propeller mikrokontroller som är inuti kroppen. Det finns en Propeller servo controller, 24 LED lampor och många olika sensorn inklusive en tempsensor, accelerometer och bluetooth sensor etc. En BASIC Stamp är en single-board dator som kör den Parallax PBASIC tolken i dess mikrokontroller. Utvecklarens koden lagras i ett EEPROM, som också kan användas för lagring av data. PBASIC språket har lätt-till-använda kommandon för grundläggande i/o, aktivera och stänga enheter, samverkar med sensorer, etc. Mer avancerade kommandon låta BASIC Stamp modul gräns flat med andra integrerade kretsar, kommunicera med varandra och fungera i nätverk.
- Kontrollera servon är en Parallax Propeller USB servo controller som driver armarna. Du kan ansluta upp till 15 servon på en bräda. Grundläggande stämpel microcontroller kontroller servo controller gör alla funktioner möjligt.
- Motorerna styrs från 2 Parallax HB-25 motor styrenheter som också kontrolleras från en annan Bs2 microcontroller.
- jag har många olika sensorer jag använder att ta temperaturavläsningar, fungerar automatiska strålkastare med mörker % och många andra tillämpningar.
- Mikrokontroller är hjärnan av denna maskin och möjligheterna är oändliga när det gäller de saker du kan göra med viss kunskap och experiment.
RC-LÄGE:
Så långt som med en RC fjärrkontroll för att köra min robot, detta görs med ett 2.4GHzSpektrum DX5e system. Mottagaren är monterad på roboten och två drive motor kablarna är anslutna till mottagaren. HB-25 motor controller är sprang på servo pulser så att de flesta RC system fungerar med vissa ändringar. Med denna teknik och min Trådlös kamera kan jag sitta inne i mitt hem och köra min robot runt kvarteret och Visa allt från min PC. Mycket cool!
Detta är en kod jag skrev att ladda till processorn för att göra denna robot strövar runt autonomt. Det strövar runt och när den stöter på ett objekt med dess ping sensor som monteras där kameran är det och skannar omgivningen för en tydlig väg och ljuder sedan dess uppdrag. Lära sig att programmera tar tid men när du prova det du kommer att njuta av det och vill lära dig mer. Detta sker med stämpel editor programvara från parallax. Köra tråd från ping till top 3 pin anslutning 13 ' -----[ I/O Definitions ]------------------------------------------------- PingServo stift 14' PING))) Servo ' -----[ Variables ]------------------------------------------------------- pulseCount VAR Byte "används för att mäta vänder ' -----[ Initialization ]-------------------------------------------------- GÖR: LOOP tills HB25 = 1' vänta för HB-25 driver upp ' -----[Main Code ]---------------------------------------------------- Main: räknare = räknare + 1' Increment passiva Counter OM counter > 10 sedan IF (avstånd > 40) sedan "är distace större än 40 cm?? LOOP ' -----[ Subroutines ]----------------------------------------------------- Forward_Pulse: FÖR index = 250 till 250' Ramp upp till Full fart ' ************************************************************************* Turn_Left: ' ************************************************************************* Turn_Right: "rätt vända, ca 45 grader ' ************************************************************************* Back_Up: "tillbaka upp Ping_Out: "PING))) Ping_Around: "starta 180 graders Pan-Scan ' ************************************************************************* FÖR pulseCount = 0 till 20' antal pulser till Spin
Köra tråd från servo till top 3 pin anslutning 14
Köra tråd från HB-25 till top 3 pin port 15
HB-25 har egen strömkälla med en switch.
hoppare ledningar är sprang en HB-25 till sidan andra ansluter dem tillsammans vara körde på en servo puls.
"{$STAMP BS2}
"{$PBASIC 2.5}
"---[Object upptäckt och undvikande]---
Ping stift 13' PING))) Sensor
HB25 PIN 15' i/o Pin för HB-25
distansera VAR ordet "aktuella avstånd av objektet
oldDistance VAR ordet "gamla avstånd värdet
motverka VAR ordet "PING))) cykel Counter
uppgiften VAR Nib "aktuella uppgiften
index VAR ordet "Counter för ramp
LÅG HB25 ' göra i/o Pin utgång/låg
Pausa 5' vänta för HB-25 att initiera
PULSOUT HB25, 750' stoppa Motor 1
PAUS 1 ' 1 mS fördröjning
PULSOUT HB25, 750' stopp Motor 2
GÖRA
GOSUB Ping_Out
ENDIF
GOSUB Forward_Pulse
ANNAT
GOSUB Back_Up
GOSUB Ping_Around
ENDIF
PULSOUT HB25, 750 + index "Motor 1 framåt
PAUS 1 ' 1 mS fördröjning för Motor 2 puls
PULSOUT HB25, 750 - index "Motor 2 omvänd
PULSOUT PingServo, 750' Ping Servo framåt puls värde
PAUS 20
NÄSTA
RETURNERA
FÖR pulseCount = 1 till 35' vänstersväng, om 45 grader
PULSOUT HB25, 750 + index "Motor 1 framåt
PAUS 1 ' 1 mS fördröjning för Motor 2 puls
PULSOUT HB25, 750 + index "Motor 2 omvänd
PULSOUT PingServo, 750' Ping Servo framåt puls värde
PAUS 20
NÄSTA
RETURNERA
FÖR pulseCount = 1 till 35' antal pulser till tur
PULSOUT HB25, 750 - index "Motor 1 framåt
PAUS 1 ' 1 mS fördröjning för Motor 2 puls
PULSOUT HB25, 750 - index "Motor 2 omvänd
PULSOUT PingServo, 750' Ping Servo framåt puls värde
PAUS 20
NÄSTA
RETURNERA
FÖR pulseCount = 0 till 5' antal pulser till Backup
PULSOUT HB25, 750' Motor 1 slutade Fwd
PAUS 1 ' 1 mS fördröjning för Motor 2 puls
PULSOUT HB25, 750' Motor 2 slutade Rev
PULSOUT PingServo, 750' Ping Servo framåt puls värde
PAUS 20
NÄSTA
RETURNERA
räknare = 0' Reset passiva dröjsmål Counter
Låg Ping "tvinga PING))) linje låg
PULSOUT Ping, 5' Aktivera PING))) puls
PULSIN Ping, 1, avstånd ' få återvända puls
avståndet = avståndet ** 2257' beräkna avstånd
RETURNERA
räknare = 0' Reset passiva dröjsmål Counter
oldDistance = 30' nuvarande gamla avstånd värden
uppgift = 0' nuvarande uppgiftsprioritet
Låg Ping "tvinga PING))) linje låg
PULSOUT PingServo, 1085' Ping Servo 90 kvar puls värde
PULSOUT Ping, 5' Aktivera PING)))
PULSIN Ping, 1, avstånd ' få avstånd värde
PAUS 20' Uppdatera fördröjning
NÄSTA
avståndet = avståndet ** 2257' beräkna avståndet i cm
OM avstånd > oldDistance sedan "är avståndet > senaste tydlig väg
oldDistance = avstånd ' Uppdatera oldDistance värde
uppgift = 1
ENDIF
' *************************************************************************
FÖR pulseCount = 0 till 20' antal pulser till Spin
Låg Ping "tvinga PING))) linje låg
PULSOUT PingServo, 850' Ping Servo 45 lämnade puls värde
PULSOUT Ping, 5' Aktivera PING)))
PULSIN Ping, 1, avstånd ' få avstånd värde
PAUS 20' Uppdatera fördröjning
NÄSTA
avståndet = avståndet ** 2257' beräkna avståndet i cm
OM avstånd > oldDistance sedan "är avståndet > senaste tydlig väg
oldDistance = avstånd ' Uppdatera oldDistance värde
uppgift = 2
ENDIF
' *************************************************************************
FÖR pulseCount = 0 till 20' antal pulser till Spin
Låg Ping "tvinga PING))) linje låg
PULSOUT PingServo, 400' Ping Servo 45 rätt puls värde
PULSOUT Ping, 5' Aktivera PING)))
PULSIN Ping, 1, avstånd ' få avstånd värde
PAUS 20' Uppdatera fördröjning
NÄSTA
avståndet = avståndet ** 2257' beräkna avståndet i cm
OM avstånd > oldDistance sedan "är avståndet > senaste tydlig väg
oldDistance = avstånd ' Uppdatera oldDistance värde
uppgift = 3
ENDIF
' *************************************************************************
FÖR pulseCount = 0 till 20' antal pulser till Spin
Låg Ping "tvinga PING))) linje låg
PULSOUT PingServo, 225' Ping Servo 90 rätt puls värde
PULSOUT Ping, 5' Aktivera PING)))
PULSIN Ping, 1, avstånd ' få avstånd värde
PAUS 20' Uppdatera fördröjning
NÄSTA
avståndet = avståndet ** 2257' beräkna avståndet i cm
OM avstånd > oldDistance sedan "är avståndet > senaste tydlig väg
oldDistance = avstånd ' Uppdatera oldDistance värde
uppgift = 4
ENDIF
ON uppgift GOSUB Task0, Task1, Task2, Aktivitet3, Task4
avståndet = 50' förhindra skanning från Looping
RETURNERA
Task0: "framåt var tydligaste väg
GOSUB Turn_Right "Detta kan innebära att smal stig
GOSUB Turn_Right "så vi ska vända
GOSUB Turn_Right ' du kan ändra beteendet
GOSUB Turn_Right "av någon av uppgifterna
RETURNERA
Task1: "90 grader vänster var tydligaste
GOSUB Turn_Left
GOSUB Turn_Left
RETURNERA
Task2: ' 45 grader vänster var tydligaste
GOSUB Turn_Left
RETURNERA
Aktivitet3: ' 45 grader rätt var tydligast
GOSUB Turn_Right
RETURNERA
Task4: "90 grader höger var tydligast
GOSUB Turn_Right
GOSUB Turn_Right
RETURNERA