מה נלמד כאן
- מבנה סרוו ולולאת משוב
- רוחב פולס וזווית
- ספרייה מקומית —
from libs.servo import Servo
דיוק

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

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

הסרוו מקבל אות בתדר קבוע של 50Hz, ורוחב הפולס קובע את הזווית:
| רוחב הפולס | הזווית |
|---|---|
| ~500µs | 0° |
| ~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).


