Stepper Motor
מנועי ה-stepper (או "מנועי צעד" בעברית) הם ללא ספק המנועים היותר רציניים שיוצא להתעסק איתם. בניגוד למנועי ה-Servo הם אינם מוגבלים למספר מסוים של מעלות והם די מדויקים. אז, בואו נראה איך הם עובדים:
מנוע צעד |
באופן כללי, ניתן לחלק את מנועי צעד לשתי קטגוריות: דו-קוטביים (bipolar) וחד-קוטביים (unipolar). עקרונית, מנועי הצעד עובדים בצורה של שעון, הרוטור שלהם מוקף במספר של סלילים אלקטרו מגנטיים עצמיים (כלומר כל סליל או זוג סלילים בעלי שני חוטים עצמיים). ועל ידי תמרון הפעלת הסלילים, נוצרת תנועה. נשמע מסובך? התמונה למטה בטח תסביר את זה יותר טוב:
כפי שרואים בתמונה, קודם מופעל הסליל העליון, אחריו השמאלי, התחתון ולבסוף הימיני. כמובן שכל עוד הרצף של ההפעלה הוא עוקב, לא באמת משנה באיזה כיון אתה עובד. בנוסף, ניתן לעל ידי הפעלת יותר מסליל אחד להגיע לרמת דיוק של כ- ⅛ מעלה וכן אף יותר.
בדוגמה הזאת נשתמש ברכיבים הבאים:
- מנוע צעד – לא כל כך משנה המתח של המנוע, העיקר שיהיה מיועד לכל היותר ל-12 וולט (אני משתמש במנוע 5V קטן שפירקתי מכונן דיסקטים ישן).
- Motor Shield תוצרת Adafruit.
- מקור מתח (שנאי 12V/סוללה 9V).
בניגוד לשאר המדריך, בחלק זה החלטתי להשתמש ב-Motor Shield של Adafruit מכמה סיבות מאוד פשוטות. ראשית, יש לו ספרייה מאוד נוחה לעבודה עם מנועי צעד ובכלל עם מנועים. בנוסף, כשרוצים לעבוד עם מנועי צעד הכל טוב ויפה עד שמגיעים לחלק של הדיוק, בכמה פרויקטים שעבדתי עליהם, דיוק המנועים היה דרישה חד משמעית ועל כן השתמשתי במגן הזה כדרייבר למנועים ובכללי ביחס אחרים בשוק, המחיר שלו סביר לכל כיס (המחיר לדגם המקורי עומד על כ-19.5 ומחיר החיקויים הסיני נע בסביבות ה-5 עד 10 דולר, כמו כן מסוגל להפעיל כשני מנועי צעד במקביל.
#include <AFMotor.h> // Connect a stepper motor with 48 steps per revolution (7.5 degree) // to motor port #2 (M3 and M4) AF_Stepper motor(48, 2); void setup() { Serial.begin(9600); // set up Serial library at 9600 bps Serial.println("Stepper test!"); motor.setSpeed(10); // 10 rpm } void loop() { Serial.println("Single coil steps"); motor.step(100, FORWARD, SINGLE); motor.step(100, BACKWARD, SINGLE); }אז מה יש לנו פה? קודם כל, הקוד משתמש בספרייה החיצונית AFmotor אשר ניתן להוריד פה או בלינק בסוף המדריך המכיל את כל הקבצים של הכתבה (הוראות על התקנת ספרייה חדשה ל-Arduino ניתן למצוא כאן). מבחינת הקוד עצמו, כפי שכבר אמרתי מדובר בספרייה מאוד פשוטה לשימוש ועל כן רק אחדד כמה דברים, הפונקציה AF_Stepper() מכילה כשני משתנים, המשתנה הראשון הוא כמה "צעדים" על המנוע לעשות על מנת להגיע לסיבוב שלם, בהרבה מנועי צעד התשובה תהיה 48 (כפי שבקוד הנוכחי) אך חשוב לזכור לא לקחת נתון זה כמובן מאליו,כשאתם קונים/מפרקים מנוע, נסו להשיג את המפרט שלו (בדרך כלל מסמך PDF של לא יותר מחמישה עמודים) על מנת להשיג כמה שיותר אינפורמציה על המנוע שאתם עובדים איתו ולחסוך ככה הרבה תקלות עתידיות. המשתנה השני אומר לאיזה צד המנוע מתחבר על גבי המגן, במקרה הנוכחי המנוע יושב על שקע מספר 2, כלומר M3 ו-M4 כפי שמופיע על גבי הלוח. בנוסף, הפונקציה setSpeed קובעת מה המהירות של המנוע ב-RPM (סיבובים לדקה) ולבסוף הפונקציה step מורכבת משלשה פרמטרים: 1. כמה "צעדים" המנוע יזוז בפקודה זאת. 2, כיוון הצעד (קדימה או אחורה). 3, סוג הצעד (במקרה הזה בחרתי ב-SINGLE. כלומר, הפעלת סליל בודד אך ניתן לראות פה את כל האפשרויות).
סיכום
לאחר שכיסינו את העקרונות הבסיסיים בהפעלת מנועים עם ה-Arduino שלנו, למה מתקדמים? קודם כל, מנועים, כמו כל דבר אחר בחומרה יכולים לשמש למגוון עצום של פרוייקטים בהם אוטומציה, רובוטיקה ומכניקה ובכללי, מנועים יכולים להוסיף נפח מעניין כמעט לכל פרוייקט. בכל אופן, במידה ואתם נתקלים במכשול/בעיה יש את פורום הארדואינו שלנו, שם ניתן לכתוב אודות ניסיונכם עם Arduino, שאלות, פרויקטים, המלצות ועוד.
את הקובץ המכיל את כל הקטעי הקוד והסרטוטים של המדריך ניתן להוריד מכאן (על מנת לקרוא את הקבצים יש להעזר בתוכנה Fritzing ובסביבת הפיתוח של Arduino).
הוספת מידע על מנועים יותר רציניים ?
אשמח לקרוא על מנועים יותר רצינים עם הרבה יותר הספק, יותר על איך בוחרים איזה מנוע מתאים לפרוייקט שלי, חישוב מומנט ובחירת תמסורת.
LM293 זה חתיכת ***
מדובר בדרייבר מיושן שמבוסס על טרנזיסטורים ביפולריים. זה אומר 2 דברים:
אם מפל מתח מקסימלי של כמעט 3 וולט על הדרייבר עצמו, כל מנוע שמכבד את עצמו יגרום לבזבוז אנרגיה רציני על הגשר עצמו, שיתחמם מאד.
2. שילוב של דרייבר כזה במעגל שמבוסס על סוללה זה בזבוז משווע של הכח של הסוללה.
האלטרנטיבה היא דרייבר שמבוסס על טרנזיסטורי FET עם התנגדות שנמדדת במילי-אוהמים , כלומר מפל מתח בסדרי גודל של מיליוולטים על כל אמפר של זרם.
לדוגמא http://www.pololu.com/catalog/product/2135
לדרייבר הזה יש התנגדות כוללת של 0.3 אוהם כלומר הוא יבזבז 0.3V בזרם של 1A.