האקינג למחוונים אנלוגיים: חוק אוהם בפעולה

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

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

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

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

כאשר הטווח של המחוון תואם לזה של ארדואינו, כל מה שאנחנו צריכים זה לשלוח אות PWM למחוון: זמן התגובה של המחוון נמוך בהרבה מתדר ה-PWM, כך שהמחוג מראה לנו בעצם את המתח הממוצע של האות, ואנחנו יכולים לשלוט בו ברזולוציה של 1/255 מהטווח (או כ-19.61 מיליוולט) . אבל מה עושים אם הטווח נמוך יותר משמעותית? נניח שיש לנו מד מתח אנלוגי שמיועד לטווח 0-0.5V. אנחנו יכולים לתת לו אות PWM עם Duty Cycle של 0-25 כדי להניע אותו מקצה לקצה, אבל כדי להשיג רזולוציה מקסימלית עדיף להעביר את האות מהארדואינו דרך מחלק מתח שייתן לנו יחס של 1:10. איך עושים את זה?

התאמת טווח מתחים

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

R1 = R2 * Vin / Vout – R2

R1 = 1000 * 5 / 0.5 – 1000

R1 = 9000

לעתים קרובות לא יהיה לנו נגד בדיוק בערך המתאים. כאן קיט נגדים גדול יכול לעזור, כי גם אם אין בו ערך כזה, אפשר למצוא ערכים אחרים שייתנו לנו את הערך הדרוש אם נחבר אותם בטור או במקביל (אפשר לחבר כמובן גם במקביל ל-R2 הפנימי, אם זה מקל על החישובים). כדי לקצר תהליכים, הקלידו "parallel resistor calculator" במנוע החיפוש הקרוב לביתכם.

מתח שלילי

בסרטון למעלה, המחוון שמימין יוצא דופן לא רק במבנה, אלא גם בזה שהוא מותאם למתחים של מינוס 1 וולט עד פלוס 1 וולט. כדי ליצור מתח שלילי עבור המחוון הזה, אופציה אחת היא להיעזר בשני פינים של ארדואינו, שיחליפו ביניהם את התפקידים של "פלוס" ושל "אדמה" במקרה הצורך. אופציה נוספת היא להשתמש ביציאות ה-GND וה-5V הקבועות של הארדואינו, ולחבר אותן למחלק מתח שנותן בדיוק 2.5V. את המתח הזה נזין למחוון בתור אדמה, ואת אות ה-PWM נשלח כרגיל דרך מחלק מתח אחר, שיצמצם את הטווח ב-60% לערך – מטווח של מינוס עד פלוס 2.5V לטווח של מינוס עד פלוס 1V.

זהירות, מוקש!

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

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

2 תגובות בנושא “האקינג למחוונים אנלוגיים: חוק אוהם בפעולה”

    1. הוא שייך ללקוח, אבל אני אברר אם הוא מוכן להיפרד ממנו… שלח לי מייל מכתובת אמתית ל-info@idogendel.com כדי שאוכל להודיע לך.

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *