כל מיקרו-אמפר קובע: איך לגשת לתכנון מערכות חסכוניות בחשמל

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

איך לחשוב על הסוללה

החישוב הבסיסי ביותר, כשניגשים לפיתוח של מערכת חסכונית, הוא קיבולת הסוללה חלקי הצריכה הממוצעת של המעגל החשמלי. למשל, אם יש לי סוללה עם קיבולת של 1000 מיליאמפר/שעה (mAh) והמעגל צורך 2mA, המערכת תעבוד 500 שעות – בעולם מושלם. ראו הסתייגויות בהמשך.

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

בכל מקרה, חשוב לזכור שסוללות בעולם האמתי מתנהגות אחרת מהאידאל. יש פער בין ההבטחות השיווקיות של היצרנים לבין השטח,  והפער הזה הוא תמיד לרעתנו. לסוללות יש "פריקה עצמית" שגורמת להן לאבד מטען עם הזמן, אפילו אם לא חיברנו אותן לכלום; כאשר צורכים מהן זרם, המתח שלהן יורד – לאט או מהר, תלוי בסוג הסוללה, בכמות הזרם ועוד – עד לרמה שאנחנו כבר לא יכולים לנצל; ובמקומות חמים התפקוד שלהן עוד יותר גרוע. כימות מדויק של כל הפרמטרים האלה הוא משימה קשה ביותר. ככלל אצבע וכמרווח ביטחון ניכר, אני פשוט מניח שהקיבולת האמתית שעומדת לרשותי היא חצי ממה שמוצהר על הסוללה… אלא אם מדובר בסוללה זולה של יצרן לא ידוע, ובמקרה כזה אי אפשר להניח שום דבר בכלל.

(תזכורת למתחילים: כאשר משתמשים ביותר מסוללה אחת, המתח שלהן מצטבר רק אם הן מחוברות בטור, והקיבולת מצטברת רק אם הן מחוברות במקביל.)

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

איך לחשוב על המעגל

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

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

הצריכה של המיקרו-בקר היא קבועה (2). הלד דולק רק 1/60 מהזמן, אז נחלק את הצריכה שלו (10mA) ב-60 ונקבל 0.1667. ב-48 שעות יש 2880 דקות, ומתוכן המשאבה פועלת רק באחת, אז הצריכה הממוצעת של המשאבה היא 300mA/2880, כלומר 0.104. נחבר את כל התוצאות האלה ונקבל שהצריכה הממוצעת של המעגל היא 2.2707 מיליאמפר.

מה שמעניין בתוצאה הזו זה ששני הצרכנים ה"כבדים" כביכול במעגל, המשאבה והלד, אחראים בסופו של דבר רק ל-12% מהצריכה הממוצעת. אפילו אם אמצא לד ומשאבה קסומים שעובדים על אפס אנרגיה, רוב הצריכה עדיין יישאר ללא שינוי. לעומת זאת, אם אצליח "לגלח" רבע מהצריכה של המיקרו-בקר, 0.5 מיליאמפר בסך הכול, אגיע לחיסכון של 22% מהצריכה הכוללת. מתכנתים מנוסים יזהו כאן דמיון לעיקרון ידוע של אופטימיזציה של קוד תוכנה: מוטב לשפר קצת קטע קוד שרץ רוב הזמן, מאשר לשפר מאוד קטע שרץ רק לעתים רחוקות.

שיטות לחיסכון

אחרי שחישבנו ומצאנו את הצרכנים המשמעותיים במערכת, הגיע הזמן למצוא דרכים לייעל אותם. האם אפשר להשיג רכיבים שעושים את אותו הדבר בפחות זרם (והאם ההבדל בין 10mA ל-5mA ללד יהיה ניכר לעין במידה משמעותית)? אם הצרכנים האלה מופעלים לסירוגין, כמו בדוגמה למעלה, האם אפשר לקצר את זמני ההפעלה ולרווח אותם? אם לד ידלוק לחצי שנייה במקום לשנייה, זה ישנה למישהו? ואם משאבה תפעל כל 50 שעות במקום כל 48, העולם ייחרב? לפעמים כן, ובכל זאת כדאי לברר.

ניקח דוגמה עוד יותר מוחשית, של מערכת עם חיישן מרחק אולטרה-סוני HC-SR04. נניח שאני משתמש בחיישן עשר פעמים בשנייה כדי לגלות אם יש מולו מכשול במרחק מטר אחד או פחות. בואו נדמיין מקרה שבו אין שום מכשול עד טווח של עשרה מטרים. במקרה כזה, כפי שהראיתי בפוסט שבקישור, החיישן יחזיר תגובה "אוטומטית" כעבור 20 אלפיות השנייה, שהן שוות ערך ל-3.5 מטרים. אבל מה שמעניין אותי הוא רק הטווח של מטר ומטה, אז בשביל מה לחכות בכלל לדברים רחוקים יותר? במקום לחכות בסבלנות עד לתגובה ולבזבז חשמל, אני יכול לחכות 6 אלפיות השנייה (שווה ערך למטר, פחות או יותר) ואם לא מגיע כלום, לנתק לגמרי את החשמל לחיישן. באותם מקרים שבהם אין שום מכשול זה יחסוך 140 אלפיות שנייה של פעולה (מתוך 200 בכל שנייה) – 70% מצריכת החשמל!

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

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

במיקרו-בקרים חשוב גם לזכור את הנושא של דגימה (polling) לעומת פסיקה (interrupt). אם 99.9% מהזמן המערכת רק מחכה שמשתמש ילחץ על איזשהו כפתור, מיותר לגמרי לכתוב לולאת קוד שבודקת שוב ושוב את פין הקלט מהלחצן: פסיקה שתעיר את המיקרו-בקר משינה בעת שינוי הקלט תהיה יעילה לאין ערוך. אותו הדבר נכון לגבי תקשורת: במיקרו-בקרים מסוימים, פעילות על קו ה-UART יכולה לעורר את הג'וק משינה. בהתאם לחומרה הספציפית, הדבר עלול לגרום לאיבוד של התו הראשון שמגיע וזה בעייתי, אבל אם יש לנו שליטה בפרוטוקול אנחנו יכולים להוסיף תו סתמי בתחילת כל שידור, לצורך הערת המיקרו-בקר, ולחסוך המון חשמל.

צרכנים סמויים

לפני זמן-מה בניתי מערכת קטנה שאמורה להיות חסכונית מאוד בחשמל, ושיש בה – בין השאר – ג'וק "Analog Switch" מדגם SN74HC4066N הישן והטוב. בג'וק הזה יש למעשה ארבעה מעגלי מיתוג נפרדים, כל אחד עם פין שליטה משלו, אבל אני הייתי זקוק לאחד בלבד. כשחיברתי את האחד הזה לפין פלט של מיקרו-בקר במצב שינה, המעגל כולו צרך בסביבות 100 מיקרואמפר. כשהמשכתי וחיברתי את שלושת פיני השליטה הלא-נחוצים לאדמה, פשוט כדי למנוע מהם "לצוף", הצריכה ירדה לפחות מ-10 מיקרואמפר!

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

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

יכולים להיות עוד הרבה צרכני זרם "סמויים", שעשויים לפעול ברציפות או בהתאם למצבים שונים של המעגל, ובלי ניסיון רב קשה לצפות מראש איזה רכיב יעשה בעיות ובאיזה אופן. זה מביא אותנו לנושא האחרון ואולי גם הכי חשוב…

למדוד, למדוד, למדוד

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

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

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

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

שיואו איזה פוסט ארוך

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

להרשמה
הודע לי על
8 תגובות
מהכי חדשה
מהכי ישנה לפי הצבעות
Inline Feedbacks
הראה את כל התגובות

מה הכוונה פיני קלט דיגיטלי צפים?

אז בשביל שהפינים לא יבזבזו חשמל צריך להגדיר אותם כoutput וlow?

אואה זריז, לא ציפיתי.
תודה רבה על התשובה.

שכחת לציין את תדר העבודה בזמן active
ככל שהתדר עותר נמוך הצריכה נמוכה יותר.

טיימינג מושלם!
בדיוק אתמול התחלתי לתכנן מעגל וחשבתי על הנושא. תודה רבה.