פרסומת

חיישן מרחק Ultrasonic

 

במדריך זה נדגים כיצד לבנות מעגל פשוט שעושה שימוש בחיישן מרחק Ultrasonic.

מהו בכלל חיישן Ultrasonic?

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

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

בסרטון הבא ניתן לראות דוגמא לשימוש בחיישן המרחק הזה.

מרחק של 30 סנטימטר: מנורה אחת דולקת.

– 20 סנטימטר: שתי מנורות

– 10 סנטימטר: שלוש מנורות

שלב ראשון – רכיבים


אז מה צריך כדי לבנות חיישן מרחק פשוט?

  1. מעגל Arduino מהדגם הבסיסי. ניתן לקנות ב-Ebay.
  2. חיישן Ultrasonic HC-SR04, ניתן לקנות ב-DX
  3. שלושה לדים פשוטים
  4. ארבעה חוטי נחושת באורך 15 סנטימטר
  5. לוח אלקטרוני DIY, ניתן לקנות ב-DX

 

שלב שני – בניית המעגל


אחרי שרכשנו את כל הרכיבים, נתחיל בבניית המעגל.

  1. נחבר ללוח ה-Arduino את החיישן ביציאות 11-14. (כאשר יציאה מס 14 היא GND).
  2. לאחר מכן נחבר חוט בין יציאת ה-GND של המעגל אל חיבור ה-GND של הלוח האלקטרוני.
  3. נחבר חוטי נחושת בין יציאות 5-7 אל הלוח האלקטרוני (לצורך חיבור הלדים).
  4. נחבר את שלושת הלדים, הרגל הקצרה אל חיבור ה-GND והרגל הארוכה לכל אחת מיציאות 5-7

111

DSC_0263

שלב שלישי – תכנות המעגל


זה השלב היותר מעניין, קוד המקור מוצג בהמשך.

קצת הסבר עליו:

  • הגדרת היציאות: 5-7 ללדים ו11-13 לחיישן
  • בחלק ה-SETUP אנחנו מגדירים את הסטטוס של כל יציאה. את כל היציאות נגדיר כ-OUTPUT. פרט ל-ECHO שיקבל את המידע מהחיישן. בהתחלה אנחנו מגדירים את בקר ה-ARDUINO לתקשר בפורט 9600, דרך פורט זה נוכל לכתוב מידע שיוצג בחלונית CONSOL במחשב, כך נוכל לראות את הערך אותו החיישן קולט (בתמונה המצורפת).
  • חלק ה-LOOP הוא הלולאה הראשית של התוכנה שמתבצעת כל הזמן, אנחנו מריצים את הלולאה כל חצי שנייה (לכן יש בסופה DELAY של 500 MS). בכל ריצה של הלולאה אנחנו קולטים מחדש ערך מהחיישן, לאחר מכן מחשבים את המרחק מהעצם הקרוב ואז מבצעים פעולה בהתאם, מדליקים לד אחד שתיים או שלוש וכותבים מידע לחלון ה-Consol.

smm

[cce lang="java"]
#define trigPin 12
#define echoPin 13
#define vccPin 11

#define led1 7
#define led2 6
#define led3 5

void setup() {
Serial.begin (9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(vccPin, OUTPUT);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);

//ultrasonic vin
digitalWrite(vccPin,HIGH);
}

void loop() {
long duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);

delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration/2) / 29.1;

//turn on first led
if (distance < 30) { digitalWrite(led1,HIGH); } else { digitalWrite(led1,LOW); } //turn on second led if (distance < 20) { digitalWrite(led2,HIGH); } else { digitalWrite(led2,LOW); } //turn on third led if (distance < 10) { digitalWrite(led3,HIGH); } else { digitalWrite(led3,LOW); } //write distance to serial console if (distance >= 200 || distance <= 0) { Serial.println("Out of range"); } else { Serial.print(distance); Serial.println(" cm"); } delay(400); } [/cce]

5 תגובות למאמר חיישן מרחק Ultrasonic

  1. היי זה קצת לא קשור אנחנו עושים עבודת וחקר וצריכים לבנות דגם ולדגם אנחנו צריכים חיישן מרחק כזה שאפשר לשים חלק אחד במקום מסוים והחלק השני במקום אחר וברגע שמתרחקים הוא מסמן/מרעיש/נדלק משהו בסגנון… אנחנו די בבעיה ואם משהו יוכל לעזור לנו נשמח מאוד מאוד…

הגב למאמר זה

כתובת האימייל שלך לא תפורסם


*