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

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

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

מנוע סרוו — זווית מדויקת

מה בשיעור?

  • המבנה הפנימי של הסרוו
  • הפוטנציומטר שמודד את הזווית — לולאת משוב
  • רוחב פולס וזווית: 500 עד 2400 מיקרו-שניות
  • ספריות ו-#include
  • אובייקטים וקריאה עם נקודה

מה נלמד כאן

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

דיוק

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

מנוע סרוו

בשיעור הקודם המנוע ידע להסתובב — אבל לא ידע לאן. הסרוו יודע.


הידע שצריך

1. מה יש בתוך סרוו

סרוו הוא מנוע שיודע להסתובב לזווית מדויקת ולהישאר שם. בתוכו:

המבנה הפנימי של הסרוו

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

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

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

2. איך רוחב פולס הופך לזווית

אות הבקרה של הסרוו

הסרוו מקבל אות PWM בתדר קבוע של 50Hz — מחזור כל 20 מילי-שניות. ומה שקובע את הזווית הוא רוחב הפולס בתוך כל מחזור:

רוחב הפולס הזווית
~500 מיקרו-שניות
~1500 מיקרו-שניות 90°
~2400 מיקרו-שניות 180°

פולס ארוך יותר = זווית גדולה יותר. זה כל הפרוטוקול.

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

3. ספריות

לחשב פולסים של מיקרו-שניות ידנית זה מיותר — מישהו כבר כתב את זה. ספרייה היא אוסף קוד מוכן שמישהו כתב ואפשר להשתמש בו.

בתחילת התוכנית כותבים:

#include <ESP32Servo.h>

וזו הספרייה שהתקנתם בשיעור ההתקנה. #include אומר: "תכניס לכאן את הקוד של הקובץ הזה".


הניסוי

המטרה: הסרוו מסתובב הלוך ושוב בין 0° ל-180°.

רשימת רכיבים

הרכיב כמות
לוח ESP32 1
לוח ניסוי 400 נקודות 1
סרוו SG90 1

שלושת החוטים של הסרוו: חום/שחור ל-GND, אדום ל-5V, כתום/צהוב ל-פין האות.

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

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

החיבור

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


הקוד

#include <ESP32Servo.h>

Servo myServo;
#define servoPin 5

void setup() {
  // מקשרים את הסרוו לפין, עם טווח פולס 500-2400 מיקרו-שניות
  myServo.attach(servoPin, 500, 2400);
  myServo.write(0);        // מתחילים ב-0 מעלות
  delay(500);              // רגע להתייצבות
}

void loop() {
  // מ-0 ל-180
  for (int angle = 0; angle <= 180; angle++) {
    myServo.write(angle);
    delay(15);             // נותן לסרוו זמן להגיע
  }

  // מ-180 חזרה ל-0
  for (int angle = 180; angle >= 0; angle--) {
    myServo.write(angle);
    delay(15);
  }
}

למה delay(15)? הסרוו זקוק לזמן פיזי כדי לזוז. בלי ההשהיה התוכנית תזרוק לו 180 פקודות במילי-שניות בודדות, והוא יקפוץ ישר לסוף במקום לזוז חלק.

מה אמור לקרות

הסרוו מסתובב

הזרוע נעה הלוך ושוב, חלק ואיטי.


הפקודות שלמדנו

הפקודה מה היא עושה
#include <ESP32Servo.h> מייבאת את הספרייה
Servo myServo; יוצרת אובייקט סרוו
myServo.attach(pin, min, max) מקשרת אותו לפין ומגדירה טווח
myServo.write(angle) מסובבת לזווית (0-180)

זו הפעם הראשונה שאתם משתמשים באובייקט. myServo הוא לא משתנה רגיל — הוא "דבר" עם פעולות משלו, שקוראים להן עם נקודה: myServo.write(90). תראו את התבנית הזו בכל ספרייה שתשתמשו בה מכאן והלאה.


נסו בעצמכם

  • הוסיפו myServo.write(90) ובדקו שהזרוע באמצע בדיוק.
  • שנו את ה-delay ל-3 ואז ל-50. מה קורה למהירות ולחלקות?
  • שלבו עם שיעור 7: הפוטנציומטר שולט בזווית הסרוו. (רמז: map(potValue, 0, 4095, 0, 180))
  • החזיקו את הזרוע ביד ונסו להזיז אותה בעדינות בזמן שהיא עומדת. מרגישים איך היא מתנגדת ומתקנת?
  • נסו myServo.write(200). מה קורה, ולמה?

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

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

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