9 - מנוע DC

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

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

 

להזיז דברים זהוי פעולה שדורשת המון אנרגיה, לכן מנועים דורשים, בדרך כלל, יותר זרם מאשר מה שה Arduino מסוגל לספק (מנועים מסויימים דורשים גם מתח גבוה יותר). ה Arduino מספק 40 מיליאמפר (40mA) בכל פין, הרבה פחות ממה שרוב המנועים דורשים כדי לעבוד.

טרנזיסטורים הם רכיבים המאפשרים לנו לשלוט במקור כוח בעל זרם ומתח גבוהים, מהיציאה (בעלת הזרם הנמוך) של ה Arduino. ישנם סוגים רבים (ושונים) של טרנזיסטורים, אבל כולם עובדים על אותו העיקרון. ניתן לחשוב עליהם כעל מתגים דיגיטליים. כאשר אנו נספק מתח לאחד הפינים של הטרנזיסטור (ישנם שלושה פינים סה”כ) הנקרא gate, הוא יסגור את המעגל בין שתי הפינים האחרים (הנקראים source ו drain). בדרך זו, אנו יכולים להדליק ולכבות (לסגור ולפתוח) מעגל בעל זרם / מתח גבוהה משל ה Arduino.

מנועים הם סוג של מכשירים השראתים. השראה היא תהליך שבו זרם חשמלי המשתנה בחוט יכול ליצור שדה מגנטי משתנה סביב החוט. כאשר מנוע מקבל חשמל, הסליל יוצר שדה מגנטי, הגורם לגל (לרוטר) להסתובב. אך גם ההפך הוא נכון: מנוע יכול לייצר חשמל כאשר הגל מסתובב בכיוון ההפוך. נסו לחבר נורת LED למנוע ולסבוב את המוט (אם לא קורה דבר, נסו לסובב אותו לכיוון השני), הנורה צריכה להאיר, הפכתם את המנוע שלכם לגנרטור קטן (כאשר תפסיקו לסובב, המנוע יספק מתח בכיוון ההפוך מזה הנוכחי שנתתם לו. המתח ההפוך הזה נקרא גם “counter-electromotive force” (או בקיצור back-emf) והוא עלול לגרום נזק לטרנזיסטור, בשל כך עלינו למקמם בינהם דיודה, הדיודה מאפשרת לחשמל לזרום בכיוון אחד בלבד, וכך מגנה על שאר המעגל.

 

חיבור הרכיבים

חברו ללוח המטריצה חוטים מגשרים מעמודות ה+ וה-, אל ה 5V וה GND בארדואינו (בהתאמה, כפי שעשינו עד כה). הוסיפו מתג ללוח המטריצה, כשרגל אחת שלו מחוברת לכוח (+) והרגל השניה לפין מס’ 2, מהרגל של המתג המחוברת לפין מס’ 2 חברו, נגד 10KΩ לשורה אחרת בלוח המטריצה ומהשורה הזאת חברו חוט מגשר לעמודת המינוס (ניתן לחבר את הנגד ישר לעמודת ה-, אצלי הנגד היה קצר מידי מכדי להגיע ישירות).

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

את הטרנזיסטור נמקם על לוח המטריצה כשגב המתכת שלו פונה לעבר הסלולה והמנוע (הרחק מהארדואינו). הפין העליון נקרא gate נחבר ממנו חוט מגשר אל פין מס’ 9. שינוי במתח על פין זה (פין השער) יחבר את 2 הפינים האחרים של הטרנזיסטור. הפין האמצעי (drain), אותו נחבר למנוע עם חוט מגשר ממנו אל עבר החלק השני של לוח המטריצה. ולבסוף הפין האחרון (התחתון ביותר) נקרא source, את הפין הזה נחבר אל המינוס (האדמה). כשהארדואינו יספק כוח לפין gate (דרך פין מס’ 9) הוא יפעיל את הטרנזיסטור והפין האמצעי (drain) יחובר לפין התחתון (source).

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

להלן סכמה ואיור להמחשה:

Wiring Sketch

הקוד

הקוד דומה מאוד לקוד שהשתמשנו בו כדי להפעיל נורת LED בעזרת מתג. נגדיר 2 משתנים קבועים מסוג Int, הראשון בשם switchPin שישמר לנו את מס’ הפין אליו מחובר המתג. והשני motorPin שישמור לנו את מס’ הפין אליו מחובר המנוע (דרך הטרנזיסטור). לאחר מכן נגדיר משתנה בשם switchState מסוג int ונכניס לתוכו את הערך 0 (בעתיד הוא ישמור לנו את הערך מהמתג, כך נדע אם הוא לחוץ או לא).

בפוקנציית ה ()setup:

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

בפונקציית ה ()loop:

דבר ראשון שנעשה הוא לקרוא את מצב המתג עם הפונקציה digitalRead, נכניס לתוכה את הפין אליו מחובר המתג, ששמרנו במשתנה הקבוע switchPin, ואת הערך נשמור במשתנה switchState שהגדרנו בהתחלה.

לאחר מכן נבדוק האם הוא לחוץ או לא (סוגר מעגל או לא) ע”י משפט if / else. ב if נבדוק האם המשתנה שווה ל HIGH (המילה השמורה לכך שיש זרם), במידה ויש, נשלח זרם למנוע (דרך הטרנזיסטור) עם הפונקציה digitalWrite(נכניס לתוכה את מס’ הפין, השמור במשתנה motorPin, ואת הערך HIGH כדי לשלוח זרם). אחרת (ז”א אם ה If לא נכון, ז”א שאנו לא לוחצים על המתג והמעגל החשמלי נפתח) אנו לא מקבלים מתח ולכן עלינו לנתק את המתח למנוע, לכן נשלח אליו (דרך הטרנזיסטור שמחובר אליו) את הערך LOW. ברגע שהטרנזסיטור יפסיק לקבל מתח מפין מס’ 9 הוא יפתח את המעגל של המנוע והמנוע יפסיק לפעול.

כך יראה הקוד הסופי:

const int switchPin = 2;
const int motorPin = 9;
int switchState = 0;

void setup(){
    pinMode(motorPin, OUTPUT);
    pinMode(switchPin, INPUT);
}

void loop(){
    switchState = digitalRead(switchPin);

    if (switchState == HIGH){
        digitalWrite(motorPin, HIGH);
    }else{
        digitalWrite(motorPin, LOW);
    }
}

 

לסיכום

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

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