מנועי סרוו מהווים אבן יסוד בתחום הרובוטיקה, האוטומציה והאלקטרוניקה, ומאפשרים שליטה מדויקת על מיקום זוויתי. בין מגוון מנועי הסרוו הקיימים, ה-SG90 בולט כאחד הפתרונות הפופולריים והנגישים ביותר עבור פרויקטים מבוססי ארדואינו. קלות השימוש, מחירו הנמוך וגודלו הקומפקטי הפכו אותו לבחירה מועדפת על מפתחים, סטודנטים וחובבים המעוניינים לבצע תנועה מדויקת בפרויקטים שלהם.
מאמר זה נועד לספק הבנה מעמיקה של מנוע סרוו SG90, החל מהעקרונות התיאורטיים שמאחורי פעולתו, דרך מדריך מפורט לחיבורו לארדואינו, וכלה בקוד לדוגמה והסברים נרחבים שיאפשרו לכל אחד להפעיל ולשלוט בו ביעילות. המטרה היא לצייד את הקורא בידע ובכלים הנדרשים כדי לשלב את מנוע ה-SG90 במגוון רחב של יישומים, מפרויקטים פשוטים ועד למערכות מורכבות יותר.
הבנת העקרונות מאחורי מנוע סרוו SG90
טרם הצלילה לפרטי החיבור והתכנות, חשוב להבין את העקרונות הבסיסיים המנחים את פעולתו של מנוע סרוו, ובפרט את מאפייניו הייחודיים של ה-SG90.
מהו מנוע סרוו וכיצד הוא פועל?
מנוע סרוו הוא מפעיל סיבובי (Rotary Actuator) המאפשר שליטה מדויקת על מיקום זוויתי, מהירות ותאוצה. בניגוד למנועי DC רגילים המסתובבים באופן חופשי כל עוד מקבלים מתח, מנוע סרוו מתוכנן לשמור על מיקום ספציפי שנבחר על ידי המשתמש. הוא עושה זאת באמצעות מערכת משוב (Feedback System) הכוללת בדרך כלל פוטנציומטר פנימי המודד את מיקום הציר.
המבנה הפנימי של מנוע סרוו טיפוסי, ובכלל זה ה-SG90, כולל:
- מנוע DC קטן: מקור הכוח לתנועה.
- מערכת גלגלי שיניים (Gear Train): מפחיתה את המהירות ומגבירה את המומנט (torque) של המנוע הקטן, מה שמאפשר שליטה מדויקת יותר על מיקום הציר ומספק כוח מספק להזזת עומסים קטנים.
- פוטנציומטר: רכיב משוב המחובר לציר היציאה ומודד את מיקומו הזוויתי הנוכחי.
- מעגל בקרה אלקטרוני: מקבל את אות הבקרה החיצוני (בדרך כלל אות PWM), משווה אותו למיקום הנמדד על ידי הפוטנציומטר, ומפעיל את מנוע ה-DC בכיוון הנכון עד שהציר מגיע למיקום הרצוי.
השליטה במנוע סרוו מתבצעת באמצעות אות Pulse Width Modulation (PWM). אות זה הוא רצף של פולסים (Pulse) בעלי רוחב משתנה. רוחב הפולס הוא זה שקובע את המיקום הזוויתי של הסרוו. לדוגמה, פולס ברוחב 1 מילישנייה (ms) עשוי להורות לסרוו לנוע לזווית 0 מעלות, בעוד שפולס ברוחב 2 מילישניות עשוי להזיז אותו ל-180 מעלות. רוחבי פולס בין 1 ל-2 מילישניות ימקמו את הסרוו בזוויות ביניים. מחזוריות אות ה-PWM עבור מנועי סרוו היא בדרך כלל 50 הרץ, כלומר פולס נשלח כל 20 מילישניות.
מאפייני ה-SG90: למה הוא בחירה פופולרית?
מנוע ה-SG90 הוא סרוו מיניאטורי הנפוץ מאוד בפרויקטי ארדואינו בזכות מספר יתרונות בולטים:
- גודל ומשקל: עם מידות של כ-23x12.2x29 מ"מ ומשקל של כ-9 גרם (ומכאן השם SG90, כאשר "90" מתייחס למשקל של 9 גרם), הוא קומפקטי וקל, מה שהופך אותו לאידיאלי עבור פרויקטים קטנים וקלים כמו רובוטים זעירים, מנגנוני נעילה קטנים או מנגנוני הטיה/סיבוב של חיישנים ומצלמות.
- עלות: מחירו הנמוך במיוחד הופך אותו לנגיש לכל כיס, ומאפשר שימוש במספר סרווים בפרויקט אחד ללא עלויות גבוהות.
- מתח הפעלה: פועל בטווח מתחים של 4.8V עד 6V, מה שהופך אותו לתואם ישירות למתח היציאה של לוחות ארדואינו (5V).
- מומנט (Torque): מספק מומנט של כ-1.8 ק"ג/ס"מ ב-4.8V. נתון זה מציין את הכוח שהסרוו יכול להפעיל במרחק של סנטימטר אחד מציר הסיבוב. לדוגמה, הוא יכול להרים משקל של 1.8 ק"ג המרוחק סנטימטר אחד מציר הסיבוב שלו. מומנט זה מתאים למשימות קלות עד בינוניות.
- זווית סיבוב: בדרך כלל מספק טווח סיבוב של 0 עד 180 מעלות. ישנם דגמים מסוימים המציעים טווחים שונים, אך 180 מעלות הוא הסטנדרט.
- חיבור פשוט: מגיע עם שלושה חוטים צבעוניים לחיבור קל וברור.
השילוב של גורמים אלו הופך את ה-SG90 לבחירה מצוינת עבור מי שרוצה להתנסות בבקרת תנועה מדויקת עם ארדואינו.
חיבור מנוע סרוו SG90 לארדואינו: מדריך שלב אחר שלב
חיבור מנוע סרוו SG90 ללוח ארדואינו הוא תהליך פשוט יחסית, אך דורש תשומת לב לפרטי החיבור הנכונים על מנת להבטיח פעולה תקינה ולמנוע נזק.
רכיבים נדרשים
לצורך חיבור ה-SG90 לארדואינו, תזדקקו לרכיבים הבאים:
- לוח ארדואינו: מכל סוג (Arduino Uno, Nano, Mega וכו').
- מנוע סרוו SG90: יחידה אחת לפחות.
- חוטי גישור (Jumper Wires): מומלץ מסוג זכר-נקבה לחיבור נוח לפיני הסרוו ולוח הארדואינו.
- לוח ניסוי (Breadboard): מומלץ, אך לא חובה, לייצוב החיבורים.
- ספק כוח חיצוני (אופציונלי): אם אתם מתכוונים להפעיל מספר מנועי סרוו או סרווים חזקים יותר, מומלץ להשתמש בספק כוח חיצוני נפרד למנועים כדי למנוע עומס יתר על לוח הארדואינו. עבור SG90 בודד, בדרך כלל אין צורך.
תרשים חיבורים
למנוע ה-SG90 שלושה חוטים היוצאים ממנו, כל אחד בצבע שונה ובעל תפקיד ספציפי:
- חוט אדום (VCC): זהו חוט מתח הכוח. יש לחברו לפין ה-5V בלוח הארדואינו.
- חוט חום / שחור (GND): זהו חוט הארקה (Ground). יש לחברו לפין ה-GND בלוח הארדואינו.
- חוט כתום / צהוב (Signal): זהו חוט האות. יש לחברו לפין דיגיטלי בלוח הארדואינו התומך באות PWM. פינים אלו מסומנים בדרך כלל בסימן טילדה (~) או פשוט מצוינים כפיני PWM בתיעוד הלוח (לדוגמה, ב-Arduino Uno, פינים 3, 5, 6, 9, 10, 11 תומכים ב-PWM). מומלץ להשתמש בפין 9, 10 או 11, מכיוון שהם נפוצים לדוגמאות קוד.
שלבי החיבור:
- חבר את החוט האדום של ה-SG90 לפין ה-5V בלוח הארדואינו.
- חבר את החוט החום/שחור של ה-SG90 לפין ה-GND בלוח הארדואינו.
- חבר את החוט הכתום/צהוב של ה-SG90 לפין דיגיטלי התומך ב-PWM בארדואינו, לדוגמה פין 9.
הערה חשובה לגבי אספקת כוח: בעוד ש-SG90 בודד יכול לפעול ישירות מפין ה-5V של הארדואינו ללא בעיות ברוב המקרים, חשוב לזכור כי מנועים צורכים זרם משמעותי יותר בעת תנועה או תחת עומס. SG90 יכול לצרוך כ-10mA במצב סרק, אך עד 100-200mA בפעולה ואף 700mA במצב עומס יתר (Stalled). אם אתם מחברים מספר סרווים או סרוו גדול יותר, אספקת הכוח מהארדואינו עלולה להיות לא מספקת ולגרום להתנהגות בלתי צפויה, איפוס הלוח, או אף נזק. במקרים כאלו, יש לחבר את הסרווים לספק כוח חיצוני משלהם, תוך הקפדה על חיבור ה-GGND המשותף (Common Ground) בין הסרווים, ספק הכוח והארדואינו.
תכנות מנוע סרוו ארדואינו: קוד לדוגמה והסבר מעמיק
לאחר חיבור פיזי של מנוע הסרוו, השלב הבא הוא לכתוב את קוד הארדואינו שיורה לו לנוע למיקומים הרצויים. לשמחתנו, סביבת הפיתוח של ארדואינו כוללת ספרייה ייעודית המפשטת מאוד את תהליך תכנות מנוע סרוו ארדואינו.
ספריית Servo.h בארדואינו
הספרייה Servo.h היא ספרייה מובנית בסביבת הפיתוח של ארדואינו (Arduino IDE) שנועדה לפשט את השליטה במנועי סרוו. היא מטפלת ביצירת אותות ה-PWM הדרושים, ומאפשרת למתכנת לשלוט בסרוו באמצעות פקודות פשוטות המגדירות את זווית הסיבוב הרצויה (בדרך כלל בין 0 ל-180 מעלות).
כדי להשתמש בספרייה, יש לכלול אותה בתחילת הקוד באמצעות הפקודה #include <Servo.h>.
קוד בסיסי להנעת מנוע SG90
להלן קוד לדוגמה המדגים כיצד להזיז מנוע סרוו SG90 מ-0 ל-180 מעלות ובחזרה:
#include <Servo.h> // כלול את ספריית הסרוו
Servo myServo; // יצירת אובייקט סרוו בשם myServo
int servoPin = 9; // הגדרת הפין הדיגיטלי אליו מחובר חוט האות של הסרוו
int currentAngle = 0; // משתנה לשמירת הזווית הנוכחית של הסרוו
void setup() {
myServo.attach(servoPin); // חיבור אובייקט הסרוו לפין שהוגדר
Serial.begin(9600); // אתחול תקשורת טורית לצורך הדפסת הודעות (אופציונלי)
Serial.println("Servo SG90 Test Started!");
}
void loop() {
// תנועה מ-0 ל-180 מעלות
for (currentAngle = 0; currentAngle <= 180; currentAngle += 1) {
myServo.write(currentAngle); // הגדרת זווית הסרוו
Serial.print("Moving to angle: ");
Serial.println(currentAngle);
delay(15); // השהייה קצרה כדי לאפשר לסרוו לנוע וליצור תנועה חלקה
}
delay(1000); // השהייה של שנייה אחת ב-180 מעלות
// תנועה מ-180 ל-0 מעלות
for (currentAngle = 180; currentAngle >= 0; currentAngle -= 1) {
myServo.write(currentAngle); // הגדרת זווית הסרוו
Serial.print("Moving to angle: ");
Serial.println(currentAngle);
delay(15); // השהייה קצרה כדי לאפשר לסרוו לנוע וליצור תנועה חלקה
}
delay(1000); // השהייה של שנייה אחת ב-0 מעלות
}
הסבר מפורט על קוד מנוע סרוו ארדואינו זה:
#include <Servo.h>: שורה זו מורה למהדר לכלול את קוד ספריית ה-Servoבפרויקט שלנו. בלעדיה, פונקציות השליטה בסרוו לא יהיו זמינות.Servo myServo;: כאן אנו יוצרים מופע (instance) של אובייקט מהספרייהServo. "myServo" הוא השם שנתנו לאובייקט הסרוו הספציפי שלנו. אם נרצה לשלוט במספר סרווים, ניצור אובייקט נפרד עבור כל אחד (לדוגמה:Servo servo1; Servo servo2;).int servoPin = 9;: הגדרת משתנה המציין את מספר הפין הדיגיטלי אליו מחובר חוט האות של ה-SG90. במקרה זה, פין 9.myServo.attach(servoPin);: בפונקצייתsetup(), שורה זו מקשרת את אובייקט הסרוו שלנו (myServo) לפין הפיזי שהוגדר (servoPin). זהו שלב הכרחי לפני שניתן להתחיל לשלוט בסרוו.myServo.write(currentAngle);: זוהי הפקודה העיקרית לשליטה בסרוו. היא מקבלת ערך מספרי (במעלות) בין 0 ל-180, ומורה לסרוו לנוע למיקום הזוויתי המתאים. הספרייהServo.hממירה את ערך הזווית לאות PWM המתאים ושולחת אותו לפין הסרוו.delay(15);: פקודת ההשהייה גורמת ללוח הארדואינו להמתין למשך מספר מילישניות נתון. במקרה זה, השהייה קצרה בין שינויי זווית קטנים (currentAngle += 1אוcurrentAngle -= 1) יוצרת תנועה חלקה ואסתטית של הסרוו. ללא השהייה, הסרוו ינסה לקפוץ בין זוויות במהירות מירבית, מה שעלול להיראות קטוע ואף לגרום לרעידות.
הבנת הפרמטרים: זווית ומהירות
הפונקציה myServo.write(angle) מאפשרת לנו להגדיר את המיקום הזוויתי של הסרוו בטווח של 0 עד 180 מעלות. יש לזכור כי טווח זה הוא סטנדרטי עבור רוב מנועי הסרוו הקטנים, אך ייתכנו סרווים בעלי טווח שונה. ה-SG90 בדרך כלל תומך בטווח המלא.
ה"מהירות" שבה הסרוו נע אינה נשלטת ישירות על ידי פקודה אחת בספריית Servo.h. במקום זאת, היא מושפעת משני גורמים עיקריים:
- קצב שינוי הזווית: עד כמה מהר אנו משנים את הערך בתוך הלולאה. בקוד לדוגמה, אנו משנים את הזווית במעלה אחת בכל פעם (
currentAngle += 1). - זמן ההשהייה (
delay()): משך הזמן שאנו ממתינים בין כל שינוי זווית. ככל שה-delayקצר יותר, כך הסרוו ינוע מהר יותר. ככל שה-delayארוך יותר, כך התנועה תהיה איטית וחלקה יותר.
עבור שליטה עדינה יותר (בדרך כלל במקרים מתקדמים), קיימת גם הפונקציה myServo.writeMicroseconds(us). פונקציה זו מאפשרת להגדיר את רוחב הפולס במיקרושניות ישירות (לדוגמה, 1000 מיקרושניות ל-0 מעלות, 1500 מיקרושניות ל-90 מעלות, ו-2000 מיקרושניות ל-180 מעלות). שימוש ב-writeMicroseconds יכול להיות שימושי כאשר רוצים שליטה מדויקת יותר על טווח התנועה או כאשר עובדים עם סרווים שאינם תואמים בדיוק את טווח המעלות הסטנדרטי.
טיפים ושיקולים מתקדמים לעבודה עם מנועי סרוו
בעוד שהפעלה בסיסית של מנוע סרוו SG90 עם ארדואינו היא פשוטה, ישנם מספר שיקולים וטיפים שיכולים לשפר את ביצועי הפרויקט ולמנוע תקלות. הבנתם היא חלק בלתי נפרד מהיכולת להשתמש במנוע סרוו ארדואינו באופן מקצועי.
סוגיות אספקת כוח
כפי שהוזכר קודם לכן, אספקת הכוח היא גורם קריטי. למרות ש-SG90 בודד פועל היטב מפין ה-5V של הארדואינו, חשוב להבין את מגבלות הזרם של לוח הארדואינו. רוב לוחות הארדואינו מסוגלים לספק זרם של כ-500mA מפין ה-5V שלהם (כאשר מופעלים ממתח כניסה גבוה יותר כמו 7-12V דרך Vin או מתאם חשמל). אם אתם מפעילים מספר סרווים, חיישנים נוספים, או רכיבים שצורכים זרם גבוה, אתם עלולים לחרוג ממגבלה זו.
סימנים לעומס יתר על ספק הכוח של הארדואינו:
- התנהגות בלתי יציבה של הסרוו (רעידות, תנועות לא צפויות).
- איפוסים פתאומיים של לוח הארדואינו.
- התחממות של הרגולטור בלוח הארדואינו.
הפתרון: השתמשו בספק כוח חיצוני נפרד עבור מנועי הסרוו. ספק כוח כזה יכול להיות סוללת AA/AAA (4.8V-6V) או ספק כוח קיר מתאים. כאשר משתמשים בספק כוח חיצוני, חובה לחבר את פין ה-GND של ספק הכוח החיצוני לפין ה-GND של הארדואינו. זה יוצר "אדמה משותפת" (Common Ground) ומבטיח שהאותות החשמליים יימדדו ביחס זהה, מה שמאפשר תקשורת תקינה בין הארדואינו לסרוו. המתח החיובי של ספק הכוח החיצוני יחובר לחוט האדום של הסרוו.
דיוק וכיול
מנועי SG90 הם סרווים חובבים, ולכן יש לצפות לרמה מסוימת של "משחק" (Play) או חופש תנועה קטן בציר, וכן חוסר דיוק קל במיקום הזוויתי. עבור רוב הפרויקטים, דיוק זה מספק בהחלט.
עם זאת, בפרויקטים שדורשים דיוק זוויתי גבוה במיוחד, ייתכן שיהיה צורך לבצע כיול (Calibration). כיול יכול לכלול:
- בדיקה אמפירית: קביעת טווחי המיקרושניות המדויקים (באמצעות
writeMicroseconds()) המתאימים לזוויות 0, 90 ו-180 מעלות עבור הסרוו הספציפי שלכם. ייתכן ש-1000us לא תמיד יהיה 0 מעלות מדויק, ו-2000us לא תמיד יהיה 180 מעלות מדויק. - פיצוי תוכנתי: הוספת קיזוזים קטנים בקוד כדי לתקן סטיות זוויתיות.
- בחירת סרוו איכותי יותר: אם דיוק הוא קריטי, ייתכן שיהיה צורך לשקול שימוש בסרוו בעל מנגנון מתכת (Metal Gear Servo) או סרוו דיגיטלי, המציעים בדרך כלל דיוק ומומנט גבוהים יותר, אך גם יקרים יותר.
אורך כבלים והשפעה על אות
אורך הכבלים המחברים את מנוע הסרוו לארדואינו יכול להשפיע על איכות האות. כבלים ארוכים מדי עלולים להיות רגישים יותר להפרעות אלקטרומגנטיות (EMI) ורעשים, מה שעלול לגרום לתנועה בלתי יציבה או לרעידות של הסרוו. במיוחד חוט האות (הכתום/צהוב) רגיש לכך.
טיפים:
- השתמשו בכבלים קצרים ככל האפשר: במיוחד עבור חוט האות.
- הימנעו מהעברת כבלי סרוו ליד מקורות רעש: כמו מנועי DC גדולים או ספקים ממותגים שאינם מסוננים היטב.
- השתמשו בכבלים מסוככים (Shielded Cables): במקרים קיצוניים של סביבה רועשת או כבלים ארוכים מאוד, כבלים מסוככים יכולים לעזור להפחית הפרעות.
הבנה זו של מנוע סרוו ארדואינו, כולל היבטי החיבור, התכנות והשיקולים המתקדמים, תאפשר לכם לממש פרויקטים מורכבים יותר בביטחון וביעילות.
סיכום וקריאה לפעולה
מנוע הסרוו SG90, בשילוב עם לוח ארדואינו, מציע פלטפורמה עוצמתית ונגישה ליצירת פרויקטים הדורשים בקרת תנועה מדויקת. החל מהבנת העקרונות הבסיסיים של פעולתו באמצעות אות PWM, דרך חיבורו הפשוט ללוח הארדואינו, וכלה בתכנותו באמצעות ספריית Servo.h הידידותית למשתמש, קבלת שליטה על מיקום זוויתי מעולם לא הייתה קלה יותר.
היכולת להזיז רכיבים בדיוק של מעלות בודדות פותחת עולם שלם של אפשרויות: ממנגנוני נעילה מבוקרים, דרך זרועות רובוטיות קטנות, ועד למערכות הטיה וסיבוב למצלמות וחיישנים. ההבנה של נושאים כמו אספקת כוח, דיוק ואיכות אות רק מחזקת את היכולת שלכם לבנות פרויקטים אמינים ויציבים.
המידע שסופק במאמר זה מהווה בסיס איתן ליציאה לדרך. כעת, כשיש לכם את הידע התיאורטי והמעשי, הגיע הזמן ליישם אותו. התחילו עם הקוד לדוגמה, התנסו בשינוי זוויות ומהירויות, ובחנו כיצד מנוע ה-SG90 יכול להשתלב ברעיונות שלכם.
למידע נוסף, מדריכים מורחבים ופרויקטים מתקדמים, המשיכו לעקוב אחר המאמרים המקצועיים באתר. התחילו לבנות את הפרויקט הבא שלכם עוד היום!
קיטלאב הינה מומחית במוצרי ארדואינו, מיקרוביט ו esp32 , לתיאום הזמנות או הדרכות ניתן ליצור קשר בטלפון 052-2586973.
המידע במאמר זה הינו כללי בלבד ואינו מהווה תחליף לייעוץ רפואי מקצועי ואישי.

