דלגו לתוכן המרכזי
KitLab
שיעור קודם
חיישן אולטרסוני — time_pulse_us· 16 / 41
חיישן אולטרסוני — time_pulse_us
🎬

הסרטון בדרך אלינו

בינתיים — התמלול המלא של השיעור מחכה לכם למטה

חיישן אולטרסוני — time_pulse_us

מה בשיעור?

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

מה נלמד כאן

  • חיישן אולטרסוני
  • time_pulse_us ו-sleep_us
  • לחשב מרחק מזמן מעוף

איך עטלף רואה בחושך

חיישן אולטרסוני

עטלף צועק בתדר גבוה ומקשיב להד. מהפרש הזמן הוא מחשב מרחק. החיישן מחקה בדיוק את זה.


הידע שצריך

1. אולטרסאונד

גלי קול מעל 20,000Hz — מעל טווח השמיעה. אורך גל קצר, חדירות טובה וכיווניות מצוינת.

2. המודול

המודול

שני משדרי קרמיקה: אחד משדר, אחד מקבל.

פרמטר ערך
מתח 5V (לא 3.3V)
תדר 40kHz
זווית זיהוי 15°
טווח 2 עד 450 ס"מ

⚠️ זווית צרה — 15 מעלות. עצם שנמצא בצד פשוט לא קיים מבחינת החיישן.

3. הפרוטוקול

עקרון הפעולה

הפין התפקיד
Trig הדק — אומר למודול לשדר
Echo הד — פולס שאורכו = זמן המעוף

שלושה שלבים: פולס של 10µs ל-Trig → המודול משדר 8 פולסים ב-40kHz → Echo עולה לגובה לאורך זמן המעוף.

4. החישוב

מרחק = (זמן × מהירות הקול) ÷ 2

מהירות הקול: כ-340 מטר לשנייה = 0.034 ס"מ למיקרו-שנייה.

מחלקים בשתיים כי הקול עשה את הדרך הלוך וחזור.

5. time_pulse_us — הפקודה המרכזית

from machine import Pin, time_pulse_us

duration = time_pulse_us(echo, 1, 26000)

מודדת כמה זמן הפין נשאר במצב שצוין, במיקרו-שניות.

שלושת הפרמטרים: הפין, המצב שמחכים לו (1 = גבוה), ופסק זמן.

הפרמטר השלישי קריטי. 26,000 מיקרו-שניות = 26 מילי-שניות, שמתאים לכ-4.5 מטר. בלעדיו, אם אין הד — התוכנית תיתקע.

ו-time.sleep_us() נותנת השהיה במיקרו-שניות — צריך דיוק פי 1000 מ-sleep_ms.


הניסוי

המטרה: להציג מרחק ב-Shell בזמן אמת.

רשימת רכיבים

הרכיב כמות
לוח ESP32 1
לוח ניסוי 400 נקודות 1
חיישן אולטרסוני 1

התרשים החשמלי

התרשים החשמלי

החיבור

חיבור הרכיבים


הקוד

from machine import Pin, time_pulse_us
import time

trig = Pin(5, Pin.OUT)     # פלט — אנחנו מדברים
echo = Pin(16, Pin.IN)     # קלט — אנחנו מקשיבים

while True:
    # פולס ההדק
    trig.value(0)
    time.sleep_us(2)
    trig.value(1)
    time.sleep_us(10)
    trig.value(0)

    # מודדים את אורך פולס ההד
    duration = time_pulse_us(echo, 1, 26000)

    # ממירים זמן למרחק
    dist = (duration * 0.034) / 2
    print("distance:", dist, "cm")

    time.sleep(1)

זה החיישן הראשון שדורש גם פלט וגם קלט — מדברים אליו דרך Trig ומקשיבים דרך Echo.

מה אמור לקרות

מדידת מרחק


נסו בעצמכם

  • מדדו ספר (שטוח) וכרית (רכה). איזו מדידה יציבה יותר?
  • הזיזו את הספר לצדדים. מאיזו זווית החיישן מפסיק לראות? (זכרו: 15°)
  • הסירו את פסק הזמן מ-time_pulse_us וכוונו לחלל פתוח. מה קורה?
  • קרבו את היד ל-1 ס"מ. המספר אמין?
  • שלבו עם שיעור 8: זמזם שמצפצף מהר יותר ככל שמתקרבים.

🧰 הרכיבים לשיעור הזה

רוצים את חומרי הקורס והעדכונים?

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