Turinys:

„Boe-Bot“su infraraudonųjų spindulių detektoriais: 12 žingsnių (su nuotraukomis)
„Boe-Bot“su infraraudonųjų spindulių detektoriais: 12 žingsnių (su nuotraukomis)

Video: „Boe-Bot“su infraraudonųjų spindulių detektoriais: 12 žingsnių (su nuotraukomis)

Video: „Boe-Bot“su infraraudonųjų spindulių detektoriais: 12 žingsnių (su nuotraukomis)
Video: IR Based tracking robot. 2024, Liepa
Anonim
„Boe-Bot“su infraraudonųjų spindulių detektoriais
„Boe-Bot“su infraraudonųjų spindulių detektoriais

Ši instrukcija parodys, kaip sukurti ir koduoti „Boe-Bot“, galintį naršyti labirintą naudojant infraraudonųjų spindulių detektorius, kad būtų išvengta kliūčių. Tai yra paprastas vadovas, leidžiantis lengvai atlikti pakeitimus pagal jūsų poreikius. Tam reikia bendro supratimo apie grandines ir programavimą. Šiam projektui jums reikės BASIC Stamp IDE programinės įrangos. Nemokamai atsisiųsti čia. Taip pat ir „Boe-Bot“robotas

1 žingsnis: ištekliai

Elektroniniai komponentai

„Boe -Bot“su jungiamuoju kabeliu „Parallax Store“- „BoeBot“rinkinys

5 infraraudonųjų spindulių šviesos diodų paralakso parduotuvė - IR siųstuvo surinkimo rinkinys

5 infraraudonųjų spindulių skydo mazgai

5 infraraudonųjų spindulių jutiklių paralakso parduotuvė - „BoeBot“IR imtuvas

Rezistoriai

  • (2) 4,7 kΩ „ABRA Electronics“- 4,7 kΩ
  • (5) 220 Ω „ABRA Electronics“- 220 Ω
  • (2) 1 kΩ „ABRA Electronics“- 1 kΩ
  • (5) 2 k ABRA elektronika - 2 kΩ

Laidų asortimentas ABRA Electronics - 22 gabaritų viela

3 šviesos diodų „ABRA Electronics“- 5 mm raudonas šviesos diodas

Palaikymas

Kompiuteris

BASIC antspaudų redaktorius - (nemokama programa)

Įrankiai

Vielos pjoviklis ABRA Electronics - vielos pjoviklis (pasirinktinai)

Vielos nuėmiklis ABRA Electronics - vielos nuėmiklis

Įvairūs

Sienos (labirintui statyti)

2 veiksmas: supraskite, kaip veikia infraraudonųjų spindulių aptikimas (neprivaloma)

Infraraudonųjų spindulių aptikimo veikimo supratimas (neprivaloma)
Infraraudonųjų spindulių aptikimo veikimo supratimas (neprivaloma)

Infraraudonųjų spindulių žibintai

Infraraudonųjų spindulių objektų aptikimo sistema, kurią sukursime ant „Boe-Bot“, daugeliu atžvilgių yra tarsi automobilio priekiniai žibintai. Kai automobilio priekinių žibintų šviesa atsispindi nuo kliūčių, jūsų akys aptinka kliūtis, o jūsų smegenys jas apdoroja ir priverčia jūsų kūną atitinkamai vadovauti automobiliui. „Boe-Bot“žibintams naudos infraraudonųjų spindulių šviesos diodus. Jie skleidžia infraraudonųjų spindulių ryšį, o kai kuriais atvejais infraraudonieji spinduliai atsispindi nuo objektų ir atsitraukia Boe-Bot kryptimi. „Boe-Bot“akys yra infraraudonųjų spindulių detektoriai. Infraraudonųjų spindulių detektoriai siunčia signalus, rodančius, ar jie aptinka nuo objekto atsispindėjusią infraraudonąją spinduliuotę. „Boe-Bot“smegenys, BASIC Stamp, priima sprendimus ir valdo servo variklius, remdamiesi šiuo jutiklio įėjimu. 7-1 pav. Objekto aptikimas su IR priekiniais žibintais IR jutikliuose yra įmontuoti optiniai filtrai, kurie praleidžia labai mažai šviesos, išskyrus 980 nm infraraudonųjų spindulių, kuriuos norime aptikti vidiniu fotodiodiniu jutikliu. Infraraudonųjų spindulių detektorius taip pat turi elektroninį filtrą, kuris praleidžia tik apie 38,5 kHz signalus. Kitaip tariant, detektorius ieško tik infraraudonųjų spindulių, kurie mirksi 38 500 kartų per sekundę. Tai apsaugo nuo IR trukdžių iš įprastų šaltinių, tokių kaip saulės šviesa ir patalpų apšvietimas. Saulės šviesa yra nuolatinės srovės trukdžiai (0 Hz), o patalpų apšvietimas linkęs įjungti ir išjungti 100 arba 120 Hz dažniu, atsižvelgiant į pagrindinį regiono maitinimo šaltinį. Kadangi 120 Hz yra už elektroninio filtro 38,5 kHz dažnių juostos praleidimo dažnio ribų, IR detektoriai į jį visiškai nekreipia dėmesio.

-Paralakso studentų vadovas

3 žingsnis: IR šviesos diodų surinkimas

IR šviesos diodų surinkimas
IR šviesos diodų surinkimas

Įdėkite IR šviesos diodą į didesnę korpuso dalį

Uždėkite aiškią šviesos diodo dalį su mažesne korpuso dalimi

4 žingsnis: Infraraudonųjų spindulių porų testavimas - grandinė

Infraraudonųjų spindulių porų testavimas - grandinė
Infraraudonųjų spindulių porų testavimas - grandinė
Infraraudonųjų spindulių porų testavimas - grandinė
Infraraudonųjų spindulių porų testavimas - grandinė

Prieš per daug nesigilindami, išbandysime, ar IR pora veikia (vienas infraraudonųjų spindulių šviesos diodas ir vienas infraraudonųjų spindulių detektorius).

Pradėkite statydami aukščiau pateiktą grandinę ant duonos lentos, sumontuotos ant jūsų „Boe-Bot“

5 žingsnis: Infraraudonųjų spindulių porų bandymas - pagrindinis kodas

Žinoma, turėsime parašyti kodą, kad mūsų IR poros veiktų

Norėdami tai padaryti, naudosite komandą FREQOUT. Ši komanda buvo skirta garso tonams, tačiau ji gali būti naudojama dažniui infraraudonųjų spindulių diapazone gaminti. Šiam bandymui naudosime komandą:

FREQOUT 8, 1, 38500

į P8 bus siunčiamas 38,5 kHz dažnis, trunkantis 1 ms. Prie P8 prijungta infraraudonųjų spindulių šviesos diodų grandinė transliuos šį dažnį. Jei jo kelyje esantis objektas infraraudonųjų spindulių šviesą atspindi atgal į „Boe-Bot“, infraraudonųjų spindulių detektorius siunčia signalą „BASIC“, kad praneštų, jog buvo aptikta atspindėta infraraudonųjų spindulių šviesa.

Norint, kad IR pora veiktų, svarbiausia yra siųsti 1 ms 38,5 kHz FREQOUT ir nedelsiant išsaugoti IR detektoriaus išvestį kintamajame.

Šiame pavyzdyje parodyta IR detektoriaus vertės išsaugojimas bitų kintamajame pavadinimu irDectectLeft

FREQOUT 8, 1, 38500

irDetectLeft = IN9

IR jutiklio išėjimo būsena, kai nemato jokio IR signalo, yra aukšta. Kai IR detektorius mato objekto atspindėtą 38500 Hz harmoniką, jo išvestis yra maža. Pasibaigus komandai FREQOUT, siunčiant harmoniką, IR detektoriaus išvestis išlieka maža tik milisekundės dalį, todėl labai svarbu, kad IR detektoriaus išvestis būtų saugoma kintamajame iškart po FREQOUT komandos išsiuntimo. Tada kintamojo išsaugota vertė gali būti rodoma derinimo terminale arba naudojama „Boe-Bot“navigacijos sprendimams.

6 veiksmas: Infraraudonųjų spindulių porų testavimas - aparatinė įranga + programinė įranga

Infraraudonųjų spindulių porų testavimas - aparatinė įranga + programinė įranga
Infraraudonųjų spindulių porų testavimas - aparatinė įranga + programinė įranga

Dabar, kai žinote pagrindus, galime sujungti aparatinę ir programinę įrangą, kad kartu išbandytume porą ir gautume realaus laiko atsiliepimus apie tai, ką aptinka IR pora

Galite pabandyti sukurti kodą patys arba naudoti žemiau esantį kodą

„{$ STAMP BS2}

„{$ PBASIC 2.5} irDetectLeft VAR Bit DO FREQOUT 8, 1, 38500 irDetectLeft = IN9 DEBUG HOME," irDetectLeft = ", BIN1 irDetectLeft PAUSE 100 LOOP

  1. Palikite „Boe-Bot“prijungtą prie nuoseklaus kabelio, nes IR porą išbandysite naudodami DEBUG terminalą.
  2. Padėkite objektą, pavyzdžiui, ranką ar popieriaus lapą, maždaug colio atstumu nuo kairės IR poros
  3. Įsitikinkite, kad kai padėsite objektą prieš IR porą, derinimo terminalas rodys 0, o kai pašalinsite objektą iš IR poros - 1.
  4. Jei derinimo terminale nerodomos tikėtinos vertės, pabandykite atlikti trikčių šalinimo veiksmo veiksmus.

7 veiksmas: trikčių šalinimas (dėl paskutinio veiksmo problemų)

DEBUG terminalas, rodantis netikėtas vertes

Patikrinkite, ar grandinėje nėra trumpųjų jungčių, netinkamų ar trūkstamų jungčių, pažeistų komponentų, netinkamų rezistorių ar kitų matomų problemų

Patikrinkite, ar programoje nėra loginių ar sintaksės klaidų - jei paskutiniame žingsnyje naudojote savo kodą, apsvarstykite galimybę naudoti pateiktą kodą

Visada gauname 0, net jei priešais „Boe-Bot“nėra jokių daiktų

Patikrinkite, ar šalia nėra objektų, kurie atspindi infraraudonųjų spindulių signalą. Priežastis gali būti stalas priešais „Boe-Bot“. Perkelkite „Boe-Bot“į atvirą erdvę, kad infraraudonųjų spindulių šviesos diodas ir detektorius neatspindėtų jokių šalia esančių objektų.

Skaitymas dažniausiai būna tada, kai priešais „Boe-Bot“nėra jokio objekto, bet jis kartais mirksi iki 0

Netoliese esanti fluorescencinė šviesa gali trukdyti; Išjunkite netoliese esančias fluorescencines lempas ir pakartokite testus. Jei problema išlieka, 9 veiksmas gali atskleisti problemą

8 veiksmas: antroji IR pora

Antroji IR pora
Antroji IR pora

Dabar, kai turite kairiojo IR programą, jūsų eilė sukurti grandinę ir užprogramuoti tinkamą IR porą

  1. Pakeiskite DEBUG teiginį, pavadinimą ir komentarus, kad nurodytumėte tinkamą IR porą.
  2. Pakeiskite kintamojo pavadinimą iš irDetectLeft į irDetectRight. Tai turėsite padaryti keturiose programos vietose.
  3. Pakeiskite FREQOUT komandos PIN kodo argumentą iš 8 į 2.
  4. Pakeiskite kintamojo irDetectRight stebimą įvesties registrą iš IN9 į IN0.
  5. Kartokite šios veiklos bandymo veiksmus su tinkama IR pora; kai IR šviesos diodų grandinė prijungta prie P2, o detektorius prijungtas prie P0.

9 veiksmas: infraraudonųjų spindulių trukdžių aptikimas (neprivaloma)

Infraraudonųjų spindulių trukdžių aptikimas (neprivaloma)
Infraraudonųjų spindulių trukdžių aptikimas (neprivaloma)

Nesvarbu, ar kyla problemų aptikdami signalus, kurių nereikėtų aptikti, ar planuojate demonstruoti savo IR aptikimą kitoje vietoje, galbūt norėsite patikrinti, ar nėra trukdžių.

Šios bandymo programos koncepcija yra gana paprasta, jūs aptinkate infraraudonųjų spindulių signalus, jų nesiųsdami.

Galite naudoti tą pačią grandinę, tačiau turėsite pakeisti kodą. galite pasirinkti rašyti savo kodą, tačiau galite naudoti žemiau pateiktą kodą:

„{$ STAMP BS2}

'{$ PBASIC 2.5} irDetectLeft VAR bitas DO irDetectLeft = IN9 irDetectRight = IN0 IF IN9 = 0 OR IN0 = 0 THEN DEBUG "Aptikta trukdžių" PAUSE 100 LOP

Jei patiriate trikdžių, nustatykite tikėtiną šaltinį ir išjunkite/pašalinkite arba perkelkite ten, kur naudojate „Boe-Bot“.

10 veiksmas: pridėkite daugiau IR porų

Pridedama daugiau IR porų
Pridedama daugiau IR porų

Jei norite daugiau tikslumo „Boe-Bot“judesyje, galbūt norėsite pridėti daugiau IR porų. 3 Labai pagerina našumą, palyginti su dviem; galite naudoti centrinę porą, kad galėtumėte ieškoti tiesioginių kliūčių, ir naudoti du šoninius IR, kad nustatytumėte, kiek pasukti. Tačiau 3 IR porų dizaino žlugimas yra tas, kad jūs galite žinoti, kai slystate prie sienos, nes centrinė IR pora naudojama aptikti kliūtis. Norėdami išspręsti šią problemą, prie kiekvienos pusės galite pridėti IR porą su didele pasipriešinimo reikšme, todėl infraraudonųjų spindulių signalas bus aptiktas tik tuo atveju, jei „Boe-Bot“yra arti šono ar sienos švelniu kampu.

11 veiksmas: penkios IR poros - grandinė

Penkios IR poros - grandinė
Penkios IR poros - grandinė

Būkite atsargūs, nukreipdami du infraraudonųjų spindulių šviesos diodus į šoną, nes juos pasukus laidai gali liesti ir sukelti trumpąjį jungimą.

12 žingsnis: penkios IR poros - kodas

Penkios IR poros - kodas
Penkios IR poros - kodas

Prieš naudodami šį kodą, galbūt norėsite pabandyti programuoti „Boe-Bot“:

'{$ STAMP BS2}' {$ PBASIC 2.5} 'Penki IR poros išjungimo kodai' Matthew Shaw '2019 m. Gegužės 8 d. (7 versija)' Objektų aptikimas ir pagrindinis loginis apdorojimas labirintams išspręsti

irDetectLeft VAR Bit 'Kintamasis kairėn

„IrDetectCentre VAR Bit“kintamasis centre irDetectRight VAR Bit „Kintamasis dešiniajam irDetectLSide VAR Bit“Kintamasis kairėje pusėje „IrDetectRSide VAR Bit“„Kintamasis dešinei pusei irDetectLSideFar VAR Bit“Kintamasis kairės pusės mažo pasipriešinimo irDetectRSideFar VAR Bit „Kintamasis dešinei pusei

mLoop VAR žodis

Lmotor PIN 15 'Kairysis variklis prijungtas prie 14 kaiščio, čia vyksta impulsai

Rotoriaus PIN kodas 14 'dešinė = 15

greitis yra-> 650-750-850

LFast CON 850 'Conastant kairiam varikliui visu greičiu RFast CON 650' Conastant dešiniajam varikliui visu greičiu

LStop CON 750 'Konastantas kairiam varikliui visu greičiu

„RStop CON 650“Konastantas tinkamam varikliui visu greičiu

LMid CON 830 'Konastantas kairiam varikliui vidutiniu greičiu

RMid CON 700 'Konastantas tinkamam varikliui esant vidutiniam greičiui

LSlow CON 770 'Konastantas kairiam varikliui esant minimaliam greičiui

RSlow CON 730 'Konstantas tinkamam varikliui esant minimaliam greičiui

LRev CON 650 'Konastantas kairiam varikliui visu greičiu atbuline eiga

RRev CON 850 'Konastantas kairiam varikliui visu greičiu atbuline eiga

FREQOUT 7, 1, 38500 'kairėje pusėje

irDetectLeft = IN8

FREQOUT 6, 1, 38500 'centras

irDetectCentre = IN5

FREQOUT 3, 1, 38500 'dešinė pusė

irDetectRight = IN2

FREQOUT 10, 1, 38500 'Uždaryti iš kairės

irDetectLSide = IN11

FREQOUT 1, 1, 38500 'dešinė Uždaryti

irDetectRSide = IN0

FREQOUT 9, 1, 38500

irDetectLSideFar = IN11

FREQOUT 4, 1, 38500 'dešinė pusė

irDetectRSideFar = IN0

IF irDetectLSide = 0 IR irDetectRSide = 0 THEN pagrindinė „STARTING COMMAND“banguoja rankomis už dviejų šoninių detektorių, kad paleistumėte programą

Pagrindinis:

Sustabdykite 1000 DARBŲ

„PULSOUT Lmotor“, „LFast“kairysis variklis veikia visu greičiu

„PULSOUT“variklis, „RFast“„Dešinysis variklis veikia visu greičiu

FREQOUT 6, 1, 38500 'centras

irDetectCentre = IN5

FREQOUT 10, 1, 38500 'Uždaryti iš kairės

irDetectLSide = IN11

FREQOUT 1, 1, 38500 'dešinė pusė

irDetectRSide = IN0

IF irDetectLSide = 0 IR irDetectRSide = 1 THEN

DO PULSOUT Lmotor, LFast

FREQOUT 6, 1, 38500 'centras

irDetectCentre = IN5 IF irDetectCentre = 0 THEN centas

FREQOUT 10, 1, 38500 'Uždaryti iš kairės

irDetectLSide = IN11

FREQOUT 3, 1, 38500 'dešinė pusė

irDetectRight = IN2

LOOP, kol IRDETECTLSide = 1 ARBA irDetectRSide = 0

ELSEIF irDetectLSide = 1 IR irDetectRSide = 0 THEN

DO PULSOUT Rmotor, RFast

FREQOUT 6, 1, 38500 'centras

irDetectCentre = IN5 IF irDetectCentre = 0 THEN centas

FREQOUT 10, 1, 38500 'Uždaryti iš kairės

irDetectLSide = IN11

FREQOUT 3, 1, 38500 'dešinė pusė

irDetectRight = IN2

KILPTI, KAD IRDETECTLSide = 0 ARBA IRDetectRSide = 1

„ENDIF

IF irDetectCentre = 0 THART 'START

FREQOUT 7, 1, 38500 'kairė pusė irDetectLeft = IN8

FREQOUT 6, 1, 38500 'centras

irDetectCentre = IN5

FREQOUT 3, 1, 38500

irDetectRight = IN2

PAUSE 1000 'pauzė, kad būtų parodytas aptiktas signalas

IF (irDetectLeft = 1 IR irDetectRight = 0) THEN 'įvertinkite trukmę

„GOSUB“posūkis į kairę

ELSEIF (irDetectLeft = 0 IR irDetectRight = 1) THEN

„GOSUB turnRight“

ELSEIF (irDetectLeft = 1 IR irDetectRight = 1) THEN

„GOSUB turnDecide“

KITAS

GOSUB posūkis atgal

ENDIF

PABAIGA

KILPAS

GALAS

Pasukite į kairę:

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

Pasukite į dešinę:

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

GRĄŽINTI

turnReverse:

FOR mLoop = 0–50 PULSOUT Rmotor, RRev PULSOUT Lmotor, LRev PAUSE 20 PULSOUT Lmotor, LRev PAUSE 20 NEXT DO PULSOUT Rmotor, RRev FREQOUT 8, 1, 38500 irDetectLeft = IN9 FREQOUT 5, 1, 38500re 1DETC, 38500 irDetectRight = IN0 LOOP INT = IN9 = 1

GRĄŽINTI

turnDecide: 'naudoja mažesnį pasipriešinimą, kad matytųsi toliau

FREQOUT 9, 1, 38500

irDetectLSideFar = IN11

FREQOUT 4, 1, 38500 'dešinė pusė

irDetectRSideFar = IN0

IF (irDetectLSideFar = 1 IR irDetectRSideFar = 0) THEN 'įvertinkite trukmę

„GOSUB“posūkis į kairę

ELSEIF (irDetectLSideFar = 0 IR irDetectRSideFar = 1) THEN

„GOSUB turnRight“

ELSEIF (irDetectLSideFar = 1 IR irDetectRSideFar = 1) THEN

„GOSUB“posūkis į kairę

KITAS

GOSUB posūkis atgal

ENDIF

GRĄŽINTI

Rekomenduojamas: