הקדמה
חומרה בקוד פתוח הוא מושג עבור חומרה המופצת עם תוכניות הבנייה שלה כך שכל אחד יכול לשכפל ולשנות אותה בהתאם לצרכיו, בדיוק כמו תוכנות קוד פתוח. ישנם ברחבי הרשת אינספור פרויקטים שונים ומגוונים שבוצעו בעזרת חומרת קוד פתוח כגון במסוקים, מטוסים וצוללות ואפילו מדפסות מודלים, CNC ועוד. הגבול הוא רק הדמיון והיצירתיות ביד היוצר.
במדריך זה נסקור מספר לוחות פיתוח נפוצים ושימושיים ונלמד לעבוד ולתכנת אותם בהתאם למטרה ולפרויקט שלנו. בחרנו לבצע פרויקט שמתאים למודרים בינכם המעוניינים לשלוט על מאווררים ולדים ולדגום חיישנים שונים לדוגמת חיישן טמפרטורה.
תחילה, ניישר קו עם הידע הדרוש בתורת החשמל בכדי שהמשך המדריך יהיה ברור יותר, והשפה בה נדבר תהיה שפה משותפת.
בסיס בינארי (Binary)
כידוע בשיטה שכולנו למדנו לספור בבית הספר אנחנו מתחילים לספור מאפס עד תשע ולאחר מכן נוספת ספרה חדשה שיוצרת מספר. כמות הספרות היא למעשה הבסיס, בשיטה הדצימאלית (בסיס עשר) הספרות הן 0-9. בשיטה הבינארית (בסיס שתיים) הספרות הן 0 ו-1.
שיטה זו מיושמת במחשבים וברכיבים דיגיטליים משום ש-0 מייצג העדר מתח ו-1 מייצג נוכחות של מתח. אז איך סופרים בשיטת הבסיס הבינארי? פשוט, לפי אותם הכללים של הבסיס הדצימאלי. שנגמרות לנו הספרות מהבסיס נוסיף ספרה חדשה. בדוגמא הבאה נראה טבלה של מספר בבסיס דצימאלי מול מספר בבסיס בינארי.
איך נמיר מספר בינארי לדצימאלי? בשיטה הבאה:
בסיס הקסהדצימאלי (Hexadecimal)
באותו עקרון שהסברנו, בסיס הקסהדצימאלי (בסיס 16) הוא בסיס שמכיל 16 ספרות. מכיוון שאין לנו 16 ספרות אנחנו מייצגים את המספר 10 כ-A, 11 כ-B וכן הלאה עד 15 כ-F. שיטה זו נהוגה בתכנות כדי לפשוט את הכתיבה, לרוב מספרים בינאריים יהיו ארוכים מאוד וכדי לקצר את הכתיב נעדיף להשתמש בסיס הקסהדצימאלי. הכתיב הנהוג בשפות תכנות של מספר הקסהדצימאלי הוא למשל: 0xF12 או 0xABC300 וכו'. לפניכם טבלה המכילה את שלושת הבסיסים:
ביטים ובתים (bits and bytes)
כפי שהזכרנו, במחשב רוב הפעולות מתבצעות מסדרה של מתחים שונים (יש מתח, אין מתח) המיוצגים כ-0 ו-1 או בכלליות שני מצבים. אותם מצבים מיוצגים בעזרת ביט (בעברית: סיבית) כאשר כל ביט יהיה תמיד 0 או 1. בייט (ביטוי נוסף לבית) לעומת זאת הוא אוסף של ביטים, ליתר דיוק אוסף של 8 ביטים בדיוק (מ-0 עד 7). בייצוג הקסהדצימאלי בית אחד מכיל שתי ספרות, כלומר הערך הגבוה ביותר לבית הוא 255 בדצימאלי ו 0xFF בהקסהדצימאלי.
רג'יסטר (Register, ובעברית: אוגר)
הוא רכיב זיכרון בסיסי המורכב ממספר משתנה של ביטים או בתים. רובנו שמענו את המושג מעבד 32-bit או מעבד 64-bit אבל מה המשמעות של המושג הזה? המשמעות היא שהאוגרים הגדולים ביותר במעבד יכולים להכיל לכל היותר 32 או 64 סיביות או לחילופין 8 או 16 בתים בהתאמה.
רמה לוגית
כאמור, המידע מיוצג כ-0 ו-1 מהווה למעשה תרגום של מתחים שונים. כיצד נקבעת רמה לוגית? פשוט מאוד, נניח שיש לנו נגד משתנה ומתח של 5 וולט. ניתן לקבוע שכל עוד המתח שהתקבל הוא מתחת לרף מסויים, נאמר 3, אנחנו נחשיב זאת כרמה לוגית 0 וכל מה שמעבר ל- 3 וולט הוא רמה לוגית 1.
אנלוגי לדיגיטלי (ADC)
כאשר אנחנו אומרים אנלוגי אנחנו מתכוונים לרכיבים ומעגלים שעובדים לפי מתחים, כלומר על ערכי המתח השונים.
לרוב נרצה להשתמש בחיישנים שונים בפרויקט שלנו בין אם מדובר בקריאת טמפרטורה, אור וכו'. רוב החיישנים הפשוטים (והזולים) הם חיישנים אנלוגיים כאשר ההתנגדות שלהם משתנה בהתאם למה שהם עושים. לדוגמא אם ניקח חיישן אור – ככל שיש יותר אור על החיישן ההתנגדות שלו קטנה וכך נקבל מתח גבוה יותר.
בעזרת רכיב ADC (Analog to Digital Convertor) נוכל להמיר מתח לערך דיגיטלי שאיתו נוכל לעבוד בתוכנה. למשל, אם נאמר לנו שהרזולוציה של רכיב ה ADC שיש לנו היא 8-bit אזי שיש לנו 256 ערכים שונים שניתן לקבל (מ-0 עד 255). באופן דומה, רזולוציה של 10-bit תניב לנו 1024 ערכים שונים. לדוגמא, אם החיישן שלנו יכל לספק מתח של עד 5 וולט, הערך 0 יהיה 0 וולט, הערך 1023 יהיה 5 וולט והערך 512 יהיה 2.5 וולט.
תדר (Frequency)
זהו למעשה מספר חזרות ביחידת זמן. כאשר אנו משתמשים ב-Hertz (Hz) הכוונה היא למספר חזרות בשנייה. לדוגמא, תדר של 1Hz יהיה חזרה כל שניה. אם ניקח לד ונספק לו מתח שעובד בתדר של 1Hz נוכל לומר שהוא ידלק בהפרשי זמן של שנייה אחת. אם נגדיל את התדר ל-2Hz הוא ידלק כל חצי שנייה וכן הלאה.
Pulse Width Modulation
פעמים רבות נרצה להפעיל רכיבים שונים במגוון מצבים, לא רק 1 או 0 (פועל/לא פועל) כדוגמת LED או מנוע חשמלי. PWM מאפשר לנו לדמות שליטה על המתח האנלוגי. נעזר באיור הבא על מנת להבין את אופן פעולתו של PWM.
באיור אנו רואים גל ריבועי הנובע משינוי המוצא ל-0 ו-1 במהירות רבה, כלומר בתדר גבוה. המתח המקסימאלי שלנו באיור זה הוא 5 וולט והמינימלי 0 וולט. כמו כן ניתן לראות שכמות ואורך הזמן של המוצא בחלק העליון (1 לוגי) שווה בדיוק לחלק התחתון (0 לוגי). מצב כזה נקרא 50% duty cycle כלומר אחוז הזמן שהמוצא נמצא ברמת 1 לוגי. מכיוון שכאן מדובר על בדיוק חצי מהזמן ה-duty cycle הוא 50%.
לפי האיור, אם נחבר את המתח שמפיק ה-PWM המתואר ללד, הוא יאיר ב-50% מעוצמתו המלאה (בהנחה שהוא עובד על 5 וולט) או לחילופין, הדבר דומה למצב בו היינו מספקים לו מתח של 2.5 וולט. מכאן שככל שהמוצא נמצא יותר זמן ברמה לוגית 1 כך המתח יהיה גדול יותר.
כתבה מעולה!
יפה מאוד
מאמר מקצועי ומעניין , אין ספק
PWM
PWM הוא מתח קבוע (שלא משנה מה רמת המתח שלו) והדבר היחיד שמשתנה בו הוא ה-Duty Cycle כאשר:
0% = מתח מינימלי (לרוב אפס).
50% = משך הזמן שהמתח הוא מקסימלי שווה למשך הזמן שהמתח הוא מינימלי (לרוב אפס).
100% = מתח מקסימלי.
נהנתי לקרוא
תודה!
תודה רבה!
כתבה יפה ועוד אתר בנושא
כל יוזמה לקדם את הנושא מבורכת!
הייתי מוסיף גם את הבלוג הזה לרשימת האתרים המומלצים:
http://bildr.org/
עוד
קנייה זולה של לוחות:
http://www.seeedstudio.com
http://www.iteadstudio.com
הכי זול כנראה תמצאו באיביי.
זולים משמעותית מ-sparkfun, והמשלוח שגם כך הוא זול, הופך להיות חינם מ-$50.
לוחות ARM:
מעבר ללוחות ARM מבוססי דוט נט, ישנם לוחות ARM שמריצים מערכת נייטיב. חפשו את leaf maple ותואמיהם בשתי החנויות שלמעלה.
ישנם גם לוחות מבוססי PIC32 ב- digilentinc.com שמריצים גם הם גרסה של ארדואינו, חפשו chipkit בגוגל.
אבי מי שרוצה להכנס לעולם הבקרים באופן
ה כ י – ז ו ל , שיחפש את הקיט מבוסס MSP430 של TI הנקרא Llaunchpad' שעולה, כמה (לא) מקרי, $4.30
כן, $4.30 ללוח שכולל בקר וחיבור צריבה/דיבאג ב- USB.
המחיר, דרך אגב כולל משלוח מהיר לארץ,
וכן, TI מפסידה על כל אחד.
הלוחות הראשונים הגיעו רק עם 2K זכרון פלאש ו- 128 בייט RAM, אבל הם מגיעים עכשיו עם 8K פלאש.
אם יש לכם פרוייקט ממש פשוט שנכנס לגודל הזה, זה הפתרון הזול ביותר.
בניגוד לפתרונות למעלה שמשתמשים בסביבת הארדואינו, כאן מדובר על סביבה אחרת לגמרי מבוססת eclipse הנקראת code composer studio.
אפשר למצוא גם ב-buyincoins.com דברים לארדואינו
ובהרבה יותר זול מהאתרים שנתת בכתבה..
(ומשלוח חינם לארץ, כמובן)
תחפש את המילה Arduino באתרים הסיניים,
כמו dealextreme.com
buyincoins.com
וכו'
יש פה משהו לא ברור
מה זה אומר
'בייצוג הקסהדצימאלי בית אחד מכיל שתי ספרות, כלומר הערך הגבוה ביותר לבית הוא 255 בדצימאלי ו 0xFF בהקסהדצימאלי.'
טעות קטנה
"הוא רכיב זיכרון בסיסי המורכב ממספר משתנה של ביטים או בתים. רובנו שמענו את המושג מעבד 32-bit או מעבד 64-bit אבל מה המשמעות של המושג הזה? המשמעות היא שהאוגרים הגדולים ביותר במעבד יכולים להכיל לכל היותר 32 או 64 סיביות או לחילופין 8 או 16 בתים בהתאמה."
צריך להיות רשום "4 או 8 בתים בהתאמה".