Агуулгын хүснэгт:

Хэт улаан туяаны мэдрэгч бүхий Boe-Bot: 12 алхам (зурагтай)
Хэт улаан туяаны мэдрэгч бүхий Boe-Bot: 12 алхам (зурагтай)

Видео: Хэт улаан туяаны мэдрэгч бүхий Boe-Bot: 12 алхам (зурагтай)

Видео: Хэт улаан туяаны мэдрэгч бүхий Boe-Bot: 12 алхам (зурагтай)
Видео: ИК-датчик движения | Инфракрасный датчик движения и присутствия | Экономия электроэнергии 2024, Арваннэгдүгээр
Anonim
Хэт улаан туяаны мэдрэгч бүхий Boe-Bot
Хэт улаан туяаны мэдрэгч бүхий Boe-Bot

Энэхүү зааварчилгаа нь саад тотгороос зайлсхийхийн тулд хэт улаан туяаны детектор ашиглан лабиринт жолоодож чаддаг Бое-Бот хэрхэн бүтээх, кодлохыг харуулах болно. Энэ бол таны хэрэгцээнд нийцүүлэн хялбархан өөрчлөх боломжийг олгодог гарын авлага юм. Энэ нь хэлхээний болон програмчлалын үндсэн ойлголтыг шаарддаг. Энэ төслийн хувьд танд BASIC Stamp IDE програм хангамж хэрэгтэй болно. Эндээс үнэгүй татаж авах боломжтой. Түүнчлэн Boe-Bot робот

Алхам 1: Нөөц

Цахим эд анги

Холбогч кабель бүхий Boe -Bot Parallax Store - BoeBot Kit

5 хэт улаан туяаны LED Parallax дэлгүүр - IR дамжуулагч угсрах хэрэгсэл

5 Хэт улаан туяаны бамбай угсралт

Параллаксын хэт ягаан туяаны 5 детектор дэлгүүр - BoeBot IR хүлээн авагч

Эсэргүүцэл

  • (2) 4.7 kΩ ABRA Electronics - 4.7 кОм
  • (5) 220 Ω ABRA Electronics - 220 Ω
  • (2) 1 kΩ ABRA Electronics - 1 kΩ
  • (5) 2 к ABRA Electronics - 2 кОм

Төрөл бүрийн утас ABRA Electronics - 22 хэмжигч утас

3 LED -ийн ABRA Electronics - 5 мм улаан LED

Дэмжлэг

Компьютер

BASIC тамга засварлагч - (Freeware)

Багаж хэрэгсэл

Утас таслагч ABRA Electronics - Утас таслагч (заавал биш)

Утас хуулагч ABRA Electronics - Утас хуулагч

Бусад

Хана (лабиринт барих)

Алхам 2: Хэт улаан туяаны илрүүлэлт хэрхэн ажилладагийг ойлгох (заавал биш)

Хэт улаан туяаны илрүүлэлт хэрхэн ажилладагийг ойлгох (заавал биш)
Хэт улаан туяаны илрүүлэлт хэрхэн ажилладагийг ойлгох (заавал биш)

Хэт улаан туяаны гэрэл

Бидний Бое-Бот дээр бүтээх хэт улаан туяаны объект илрүүлэх систем нь олон талаараа машины гэрэл шиг юм. Машины гэрлийн гэрэл нь саад тотгорыг тусгахад таны нүд саад бэрхшээлийг илрүүлж, тархи тань тэдгээрийг боловсруулж, таны бие машины дагуу чиглүүлдэг. Boe-Bot нь хэт ягаан туяаны LED гэрлийг ашиглах болно. Тэд хэт улаан туяаг ялгаруулдаг бөгөөд зарим тохиолдолд хэт улаан туяа нь обьектуудыг тусгаж, Бое-Ботын чиглэлд ухардаг. Бое-Ботын нүд бол хэт улаан туяаны мэдрэгч юм. Хэт улаан туяаны детекторууд нь объектоос хэт улаан туяаны тусгалыг илрүүлж байгаа эсэхийг харуулдаг дохио илгээдэг. Boe-Bot-ийн тархи болох BASIC Stamp нь энэхүү мэдрэгчийн оролт дээр үндэслэн servo моторуудыг шийдвэрлэж, ажиллуулдаг. Зураг 7-1 IR гэрэлтэй объектыг илрүүлэх IR мэдрэгч нь дотоод фотодиод мэдрэгчээр илрүүлэхийг хүссэн 980 нм хэт улаан туяанаас бусад маш бага гэрлийг зөвшөөрдөг оптик шүүлтүүртэй. Хэт улаан туяаны детектор нь зөвхөн 38.5 кГц орчим дохиог дамжуулах электрон шүүлтүүртэй. Өөрөөр хэлбэл детектор нь секундэд 38,500 удаа асаж, унтрдаг хэт улаан туяаг хайж байгаа юм. Энэ нь нарны гэрэл, доторх гэрэлтүүлэг гэх мэт нийтлэг эх үүсвэрээс IR хөндлөнгийн оролцоог саатуулдаг. Нарны гэрэл нь DC хөндлөнгийн оролцоо (0 Гц) бөгөөд дотоод гэрэлтүүлэг нь тухайн бүс нутгийн гол тэжээлийн эх үүсвэрээс хамаарч 100 эсвэл 120 Гц -д асаж, унтрах хандлагатай байдаг. 120 Гц нь электрон шүүлтүүрийн 38.5 кГц давтамжийн давтамжаас гадуур байдаг тул үүнийг IR мэдрэгч огт тоодоггүй.

-Paralax оюутны гарын авлага

Алхам 3: IR LED -ийг угсрах

IR LED -ийг угсрах
IR LED -ийг угсрах

IR LED -ийг бүрхүүлийн илүү том хэсэгт оруулна уу

LED -ийн тунгалаг хэсгийг бүрээсийн жижиг хэсгээр хаах

Алхам 4: Хэт улаан туяаны хосыг турших - хэлхээ

Хэт улаан туяаны хосыг турших - хэлхээ
Хэт улаан туяаны хосыг турших - хэлхээ
Хэт улаан туяаны хосыг турших - хэлхээ
Хэт улаан туяаны хосыг турших - хэлхээ

Аливаа зүйлд хэт гүнзгий орохоосоо өмнө бид IR хос (нэг хэт улаан туяаны LED, нэг хэт улаан туяаны детектор) ажиллаж байгаа эсэхийг шалгах болно.

Дээрх хэлхээг Бое-Ботынхоо дээр суурилуулсан талхны самбар дээр хийж эхлээрэй

Алхам 5: Хэт улаан туяаны хосыг турших - Үндсэн код

Мэдээжийн хэрэг, бид IR хосоо ажиллуулахын тулд код бичих шаардлагатай болно

Үүнийг хийхийн тулд FREQOUT командыг ашиглах болно. Энэхүү команд нь аудио аялгуунд зориулагдсан боловч хэт улаан туяаны мужид давтамж гаргахад ашиглаж болно. Энэ туршилтын хувьд бид дараах тушаалыг ашиглана.

FREQOUT 8, 1, 38500

Энэ нь 38.5 кГц давтамжийг 1 мс үргэлжилдэг P8 руу илгээнэ. P8 -т холбогдсон хэт улаан туяаны LED хэлхээ нь энэ давтамжийг цацах болно. Хэрэв хэт улаан туяа нь Бое-Бот руу замд нь байгаа объектоор тусгагдсан бол хэт улаан туяаны детектор нь улайсгасан хэт улаан туяаг илрүүлсэн болохыг мэдэгдэх дохиог BASIC тамга руу илгээнэ.

IR хосыг ажиллуулах гол түлхүүр нь 38.5 кГц давтамжтай 1 мс илгээж, IR детекторын гаралтыг нэн даруй хувьсагчаар хадгалах явдал юм.

Энэ жишээ нь IR Detector -ийн утгыг irDectectLeft нэртэй бит хувьсагч дээр хадгалж байгааг харуулж байна

FREQOUT 8, 1, 38500

irDetectLeft = IN9

Хэт улаан туяаны дохио өндөр байгааг хараагүй тохиолдолд IR детекторын гаралтын байдал. IR детектор нь объектоор тусгагдсан 38500 Гц -ийн гармоникийг харвал түүний гаралт бага байна. IR мэдрэгчийн гаралт нь FREQOUT командыг гармоникоор илгээж дууссаны дараа миллисекундэд багахан түвшинд л үлддэг тул IR мэдрэгчийн гаралтыг FREQOUT командыг илгээсэн даруйд хувьсагчаар хадгалах нь чухал юм. Дараа нь хувьсагчийн хадгалсан утгыг Debug терминал дээр харуулах эсвэл Boe-Bot ашиглан навигацийн шийдвэр гаргахад ашиглаж болно.

Алхам 6: Хэт улаан туяаны хосыг турших - Тоног төхөөрөмж + Програм хангамж

Хэт улаан туяаны хосыг турших - Техник хангамж + Програм хангамж
Хэт улаан туяаны хосыг турших - Техник хангамж + Програм хангамж

Одоо та анхан шатны мэдлэгтэй болсон тул бид техник хангамж, програм хангамжийг хослуулан хосыг туршиж үзэх боломжтой бөгөөд IR Pair-ийн илрүүлж буй зүйлээс бодит цагийн хариу авах боломжтой болно.

Та кодыг өөрөө хийхийг оролдох эсвэл доорх кодыг ашиглаж болно

'{$ STAMP BS2}

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

  1. Boe-Bot-ийг цуваа кабельд холбосон байдлаар үлдээгээрэй, учир нь та IR хосоо шалгахын тулд DEBUG терминалыг ашиглах болно.
  2. Гар эсвэл цаас гэх мэт объектыг зүүн IR хосоос нэг инч орчим зайд байрлуул
  3. IR объектыг урд талд нь байрлуулахдаа Debug Terminal нь 0, IR хосын өмнө байгаа объектыг хасах үед 1 гарч ирнэ.
  4. Хэрэв дибаг хийх терминал нь хүлээгдэж буй утгыг харуулахгүй бол асуудлыг шийдэх алхам дахь алхамуудыг туршиж үзээрэй.

Алхам 7: Асуудлыг шийдвэрлэх (сүүлийн алхамтай холбоотой асуудлын хувьд)

DEBUG терминал гэнэтийн утгыг харуулна

Богино холболт, буруу байрлуулсан эсвэл байхгүй холбогч, эвдэрсэн эд анги, буруу резистор эсвэл бусад харагдахуйц асуудлуудыг шалгана уу

Програмыг логик эсвэл синтаксийн алдаанаас шалгаж үзээрэй - Хэрэв та өөрийн кодоо сүүлийн алхамд ашигласан бол өгсөн кодыг ашиглах талаар бодож үзээрэй

Бое-Ботын урд ямар ч объект байхгүй байсан ч гэсэн үргэлж 0 авдаг

Хэт улаан туяаны дохиог тусгасан ойролцоох объект байгаа эсэхийг шалгаарай. Boe-Bot-ийн урд талын ширээ шалтгаан байж болох юм. Boe-Bot-ийг нээлттэй орон зай руу шилжүүлснээр IR LED болон детектор ойролцоох объектоос тусахгүй байх болно.

Boe-Bot-ийн урд ямар ч объект байхгүй үед унших нь ихэнхдээ 1 байдаг боловч хааяа 0 хүртэл анивчдаг.

Ойролцоох флюресцент гэрлээс хөндлөнгийн оролцоо гарч болзошгүй; Ойролцоох флюресцент гэрлийг унтрааж, туршилтаа давтана уу. Хэрэв асуудал арилахгүй байвал 9 -р алхам нь асуудлыг илрүүлж магадгүй юм

Алхам 8: IR хоёр дахь хос

Хоёр дахь IR хос
Хоёр дахь IR хос

Одоо та зүүн IR -ийн програмтай болсон тул хэлхээг хийж, зөв IR Pair програмчлах таны ээлж боллоо

  1. Тохиромжтой IR хосыг харахын тулд DEBUG мэдэгдэл, гарчиг, тайлбарыг өөрчилнө үү.
  2. IrDetectLeft -аас irDetectRight болгон хувьсагчийн нэрийг өөрчил. Та үүнийг хөтөлбөрийн дөрвөн хэсэгт хийх хэрэгтэй болно.
  3. FREQOUT командын Pin аргументыг 8 болгон 2 болгон өөрчилнө үү.
  4. IrDetectRight хувьсагчийн хянадаг оролтын бүртгэлийг IN9 -аас IN0 болгон өөрчилнө үү.
  5. Зөв IR хосын хувьд энэ үйл ажиллагааны туршилтын алхмуудыг давтана уу; IR LED хэлхээг P2, детекторыг P0 -д холбосон.

Алхам 9: Хэт улаан туяаны интерференцийг илрүүлэх (заавал биш)

Хэт улаан туяаны интерференцийг илрүүлэх (заавал биш)
Хэт улаан туяаны интерференцийг илрүүлэх (заавал биш)

Та илрүүлэх ёсгүй дохиог илрүүлэхтэй холбоотой асуудалтай тулгарсан эсвэл өөр байршилд IR илрүүлэлтээ үзүүлэхээр төлөвлөж байгаа эсэхээс үл хамааран та хөндлөнгийн оролцоог шалгахыг хүсч магадгүй юм.

Энэхүү туршилтын програмын ойлголт нь маш энгийн бөгөөд та хэт улаан туяаны дохиог гадагш илгээхгүйгээр илрүүлдэг.

Та яг ижил хэлхээг ашиглаж болох боловч кодыг өөрчлөх шаардлагатай болно. та өөрөө код бичихийг сонгож болох боловч доорх кодыг ашиглаж болно.

'{$ STAMP BS2}

'{$ PBASIC 2.5} irDetectLeft VAR Bit DO irDetectLeft = IN9 irDetectRight = IN0 IF IN9 = 0 OR IN0 = 0 ТЭГВЭЛ "Интерференц илэрсэн" ДУГААР 100 ГҮЙЦЭТГЭЛИЙГ ЗААВАРЛА.

Хэрэв та ямар нэгэн хөндлөнгийн оролцоотой тулгарвал болзошгүй эх үүсвэрийг тодорхойлж, унтрааж/устгаад эсвэл Бое-Ботоо ажиллуулж буй газраа нүүлгэнэ үү.

Алхам 10: Илүү их IR хос нэмэх

Илүү IR хосыг нэмж байна
Илүү IR хосыг нэмж байна

Хэрэв та Бое-Ботынхоо хөдөлгөөнийг илүү нарийвчлалтай хийхийг хүсч байвал илүү их IR хос нэмж оруулахыг хүсч магадгүй юм. 3 -тай харьцуулахад гүйцэтгэлийг эрс сайжруулдаг. Та төв хосыг ашиглан шууд саад тотгорыг хайх боломжтой бөгөөд хоёр талын IR -ийг ашиглан хичнээн эргэхийг тодорхойлох боломжтой. Гэсэн хэдий ч 3 IR хос дизайны уналт нь хананы эсрэг гулсаж байхдаа мэдэж болно, учир нь төвийн IR хос нь саадыг илрүүлэхэд ашиглагддаг. Энэ асуудлыг шийдэхийн тулд та хоёр талдаа өндөр эсэргүүцэлтэй утга бүхий хэт улаан туяаны хосыг нэмж болох тул Boe-Bot нь хажуу тийш эсвэл хананд зөөлөн өнцгөөр ойрхон байвал хэт улаан туяаны дохиог илрүүлэх болно.

Алхам 11: IR -ийн таван хос - тойрог

IR -ийн таван хос - тойрог
IR -ийн таван хос - тойрог

Хоёр IR LED -ийг хажуу тийш чиглүүлэхдээ болгоомжтой байгаарай, учир нь тэдгээрийг мушгих нь залгуурт хүрч, богино холболт үүсгэж болзошгүй юм.

Алхам 12: IR -ийн таван хос - код

IR -ийн таван хос - код
IR -ийн таван хос - код

Та энэ кодыг ашиглахаасаа өмнө Boe-Bot програмчлахыг оролдож болно.

'{$ STAMP BS2}' {$ PBASIC 2.5} 'IR -ийн хосыг ялгах таван код' Matthew Shaw '2019 оны 5 -р сарын 8 (7 -р хувилбар)' Объект илрүүлэх, лабиринтийг шийдвэрлэх үндсэн логик боловсруулалт

irDetectLeft VAR битийн зүүн талын хувьсагч

irDetectCentre VAR Bit 'Төвийн хувьсагч irDetectRight VAR Bit' Баруун талын хувьсагч irDetectLSide VAR Bit 'Зүүн талын хувьсагч irDetectRSide VAR Bit' Баруун талын хувьсагч

mLoop VAR Word

Lmotor PIN 15 'Зүүн хөдөлгүүр нь 14 -р зүүтэй холбогдсон бөгөөд импульс энд дамждаг

Rmotor PIN 14 'баруун = 15

'хурд-> 650-750-850

LFast CON 850 'Зүүн хөдөлгүүрт бүрэн хурдтай тохируулагч RFast CON 650' Баруун моторт бүрэн хурдтай тохируулагч

LStop CON 750 'Зүүн хөдөлгүүрт бүрэн хурдтай тохируулагч

RStop CON 650 'Баруун хөдөлгүүрт бүрэн хурдтай тохируулагч

LMid CON 830 'Зүүн хөдөлгүүрт дунд хурдтай тогтмол

RMid CON 700 'Баруун хөдөлгүүрт дунд хурдтай тогтмол

LSlow CON 770 'Зүүн хөдөлгүүрт хамгийн бага хурдтай тохируулагч

RSlow CON 730 'Баруун моторын хамгийн бага хурдтай тохируулагч

LRev CON 650 'Зүүн хөдөлгүүрт урвуугаар бүрэн хурдаар тохируулагч

RRev CON 850 'Зүүн хөдөлгүүрт урвуугаар бүх хурдаар тохируулагч

FREQOUT 7, 1, 38500 'зүүн талд

irDetectLeft = IN8

FREQOUT 6, 1, 38500 'төв

irDetectCentre = IN5

FREQOUT 3, 1, 38500 'баруун талд

irDetectRight = IN2

FREQOUT 10, 1, 38500 'Зүүн хаах

irDetectLSide = IN11

FREQOUT 1, 1, 38500 'баруун Хаах

irDetectRSide = IN0

FREQOUT 9, 1, 38500

irDetectLSideFar = IN11

FREQOUT 4, 1, 38500 'баруун талд

irDetectRSideFar = IN0

Хэрэв irDetectLSide = 0 AND irDetectRSide = 0 ТЭГВЭЛ үндсэн 'ЭХЛЭХ ТУХАЙ програмыг эхлүүлэхийн тулд хоёр талын детекторын хажуугаар гараа далла.

Үндсэн:

1000 ХИЙХ ЗААВАР ТАНИЛЦУУЛ

PULSOUT Lmotor, LFast -ийн зүүн хөдөлгүүр бүрэн хурдаар ажилладаг

PULSOUT Rmotor, RFast 'Баруун мотор бүрэн хурдаар ажилладаг

FREQOUT 6, 1, 38500 'төв

irDetectCentre = IN5

FREQOUT 10, 1, 38500 'Зүүн хаах

irDetectLSide = IN11

FREQOUT 1, 1, 38500 'баруун талд

irDetectRSide = IN0

IF irDetectLSide = 0 AND irDetectRSide = 1 THEN

Lmotor, LFast PULSOUT хийнэ үү

FREQOUT 6, 1, 38500 'төв

irDetectCentre = IN5 IF irDetectCentre = 0 THEN cent

FREQOUT 10, 1, 38500 'Зүүн хаах

irDetectLSide = IN11

FREQOUT 3, 1, 38500 'баруун талд

irDetectRight = IN2

IrDetectLSide = 1 OR irDetectRSide = 0 хүртэл гогцоо хийх

ELSEIF irDetectLSide = 1 AND irDetectRSide = 0 THEN

Rmotor хийх, RFast

FREQOUT 6, 1, 38500 'төв

irDetectCentre = IN5 IF irDetectCentre = 0 THEN cent

FREQOUT 10, 1, 38500 'Зүүн хаах

irDetectLSide = IN11

FREQOUT 3, 1, 38500 'баруун талд

irDetectRight = IN2

IrDetectLSide = 0 OR irDetectRSide = 1 хүртэл гогцоо хийх

'ENDIF

IF irDetectCentre = 0 ДАРАА ЭХЛЭХ

FREQOUT 7, 1, 38500 'зүүн тал irDetectLeft = IN8

FREQOUT 6, 1, 38500 'төв

irDetectCentre = IN5

FREQOUT 3, 1, 38500

irDetectRight = IN2

PAUSE 1000 'зогсолтыг илрүүлсэн дохиог харуулна

IF (irDetectLeft = 1 AND irDetectRight = 0) Дараа нь үргэлжлэх хугацааг үнэлнэ үү

GOSUB turnLeft

ELSEIF (irDetectLeft = 0 AND irDetectRight = 1) Дараа нь

GOSUB turnRight

ELSEIF (irDetectLeft = 1 AND irDetectRight = 1) Дараа нь

GOSUB turnDecide

НӨГӨӨ

GOSUB эргэх Урвуу

ENDIF

ENDIF 'END

Гогцоо

ТӨГСГӨЛ

Зүүн тийш эргэ:

Lmotor хийх, LRev FREQOUT 8, 1, 38500 irDetectLeft = IN9 FREQOUT 5, 1, 38500 irDetectCentre = IN4 FREQOUT 2, 1, 38500 irDetectRight = IN0 = 1 буцах хүртэл INO Loop.

Баруун тийш эргэ:

Rmotor хийх, RRev FREQOUT 8, 1, 38500 irDetectLeft = IN9 FREQOUT 5, 1, 38500 irDetectCentre = IN4 FREQOUT 2, 1, 38500 irDetectRight = IN9 IN9 = 1 хүртэл

БУЦАХ

эргэх Урвуу:

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 1 FREQO00, 38500 irDetectRight = IN0 = IN9 хүртэл 1 давталт

БУЦАХ

turnDecide: 'цаашид харахын тулд бага эсэргүүцлийг ашигладаг

FREQOUT 9, 1, 38500

irDetectLSideFar = IN11

FREQOUT 4, 1, 38500 'баруун талд

irDetectRSideFar = IN0

IF (irDetectLSideFar = 1 AND irDetectRSideFar = 0) Дараа нь үргэлжлэх хугацааг үнэлнэ.

GOSUB turnLeft

ELSEIF (irDetectLSideFar = 0 AND irDetectRSideFar = 1) Дараа нь

GOSUB turnRight

ELSEIF (irDetectLSideFar = 1 AND irDetectRSideFar = 1) Дараа нь

GOSUB turnLeft

НӨГӨӨ

GOSUB эргэх

ENDIF

БУЦАХ

Зөвлөмж болгож буй: