Inhoudsopgave:

Boe-Bot met infrarooddetectoren - Ajarnpa
Boe-Bot met infrarooddetectoren - Ajarnpa

Video: Boe-Bot met infrarooddetectoren - Ajarnpa

Video: Boe-Bot met infrarooddetectoren - Ajarnpa
Video: How to detect infrared (IR)? 2024, Juli-
Anonim
Boe-Bot met infrarooddetectoren
Boe-Bot met infrarooddetectoren

Deze instructable laat zien hoe je een Boe-Bot bouwt en codeert die door een doolhof kan navigeren met behulp van infrarooddetectoren om obstakels te vermijden. Dit is een gemakkelijk te volgen handleiding waarmee u gemakkelijk aanpassingen kunt doen om aan uw behoeften te voldoen. Dit vereist een basiskennis van circuits en programmeren. Voor dit project heb je BASIC Stamp IDE software nodig. Gratis te downloaden hier. Evenals de Boe-Bot-robot

Stap 1: Bronnen

Elektronische componenten

Boe-Bot met aansluitkabel Parallax Store - BoeBot Kit

5 Infrarood LED's Parallax Store - Montageset IR-zender

5 infraroodafschermingen

5 infrarooddetectoren Parallax Store - BoeBot IR-ontvanger

Weerstanden

  • (2) 4,7 kΩ ABRA Electronics - 4,7 kΩ
  • (5) 220 Ω ABRA Electronics - 220 Ω
  • (2) 1 kΩ ABRA Elektronica - 1 kΩ
  • (5) 2 k ABRA-elektronica - 2 kΩ

Diverse bedrading ABRA Electronics - 22 gauge draad

3 LED's ABRA Electronics - 5mm Rode LED

Steun

Computer

BASIC Stamp Editor - (gratis)

Gereedschap

Draadknipper ABRA Electronics - Draadknipper (optioneel)

Draadstripper ABRA Electronics - Draadstripper

Diversen

Muren (om doolhof te bouwen)

Stap 2: Begrijpen hoe infrarooddetectie werkt (optioneel)

Begrijpen hoe infrarooddetectie werkt (optioneel)
Begrijpen hoe infrarooddetectie werkt (optioneel)

Infrarood Koplampen

Het infrarood-objectdetectiesysteem dat we op de Boe-Bot zullen bouwen, lijkt in meerdere opzichten op de koplampen van een auto. Wanneer het licht van de koplampen van een auto op obstakels weerkaatst, detecteren je ogen de obstakels en verwerken je hersenen ze en laat je lichaam de auto dienovereenkomstig sturen. De Boe-Bot zal infrarood LED's gebruiken voor koplampen. Ze zenden infrarood uit en in sommige gevallen reflecteert het infrarood op objecten en kaatst het terug in de richting van de Boe-Bot. De ogen van de Boe-Bot zijn de infrarood detectoren. De infrarooddetectoren zenden signalen uit die aangeven of ze infrarood detecteren dat door een object wordt gereflecteerd. Het brein van de Boe-Bot, de BASIC Stamp, neemt beslissingen en stuurt de servomotoren aan op basis van deze sensor input. Afbeelding 7-1 Objectdetectie met IR-koplampen De IR-detectoren hebben ingebouwde optische filters die heel weinig licht doorlaten, behalve het 980 nm-infrarood dat we willen detecteren met de interne fotodiodesensor. De infrarooddetector heeft ook een elektronisch filter dat alleen signalen rond 38,5 kHz doorlaat. Met andere woorden, de detector zoekt alleen naar infrarood dat 38.500 keer per seconde aan en uit knippert. Dit voorkomt IR-interferentie van veelvoorkomende bronnen zoals zonlicht en binnenverlichting. Zonlicht is gelijkstroominterferentie (0 Hz) en binnenverlichting heeft de neiging om aan en uit te flitsen bij 100 of 120 Hz, afhankelijk van de hoofdstroombron in de regio. Aangezien 120 Hz buiten de 38,5 kHz-banddoorlaatfrequentie van het elektronische filter ligt, wordt het volledig genegeerd door de IR-detectoren.

- Paralax Studentengids

Stap 3: IR-LED's monteren

IR LED's monteren
IR LED's monteren

Steek de IR LED in het grootste deel van de behuizing

Omsluit het doorzichtige deel van de LED met het kleinere deel van de behuizing

Stap 4: Infraroodparen testen - Circuit

Infraroodparen testen - Circuit
Infraroodparen testen - Circuit
Infraroodparen testen - Circuit
Infraroodparen testen - Circuit

Voordat we ergens te diep op ingaan, zullen we testen of het IR-paar werkt (één infrarood-LED en één infrarooddetector).

Begin met het bouwen van het bovenstaande circuit op het breadboard dat bovenop je Boe-Bot. is gemonteerd

Stap 5: Infraroodparen testen - Basiscode

Natuurlijk moeten we code schrijven om onze IR-paren te laten werken

Om dit te doen, zal het de opdracht FREQOUT gebruiken. Deze opdracht is ontworpen voor audiotonen, maar kan worden gebruikt om frequenties in het infraroodbereik te produceren. Voor deze test gebruiken we het commando:

FREQOUT 8, 1, 38500

hierdoor wordt een frequentie van 38,5 kHz die 1 ms duurt naar P8 gestuurd. Het infrarood LED-circuit dat op P8 is aangesloten, zendt deze frequentie uit. Als het infrarood licht wordt teruggekaatst naar de Boe-Bot door een object in zijn pad, zal de infrarood detector de BASIC Stamp een signaal sturen om hem te laten weten dat het gereflecteerde infrarood licht is gedetecteerd.

De sleutel om een IR-paar te laten werken, is om 1 ms van 38,5 kHz FREQOUT te verzenden en de uitvoer van de IR-detector onmiddellijk op te slaan in een variabele.

Dit voorbeeld toont het opslaan van de IR-detectorwaarde in een bitvariabele met de naam irDectectLeft

FREQOUT 8, 1, 38500

irDetectLeft = IN9

De uitgangsstatus van de IR-detector wanneer hij geen IR-signaal ziet, is hoog. Wanneer de IR-detector de 38500 Hz harmonische gereflecteerd door een object ziet, is de output laag. De output van de IR-detector blijft slechts een fractie van een milliseconde laag nadat het FREQOUT-commando klaar is met het verzenden van de harmonische, dus het is essentieel om de output van de IR-detector op te slaan in een variabele onmiddellijk na het verzenden van het FREQOUT-commando. De waarde die door de variabele is opgeslagen, kan vervolgens worden weergegeven in de Debug Terminal of worden gebruikt voor navigatiebeslissingen door de Boe-Bot.

Stap 6: Infraroodparen testen - hardware + software

Infraroodparen testen - hardware + software
Infraroodparen testen - hardware + software

Nu u de basis kent, kunnen we de hardware en software samenvoegen om een paar samen te testen en realtime feedback te krijgen van wat het IR-paar detecteert

Je kunt proberen de code zelf te maken, of de onderstaande code gebruiken

' {$STAMP BS2}

' {$PBASIC 2.5} irDetectLeft VAR Bit DO FREQOUT 8, 1, 38500 irDetectLeft = IN9 DEBUG HOME, "irDetectLeft = ", BIN1 irDetectLeft PAUZE 100 LUS

  1. Laat de Boe-Bot aangesloten op de seriële kabel, want u gaat de DEBUG-terminal gebruiken om uw IR-paar te testen.
  2. Plaats een object, zoals uw hand of een vel papier, ongeveer 2,5 cm van het linker IR-paar
  3. Controleer of wanneer u een object voor het IR-paar plaatst, de Debug Terminal een 0 weergeeft, en wanneer u het object voor het IR-paar verwijdert, wordt er een 1. weergegeven.
  4. Als de Debug Terminal niet de verwachte waarden weergeeft, probeer dan de stappen in de stap voor het oplossen van problemen.

Stap 7: Problemen oplossen (voor problemen met de laatste stap)

DEBUG Terminal met onverwachte waarden

Controleer het circuit op kortsluiting, verkeerd geplaatste of ontbrekende connectoren, beschadigde componenten, onjuiste weerstanden of enig ander zichtbaar probleem

Controleer het programma op logische of syntaxisfouten - Als je je eigen code hebt gebruikt voor de laatste stap, overweeg dan om de meegeleverde code te gebruiken

Altijd 0 krijgen, zelfs als er geen objecten voor de Boe-Bot. worden geplaatst

Controleer of er objecten in de buurt zijn die het infraroodsignaal reflecteren. De tafel voor de Boe-Bot zou de oorzaak kunnen zijn. Verplaats de Boe-Bot naar een open ruimte, zodat de IR-led en detector niet kunnen reflecteren op een object in de buurt.

Lezen is meestal 1 wanneer er geen object voor de Boe-Bot is, maar flikkert af en toe naar 0

Er kan interferentie zijn van fluorescerend licht in de buurt; Schakel alle tl-lampen in de buurt uit en herhaal uw tests. Als het probleem aanhoudt, kan stap 9 het probleem aan het licht brengen

Stap 8: Tweede IR-paar

Tweede IR-paar
Tweede IR-paar

Nu je het programma voor de linker IR hebt, is het jouw beurt om het circuit te maken en het juiste IR-paar te programmeren

  1. Wijzig de DEBUG-instructie, titel en opmerkingen om naar het juiste IR-paar te verwijzen.
  2. Wijzig de naam van de variabele van irDetectLeft in irDetectRight. Dit moet je op vier plaatsen in het programma doen.
  3. Wijzig het Pin-argument van het FREQOUT-commando van 8 in 2.
  4. Wijzig het invoerregister dat wordt bewaakt door de irDetectRight-variabele van IN9 in IN0.
  5. Herhaal de teststappen in deze activiteit voor het juiste IR-paar; met het IR LED-circuit aangesloten op P2 en de detector aangesloten op P0.

Stap 9: Infraroodinterferentie detecteren (optioneel)

Infraroodinterferentie detecteren (optioneel)
Infraroodinterferentie detecteren (optioneel)

Of u nu problemen ondervindt met het detecteren van signalen die niet zouden moeten worden gedetecteerd of u van plan bent uw IR-detectie op een alternatieve locatie te demonstreren, u wilt misschien testen op interferentie.

Het concept van dit testprogramma is vrij eenvoudig, je detecteert infraroodsignalen zonder er iets uit te zenden.

U kunt exact hetzelfde circuit gebruiken, maar u zult de code moeten wijzigen. je kunt ervoor kiezen om je eigen code te schrijven, maar je kunt de onderstaande code gebruiken:

' {$STAMP BS2}

' {$PBASIC 2.5} irDetectLeft VAR Bit DO irDetectLeft = IN9 irDetectRight = IN0 IF IN9 = 0 OF IN0 = 0 DAN DEBUG "Interferentie gedetecteerd" PAUZE 100 LUS

Als u toch interferentie ervaart, bepaal dan de waarschijnlijke bron en schakel deze uit/verwijder deze of verplaats de locatie waar u uw Boe-Bot gebruikt.

Stap 10: Meer IR-paren toevoegen

Meer IR-paren toevoegen
Meer IR-paren toevoegen

Als u meer nauwkeurigheid wilt in de beweging van uw Boe-Bot, wilt u misschien meer IR-paren toevoegen. 3 Verbetert de prestaties aanzienlijk in vergelijking met twee; u kunt een middenpaar gebruiken om naar een direct obstakel te scannen en twee zij-IR's gebruiken om te bepalen hoeveel u moet draaien. Het nadeel van het 3 IR-paarontwerp is echter dat u misschien weet wanneer u tegen een muur schuift, omdat het middelste IR-paar wordt gebruikt om obstakels te detecteren. Om dit probleem op te lossen, kunt u aan elke kant een IR-paar toevoegen met een hoge weerstandswaarde. Daarom wordt het infraroodsignaal alleen gedetecteerd als de Boe-Bot zich in een kleine hoek dicht bij de zijkant of een muur bevindt.

Stap 11: Vijf IR-paren - Circuit

Vijf IR-paren - Circuit
Vijf IR-paren - Circuit

Wees voorzichtig bij het richten van de twee IR-LED's aan de zijkant, want als u ze draait, kunnen de draden elkaar raken en kan er kortsluiting ontstaan.

Stap 12: Vijf IR-paren - Code

Vijf IR-paren - Code
Vijf IR-paren - Code

U kunt proberen uw Boe-Bot te programmeren voordat u deze code gebruikt:

' {$STAMP BS2}' {$PBASIC 2.5} 'Vijf IR Pair Deatection Code 'Matthew Shaw' 8 mei 2019 (Versie 7) 'Detectie voor objecten en elementaire logische verwerking om doolhoven op te lossen

irDetectLeft VAR Bit 'Variabele voor links'

irDetectCentre VAR Bit 'Variabele voor midden irDetectRight VAR Bit' Variabele voor rechter irDetectLSide VAR Bit 'Variabele voor linkerkant irDetectRSide VAR Bit 'Variabele voor rechterkant irDetectLSideFar VAR Bit 'Variabele voor linkerkant lage weerstand irDetectRSideFar VAR Bit 'Variabele voor rechterkant lage weerstand

mLoop VAR-woord

Lmotor PIN 15 'De linker motor is aangesloten op pin 14, pulsen gaan hier door

Rmotor PIN 14' rechts = 15

'snelheden zijn -> 650-750-850

LFast CON 850 'Constant voor linkermotor op volle snelheid RFast CON 650 'Constante voor rechtermotor op volle snelheid

LStop CON 750 'Constant voor linker motor op volle toeren'

RStop CON 650 'Constant voor rechter motor op volle toeren'

LMid CON 830 'Constant voor linkermotor bij middelhoge snelheid'

RMid CON 700 'Constant voor rechter motor bij middelhoge snelheid'

LSlow CON 770 'Constant voor linker motor bij minimum toerental

RSlow CON 730 'Constant voor rechter motor bij minimum toerental

LRev CON 650 'Constant voor linkermotor op volle snelheid in achteruit

RRev CON 850 'Constant voor linker motor op volle snelheid in achteruit

FREQOUT 7, 1, 38500 'links'

irDetectLeft = IN8

FREQOUT 6, 1, 38500 'centrum'

irDetectCentre = IN5

FREQOUT 3, 1, 38500 'rechts'

irDetectRight = IN2

FREQOUT 10, 1, 38500 'Links Sluiten'

irDetectLSide = IN11

FREQOUT 1, 1, 38500 'rechts Sluiten

irDetectRSide = IN0

FREQOUT 9, 1, 38500

irDetectLSideFar = IN11

FREQOUT 4, 1, 38500 'rechts'

irDetectRSideFar = IN0

IF irDetectLSide = 0 EN irDetectRSide = 0 DAN hoofd 'STARTCOMMANDO' zwaai met uw handen langs de twee zijdetectoren om het programma te starten

Hoofd:

PAUZE 1000 DO

PULSOUT Lmotor, LFast 'linkermotor draait op volle toeren'

PULSOUT Rmotor, RFast 'Rechtermotor draait op volle toeren'

FREQOUT 6, 1, 38500 'centrum'

irDetectCentre = IN5

FREQOUT 10, 1, 38500 'Links Sluiten'

irDetectLSide = IN11

FREQOUT 1, 1, 38500 'rechts'

irDetectRSide = IN0

ALS irDetectLSide = 0 EN irDetectRSide = 1 DAN

DO PULSOUT Lmotor, LFast

FREQOUT 6, 1, 38500 'centrum'

irDetectCentre = IN5 IF irDetectCentre = 0 DAN cent

FREQOUT 10, 1, 38500 'Links Sluiten'

irDetectLSide = IN11

FREQOUT 3, 1, 38500 'rechts'

irDetectRight = IN2

LUS TOT irDetectLSide = 1 OF irDetectRSide = 0

ELSEIF irDetectLSide = 1 EN irDetectRSide = 0 DAN

DO PULSOUT Rmotor, RFast

FREQOUT 6, 1, 38500 'centrum'

irDetectCentre = IN5 IF irDetectCentre = 0 DAN cent

FREQOUT 10, 1, 38500 'Links Sluiten'

irDetectLSide = IN11

FREQOUT 3, 1, 38500 'rechts'

irDetectRight = IN2

LUS TOT irDetectLSide = 0 OF irDetectRSide = 1

'STOP ALS

IF irDetectCentre = 0 DAN 'START'

FREQOUT 7, 1, 38500 'links irDetectLeft = IN8

FREQOUT 6, 1, 38500 'centrum'

irDetectCentre = IN5

FREQOUT 3, 1, 38500

irDetectRight = IN2

PAUZE 1000 'pauze om gedetecteerd signaal weer te geven'

IF (irDetectLeft = 1 AND irDetectRight = 0) DAN ' evalueer de duur

GOSUB draai naar links

ELSEIF (irDetectLeft = 0 EN irDetectRight = 1) DAN

GOSUB draaiRechts

ELSEIF (irDetectLeft = 1 EN irDetectRight = 1) DAN

GOSUB turnDecide

ANDERS

GOSUB draaiReverse

STOP ALS

ENDIF 'END

LUS

EINDE

sla linksaf:

DO PULSOUT Lmotor, LRev FREQOUT 8, 1, 38500 irDetectLeft = IN9 FREQOUT 5, 1, 38500 irDetectCentre = IN4 FREQOUT 2, 1, 38500 irDetectRight = IN0 LOOP TOT IN0 = 1 RETURN

rechtsaf:

DO PULSOUT Rmotor, RRev FREQOUT 8, 1, 38500 irDetectLeft = IN9 FREQOUT 5, 1, 38500 irDetectCentre = IN4 FREQOUT 2, 1, 38500 irDetectRight = IN0 LOOP TOT IN9 = 1

OPBRENGST

draai achteruit:

VOOR mLoop = 0 TOT 50 PULSOUT Rmotor, RRev PULSOUT Lmotor, LRev PAUSE 20 PULSOUT Lmotor, LRev PAUSE 20 VOLGENDE DO PULSOUT Rmotor, RRev FREQOUT 8, 1, 38500 irDetectLeft = IN9 FREQOUT 5, 1, 38500 irDetectCentre = IN4 FREQOUT 2, 1, 38500 irDetectRight = IN0 LOOP TOT IN9 = 1

OPBRENGST

turnDecide: 'gebruikt lagere weerstand om verder te kijken'

FREQOUT 9, 1, 38500

irDetectLSideFar = IN11

FREQOUT 4, 1, 38500 'rechts'

irDetectRSideFar = IN0

IF (irDetectLSideFar = 1 AND irDetectRSideFar = 0) DAN ' evalueer de duur

GOSUB draai naar links

ELSEIF (irDetectLSideFar = 0 EN irDetectRSideFar = 1) DAN

GOSUB draaiRechts

ELSEIF (irDetectLSideFar = 1 EN irDetectRSideFar = 1) DAN

GOSUB draai naar links

ANDERS

GOSUB draaiReverse

STOP ALS

OPBRENGST

Aanbevolen: