top of page

מנוע סרוו - Servo

פתיחה.png

מנוע סרוו הוא מנוע זרם ישר  (DC Motor) בעל מערכת תמסורת פנימית של גלגלי שיניים ובקרה אלקטרונית על מיקום המנוע.
מה שמיחד מנועי סרוו היא העובדה שהם אינם מסתובבים בצורה חופשית כמו מנועי DC , אלא נעים על פי  זווית – לרוב בין 0 ל-  180  מעלות.

מנועי סרוו פועלים בחוג סגור, כלומר הינם בעלי בקרה על מיקום המנוע, ובעלי יכולת תיקון פערים מהמיקום הרצוי.

מנועי סרוו נמצאים בשימוש בסוגים רבים מאד של רובוטים ובניהם זרועות רובוטיות, מכוניות הנשלטות בשלט רחוק, רובוטי-רכב, מטוסים ומסוקים (לשליטה על זווית הכנף \ רוטור). ישנן סיבות רבות לכך שמנועי סרוו נפוצים כל כך באפליקציות רובוטיקה, ובינהן קלות השליטה במנועי סרוו, דרישות האנרגייה הנמוכות (יעילות),
הכח הגבוה, רמת מתח והגודל והמשקל הנמוכים.

דוגמא2.jpg
דוגמא1.jpg
דוגמא4.jpg
דוגמא3.jpg

עקרון פעולה של מנוע סרוו

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

הערך המצוי של המנוע, נמדד בעזרת פוטנציומטר המחובר לציר המניע של המנוע (הציר שיוצא מחלקו העליון של המנוע ואליו מחברים את המנגנון שיש להניע). סיבוב הפוטנציומטר גורם לשינוי ההתנגדות הנמדדת ובהתאם לשינוי מפל המתח הנמדד על פניו. מתח זה הוא הערך המצוי שמגיע כמשוב לחוג הבקרה הסגור. כל עוד יש הבדל (שגיאה) בין המתח המצוי ולבין המתח הרצוי, מנוע ה-DC הנמצא בתוך הסרוו, ימשיך לנוע בכיוון המתאים. סיבוב מנוע DC מתבצע יחד עם סיבוב גלגלי השיניים - שמהווים תמסורת הפחתה (מאיטה את מהירות הסיבוב ומגדילה את מומנט הכח). גלגלי השיניים מניעים את ציר היציאה ואת הפוטנציומטר. ברגע שההפרש המתחים יהיה קטן מערך סף, יחידת הבקרה של המנוע תנתק את מקור המתח למנוע DC והוא יחדל לנוע. עצירת המנוע תהיה בדיוק בזוית שנדרשה בתוכנית הבקר. 

אם התוכנית תורה למנוע לנוע לזוית מעבר ל-180 מעלות, המנוע יחל לרעוד מכיוון שהוא ינסה לסגור את השגיאה בין הערך הרצוי למצוי ולא יצליח. כמו כן יש על ציר היציאה מחסום מכני המונע מהמנוע לעבור את זוית הסיבוב 180 מעלות

חתך מנוע סרוו.png

בחירת מנוע סרוו

כאשר באים לבחור מנוע סרוו מתאים למשימה יש להתחשב במספר גורמים. הגורם הראשון הוא כמה מומנט כח נדרש לביצוע המשימה? מומנט מחושב על ידי מכפלה של הכח אותו צריך להפעיל במרחק מקו פעולת הכח אל ציר הסיבוב של המנוע. בדף נתוני היצרן של המנוע ניתן למצוא את גודל המומנט Torque

מומנט1.png
מומנט3.gif

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

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

towerproMG995.png

אופן חיבור מנוע סרוו

למנוע יש שלושה חוטים: 

חוט שחור או חום שהוא אדמה (-)

חוט אדום שהוא המתח (+)

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

חיבור סרוו1.png
חיבור סרוו2.png

תכנות הבקר לשליטה במנוע סרוו

סביבת הפיתוח של ארדואינו מכירה מגוון מסויים של רכיבים וניתן להפעיל אותם עם אוסף הפונקציות הבסיסי. מנוע סרוו שייך לקבוצה גדולה של רכיבים שדורשים פונקציות מיוחדות להפעלה. ישנן סיפריות של פונקציות שמכילות כלים מיוחדים לרכיבים ספציפים. למנוע סרוו ישנה סיפריה כזו שמותקנת בסביבת הפיתוח של ארדואינו ונקראת Servo.h. בקובץ סיפריה כזה יש הגדרות של כל הפונקציות המיוחדות שנכתבו לטובת תפעול מנוע סרוו. כדי להשתמש בתוכן הסיפריה עלינו לכתוב בראש התוכנית את השורה הבאה, שאומרת לבקר לצרף אל התוכנית שאנחנו כותבים גם את כל הגדרות הפונקציות החדשות למנוע סרוו:

#include <Servo.h>

בתוך הסיפריה ישנו הגדרה של מבנה נתונים (class) שמאפשר גישה לכל הפונקציות המיוחדות. שמו של מבנה הנתונים Servo ועושים בו שימוש כמו שמגדירים משתנה חדש: סוג המשתנה ושם המשתנה. נבחר שם משתנה שייצג את תפקיד המנוע: למשל מנוע צד ימין של זרוע רובוטית יקרא rightServo ואז שורת הגדרת המשתנה תהיה:

Servo rightServo;

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

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

rightServo.attach(9);

ללא קריאה לפונקציה זו המנוע לא יעבוד בכלל.

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

rightServo.write(47);

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

תוכניות דוגמא:

בסביבת הפיתוח של ארדואינו ניתן למצוא שתי תוכניות דוגמא בתפריט קובץ->דוגמאות->SERVO. דוגמא אחת נקראת sweep שגורמת למנוע סרוו לנוע במחזוריות מ-0 מעלות ל-180 וחזרה.

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

sweepExample.png
bottom of page