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

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

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

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

מה בשיעור?

  • להסביר מה ההבדל בין מנוע רגיל למנוע סרוו
  • לזהות את שלושת החוטים של הסרוו ולחבר אותם נכון
  • להבין איך אורך הפולס קובע את הזווית
  • להשתמש בבלוק servo angle ולשנות את הפין ואת הזווית
  • לבנות תנועה חוזרת עם משתנה ועם repeat until
  • לשלוט במהירות התנועה דרך בלוק ההמתנה

מה נלמד כאן

  • מה זה מנוע סרוו ולמה הוא לא מנוע רגיל
  • מה יש בתוך הסרוו ואיך הוא יודע איפה הוא נמצא
  • איך שולחים לו זווית מדויקת מהלוח
  • הבלוק servo [5] angle (90) — כל מה שהוא יודע לעשות
  • לבנות תנועה חוזרת של 0° עד 180° ובחזרה

דברים שזזים בדיוק

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

זרוע רובוטית מרימה קופסה במחסן ליד מלגזה ועובד

לכל הדברים האלה יש משהו משותף: הם לא צריכים מהירות, הם צריכים דיוק. מנוע רגיל יודע רק להסתובב — מהר, לאט, קדימה, אחורה. הוא לא יודע להגיד לעצמו "עצור עכשיו, בדיוק ב-45 מעלות".

בשביל זה קיים מנוע סרוו (Servo). סרוו הוא מנוע שאתם לא אומרים לו "תסתובב", אלא "עמוד בזווית הזאת". אתם נותנים לו מספר בין 0 ל-180, והוא זז לשם ונשאר שם. בשיעור הזה נבנה סרוו שמניף את הזרוע שלו הלוך ושוב, כמו מטאטא של שמשה קדמית.


הרכיבים

מנוע הסרוו

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

מנוע סרוו כחול מבחוץ ומבפנים, עם מנוע, גלגלי שיניים, פוטנציומטר ולוח בקרה

  • מנוע חשמלי קטן (DC Motor) — הוא זה שבאמת מסובב. לבדו הוא מהיר וחלש.
  • גלגלי שיניים (Gear Train) — מקטינים את המהירות ומגדילים את הכוח. בגלל זה סרוו קטנטן מסוגל להרים דלת קרטון.
  • פוטנציומטר — זה החלק הכי חכם. הוא מחובר לציר ומודד כל הזמן באיזו זווית הזרוע נמצאת עכשיו.
  • לוח בקרה (Control Unit) — משווה בין הזווית שביקשתם לבין הזווית שהפוטנציומטר מדד, ומפעיל את המנוע עד שהשתיים שוות.

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

שלושת החוטים

לסרוו יש שלושה חוטים, ולכל אחד תפקיד אחר:

צבע החוט מה זה לאן מחברים
חום או שחור מינוס GND
אדום פלוס 5V
כתום או צהוב אות (SIG) פין IO

⚠️ שימו לב לסדר. אם תחליפו בין החוט האדום לחום, הסרוו יתחמם ועלול להישרף. תבדקו פעמיים לפני שמחברים חשמל.

איך שולחים לו זווית

עכשיו החלק המעניין. איך אפשר להעביר "מספר מעלות" דרך חוט אחד?

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

שלושה פולסים באורך 1ms, 1.5ms ו-2ms והזוויות שהם יוצרים בסרוו: 0, 90 ו-180 מעלות

  • פולס של 1 אלפית שנייה → הסרוו עומד על
  • פולס של 1.5 אלפיות90°
  • פולס של 2 אלפיות180°

פולס ארוך יותר = זווית גדולה יותר. השיטה הזאת נקראת PWM, והיא בדיוק אותה שיטה שהשתמשנו בה כדי לעמעם נורית — רק שהפעם התוצאה היא תנועה ולא בהירות.

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


הבלוק שמזיז את הסרוו

זה הבלוק היחיד שצריך בשביל סרוו. הוא נמצא בקטגוריה Robots והוא כחול:

הבלוק הכחול servo עם תיבת בחירה של פין 5 ותיבת מספר עם הזווית 90

servo [5] angle (90)

יש בו שני מקומות לשנות:

  1. התיבה עם החץ הקטן — [5] — זה הפין שאליו חיברתם את חוט האות. לוחצים על החץ ונפתחת רשימה של כל הפינים. אם תחברו את הסרוו ל-IO18 ותשאירו כאן 5 — הסרוו פשוט לא יזוז.
  2. העיגול הלבן — (90) — הזווית. מספר בין 0 ל-180. אפשר להקליד מספר, ואפשר לגרור לתוכו משתנה (זה בדיוק מה שנעשה בתוכנית).

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

מה שחשוב להבין: הבלוק לא אומר "תסתובב מעלה אחת". הוא אומר "לך לזווית הזאת". אם הסרוו כבר שם — הוא לא יזוז בכלל.


החיבור

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

הנה תרשים החשמל. הוא מראה בדיוק מה הולך לאן:

תרשים חשמלי של הסרוו: מינוס ל-GND, פלוס ל-5V ואות SIG לפין IO05

  • החוט החום (−) → אחד מחיבורי GND בלוח
  • החוט האדום (+) → חיבור 5V
  • החוט הכתום (SIG) → פין IO5

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

חיבור הסרוו לשלושה פינים על לוח ה-ESP32 עם חוטים בחום, אדום וכתום

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


הבלוקים

עכשיו נבנה תנועה שחוזרת על עצמה בלי סוף. הנה התוכנית המלאה:

תוכנית הבלוקים המלאה: משתנה Angle, שני בלוקי repeat until בתוך forever, שמעלים ומורידים את הזווית

נפרק אותה שורה שורה.

start the program — הכובע הצהוב בראש. כל מה שתלוי מתחתיו רץ כשהלוח נדלק.

set [Angle] to (0) — כאן נולד משתנה בשם Angle. משתנה הוא כמו קופסה עם שם שאפשר לשים בה מספר ולהחליף אותו מתי שרוצים. בהתחלה שמים בקופסה 0.

servo [5] angle (Angle) — שימו לב: בעיגול לא כתוב מספר, אלא גוררנו לתוכו את המשתנה Angle. עכשיו הסרוו הולך לזווית שרשומה בקופסה. הרגע הזה מזיז אותו ל-0° — לנקודת ההתחלה.

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

בתוך forever יש שני חלקים שנראים כמעט אותו דבר:

חלק ראשון — הדרך החוצה

repeat until <Angle = 180> — בלוק שחוזר על עצמו עד שהתנאי נכון. התנאי יושב במגרעת המחודדת שבראש הבלוק — החור בעל הפינות החדות, שרק בלוקים ירוקים בצורת מעוין נכנסים אליו. התנאי אומר: תמשיך עד ש-Angle יגיע ל-180.

בפנים יש שלוש פקודות:

  1. servo [5] angle (Angle) — הזז את הסרוו לזווית שבקופסה
  2. change [Angle] by (1) — הוסף 1 למספר שבקופסה
  3. wait (0.015) seconds — חכה 15 אלפיות שנייה

הלולאה הזאת רצה 180 פעמים: 0, 1, 2, 3... עד 180. כל צעד הוא מעלה אחת, וביניהם הפסקה קטנטנה. בגלל שהצעדים כל כך קטנים והם רצים מהר — העין רואה תנועה חלקה אחת, לא 180 קפיצות.

חלק שני — הדרך חזרה

repeat until <Angle = 0> — אותו רעיון, בדיוק הפוך. הפעם change [Angle] by (-1) מוריד 1 בכל סיבוב, והלולאה נעצרת כשהקופסה מגיעה ל-0.

וזהו. בלוק ה-forever מחזיר אותנו להתחלה, והסרוו מניף את עצמו הלוך ושוב בלי הפסקה.


מריצים

⬇ להורדת הקובץ Servo.sb3 — גוררים אותו לתוך ACECode ולוחצים Upload.

ההסבר המלא על צריבה נמצא בשיעור ההתקנה.

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

הסרוו מחובר ללוח ESP32 עם כבל חשמל, מוכן לעבודה

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

אם כלום לא קורה: בדקו את הפין. הבלוק אומר 5 — החוט הכתום באמת ב-IO5?


מה קרה כאן

בלוק אחד עשה את כל העבודה:

הבלוק servo עם פין 5 וזווית 90

servo [5] angle (Angle) — הוא מתרגם מספר לפולס, הפולס מגיע ללוח הבקרה שבתוך הסרוו, לוח הבקרה משווה אותו למה שהפוטנציומטר מודד, והמנוע זז עד שהשניים מסתדרים.

והתנועה החלקה? היא לא באמת חלקה. היא 180 קפיצות קטנות של מעלה אחת, עם 15 אלפיות שנייה ביניהן. הרעיון הזה — לפרק תנועה גדולה להרבה צעדים זעירים — יחזור שוב ושוב בהמשך הקורס.


תרגילים

1. חצי דרך. שנו את המספר ב-repeat until <Angle = 180> ל-90. עכשיו הזרוע תנוע רק בין 0 ל-90 מעלות. תנועה קטנה יותר, אבל היא לוקחת חצי מהזמן.

2. מהר ולאט. שנו את שני בלוקי wait (0.015) seconds ל-0.05. מה קרה? עכשיו נסו 0.002. wait הוא בלם המהירות של כל תנועה שתבנו.

3. ברכה ידנית. מחקו את בלוקי ה-repeat until, והשאירו בתוך ה-forever רק ארבעה בלוקים: servo [5] angle (0), wait (1) seconds, servo [5] angle (180), wait (1) seconds. עכשיו הזרוע קופצת בין שני הקצוות במקום לזחול. תשוו בין שתי התוצאות — אותה זווית, הרגשה אחרת לגמרי.

4. אתגר. העבירו את חוט האות ל-IO18, ושנו את שני בלוקי ה-servo בתוכנית מ-[5] ל-[18]. אל תשכחו — שניהם. אם תשנו רק אחד, הסרוו יזוז בחלק אחד של התנועה ויתקע בשני.

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

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

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