ארדואינו למתחילים: גלאי קרבה אינפרה-אדום

בפוסט קצר זה אדגים את השימוש בחיישן קרבה אופטי קטן וזול, שמסוגל להבחין בגופים בטווח של סנטימטר או שניים (לכן הוא נקרא חיישן קרבה ולא חיישן מרחק). למה רכיב כזה טוב? סבלנות. קודם כל, בואו ונראה את החיישן בפעולה:

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

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

TCRT5000 Closeup
צילום תקריב של הרכיב

כמובן, מעבר למרחק הפיזי, יש גורם נוסף שמשפיע על תוצאת המדידה: עד כמה החומר ממנו עשוי החפץ (או הצבע בו הוא צבוע) מחזיר את האור האינפרה-אדום. כפי שהראיתי בסרטון, אפשר לנצל את העניין הזה כדי לגלות לא רק מרחקים אלא גם מרקמים או בהירויות. שימו לב גם שמקורות אינפרה-אדום בסביבה (שמש, נורות ליבון או הלוגן, אש וכו') עשויים להשפיע על התוצאות.

החיווט הבסיסי של הרכיב לארדואינו מופיע, סכמטית, בשרטוט הבא. המתח לנורית עובר דרך נגד 220 אום כפי שמומלץ לנוריות LED באופן כללי, ואילו הפוטוטרנזיסטור בעצם פותח או סוגר מעגל בין פין הקלט האנלוגי A0 בארדואינו לבין ה-Ground. כשאין אור, יש למעשה נתק בין השניים – וכדי שהארדואינו יקבל קריאה בעלת משמעות גם במקרה כזה, מוסיפים Pull-up resistor. בסרטון נגד ה-Pull-up הוא חיצוני, אך כפי שמוסבר בקישור אפשר להחליף אותו בנגד פנימי.

Connections Schematic
סכמת אופן החיבור של רכיב חיישן הקרבה האינפרה-אדום

בעזרת הארדואינו והמוניטור הטורי (Serial monitor) שלו ביצעתי מדידות ובדקתי אילו ערכים אני מקבל כאשר יש או אין חפץ מול הסנסור. על סמך המדידות המקדימות הללו קבעתי את ערך הסף 50, שמופיע בקוד להלן. שימו לב גם שאני משתמש בפינים אנלוגיים בתור פלט דיגיטלי להדלקה של הנורית האדומה והירוקה – סתם כדי להראות שזה אפשרי.

// TCRT5000 IR Proximity Sensor  Demo
// Sensor input to A0
// Green LED to A4, red LED to A5

 void setup() {
  pinMode(A4, OUTPUT);
  pinMode(A5, OUTPUT);
}

void loop() {
  if (analogRead(A0) < 50) {
    digitalWrite(A4, HIGH);
    digitalWrite(A5, LOW);
  } else {
       digitalWrite(A4, LOW);
       digitalWrite(A5, HIGH);
    }
}

ולסיום, תשובה לשאלה שהוצגה בהתחלה: מי צריך סנסורים עם טווח מוגבל כל כך? ובכן, חישבו למשל על מדפסת שגוררת דף נייר מהמגש וצריכה לזהות מתי בדיוק הקצה שלו מגיע לטווח של ראש ההדפסה; דמיינו מכונת חריטה עם ראש עולה ויורד שצריך להגיע לגובה מדויק מעל פני השטח; או מעגל בקרת איכות במפעל, שמודד אורך של ופלים מצופים שחולפים מתחתיו על מסוע שנע במהירות קבועה; ואפילו, כמו שהוצג בסרטון, קורא של ברקודים גדולים וגסים במיוחד. בקיצור, כרגיל, השמים והדמיון הם הגבול…

להרשמה
הודע לי על
7 Comments
מהכי חדשה
מהכי ישנה לפי הצבעות
Inline Feedbacks
הראה את כל התגובות

שאלה אני צריך חיישן מרחק, אבל עם פיזור ממוקד או רוחבי, זאת אומרת חיישן שינוע בתנועה יקרא תנועה רק החל מגובה של כשניים עד שלושה ס"מ והמרחק עד מטר מטר וחצי רוחב הפיזור גם כמטר עד מטר וחצי אם יש דבר כזה אז מהיא המלצתך
דרישתי גובה מינימום 1-3 ס"מ
רוחב מ1-1,5 מטר
אורך 1-1,5
המקום צובר אבק ויתכן שיהיה קשה לשים חישו אינפרה אדום
בכבוד רב
אבי

מסתבר שאינפרה אדום אפשר להפיק גם באמצעות נורת הלוגן

למה דווקא חיברת כPULL UP?

היי עידו

איפה קנית את החיישן הזה?