חיישן למדידת מרחק - אולטראסוני
מדידת מרחק היא אחת המשימות הנפוצות בקרב מערכות בקרה או רובוטים ממונעים. חשיבות הצורך למדידת מרחק היא כדי להבטיח שלא יקרו תאונות, שהמערכות לא יבצעו תנועה לאזור לא רצוי.
ישנן מספר שיטות למדידת מרחק בעזרת חיישנים, למשל: מדידה בעזרת IR (אינפרא אדום), מדידה בעזרת לייזר - כמו המשטרה. בעמוד זה נסביר על אחת השיטות הפופולריות בקרב תלמידים והיא מדידה בעזרת גלי קול אולטראסוניים.
מבנה החיישן
החיישן מורכב מלוח מודפס אשר בצידו האחד יש שני גלילים כסופים. גליל אחד משמש כמשדר (רמקול) מסומן באות T , והשני משמש כמקלט (מיקרופון) מסומן באות R. בצידו האחורי של הלוח ישנם רכיבים שאחראים על שידור וקליטה. בחזית החיישן ישנם 4 פינים המשמשים לחיבור החיישן לבקר אשר מפעיל את המדידה וקורא את הערך המוחזר.
עקרון פעולת החיישן
החיישן מודד מרחק על ידי שידור גלי קול לעבר אובייקט מרוחק, המתנה להד המוחזר מהאובייקט, מדידת הזמן שעבר מרגע השידור ועד קליטת ההד וחישוב המרחק לפי משוואת התנועה במהירות קבועה.
החיישן משדר גלי קול בתדר אולטראסוני, שזה אומר תדר שהוא מעבר ליכולת השמיעה של אוזן אדם. גלי הקול מתקדמים באוויר ואם יש בדרכם עצם מסויים, הגלים מוחזרים חזרה בהתאם לזוית הפגיעה בעצם (אם הפגיעה היא בניצב לעצם אז הגלים יוחזרו באותו כיוון שהגיעו ממנו, אבל אם זוית הפגיעה איננה בניצב הגלים מוחזרים בזוית שווה לזוית הפגיעה אבל בכיוון הרחק מהחיישן).
ברגע שידור הגלים מופעל "סטופר" שמודד כמה זמה יקח עד שההד יחזור. הגלים המוחזרים לעבר החיישן מגיעים ופוגעים במיקרופון. בתוך המיקרופון יש גביש פיאזואלקטרי שמתרגם רעידות או כח שמופעל עליו למתח. ברגע שנמדד מתח על הגביש עוצרים את ה"סטופר" ומתקבלת קריאת הזמן שלקח לגלים לעבור מהחיישן את העצם ובחזרה. מדידה זו מייצגת את הזמן שלקח לגלים לעבור מרחק כפול מהמרחק או רצינו למדוד.
גלי הקול נעים באוויר במהירות הקול שהיא 343 מטר לשניה. מהירות זו היא קבועה, ולכן ניתן לחשב את המרחק מתוך הקשר שקובע שמרחק שווה למכפלת המהירות בזמן שלקח לעבור את המרחק. אם נביא את כל הגדלים לאותן יחידות מידה נראה שהקול עובר סנטימטר אחד בפרק זמן של 29.15 מיקרושניה, ונקבל את הקשר הבא המתאר את המרחק ביחידות של סנטימטר:
ניתן לתרגם מרחק זה ליחידות אורך שונות.
חשוב - לחיישן יש תחום מדידה יעיל של 30 מעלות לכיוון המדידה. עצמים הנמצאים מחוץ לתחום כיסוי זה או החזר של גלים ממישורים משופעים יכולים לגרום לטעויות במדידה ולכן כדאי לבצע מספר מדידות וממוצע.
נתוני יצרן של החיישן - HC-SR04
מתח עבודה - 5 וולט
זרם עבודה - 15 מיליאמפר
טווח מדידה - 2-400 ס"מ
דיוק - 0.3 ס"מ
זוית אפקטיבית - עד 15 מעלות מימין או משמאל לחזית החיישן
חיבור החיישן לבקר
לחיישן יש 4 פינים לחבר. כמו במרבים החיישנים יש לתת מקור מתח Vcc שמחובר ל-5 וולט, וחיבור לאדמה GND. ישנם עוד שני פינים המסומנים ב- TRIG ו- ECHO. פין TRIG אחראי על שליחת גלי הקול והפעלת הסטופר, ופין ECHO אחראי על קליטת ההד ועצירת הסטופר. הפינים הללו הם דיגיטלים.
מימוש המדידה בפועל
כדי לבצע את המדידה בעזרת החיישן יש ליזום את הפעולות הבאות לפי הסדר והמשכים המוגדרים כדי שהמידע שמתקבל יהיה מדוייק ככל הניתן. להלן השלבים ותאור גרפי של הפולסים:
-
שליחת פולס ההפעלה ברוחב 10 מיקרו שניות לחיישן (דופק מעורר)
-
החיישן שולח גל האולטרה סוני, כתוצאה מפולס ההפעלה, המורכב מ-8 מחזורים של גל מרובע בתדר של 40 קילו הרץ.
-
המתנה קצרה אחרי שידור 8 מחזורים לייצוב המערכת.
-
המערכת עוברת למצב של קליטה
-
מפעילים טיימר שיספור זמן עד שמגיע הד חוזר
-
אם לא נקלט הד אז מתח ההד החוזר הוא '1'. בקליטת הד חוזר המתח עובר ל '0' .
-
אם לא מגיע הד אז המעגל ימתין פרק זמן מקסימלי המתאים למרחק של 3 מטר .
תכנות הבקר למדידת מרחק
הגדרת משתנים - מגדירים שני משתנים שיאחסנו את הפינים אליהם מחובר החיישן, כמו כן מגדירים שני משתנים נוספים לאחסון הזמן הנמדד והמרחק המחושב.
הגדרת הפינים - בסטאפ יש להגדיר את פין TRIG כפלט ואת פין ECHO כקלט.
מדידה - יש לממש בתוך הLOOP את השלבים המפורטים לעיל כדי לקבל ערך זמן מהפונקציה pulseIn.
לפניכם דוגמא של תוכנית בסיסית:
כמו לכל הרכיבים גם כאן ניתן לצפות בסרטונים הבאים לקבלת הסבר נוסף.
שיפור תוצאות המדידה בעזרת החיישן
לחיישן אולטראסוני יש תחום מדידה אפקטיבי כמו שהוצג קודם: טווח 3-300 ס"מ ובגזרת זווית של 30 מעלות מול החיישן. לעיתים מתבצעת מדידה מחוץ לתחום והערך המתקבל חורג הרבה מעבר לתחום האפקטיבי. אם מערכת הבקרה תבסס החלטה על בסיס מדידה יחידה, נקבל החלטות שגויות בגלל קריאה לא טובה, וזה יכול להוביל לפעולה לא תקינה של המערכת כולל נזק למערכת ומשתמשים.
כדי להתגבר על בעיה זו ישנם כל מיני שיטות לנקות ולטייב את המדידה. בסרטון הבא אני מציג גישה פשוטה לטיוב המדידה. הרעיון הוא להתבסס על ממוצע של מספר קריאות, ולא על קריאה אחת, ולהתעלם ממדידות שהם מחוץ לתחום האפקטיבי.
ניתן לקבל את הקוד בקישור הבא : קוד דוגמא