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

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

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

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

מה בשיעור?

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

מה נלמד כאן

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

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

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

שער חכם


הידע שצריך

איך זה עובד

עקרון הפעולה

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

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

וכאן הפרט שהופך את הפרויקט הזה למעניין.

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

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

פער בין שני הספים פותר את זה:

   סגור  ──(מתחת ל-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

שלב הרכבה 25

שלב הרכבה 26

שלב הרכבה 27

שלב הרכבה 28

שלב הרכבה 29


הניסוי

המטרה: מתחת ל-14 ס"מ השער נפתח; מעל 20 ס"מ הוא נסגר.

רשימת רכיבים

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

הקוד

#include <ESP32Servo.h>

#define TRIG_PIN  5
#define ECHO_PIN  16
#define SERVO_PIN 17
#define LED_PIN   18

Servo servo;
int angle = 90;
int flag  = 0;              // 0 = סגור, 1 = פתוח

void setup() {
  Serial.begin(115200);
  pinMode(TRIG_PIN, OUTPUT);
  pinMode(ECHO_PIN, INPUT);
  pinMode(LED_PIN, OUTPUT);
  servo.attach(SERVO_PIN);
  servo.write(angle);                  // מצב סגור
}

void loop() {
  long distance = readDistance();
  Serial.println(distance);

  // רכב התקרב והשער סגור → פותחים
  if (distance > 0 && distance <= 14 && flag == 0) {
    digitalWrite(LED_PIN, HIGH);
    for (angle = 90; angle > 0; angle--) {
      servo.write(angle);
      delay(5);
    }
    flag = 1;
  }
  // הרכב התרחק והשער פתוח → סוגרים
  else if (distance > 20 && flag == 1) {
    digitalWrite(LED_PIN, LOW);
    for (angle = 0; angle < 90; angle++) {
      servo.write(angle);
      delay(5);
    }
    flag = 0;
  }

  delay(500);
}

float readDistance() {
  digitalWrite(TRIG_PIN, LOW);  delayMicroseconds(2);
  digitalWrite(TRIG_PIN, HIGH); delayMicroseconds(10);
  digitalWrite(TRIG_PIN, LOW);
  long duration = pulseIn(ECHO_PIN, HIGH);
  return (duration * 0.0343) / 2;
}

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

ובין 14 ל-20 יש "אזור מת" שבו שום דבר לא קורה — המערכת פשוט נשארת במצב שהיא כבר בו.


נסו בעצמכם

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

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

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

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