מקצה שיפורים לחיישן אופטי, חלק א'

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

ערמה של חיישני OPB732
זה חיישן? זה אמצעי תקשורת? כן! ערמה של חיישני OPB732

כשהמודול הקודם שלי נלקח לבדיקות בשטח, הוא אמנם עמד בדרישות ההתחלתיות, אך התגלו גם שני דברים שכדאי לשפר:

  • במרחקים קצרים (1-2 ס"מ) האור הקבוע מהלד האינפרה-אדום חזק מספיק להביא את הפוטו-טרנזיסטור הקולט לרוויה, כך שלא ניתן לקבוע בהם סף גילוי אמין. החלפה של הנגד ללד בנגד גדול יותר עוזרת, אבל אז המודול לא יכול להגיב לאובייקטים במרחק גדול יותר.
  • הפדים של ממשק ה-UART על המודול בדרך כלל אינם נגישים, פיזית, אחרי שהמודול כבר מותקן: בשביל להשתמש בהם צריך להוציא את המודול מהמקום.

פתרון לבעיית הטווח: זרם משתנה

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

פתרון לתקשורת: חיישן כמקמ"ש

כשחשבתי על דרכים להתמודד עם בעיית הגישה ל-UART, ועלה הרעיון הפרוע של תקשורת אלחוטית, תפסתי פתאום שכבר יש על הלוח משדר ומקלט: הלד והפוטו-טרנזיסטור של החיישן האנלוגי עצמו!

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

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

מתחים וזרמים

מקדם ההגברה (hFE) של טרנזיסטור 3904 טיפוסי בתנאים טיפוסיים אמור להיות בסביבות 200, אז כדי לתת ללד זרם 0-20 מיליאמפר, נניח, צריך להעביר דרך בסיס הטרנזיסטור זרם עד 0.1 מיליאמפר, ובהנחה של מתח מערכת 5V, זה אומר להעביר את הפלט מה-DAC לבסיס דרך נגד 50K. חישוב פשוט.

אבל מי אמר שמתח המערכת יהיה תמיד 5V? לא עדיף ליצור מודול עם טווח מתחים גמיש יותר, למשל 3.3-5V? דרך אחת לעשות זאת היא בתוכנה: המיקרו-בקר יקרא את מתח המערכת, ויתאים את טווח ה-DAC כך שבכל מקרה יהיה בין 0 ל-3.3V (בהקרבה של קצת רזולוציה). דרך נוספת היא להגביל את מודול ה-DAC לרפרנס פנימי קבוע, כגון 2.5V. לפי ה-Datasheet, כדי שהרפרנס הספציפי הזה יעבוד, צריך מתח מערכת של 2.9V לפחות – סביר בהחלט. הדיוק המוצהר שלו הוא בסביבות 5%. אצטרך כמובן להתאים גם את הנגד לבסיס הטרנזיסטור.

מהירות תקשורת

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

עשיתי את זה בשילוב עם מודול USB-to-UART סיני זול ונפוץ, שמבוסס על שבב CH340, וזה לא עבד: הסתבר שהמודול הסיני, בניגוד לכל היגיון, מושך את קו ה-RX של עצמו למתח חיובי. זה אמור להיות התפקיד של הצד המשדר (TX), לא של הקולט! המשיכה הזו התגברה על האות החלש-ממילא מהפוטו-טרנזיסטור, והשידור לא נקלט. הוספתי למעגל תיווך של מגבר שרת, שהשווה את האות לסף גבוה יחסית. מהירות התגובה הייתה איטית כצפוי (עשרות רבות של מיקרו-שניות), אבל בקצב תקשורת איטי של 1200-2400 באוד השידור נקלט היטב גם ממרחק של 5-6 ס"מ, כהחזר ממשטח בהיר.

המתאם שלי לשידור אלחוטי, ומשמאלו מודול USB-to-UART סיני
המתאם שלי לשידור אלחוטי, ומשמאלו מודול USB-to-UART סיני (לחצו לתמונה גדולה)

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

מגבלות המודול החדש

אף על פי שהמיקרו-בקר לא "מושך" את RX של עצמו, הספים שלפיהם נקבעים ערכי HIGH ו-LOW בקלט נמוכים מדי, ולכן הפלט הגולמי של הפוטו-טרנזיסטור לא תמיד נקלט כמו שצריך כשידור UART. זה אומר שחייבים איזשהו מגבר/משווה, אבל הוא לא חייב להיות חיצוני – יש לנו כזה מובנה בתוך המיקרו-בקר: מודול ה-AC (ראשי תיבות של Analog Comaprator) שהקדשתי לו פעם פוסט שלם.

כאן נכנסת לתמונה מגבלה טכנית, של מיפוי הפינים ותפקידיהם במיקרו-בקר שבחרתי. דבר ראשון, הפלט של ה-AC אינו יכול להישלח ל-RX דרך חיבור פנימי: הוא חייב לעבור דרך פינים פיזיים. אבל אם משתמשים במיפוי ברירת המחדל, שני התפקידים האלה "יושבים" על אותו פין בדיוק ולכאורה אינם יכולים לעבוד איתו במקביל, כי אחד צריך אותו כפין פלט והשני כפין קלט. לעומת זאת, אם מעבירים את RX לפין חלופי, אז גם TX חייב לעבור, ואז הוא נפרד מה-DAC. מעצבן!

מגבלה שנייה ומהותית יותר היא שה-AC משווה בין שני מתחים, שאחד מהם בא בהכרח מפין פיזי מסוים, והשני או מפין פיזי אחר או מרפרנס פנימי (קבוע או פלט ה-DAC). אם אשתמש בשני הפינים הפיזיים, לא יישארו פינים מתאימים לשאר הפונקציונליות הדרושה למודול. את ה-DAC אני צריך בשביל הלד, אז נשארה לי רק האופציה של רפרנס פנימי. לרוע המזל הוא בנוי כך שהוא משותף ל-DAC ול-AC. במילים אחרות, סף ההשוואה המעשי הכי גבוה שזמין עבור ה-AC יהיה 2.5V. האם זה יהיה מספיק כדי לזהות את שידורי ה-UART שבאים מבחוץ? במתאם שבניתי השתמשתי בסף כזה, וזה הספיק. האם זה יעבוד גם במודול החיישן, בכל טווח המתחים שהוא אמור לפעול בהם? זאת נגלה בפוסט הבא… 🙂

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

רק הערה: בגלל שHFE הוא נתון משתנה בטווח די גדול, לרוב לא מסתמכים עליו בחישובים.