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

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

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

מנוע סרוו וספריות מקומיות

מה בשיעור?

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

מה נלמד כאן

  • מבנה סרוו ולולאת משוב
  • רוחב פולס וזווית
  • ספרייה מקומיתfrom libs.servo import Servo

דיוק

מנוע סרוו

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


הידע שצריך

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

המבנה הפנימי

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

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

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

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

אות הבקרה

הסרוו מקבל אות בתדר קבוע של 50Hz, ורוחב הפולס קובע את הזווית:

רוחב הפולס הזווית
~500µs
~1500µs 90°
~2400µs 180°

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

3. ספרייה מקומית

from libs.servo import Servo

servo_5 = Servo()
servo_5.attach(5)
servo_5.write(angle)

from libs.servo import Servo — זו הספרייה שהעליתם ללוח בשיעור ההתקנה.

וזה הבדל חשוב מ-Arduino: שם הספריות מותקנות ב-IDE שעל המחשב. ב-MicroPython הספרייה היא קובץ שיושב על הלוח עצמו — אפשר לפתוח אותה, לקרוא אותה ואפילו לערוך אותה.

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


הניסוי

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

רשימת רכיבים

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

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

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

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

החיבור

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


הקוד

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

servo_5 = Servo()
servo_5.attach(5)

while True:
    for angle in range(0, 181):
        servo_5.write(angle)
        time.sleep(0.01)

    for angle in range(180, -1, -1):
        servo_5.write(angle)
        time.sleep(0.01)

למה sleep(0.01)? הסרוו זקוק לזמן פיזי לזוז. בלי ההשהיה התוכנית תזרוק 180 פקודות במילי-שניות והוא יקפוץ ישר לסוף.

מה אמור לקרות

הסרוו נע


נסו בעצמכם

  • הוסיפו servo_5.write(90) ובדקו שהזרוע באמצע.
  • שנו ל-sleep(0.05). מה קורה למהירות?
  • שלבו עם שיעור 7: הפוטנציומטר שולט בזווית. תצטרכו למפות 0-4095 ל-0-180.
  • החזיקו את הזרוע ונסו להזיז בעדינות. מרגישים את התיקון?
  • ב-Shell: צרו את האובייקט והקלידו servo_5.write(45).

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

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

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