PDA

צפייה בגרסה מלאה : מדידת מתח רשת (220 וולט) על ידי ESP8266 ו-openenergymonitor



איזי
16-06-2021, 13:35:59
מסקרן אותי אם יש מישהו שמכיר דרך למדוד ברמת דיוק סבירה את מתח הרשת על ידי שימוש ב-ESP8266.
אני משתמש בסיפרייה EmonLib.h - https://github.com/openenergymonitor שעובדת מצויין עם ארדואינו Uno. ניסיון לבצע מדידה דומה עם ESP לא עובדת.

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

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

ותמונה של הסטאפים למרות שזה לא ממש יכול לעזור במקרה הזה :)

151847

foont
18-06-2021, 13:21:56
הייתי בודק כמה דברים:
1.נניח שיש קריאה לפונקציה שמודדת את המתח בתוך לולאה.
חייבים לשים בלולאה גם פקודת (1)delay או ()yield שמאפשרת למערכת ההפעלה לבצע את התחזוקה שלה.
2. צריך לוודא שאין בקוד לולאה שממתינה זמן רב בלי לקרוא לפקודות שבסעיף 1.
3. לשים קבל גדול על אספקת המתח.
בהצלחה.

איזי
18-06-2021, 14:47:47
לכל הפונקציות שאני כתבתי, הוספתי delay(50) ליתר ביטחון.
בתמונה שהוספתי אפשר לראות את הקבל בכניסה, הוא נמצא אחרי מחלק מתח. קבל אחד בגודל של 10 מיקרו פארד ואחד בגודל של 4.7 מיקרו פארד. בגיטהאב של הסיפרייה ישנה המלצה להשתמש בקבל בגודל שבין 1 ל-10 מיקרו פארד.

הקריאה לפונקציה שמחשבת את הזרם, מתח ומקדם הספק נראית כך:

emon1.calcVI(20,2000); // Calculate all. No.of half wavelengths (crossings), time-out

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

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

איזי
18-06-2021, 15:55:59
עוד קצת מידע, הקוד אכן מתרסק בשורה הזו:

emon1.calcVI(20,2000);


מחקתי את כל מה שרלוונטי לסיפרייה הזו והשורה הזו גורמת להודעת השגיאה הבאה:

--------------- CUT HERE FOR EXCEPTION DECODER ---------------

Soft WDT reset

>>>stack>>>

ctx: cont
sp: 3ffffd60 end: 3fffffc0 offset: 01a0
3fffff00: 40229366 60000a00 c063f7d4 00000000
3fffff10: 000e000e 000e000e 40100469 00000000
3fffff20: 00000000 00000007 402372cc 3a4b9565
3fffff30: 40204227 806237fc 3ffee600 0000049b
3fffff40: 3ffee748 c063f7d4 3a4b9565 40202bb5
3fffff50: 00000007 000007d0 00000c3e 00000014
3fffff60: 453d0280 c063f2d6 00000007 4917d6f0
3fffff70: 4001c52a 00000004 3ffee944 4020304c
3fffff80: 402041b1 000003e8 3ffee9ac 3ffee9ac
3fffff90: 3fffdad0 00000000 3ffee944 4020113a
3fffffa0: feefeffe feefeffe 3ffee998 40203640
3fffffb0: feefeffe feefeffe 3ffe87d8 40100e69
<<<stack<<<

--------------- CUT HERE FOR EXCEPTION DECODER ---------------

ets Jan 8 2013,rst cause:2, boot mode:(3,6)

load 0x4010f000, len 3460, room 16
tail 4
chksum 0xcc
load 0x3fff20b8, len 40, room 4
tail 4
chksum 0xc9
csum 0xc9
v000453e0
~ld



על מה זה רומז?