Stap 3: elektronica
De elektronica die ik wilde gebruiken zijn allemaal van Parallax. Ik gebruik 2 basic stamp usb Onderwijsraad microcontrollers. Een is een Basic Stamp bs2 en andere is een high performance stempel bs2PX. Ik ben ook met behulp van een propeller microcontroller in het lichaam is. Er is een Propeller servo controller, 24 LED-verlichting en vele andere sensor met inbegrip van een temp sensor, versnellingsmeter en bluetooth sensor enz. Een BASIC Stamp is een single-board-computer waarop de Parallax PBASIC taal tolk in de microcontroller. De developer's code is opgeslagen in een EEPROM, die ook kan worden gebruikt voor gegevensopslag. De PBASIC taal heeft easy-to-use opdrachten voor fundamentele I/O, zoals apparaten draaien in- of uitschakelen, interfacing met sensoren, enz. Meer geavanceerde commando's laten de BASIC Stamp module interface met andere geïntegreerde schakelingen, met elkaar communiceren en werken in netwerken.
- Beheersing van de servo's is een Parallax Propeller USB-servo controller die de armen opereert. U kunt maximaal 15 servo's op een bord. De basic stamp microcontroller bestuurt de servo-controller die alle functies mogelijk te maken.
- De motoren worden aangestuurd vanaf 2 Parallax HB-25 motor controllers die ook worden bediend vanaf een ander Bs2 microcontroller.
- Ik heb veel verschillende sensoren die ik gebruik om te nemen temperatuur lezingen, automatische koplampen met duisternis % en vele andere toepassingen werken.
- De microcontrollers zijn de hersenen van deze machine en de mogelijkheden zijn eindeloos als het gaat om de dingen die je bent in staat om te doen met wat kennis en experimenten.
RC-MODUS:
Zo ver als het gebruik van een RC afstandsbediening om te rijden mijn robot, dit wordt gedaan met een 2.4GHzSpektrum DX5e systeem. De ontvanger is gemonteerd op de robot en de twee drive motor draden zijn aangesloten op de ontvanger. De HB-25 motorcontroller is liep op servo pulsen, zodat de meeste RC systemen zal samenwerken met enkele wijzigingen. Met deze technologie en mijn draadloze camera kan ik zitten in mijn huis en mijn robot rond het blok rijden en alles van mijn PC te bekijken. Zeer koele!
Dit is een code die ik schreef in de processor laden zodat deze robot zwerven rond autonoom. Het zwerft rond en wanneer het een object ontmoetingen met de ping-sensor die gebruikt om te worden gemonteerd waar de camera is het stopt en scant de omgeving voor een duidelijk pad dan hervat haar missie. Leren hoe te programmeren kost tijd maar zodra u het probeert u zal genieten en meer wilt weten. Dit gebeurt allemaal met de software van de fotoredacteur van de stempel van parallax. Draden lopen vanaf ping op top 3 pins poort 13 ' -----[ I/O Definitions ]------------------------------------------------- PingServo PIN 14' PING))) Servo ' -----[ Variables ]------------------------------------------------------- pulseCount VAR Byte ' gebruikt voor het meten van draait ' -----[ Initialization ]-------------------------------------------------- : Lus tot HB25 = 1' wachten voor HB-25 Power Up ' -----[Main Code ]---------------------------------------------------- Hoofdpodium: Counter = counter + 1' Increment passieve teller Als vervolgens bestrijden van > 10 IF (afstand > 40) vervolgens ' distace groter is dan 40 cm?? LOOP ' -----[ Subroutines ]----------------------------------------------------- Forward_Pulse: VOOR index = 250 tot 250' oprit tot volle snelheid ' ************************************************************************* Turn_Left: ' ************************************************************************* Turn_Right: "rechts draai, ongeveer 45 graden ' ************************************************************************* Back_Up: ' Back-Up
Draden lopen vanaf servo op top 3 pins poort 14
Uitvoeren van draden van HB-25 op top 3 pins poort 15
HB-25 heeft een eigen krachtbron met een schakelaar.
jumper draden zijn liep uit een HB-25 naar de andere verbinding maken ze samen worden liep aan één servo pols.
' {$STAMP BS2}
' {$PBASIC 2.5}
'---[Object detectie en vermijden]---
Ping PIN 13' PING))) Sensor
HB25 PIN 15' i/o Pin voor HB-25
afstand VAR Word ' huidige afstand van Object
oldDistance VAR Word ' oude afstand waarde
VAR Word Counter ' PING))) cyclus teller
VAR Nib taak ' huidige taak
index VAR Word ' teller voor speedramp
LAGE HB25 ' i/o-Pin Output/laag maken
PAUZE 5' wachten voor HB-25 initialiseren
PULSOUT HB25, 750' Stop Motor 1
PAUZE 1 ' 1 mS vertraging
PULSOUT HB25, 750' Stop Motor 2
DOEN
GOSUB Ping_Out
ENDIF
GOSUB Forward_Pulse
ANDERS
GOSUB Back_Up
GOSUB Ping_Around
ENDIF
PULSOUT HB25, 750 + index ' Motor 1 vooruit
PAUZE 1 ' 1 mS vertraging voor Motor 2 Pulse
PULSOUT HB25, 750 - index ' Motor 2 omkeren
PULSOUT PingServo, 750' Ping Servo voorwaartse Pulse waarde
PAUZE 20
VOLGENDE
TERUGKEER
FOR pulseCount = 1 tot en met 35' links zetten, over 45 graden
PULSOUT HB25, 750 + index ' Motor 1 vooruit
PAUZE 1 ' 1 mS vertraging voor Motor 2 Pulse
PULSOUT HB25, 750 + index ' Motor 2 omkeren
PULSOUT PingServo, 750' Ping Servo voorwaartse Pulse waarde
PAUZE 20
VOLGENDE
TERUGKEER
FOR pulseCount = 1 tot 35' aantal pulsen To Turn
PULSOUT HB25, 750 - index ' Motor 1 vooruit
PAUZE 1 ' 1 mS vertraging voor Motor 2 Pulse
PULSOUT HB25, 750 - index ' Motor 2 omkeren
PULSOUT PingServo, 750' Ping Servo voorwaartse Pulse waarde
PAUZE 20
VOLGENDE
TERUGKEER
FOR pulseCount = 0 tot 5' aantal pulsen naar back-up
PULSOUT HB25, 750' Motor 1 gestopt Fwd
PAUZE 1 ' 1 mS vertraging voor Motor 2 Pulse
PULSOUT HB25, 750' Motor 2 gestopt Rev
PULSOUT PingServo, 750' Ping Servo voorwaartse Pulse waarde
PAUZE 20
VOLGENDE
TERUGKEER
Ping_Out: ' PING)))
Counter = 0' Reset passieve vertraging teller
LAGE Ping ' dwingen PING))) lijn van Low
PULSOUT Ping, 5' activeren PING))) Pulse
Ping, 1, afstand PULSIN ' ontvangen terug Pulse
afstand = afstand ** 2257' berekenen afstand
TERUGKEER
Ping_Around: ' 180 graden Pan-Scan starten
Counter = 0' Reset passieve vertraging teller
oldDistance = 30' huidige oude afstand waarden
taak = 0' de prioriteit van de taak van de huidige
' *************************************************************************
FOR pulseCount = 0 tot 20' aantal pulsen te draaien
LAGE Ping ' dwingen PING))) lijn van Low
PULSOUT PingServo, 1085' Ping Servo 90 links Pulse waarde
PULSOUT Ping, 5' activeren PING)))
Ping, 1, afstand PULSIN ' ontvangen afstand waarde
PAUZE 20' vernieuwen vertraging
VOLGENDE
afstand = afstand ** 2257' afstand berekenen In cm
ALS afstand > oldDistance dan ' afstand > laatste duidelijk pad
oldDistance = afstand ' bijwerken van oldDistance waarde
taak = 1
ENDIF
' *************************************************************************
FOR pulseCount = 0 tot 20' aantal pulsen te draaien
LAGE Ping ' dwingen PING))) lijn van Low
PULSOUT PingServo, 850' Ping Servo 45 links Pulse waarde
PULSOUT Ping, 5' activeren PING)))
Ping, 1, afstand PULSIN ' ontvangen afstand waarde
PAUZE 20' vernieuwen vertraging
VOLGENDE
afstand = afstand ** 2257' afstand berekenen In cm
ALS afstand > oldDistance dan ' afstand > laatste duidelijk pad
oldDistance = afstand ' bijwerken van oldDistance waarde
taak = 2
ENDIF
' *************************************************************************
FOR pulseCount = 0 tot 20' aantal pulsen te draaien
LAGE Ping ' dwingen PING))) lijn van Low
PULSOUT PingServo, 400' Ping Servo 45 juiste Pulse waarde
PULSOUT Ping, 5' activeren PING)))
Ping, 1, afstand PULSIN ' ontvangen afstand waarde
PAUZE 20' vernieuwen vertraging
VOLGENDE
afstand = afstand ** 2257' afstand berekenen In cm
ALS afstand > oldDistance dan ' afstand > laatste duidelijk pad
oldDistance = afstand ' bijwerken van oldDistance waarde
taak = 3
ENDIF
' *************************************************************************
FOR pulseCount = 0 tot 20' aantal pulsen te draaien
LAGE Ping ' dwingen PING))) lijn van Low
PULSOUT PingServo, 225' Ping Servo 90 juiste Pulse waarde
PULSOUT Ping, 5' activeren PING)))
Ping, 1, afstand PULSIN ' ontvangen afstand waarde
PAUZE 20' vernieuwen vertraging
VOLGENDE
afstand = afstand ** 2257' afstand berekenen In cm
ALS afstand > oldDistance dan ' afstand > laatste duidelijk pad
oldDistance = afstand ' bijwerken van oldDistance waarde
taak = 4
ENDIF
ON taak GOSUB Task0, Task1, Task2, Taak3, Task4
afstand = 50' voorkomen Scan van Looping
TERUGKEER
Task0: ' naar voren Was duidelijkste pad
GOSUB Turn_Right ' dit smalle pad zou kunnen betekenen
GOSUB Turn_Right ' dus wij zal omdraaien
GOSUB Turn_Right ' kunt u het gedrag
GOSUB Turn_Right ' van een van de taken
TERUGKEER
Task1: "90 graden links Was duidelijkste
GOSUB Turn_Left
GOSUB Turn_Left
TERUGKEER
Task2: ' 45 graden links Was duidelijkste
GOSUB Turn_Left
TERUGKEER
Taak3: ' 45 graden rechts Was zo duidelijk
GOSUB Turn_Right
TERUGKEER
Task4: "90 graden naar rechts Was zo duidelijk
GOSUB Turn_Right
GOSUB Turn_Right
TERUGKEER