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

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

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

שער חניה חכם — היסטרזיס

מה בשיעור?

  • מערכת שער עם חיישן מרחק
  • למה סף אחד גורם לרעידה
  • היסטרזיס ואזור מת
  • הרכבה מלאה

מה נלמד כאן

  • שער חניה חכם
  • היסטרזיס — שני ספים במקום אחד

המחסום שנפתח לבד

שער חכם

בחניון, בשער בניין, בכניסה לחניה.


הידע שצריך

איך זה עובד

עקרון הפעולה

רכב מתקרב → הזרוע עולה ונורית נדלקת. מתרחק → יורדת.

הרעיון המרכזי: שני ספים

המערכת נפתחת מתחת ל-14 ס"מ — אבל נסגרת רק מעל 20. למה לא אותו מספר?

כי חיישן לא מדויק לחלוטין. רכב שעומד בדיוק על 14 ייתן מדידות של 13.8, 14.2, 13.9… והשער היה נפתח ונסגר בלי הפסקה.

   סגור  ──(מתחת ל-14)──>  פתוח
     ^                        |
     └────(מעל ל-20)──────────┘

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

הזכרנו את זה בשיעורים 21 ו-28 כתרגיל רשות. כאן זה חלק מהעיצוב.


ההרכבה

בלי ערכת הבנייה — דלגו לקוד.

שלבי ההרכבה:

שלב הרכבה 1

שלב הרכבה 2

שלב הרכבה 3

שלב הרכבה 4

שלב הרכבה 5

שלב הרכבה 6

שלב הרכבה 7

שלב הרכבה 8

שלב הרכבה 9

שלב הרכבה 10

שלב הרכבה 11

שלב הרכבה 12

שלב הרכבה 13

שלב הרכבה 14

שלב הרכבה 15

שלב הרכבה 16

שלב הרכבה 17

שלב הרכבה 18

שלב הרכבה 19

שלב הרכבה 20

שלב הרכבה 21

שלב הרכבה 22

שלב הרכבה 23

שלב הרכבה 24


הניסוי

המטרה: מתחת ל-14 ס"מ נפתח, מעל 20 נסגר.

רשימת רכיבים

הרכיב כמות
לוח ESP32 1
חיישן אולטרסוני 1
סרוו 1
נורית LED 1
נגד 220Ω 1

הקוד

from machine import Pin, time_pulse_us
import time
from libs.servo import Servo

servo = Servo()
servo.attach(5)

trig = Pin(16, Pin.OUT)
echo = Pin(17, Pin.IN)
led  = Pin(18, Pin.OUT)

angle = 90
flag = 0                       # 0 = סגור, 1 = פתוח
servo.write(angle)

def readDistance():
    trig.value(0); time.sleep_us(2)
    trig.value(1); time.sleep_us(10)
    trig.value(0)
    duration = time_pulse_us(echo, 1, 26000)
    if duration < 0:
        return -1
    return (duration * 0.034) / 2

while True:
    distance = readDistance()
    print(distance)

    # רכב התקרב והשער סגור
    if distance > 0 and distance <= 14 and flag == 0:
        led.value(1)
        for angle in range(90, -1, -1):
            servo.write(angle)
            time.sleep(0.005)
        flag = 1

    # הרכב התרחק והשער פתוח
    elif distance > 20 and flag == 1:
        led.value(0)
        for angle in range(0, 91):
            servo.write(angle)
            time.sleep(0.005)
        flag = 0

    time.sleep(0.5)

שימו לב לשני המספרים השונים: <= 14 לפתיחה, > 20 לסגירה. זה ההיסטרזיס, וזה כל ההבדל בין שער שעובד לשער שמרעיד.

ובין 14 ל-20 יש "אזור מת" שבו שום דבר לא קורה.


נסו בעצמכם

  • שנו את שני הספים ל-14 ו-14 והחזיקו יד שם. עכשיו ראיתם למה צריך היסטרזיס.
  • הרחיבו ל-10 ו-30. מה השתנה?
  • הוסיפו זמזם בזמן פתיחה.
  • הוסיפו טיימר בטיחות: פתוח יותר מ-10 שניות → סגירה בכפייה.
  • שלבו עם שיעור 24: ספרו כמה רכבים עברו.

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

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

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