Servo Motor
המנועים שללא ספק הנפוצים ביותר בתחום הרובוטיקה, פעם היו בעיקר בתחום הטיסנים (המנועים אשר שלטו על זויות הכנפיים) אך עקב ההתקדמות הטכנולוגית העצומה בתחום הרובוטיקה המנוע הפך לנפוץ בהרבה. מה שמיוחד את מנוע זה הוא למעשה שאינו סוג בפני עצמו אלה מורכב ממנוע DC שמחובר למעגל בקרה אשר נותן שליטה עליו.
כמו שכבר הזכרתי, מנוע הסרוו הוא אינו מנוע בודד אלה מכלול שלם אשר נקרא מנוע. בתמונה למטה ישנו תצלום של מנוע סרוו טיפוסי מפורק על כל חלקיו לפי הסדר הבא: 1, מנוע DC קטן (כזה שהשתמשנו בחלק הקודם של המדריך). 2,תמסורת המנוע (מנגנון גלגלי שיניים אשר מאוד מזכיר את גיר ההילוכים שמצוי ברכב), רכיב זה אחראי על הורדת מהירות הסיבוב של המנוע והגדלת מומנט הכוח שלו (ממש כמו ברכב אך בצורה קבועה). 3, פוטנציומטר (נגד משתנה), רכיב זה מחובר לתמסורת של המנוע ועפ"י מיקומו הפוצנציומטר משתנה את התנגדותו ובכך מעגל הבקרה יודע היכן "נמצא" המנוע. 4, מעגל בקרה, מעגל זה אחראי על הפעלתו של המנוע וכמו כן על סיפוק מידע אודותיו (מצב נוכחי, עצירה/תנועה).
מנוע סרוו מפורק לגורמים |
מבחינת היתרונות/חסרונות של המנוע עומדת בראש ובראשונה המגבלת תזוזה שלו ל-180 מעלות (חצי סיבוב), ישנם עם זאת מנועי Servo שאין להם את המגבלה הזאת (בעיקר תעשייתיים) אך מדובר בסוג שונה לגמרי של מנוע. היתרון המשמעותי ביכולת הזאת היא שליטה מוחלטת בתזוזת המנוע. לדוגמא, ניתן להורות לו להסתובב 2 מעלות ימינה וכן, המנוע נותן פידבק על מיקומו. אפשר לראות זאת בתחילת כל תוכנית המערבת Servo איך הוא "מתאפס" לזווית ההתחלתית שלו.
רובוט-נחש אשר מתבסס על מנועי סרוו |
מבחינת עבודה עם מנועי Servo, עד שהגיעה ה-Arduino, תפעול Servo הייתה משימה לא קלה בכלל. למזלנו, אנו משתמשים בלוח Arduino מה שהופך את המשימה הזאת לכמעט קלה מידי. הדוגמא שאני אראה באמת דיי בסיסית אך מהרגע שמבינים את העיקרון של תפעול המנוע, אין בעיה להתקדם לדברים יותר מתקדמים בקלות.
רכיבים:
- מנוע Servo 5V
- לוח Arduino
- חוטים
- מקור מתח (שנאי 12V/סוללה 9V)
למנוע הסרוו שלשה חוטים: פלוס (אדום), מינוס (שחור) וסיגנל (צבעו משתנה אך בד"כ צהוב/אפור) המשמש לשליטה ובקרה של המנוע. מנוע סרוו (בשונה ממנוע DC רגיל) אינו יכול לפעול כמנוע עצמאי. כלומר, אם ננסה לחבר לו את הפלוס והמינוס לסוללה נראה שהוא אכן אינו זז. כפי שניתן לראות בתרשים, מבחינת החיווט של ההדגמה אין כל כך עבודה, חשוב לציין שבדומה להפעלת מנוע DC, מנוע סרוו צורך יותר זרם מהזרם שחיבור ה-USB של ה-Arduino יכול לספק ובמידה ותנסו להפעיל את המעגל ללא סוללה/שנאי מחוברים ל-Arduino , המעגל לא יעבוד.
להלן הקוד:
#include <Servo.h> Servo myservo; // create servo object to control a servo int pos = 0; // variable to store the servo position void setup(){ myservo.attach(9); // attaches the servo on pin 9 to the servo object } void loop() { for(pos = 0; pos < 180; pos += 1){ // goes from 0 degrees to 180 degrees myservo.write(pos); // tell servo to go to position in variable 'pos' delay(15); // waits 15ms for the servo to reach the position } for(pos = 180; pos>=1; pos-=1){ // goes from 180 degrees to 0 degrees myservo.write(pos); // tell servo to go to position in variable 'pos' delay(15); // waits 15ms for the servo to reach the position } }אנו נעזרים בספרייה Servo.h של Arduino על מנת להגדיר את המנוע שלנו הקרוי "myservo" ולאחר מכן אנו מגדירים את המשתנה "pos" אשר מיצג את המעלות שהמנוע זז (מ-0 עד 180 מעלות). אופן ההפעלה של המנוע הוא דיי בסיסי, בלולאת ה-loop ישנם שני לולאות for אשר תפקידה של אחת הוא להביא את המנוע מ-0 מעלות עד לזווית של 180 מעלות (חצי סיבוב) ותפקידה של השנייה הוא להחזיר אותו מזווית של 180 מעלות, חזרה ל-0 מעלות.
הוספת מידע על מנועים יותר רציניים ?
אשמח לקרוא על מנועים יותר רצינים עם הרבה יותר הספק, יותר על איך בוחרים איזה מנוע מתאים לפרוייקט שלי, חישוב מומנט ובחירת תמסורת.
LM293 זה חתיכת ***
מדובר בדרייבר מיושן שמבוסס על טרנזיסטורים ביפולריים. זה אומר 2 דברים:
אם מפל מתח מקסימלי של כמעט 3 וולט על הדרייבר עצמו, כל מנוע שמכבד את עצמו יגרום לבזבוז אנרגיה רציני על הגשר עצמו, שיתחמם מאד.
2. שילוב של דרייבר כזה במעגל שמבוסס על סוללה זה בזבוז משווע של הכח של הסוללה.
האלטרנטיבה היא דרייבר שמבוסס על טרנזיסטורי FET עם התנגדות שנמדדת במילי-אוהמים , כלומר מפל מתח בסדרי גודל של מיליוולטים על כל אמפר של זרם.
לדוגמא http://www.pololu.com/catalog/product/2135
לדרייבר הזה יש התנגדות כוללת של 0.3 אוהם כלומר הוא יבזבז 0.3V בזרם של 1A.