מה זה בקר?
בקר ארדואינו הוא התקן אלקטרוני המאפשר ליישם תהליך בקרה. הוא המכיל 3 חלקים מרכזיים:
1) קבלת מידע - חיבורים הנקראים פינים שאפשר לחבר אליהם חיישנים חיצוניים ולקבל את המידע מהחיישנים בצורת אות מתח. יש שני סוגים חיבורים: 14 דיגיטלים (digital I/O pins) שמחזירים לבקר 0 או 1 לוגי שהם שווה ערך ל-0 או 5 וולט. 6 חיבורים אנאלוגים (analog IN pins) שמאפשרים קבלת מגוון ערכים שונים מחיישנים המודדים תופעות פיזיקליות שונות. הם מחזירים לבקר ערכים בתחום בין 0 ל- 1023 שהם שקולים ל-0 וולט ועד 5 וולט. כמו כן יש חיבור USB המאפשר קבלה והחזרת מידע מהמחשב בו מתכנתים את תוכנית הבקרה.
2) עיבוד מידע - החלק המרכזי הוא המיקרו מעבד (MicroController ATmega328P) ורכיבים תומכים בפעולתו (נורות חיווי, גביש קריסטלי לתזמון פעולות, רכיב תקשורת מחיבור ה USB אל ה MCU וכ"ו ).
ה MCU מכיל זכרון פנימי בו מאוחסנת תוכנית הבקרה ומידע הנאסף בזמן הרצת תוכנית הבקרה. התוכנית מעבדת את המידע המתקבל מהחיישנים ומחליטה מה לעשות - את איזה רכיב להפעיל - בהתאם למידע.
3) פעולה - אלו אותם חיבורים דיגיטלים שמאפשרים גם הוצאת מידע מהבקר אל רכיבי הפעולה: נורות, זמזמים, מסכים, מנועים וכ"ו. הבקר מוציא ערכים דיגיטלים או ערכי PWM (יוסבר בהמשך) שגורמים להפעלה של רכיבי הפעולה בהתאם להוראות היצרן.
איך הבקר עובד?
כל תהליך הבקרה מבוסס על מדידה או שליחה של אותות בקרה חשמליים בתחום בין 0 וולט ועד 5 וולט. הבקר עצמו מקבל את מתח העבודה שלו משלושה מקורות אפשריים: חיבור USB, ספק מתח חיצוני (External Power Supplyu), חיבור לפין Voltage In . מתח העבודה של כל בקר משתנה לפי נתוני היצרן. בקר ארדואינו UNO יכול לקבל בין 7 וולט ל-12 וולט. על לוח הבקר ישנם רכיבים שתפקידים לקחת את המתח בכניסה ולהנמיך אותו וליישר אותו ל-5 וולט שזה המתח בו פועלים כל רכיבים הבקרה. ברכיבים חדישים יותר יש אפשרות להפעיל עם מתח של 3.3 וולט ולשם כך יש פי מיוחד.
בתוך ה MCU נשמרת תוכנית הבקרה. התוכנית נכתבת במחשב חיצוני ומועתקת בעזרת חיבור ה USB אל זיכרון הפלאש (זכרון הפלאש נשמר גם אחרי שמנתקים את המתח לבקר). בכל זמן נתון שמורה רק תוכנית אחת בזכרון).
ברגע שמחברים את הבקר למקור מתח חיצוני, התוכנית ששמורה בזכרון מתחילה לרוץ, מתחילה לבצע את הפקודות שלה אחת אחרי השניה. מי שאחראי לתזמן את קצב ביצוע הפקודות הוא הגביש הקריסטלי (נראה כמו אליפסה כסופה מימין לחיבור ה USB). בתוך התוכנית יש פקודות שקוראות מידע מחיישנים, בודקת מה הערכים שהתקבלו ובהתאם מחליטה ומפעילה רכיבים אחרים במערכת. התוכנית רצה בלולאה אין סופית כך שבסיום הפקודה האחרונה היא חוזרת לתחילת התוכנית ומריצה הכל מחדש.
תוך כדי הריצה של התוכנית (המונח המקצועי לתוכנית הבקר הוא sketch) נאסף מידע שנשמר לשלבים מאוחרים יותר בתוכנית. מידע זה נשמר בזכרון SRAM, זהו זכרון שנמחק ברגע שמנתקים את מקור המתח לבקר. יש זכרון נוסף המאפשר לשמור מידע מזמן הריצה באופן שלא ימחק אם נותק מקור המתח. זהו זכרון מסוג EPROM.
תוכנית הבקר תרוץ בלולאה אינסופית כל עוד יש מתח לבקר ותגיב לשינויים בהתאם למידע שמתקבל מהחיישנים.
איך עוצרים את הבקר?
אם נסתכל על תהליך בקרה מוכר מחיי היום יום שלנו, למשל מעלית בבניין, נראה שהיא עובדת כל הזמן. כל הזמן היא מקבלת בקשות להגיע לקומה מסויימת, כל הזמן היא בודקת שאין עומס יתר במעלית לפני שהיא מתחילה לנוע, כל הזמן היא בודקת שאין מכשול שמפריע לסגירת הדלתות, כל הזמן היא בודקת האם הגיעה במדוייק לפתח הקומה הרצוייה. יש הרבה תהליכי בקרה במעלית שעובדים כל עוד יש מתח המסופק לבקר.
אותו הדבר גם בבקר ארדואינו, כל עוד יש אספקת מתח, התוכנית תרוץ. לפעמים יש מצב של תוכנית תקועה ואז כדי לשחרר אותה ניתן לעשות אחד משלוש הפעולות הבאות:
1) לחיצה על כפתור RESET - Reset Button
2) לחיצה על כפתור חיצוני המחובר ל - Reset Pin
3) ניתוח מקור המתח לבקר
שתי האפשרויות הראשונות גורמות לבקר למחוק את כל המידע שנאסף בזכרון SRAM ולהתחיל את ריצת התוכנית מחדש. האפשרות השלישית מפסיקה את כל פעולות הבקר וכמו כן מוחקת את זכרון SRAM.
איך מקבלים את המידע מהחיישנים?
כפי שהוסבר ניתן לחבר חיישנים משני סוגים: דיגיטלים ואנאלוגים.
חיישן - רכיב קלט - דיגיטלי בדרך כלל מקבל אספקת מתח של 5 וולט. בהתאם לעקרון הפעולה הפיזיקלי שלו הוא מעביר או לא מעביר את המתח לחיבור שלו אל הפין הדיגיטלי. למשל: לכפתור PB Push Button יש שלוש נקודות חיבור: מקור מתח 5 וולט, חיבור לאדמה GND וחיבור לפין דיגיטלי. אם הכפתור לחוץ אז המתח של 5 וולט יעבור אל הפין הדיגיטלי שימדוד אותו ויודיע לתוכנית מה נמדד (HIGH - 5V , LOW - 0V), אם הכפתור לא לחוץ אז הפין הדיגיטלי ימדוד 0 וולט. כלומר חיבור רכיב קלט לפין דיגיטלי יגרום לבקר למדוד 5 וולט או 0 וולט בחיבור הפין ובהתאם ינווט את התוכנית.
חיישן - רכיב קלט - אנאלוגי גם כן מקבל אספקת מתח של 5 וולט. בהתאם לעקרון הפעולה הפיזיקלי שלו הוא מוציא מתח לחיבור שלו אל הפין האנאלוגי. חיישן אנאלוגי מודד תופעה פיזיקלית שנותנת מגוון של ערכים. בתוך החיישן מתבצעת המרה של הערך הפיזיקלי (למשל: טמפרטורה, עוצמת אור, עומת קול וכ"ד) למתח חשמלי בתחום בין 0 וולט ל-5 וולט. למשל: חיישן אור משנה את התנגדותו בהתאם לעוצמת האור, שינוי ההתנגדות גורם לשינוי המתח על פניו ובהתאם נמדד ערך בפין האנאלוגי. לכל רכיב יש דף נתוני יצרן datasheet אשר מסביר את עקרון הפעולה של הרכיב ואת אופן חישוב ההמרה הנדרשת ממתח נמדד (בין 0 וולט ל-5 וולט) לערך הפיזיקלי הרצוי. הפין האנאלוגי נותן לתוכנית ערכים בתחום של 0-1023 כך שכל יחידה אחת שקולה לשינוי מתח של 4.88 מיליוולט או 0.00488 וולט. על הבקר יש רכיבים המתרגמים את המתח הנמדד לערך בינארי שנקרא על ידי התוכנית. הרכיבים עובדים על בסיס 10 BIT ולכן תחום הערכים הוא 0-1023.