תוכן עניינים:

Boe-Bot עם גלאי אינפרא אדום: 12 שלבים (עם תמונות)
Boe-Bot עם גלאי אינפרא אדום: 12 שלבים (עם תמונות)
Anonim
Boe-Bot עם גלאי אינפרא אדום
Boe-Bot עם גלאי אינפרא אדום

מדריך זה ידגים כיצד לבנות ולקודד Boe-Bot שיכול לנווט במבוך באמצעות גלאי אינפרא אדום כדי להימנע ממכשולים. זהו מדריך קל לביצוע המאפשר שינויים קלים בהתאם לצרכיך. זה דורש הבנה בסיסית של מעגלים ותכנות. יהיה עליך להחזיק בתוכנת BASIC Stamp IDE לפרויקט זה. להורדה בחינם כאן. כמו גם רובוט Boe-Bot

שלב 1: משאבים

רכיבים אלקטרוניים

Boe -Bot עם כבל מחברים Parallax Store - ערכת BoeBot

חנות פרלקסים של אינפרא אדום LED - ערכת הרכבה של משדר IR

5 מכלולי מגן אינפרא אדום

5 חנות Parallax גלאי אינפרא אדום - מקלט IR BoeBot

נגדים

  • (2) 4.7 kΩ ABRA אלקטרוניקה - 4.7 kΩ
  • (5) 220 Ω ABRA אלקטרוניקה - 220 Ω
  • (2) 1 kΩ ABRA אלקטרוניקה - 1 kΩ
  • (5) 2 k ABRA אלקטרוניקה - 2 kΩ

חיווט מגוון ABRA אלקטרוניקה - חוט מד 22

3 LED's ABRA Electronics - LED אדום 5 מ מ

תמיכה

מַחשֵׁב

עורך בולים BASIC - (תוכנה חופשית)

כלים

חוט חוט ABRA אלקטרוניקה - חותך תיל (אופציונלי)

חשפן חוטים ABRA אלקטרוניקה - חשפן חוטים

שונות

קירות (לבניית מבוך)

שלב 2: הבנת אופן הפעולה של זיהוי אינפרא אדום (אופציונלי)

להבין כיצד פועל זיהוי אינפרא אדום (אופציונלי)
להבין כיצד פועל זיהוי אינפרא אדום (אופציונלי)

פנסי אינפרא אדום

מערכת זיהוי אובייקטים אינפרא אדום שנבנה על Boe-Bot היא כמו פנסי מכונית בכמה היבטים. כאשר האור מפנסי המכונית משקף מכשולים, העיניים שלך מזהות את המכשולים והמוח שלך מעבד אותן וגורם לגוף שלך להנחות את המכונית בהתאם. ה- Boe-Bot ישתמש בנורות אינפרא אדום לפנסים. הם פולטים אינפרא אדום, ובמקרים מסוימים האינפרא אדום משקף אובייקטים וחוזר חזרה לכיוון ה- Boe-Bot. עיני ה- Boe-Bot הן גלאי האינפרא אדום. גלאי האינפרא אדום שולחים אותות המציינים אם הם מזהים אינפרא אדום המוחזר מאובייקט או לא. המוח של Boe-Bot, חותמת BASIC, מקבל החלטות ומפעיל את מנועי הסרוו המבוססים על קלט חיישן זה. איור 7-1 זיהוי אובייקטים עם פנסי IR לגלאי ה- IR יש מסננים אופטיים מובנים המאפשרים מעט מאוד אור למעט אינפרא אדום 980 ננומטר שברצוננו לזהות בעזרת חיישן הפוטודיודה הפנימי שלו. לגלאי האינפרא אדום יש גם מסנן אלקטרוני המאפשר לעבור לאותות בסביבות 38.5 קילוהרץ בלבד. במילים אחרות, הגלאי מחפש רק אינפרא אדום המהבהב וכיבוי 38, 500 פעמים בשנייה. זה מונע הפרעות IR ממקורות נפוצים כגון אור שמש ותאורה פנימית. אור השמש הוא הפרעות DC (0 הרץ), והתאורה הפנימית נוטה להבהב ולכבות במהירות של 100 או 120 הרץ, בהתאם למקור החשמל הראשי באזור. מכיוון ש -120 הרץ נמצא מחוץ לתדר המעבר של ה 38.5 קילוהרץ של המסנן האלקטרוני, גלאי ה- IR מתעלמים ממנו לחלוטין.

-מדריך תלמידים של פארלקס

שלב 3: הרכבת נוריות IR

הרכבת נוריות IR
הרכבת נוריות IR

הכנס את נורית ה- IR לחלק הגדול יותר של המעטפת

סגרו את החלק הברור של ה- LED עם החלק הקטן יותר של המעטפת

שלב 4: בדיקת זוגות אינפרא אדום - מעגל

בדיקת זוגות אינפרא אדום - מעגל
בדיקת זוגות אינפרא אדום - מעגל
בדיקת זוגות אינפרא אדום - מעגל
בדיקת זוגות אינפרא אדום - מעגל

לפני שנכנס לעומק מדי במשהו, נבדוק כדי לוודא שזוג ה- IR פועל (LED אינפרא אדום וגלאי אינפרא אדום אחד).

התחל בבניית המעגל הנ ל בלוח הלחם המותקן על גבי Boe-Bot שלך

שלב 5: בדיקת זוגות אינפרא אדום - קוד בסיסי

כמובן שנצטרך לכתוב קוד כדי שזוגות ה- IR שלנו יעבדו

לשם כך, ישתמש בפקודה FREQOUT. פקודה זו תוכננה לצלילי שמע, אולם ניתן להשתמש בה לייצור תדרים בטווח האינפרא אדום. לבדיקה זו נשתמש בפקודה:

FREQOUT 8, 1, 38500

זה ישלח תדר של 38.5 קילוהרץ שנמשך 1 אלפיות השנייה ל- P8. מעגל ה- LED האינפרא אדום המחובר ל- P8 ישדר תדר זה. אם האור האינפרא אדום מוחזר לאתר ה- Boe-Bot על ידי אובייקט הנמצא בדרכו, גלאי האינפרא אדום ישלח לחותמת BASIC אות שיודיע לו כי האור האינפרא אדום המוחזר זוהה.

המפתח לגרום לזוג IR לפעול הוא לשלוח 1 ms של 38.5 קילוהרץ FREQOUT ולשמור באופן מיידי את תפוקת גלאי ה- IR במשתנה.

דוגמה זו מציגה את אחסון הערך גלאי IR במשתנה קצת בשם irDectectLeft

FREQOUT 8, 1, 38500

irDetectLeft = IN9

מצב הפלט של גלאי ה- IR כאשר הוא אינו רואה אות IR גבוה. כאשר גלאי ה- IR רואה את ההרמוניה 38500 הרץ המוחזרת על ידי אובייקט, תפוקתו נמוכה. תפוקת גלאי ה- IR נשארת נמוכה רק לשבריר של אלפית השנייה לאחר ביצוע הפקודה FREQOUT בשליחת ההרמונית, ולכן חיוני לאחסן את פלט גלאי ה- IR במשתנה מיד לאחר שליחת הפקודה FREQOUT. לאחר מכן ניתן להציג את הערך המאוחסן על ידי המשתנה במסוף באגים או להשתמש בו להחלטות ניווט על ידי Boe-Bot.

שלב 6: בדיקת זוגות אינפרא אדום - חומרה + תוכנה

בדיקת זוגות אינפרא אדום - חומרה + תוכנה
בדיקת זוגות אינפרא אדום - חומרה + תוכנה

כעת, כאשר אתה יודע את היסודות, אנו יכולים לחבר את החומרה והתוכנה כדי לבדוק זוג יחד ולקבל משוב בזמן אמת ממה ש- IR מזהה.

אתה יכול לנסות ליצור את הקוד בעצמך, או להשתמש בקוד שלהלן

'{$ 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 מחובר לכבל הטורי, מכיוון שתשתמש במסוף DEBUG לבדיקת זוג ה- IR שלך.
  2. הנח אובייקט, כגון ידך או דף נייר, במרחק של סנטימטר בערך מהזוג השמאלי של ה- IR
  3. ודא שכאשר אתה מציב אובייקט מול זוג ה- IR מסוף הבאגים מציג 0, וכאשר אתה מסיר את האובייקט מלפני זוג ה- IR, הוא מציג 1.
  4. אם מסוף הבאגים אינו מציג את הערכים הצפויים, נסה את השלבים בשלב איתור הבעיות.

שלב 7: פתרון בעיות (לבעיות עם השלב האחרון)

מסוף DEBUG המציג ערכים בלתי צפויים

בדוק אם קיים מעגל, מחברים לא במקומם או חסרים, רכיבים פגומים, נגדים לא נכונים או כל בעיה גלויה אחרת

בדוק את התוכנית משגיאות לוגיות או תחביר - אם השתמשת בקוד שלך לשלב האחרון, שקול להשתמש בקוד המצורף

תמיד מקבלים 0, גם כשאין אובייקטים מונחים מול ה- Boe-Bot

בדוק אם ישנם אובייקטים קרובים המשקפים את האות האינפרא אדום. השולחן מול ה- Boe-Bot יכול להיות הסיבה לכך. העבר את ה- Boe-Bot לחלל פתוח כך שנורית ה- IR והגלאי לא יוכלו לשקף אובייקט סמוך.

קריאה היא אחת רוב הזמן כאשר אין חפץ מול ה- Boe-Bot, אך מהבהב ל -0 מדי פעם.

ייתכן שיש הפרעה מאור ניאון סמוך; כבה את כל נורות הניאון הסמוכות וחזור על הבדיקות שלך. אם הבעיה ממשיכה, שלב 9 עשוי לחשוף את הבעיה

שלב 8: זוג IR שני

זוג IR שני
זוג IR שני

כעת, כשיש לך את התוכנית עבור ה- IR השמאלי, הגיע תורך להפוך את המעגל ולתכנת את ה- IR הנכון

  1. שנה את הצהרת DEBUG, הכותרת והערות כך שיתייחסו לצמד ה- IR הנכון.
  2. שנה את שם המשתנה מ- irDetectLeft ל- irDetectRight. יהיה עליך לעשות זאת בארבעה מקומות בתוכנית.
  3. שנה את הארגומנט Pin של הפקודה FREQOUT מ -8 ל -2.
  4. שנה את רשום הקלט המנוטר על ידי המשתנה irDetectRight מ- IN9 ל- IN0.
  5. חזור על שלבי הבדיקה בפעילות זו עבור זוג ה- IR הנכון; כאשר מעגל ה- LED LED מחובר ל- P2 והגלאי מחובר ל- P0.

שלב 9: זיהוי הפרעות אינפרא אדום (אופציונלי)

זיהוי הפרעות אינפרא אדום (אופציונלי)
זיהוי הפרעות אינפרא אדום (אופציונלי)

בין אם אתה נתקל בבעיות באיתור אותות שאסור לזהות ובין אם אתה מתכנן להפגין את זיהוי ה- IR שלך במקום חלופי, ייתכן שתרצה לבדוק הפרעות.

הרעיון של תוכנית בדיקה זו הוא די פשוט, אתה מזהה אותות אינפרא אדום מבלי לשלוח.

אתה יכול להשתמש באותו מעגל אבל תצטרך לשנות את הקוד. אתה יכול לבחור לכתוב קוד משלך, אך תוכל להשתמש בקוד המצורף להלן:

'{$ STAMP BS2}

'{$ PBASIC 2.5} bit bit irDetectLeft VAR DO irDetectLeft = IN9 irDetectRight = IN0 IF IN9 = 0 או IN0 = 0 ואז ניתוק "זיהוי הפרעות" PAUSE 100 LOOP

אם אתה נתקל בהפרעות, קבע את המקור הסביר וכבה אותו/הסר אותו או העבר למקום בו אתה מפעיל את ה- Boe-Bot שלך.

שלב 10: הוספת זוגות IR נוספים

הוספת זוגות IR נוספים
הוספת זוגות IR נוספים

אם אתה רוצה יותר דיוק בתנועה של ה- Boe-Bot שלך, ייתכן שתרצה להוסיף עוד זוגות IR. 3 משפר מאוד את הביצועים בהשוואה לשניים; אתה יכול להשתמש בצמד מרכזי כדי לסרוק מכשול ישיר, ולהשתמש בשני מקורות IR בצד כדי לקבוע כמה לפנות. עם זאת, הנפילה של עיצוב 3 זוגות ה- IR היא שאולי תדעו כשאתם מחליקים לקיר, מכיוון שצמד ה- IR המרכזי משמש לאיתור מכשולים. כדי לפתור בעיה זו, ניתן להוסיף זוג IR לכל צד בעל ערך התנגדות גבוה ולכן אות אינפרא אדום יתגלה רק אם ה- Boe-Bot קרוב לצד או לקיר בזווית עדינה.

שלב 11: חמישה זוגות IR - מעגל

חמישה זוגות IR - מעגל
חמישה זוגות IR - מעגל

היזהר בעת כיוון שני נוריות ה- IR בצד מכיוון שעיוותם עלול לגרום למגעים ולגרום לקצר.

שלב 12: חמישה זוגות IR - קוד

חמישה זוגות IR - קוד
חמישה זוגות IR - קוד

ייתכן שתרצה לנסות לתכנת את Boe-Bot שלך לפני שתשתמש בקוד זה:

'{$ STAMP BS2}' {$ PBASIC 2.5} 'חמש קוד זיהוי זוגות IR' מתיו שאו '8 במאי 2019 (גירסה 7)' זיהוי אובייקטים ועיבוד לוגי בסיסי לפתרון מבוכים

irDetectLeft VAR Bit 'משתנה לשמאל

irDetectCentre VAR Bit 'משתנה למרכז irDetectRight VAR Bit' משתנה לימין irDetectLSide VAR Bit 'משתנה לצד שמאל irDetectRSide VAR Bit' משתנה לצד ימין irDetectLSideFar VAR Bit 'משתנה לעמידות נמוכה בצד שמאל irDetectRSideFar VAR Bit' משתנה לצד ימין נמוך

mloop VAR Word

Lmotor PIN 15 'המנוע השמאלי מחובר לסיכה 14, פולסים עוברים כאן

Rmotor PIN 14 'ימין = 15

המהירויות הן-> 650-750-850

LFast CON 850 'Conastant עבור המנוע השמאלי במהירות מלאה RFast CON 650' Conastant עבור המנוע הימני במהירות מלאה

LStop CON 750 'Conastant עבור המנוע השמאלי במלוא המהירות

RStop CON 650 'Conastant עבור מנוע ימני במלוא המהירות

LMid CON 830 'Conastant עבור המנוע השמאלי במהירות בינונית

RMid CON 700 'Conastant עבור מנוע ימני במהירות בינונית

LSlow CON 770 'Conastant עבור המנוע השמאלי במהירות מינימלית

RSlow CON 730 'Conastant עבור מנוע ימני במהירות מינימלית

LRev CON 650 'Conastant עבור המנוע השמאלי במלוא המהירות לאחור

RRev CON 850 'Conastant עבור המנוע השמאלי במלוא המהירות לאחור

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 ואז הפקודה העיקרית 'התחלת פקודה' מנופפת בידיים על פני שני גלאי הצד כדי להתחיל בתוכנית

רָאשִׁי:

PAUSE 1000 DO

מנוע PULSOUT, המנוע השמאלי של LFast פועל במהירות מלאה

מנוע PULSOUT, RFast 'המנוע הימני פועל במלוא המהירות

FREQOUT 6, 1, 38500 'מרכז

irDetectCentre = IN5

FREQOUT 10, 1, 38500 'שמאל סגור

irDetectLSide = IN11

FREQOUT 1, 1, 38500 'צד ימין

irDetectRSide = IN0

אם irDetectLSide = 0 ו- irDetectRSide = 1 לאחר מכן

DO PULSOUT Lmotor, LFast

FREQOUT 6, 1, 38500 'מרכז

irDetectCentre = IN5 IF irDetectCentre = 0 ואז סנט

FREQOUT 10, 1, 38500 'שמאל סגור

irDetectLSide = IN11

FREQOUT 3, 1, 38500 'צד ימין

irDetectRight = IN2

לולאה עד irDetectLSide = 1 או irDetectRSide = 0

ELSEIF irDetectLSide = 1 ו- irDetectRSide = 0 לאחר מכן

DO PULSOUT Rmotor, RFast

FREQOUT 6, 1, 38500 'מרכז

irDetectCentre = IN5 IF irDetectCentre = 0 ואז סנט

FREQOUT 10, 1, 38500 'שמאל סגור

irDetectLSide = IN11

FREQOUT 3, 1, 38500 'צד ימין

irDetectRight = IN2

לולאה עד irDetectLSide = 0 או irDetectRSide = 1

'ENDIF

אם 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 ו- irDetectRight = 1) ואז

GOSUB turnRight

ELSEIF (irDetectLeft = 1 ו- irDetectRight = 1) לאחר מכן

GOSUB turnDecide

אַחֵר

GOSUB turnReverse

ENDIF

סוף ENDIF

לוּלָאָה

סוֹף

פונה שמאלה:

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

פנה ימינה:

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

לַחֲזוֹר

turnReverse:

עבור 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, FREQOUT 5, 1, 38500 irDetectRight = IN0 LOOP TOT 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 ו- irDetectRSideFar = 1) ואז

GOSUB turnLeft

אַחֵר

GOSUB turnReverse

ENDIF

לַחֲזוֹר

מוּמלָץ: