התקן חדש ומיוחד במינו, שמאפשר לנו לראות ולמדוד בדיוק כמה אנרגיה המערכת שלנו צורכת – ברזולוציה גבוהה ובאופן רציף, על פני כל מצבי הפעולה והתפקוד שלה.
באחוז ניכר מהפרויקטים שלי ללקוחות, וגם בחלק מהפרטיים, לצריכת החשמל היה משקל משמעותי. במערכת שפועלת על סוללות וצריכה לעבוד זמן ממושך, כל מיליאמפר של צריכה הוא קריטי, ומאמץ רב מושקע בניסיון לצמצם אותה. זה אומר בחירה זהירה של רכיבים, נבירה באינספור גליונות נתונים, הרבה חישובים והערכות, לא מעט פשרות – וכמובן, מדידות.
בכל תחום, מדידה היא תמיד הקריטריון הסופי והקובע. אך דווקא בתחום החשוב הזה של צריכת אנרגיה, המדידה היא כלל לא מובנת מאליה. זה נכון שכל מולטימטר זול וכל ספק כוח שולחני בסיסי כוללים פונקציה של מדידת זרם, אבל חלקם לא מדויקים כלל, ואלה שכן מדויקים סובלים מבעיה קשה עוד יותר של טווח דינמי (dynamic range).
השיטה הישירה למדידת זרם אמורה להיות מוכרת היטב לכל קוראי הבלוג הזה. שמים נגד בטור למערכת, מודדים כמה מתח נופל עליו בזמן שהיא עובדת, מחלקים את המתח הזה בהתנגדות ומקבלים את הזרם. זה יעבוד היטב כל עוד טווח הזרמים שהמערכת צורכת מוגבל. ברגע שהמערכת תקפוץ לרמת צריכה גבוהה משמעותית (למשל, תפעיל סולנואיד למספר שניות), המתח שנופל על הנגד יגדל עד כדי כך שזה יפגע בתפקוד המערכת. אפשר להתמודד עם זה באמצעות בחירת נגד עם ערך נמוך מאוד, עשיריות אוהמים ומטה, אבל אז צצה בעיה הפוכה: כשהצריכה של המערכת תהיה נמוכה מאוד, למשל במצב שינה, מפל המתח על הנגד ייעשה כל כך זעיר שאין לנו דרך מעשית למדוד אותו. כמו שמיכה קצרה מדי בלילה חורפי, אם ננסה להשיג רזולוציה גבוהה טווח הזרמים יצטמצם לנו, ולהיפך. במערכות מודרניות, שעוברות חופשי ממיקרו- ואפילו נאנו-אמפרים לאמפרים שלמים תוך כדי פעולתן השגרתית, זו בעיה קשה.
הפתרונות הקיימים בשוק, לפחות אלה שנמצאים בהישג ידו וכיסו של המייקר הטיפוסי, היו פתרונות חלקיים שמתפשרים על אחד מהפרמטרים. הם עדיין יכולים להיות שימושיים, אם מבינים את המגבלות שלהם, ועם זאת הם לא מתקרבים לרמת השימושיות והדיוק של מכשירים כמו סקופ או לוג'יק אנלייזר. עד שהופיע ה-Joulescope.
התקן זה נולד כקמפיין קיקסטארטר של מאט ליברטי, מפתח אמבדד ממרילנד שבארה"ב. מאט הכיר את הבעיה היטב וידע שמצד אחד, אי אפשר לעקוף אותה כל עוד משתמשים בנגד יחיד: חייבים שיהיו "בהיכון" מספר נגדים שונים, לעומסים שונים. מצד שני, כדי לדלג בין הנגדים האלה בזמן אמת בלי שזה יפגע בתפקוד המערכת הנמדדת, חייבים חומרה חכמה, מדויקת ומהירה מאוד. וזה בדיוק מה שהוא תכנן ובנה. ה-Joulescope הוא קופסה שמתחברת בין ספק הכוח (או הסוללה) לבין המערכת הנמדדת, ובנוסף למחשב דרך USB (תקן 2.0, בחיבור מבודד חשמלית) בשביל הנתונים. הוא מודד את המתח ואת צריכת הזרם בקצב גבוה, כשני מיליוני דגימות בשנייה, ומגיב במהירות גדולה כל כך לשינויים – תוך מיליונית השנייה בערך – שהקפיצה בין הנגדים הופכת לשקופה מבחינת מקור החשמל והמערכת. כך מושגת מדידה מדויקת על פני טווח עצום שמכסה כתשעה סדרי גודל, מנאנו-אמפרים ספורים ועד ל-3A (ואפילו יותר אם אלה פולסים קצרים).
המדידה הזו היא רק חצי מהסיפור, כי יהיה לנו קשה מאוד לעבוד עם המספרים הגולמיים נטו. לשם כך, מאט יצר גם תוכנה ל-Joulescope, שמראה את התוצאות גרפית בזמן אמת, ומאפשרת להקליט מדידות, לבדוק ערכים בנקודות זמן ספציפיות ולחשב נתונים כמו ממוצעים וצריכת אנרגיה כוללת על פני פרקי זמן לבחירת המשתמש.
כפי שציינתי בכותרת, בשביל חובבים מדובר בעסק יקר מאוד: $800 לפני משלוח ומיסים. התלבטתי הרבה מאוד זמן בקשר לרכישה, גם לפני שנה כשזה עוד היה בקיקסטארטר וזול במאות דולרים (לתומכים מהירי-החלטה). לא רציתי להיתקע עם פרויקט כושל או מוצר אפוי-למחצה, כפי שקורה לעתים במימון המונים, ולא ידעתי אם ה-Joulescope יצדיק מבחינתי את ההשקעה.
עם הזמן הגיעו ביקורות חיוביות, ההתקן צלח את שלב מימון ההמונים והפך למוצר "רגיל", ואפילו השתכלל – נוספו לו יציאות GPIO סופר-שימושיות לטריגרים למערכת הנמדדת וממנה, והתוכנה ממשיכה להתעדכן. אז ברגע שהצלחתי לשים בצד מספיק כסף הזמנתי אותו. כמעט חטפתי התקף לב כשחברת השילוח טענה שזה "ייצוא חוזר" (?!), הרצתי אימיילים, שילמתי הרבה-הרבה מיסים ועמלות, והנה הוא כאן.
ה-Joulescope מגיע בנרתיק קשיח מרשים וגדול מדי: חצי מהנפח הוא מקום פנוי לפאנלים חלופיים. הפאנל שמגיע עם המכשיר הוא עם חיבורי "בננה", ואפשר לקנות אחרים (USB, BNC ו-Binding post) בתשלום נוסף. באריזה היה גם כבל USB שנראה איכותי, ומברג קטן בשביל להחליף פאנלים (…) או סתם לפתוח את המכשיר. את התוכנה למחשב, שהיא אגב בקוד פתוח, מורידים מכאן. אספתי כמה כבלים ופלאגי בננה, והכנתי מעגל קטן לבדיקה.
המעגל שלי מבוסס על מיקרו-בקר PIC12F1840, עם קוד שאולתר בזריזות. הוא מבצע שלוש פעולות שונות במחזוריות, כשבין כל פעולה לפעולה יש כשנייה של שינה (ההתעוררות מהשינה נעשית באמצעות ה-Watchdog הפנימי). הפעולה הראשונה היא סתם delay של חמש אלפיות שנייה (במהירות שעון של 500KHz), הפעולה השנייה היא כתיבה של שלושה בייטים לכתובות שונות ב-EEPROM, והשלישית היא הפעלה – בתיווך טרנזיסטור – של לדים לבנים שצורכים 200mA, למשך 25 אלפיות שנייה. לא הטווח המלא של ה-Joulescope, אבל נתח נכבד ממנו, וכזה שפתרונות אחרים לא יכולים למדוד בנוחות.
הנה הגרפים המלאים שהתוכנה יצרה במשך כ-30 שניות. אפשר להתמקד ולהתרחק מהם עם גלגלת העכבר, גם בזמן אמת וגם אחרי סיום ההקלטה. הגרף העליון הוא הזרם, התחתון הוא המתח. הקווים האדומים הם גבולות המדידות, והצהובים הם הממוצע; כשמתמקדים מספיק, האדומים נעלמים לגמרי מהתמונה כי אין מה למצע.
מ"מרחק" כזה רואים רק את שיאי הצריכה, כלומר ההדלקות של הלדים. אם נתמקד בשטח שבין שני שיאים כאלה, ציר Y יתאים את עצמו אוטומטית (אפשר גם ידנית אם רוצים) ופעולות הצריכה העדינות-יותר יופיעו. נתמקד בפעולת הצריכה המינימלית של ה-delay ונוסיף סביבה סמן כפול (הקווים הירוקים, איתם ניתן לסכם מדדים לפי טווח):
ליד הסמן הימני כתובים כל המדדים המחושבים על פרק הזמן שסומן. הצריכה הממוצעת הייתה כ-0.214 מיליאמפר, והזמן כצפוי הוא 5 אלפיות שנייה, פלוס הזמן שנדרש למיקרו-בקר להתעורר משינה. נתמקד כעת בגרף של הפעולה הבאה, הכתיבה ל-EEPROM:
ראשית, אנחנו רואים מייד כמה זמן נדרש לכל העסק – מידע שאינו מובן מאליו (גם אם נקרא ב-Datasheet כמה זמן לוקחת כתיבה נטו, אנחנו לא תמיד יודעים כמה פעולות הקומפיילר והמיקרו-בקר יבצעו מאחורי הקלעים). צריכת הזרם הממוצעת היא 0.28mA, ויש שישה שיאים (סמן נוסף, שלא מופיע בתמונה, גילה שהם מגיעים עד 2mA). ציינתי שבשלב הזה מבוצעות שלוש כתיבות בלבד, אז למה שישה שיאים? כנראה כי כל כתיבה ל-EEPROM למעשה מתחלקת לשני שלבים, מחיקה (כל הביטים הופכים ל-1) וכתיבה (שינוי של הביטים הרלוונטיים בלבד ל-0). עד שראיתי את הגרף הזה בעצמי, לא חשבתי בכלל על הנקודה הזו ועל המשמעות שלה מבחינת צריכת חשמל! נעבור לגרף של הדלקת הלדים:
אם תסתכלו ממש טוב משמאל, אפשר לראות את התנודה הזעירה של התעוררות המיקרו-בקר, ומיד אחריה הפסגה השטוחה של 204.85mA למשך 25 אלפיות שנייה. בגרף התחתון רואים גם את נפילת המתח – כ-0.032 וולט, אולי בגלל שהשתמשתי בחוטי חשמל דקים בדרך בין ספק הכוח למעגל. וכבונוס, התוכנה מראה לנו גם כמה מטען נוצל בתהליך – 5.2336 מילי-קולון!
בתוכנה יש עוד כמה אופציות מעניינות: תצוגת Multimeter שנותנת ערכים מספריים בזמן אמת, עניין ה-GPIO שלא נגעתי בו כאן, בחירת צבעים לממשק ועוד. הממשק אינטואיטיבי לכל מי שעבד עם סקופ או לוג'יק אנלייזר – לא הייתי צריך אפילו להסתכל במדריך למשתמש, ויש כזה.
לסיכום, ה-Joulescope הוא מכשיר רציני ומושקע, שעובד היטב מהקופסה ושימושי ביותר למי שחייב לספור נאנו, מיקרו, מילי ואמפרים שלמים במעגלים שלו. מי שלא חייב, שיחשוב טוב לפני שהוא מתפתה להוציא סכום כזה: יש המון דברים שימושיים אחרים שמייקר יכול לקנות בשמונה-מאות דולרים.
באמת מוצר מרשים שמציע יכולות מדידת זרם/הספק שעד עכשיו לא היו במחיר כזה. רלוונטי בעיקר למוצרים שפועלים על סוללות אבל לא רק (דוגמה בהמשך). המחיר אולי יקר לחובבים אבל כל מי שמתפרנס מפיתוח (ולא רק חברות עתירות תקציב) יכול להחזיר את מחיר המוצר בפרויקט אחד. ובהחלט אני יכול לראות איך במשך השנים הייתי יכול לחסוך הרבה זמן עם דבר כזה על המדף… קצב הדגימה ורוחב הפס לא מספיק בתור סקופ בפני עצמו (אלא אם כן יש אפשרות לשפר את הביצועים על חשבון מדידת זרם וחישובי הספק) אבל לצורך מדידות זרם ומעקב אחרי פעולות שונות של המעבד – כלי מצוין. שימוש… לקרוא עוד »
כן, מהירות הדגימה לא מספיקה כדי להשתמש במדידת המתח של ה-Joulescope בתור סקופ "רגיל" ראוי לשמו. אין דרך לשנות את זה – למעשה אני חושב שחישובי ההספק נעשים במחשב, לא ביחידה הפיזית, וכל כוח העיבוד שלה מוקדש לניהול הדגימות מה-ADC והחלפת הנגדים.
אפשר בהחלט להיעזר במכשיר ל-reverse engineering של כל מיני דברים, למעשה כבר עשיתי כמה ניסויים קטנים בתחום, אולי אספר עליהם בהמשך.