תוכן עניינים:

מדידת מתח AC-RMS אמיתי: 14 שלבים
מדידת מתח AC-RMS אמיתי: 14 שלבים

וִידֵאוֹ: מדידת מתח AC-RMS אמיתי: 14 שלבים

וִידֵאוֹ: מדידת מתח AC-RMS אמיתי: 14 שלבים
וִידֵאוֹ: Тестер Bside ZT-M1 [RichMeters RM405B] (Обзор и тест) / Digital Multimeter Test 2024, נוֹבֶמבֶּר
Anonim
Image
Image
הפגנה
הפגנה

היום נשתמש ב- STM32 Maple Mini לביצוע קריאת AC. בדוגמה שלנו, נקבל את ערך RMS של רשת החשמל. זה שימושי מאוד למי שרוצה לעקוב אחר רשת החשמל עבור האינטרנט של הדברים. לאחר מכן ניצור יישום באמצעות כוח החישוב של ה- Maple Mini, ניישם מעגל אלקטרוני המסוגל לאפשר רכישת אות 127Vac, וכן ניישם את חישוב הריבוע ממוצע השורש (RMS) על הדגימות.

שלב 1: הפגנה

באסיפה שלנו היום, יש לנו את ה- STM32, בנוסף למעגל האנלוגי שלנו כדי לבצע את הקלט של 110. כדי למנוע זעזועים, בודד את הנגד שנכנס ב- 110.

המעגל די רגיש. אני נכנס עם 110, אבל אני מפחית אותו 168 פעמים באמצעות מחלק המתח ומכניס אותו למגבר התפעולי, בעל מספר פונקציות.

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

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

הערך המוצג במסך הטורי הוא מה שמחושב ב- RMS, כלומר הערך שזוהה על ידי מד Fluke.

שלב 2: שימוש במשאבים

משאבים בשימוש
משאבים בשימוש

• מגשרים

• מיני מייפל

• פרוטובורד

• מגבר LM386

• מקור סימטרי (+ 5V ו- -5V)

• טרימפוט מרובה סיבובים (או פוטנציומטר) של 10k

• ארבעה קבלים מפוליאסטר 100nF

• שלושה נגדים של 10k

• ארבעה נגדים 470k

• נגד 5k6 אחד

• דיודת זנר 1n4728A אחת

שלב 3: חסום תרשים

תרשים בלוקים
תרשים בלוקים

שלב 4: תכנית

תָכְנִית
תָכְנִית

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

שלב 5: LM386 - הצמדה

LM386 - הצמדה
LM386 - הצמדה

ל- LM386 שני מגברים להתניה או להגברת אותות.

שלב 6: AmpOp - דיפרנציאלי (מפחית)

AmpOp - דיפרנציאלי (מפחית)
AmpOp - דיפרנציאלי (מפחית)

שלב 7: AmpOp - Adder Adder

AmpOp - Adder Adder
AmpOp - Adder Adder

שלב 8: מייפל מיני - פינס

מייפל מיני - פינס
מייפל מיני - פינס

סיכות מסומנות ב:

אדום >> 3V3 סובלני

ירוק >> 5V סובלני

שלב 9: מייפל מיני - הצמדת - A / D בשימוש בלכידה

מייפל מיני - הצמדת - A / D משמש ללכידה
מייפל מיני - הצמדת - A / D משמש ללכידה

אני מדגיש כאן שהסיכה שבה השתמשתי היא ה- D11 ש (במינוח STMicroelectronics) הוא ה- PA0.

שלב 10: הרכבה

הַרכָּבָה
הַרכָּבָה

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

שלב 11: גרף עם הנתונים המתקבלים

גרף עם הנתונים המתקבלים
גרף עם הנתונים המתקבלים

שלב 12: חישוב ערך ה- RMS

חישוב ערך ה- RMS
חישוב ערך ה- RMS

שלב 13: קוד המקור

קוד מקור - הגדרות וקבועים

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

#define leitura Tensao D11 // AD CH0 no pino PA0 // valor teórico divisor de tensão = 168.85714285714285714286 const float fatorDivisor = 168.40166345742404792461; // valor teórico do ganho de amplificação = 1.0 const float fatorAmplificador = 1.0; // Valor usado na multiplicação da leitura const float fatorMultiplicacao = fatorDivisor * fatorAmplificador; // Valor teórico da Tensão de alimentação Vcc = 3.3V const float Vcc = 3.3; // valor teórico do offset do amplificador = Vcc /2.0; const float offSet = 1.66; // fator teórico da conversão do AD = 3.3 / 4095.0 const float fatorAD = Vcc / 4095.0; const int amostras = 71429; // resulta em 1, 027 segundos para cada atualização // const int amostras = 35715; // resulta em 0, 514 segundos para cada atualização

קוד מקור - משתנים גלובליים

כעת, אנו מגדירים כמה משתנים גלובליים.

לצוף Vrms = 0.0; // armazena o valor rms da tensãofloat Vmax = 0.0; // armazena o valor máximo detectado float Vmin = 10000.0; // armazena o valor mínimo detectado float Vmed = 0.0; // armazena o valor médio entre Vmáx e Vmín

קוד מקור - הגדרה ()

הפעל את היציאה הטורית ב 1Mbps. התאמנו את יציאת AD כקלט וחיכינו 5 שניות לפני שהתחלנו לאסוף נתונים. זמן המתנה הוא אופציונלי.

הגדרת void () {Serial.begin (1000000); // inicia a porta serial em 1Mbps pinMode (leituraTensao, INPUT); // ajusta a porta do AD como entrada delay (5000); // aguarda 5s antes de iniciar a coleta. (אופציונלי)}

קוד מקור - לולאה () - מתחיל את משתני איסוף הנתונים

ב- Loop, יש לנו את המשתנה לאיטרציה. כאן, אנו גם מאחסנים את הקריאות של AD ב- 0.0 ומפעילים מחדש את המשתנה VRMS גם ב- 0.0.

לולאת חלל () {int i = 0; // variável para iteração float leitura = 0.0; // armazena כמו leituras לעשות AD Vrms = 0.0; // reinicia a variável Vrms

קוד מקור - לוכד ומבצע את החישובים הבודדים עבור כל מדגם

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

while (i <amostras) {// inicia um ciclo de amostragem até que i alcance o número de amostras leitura = analogRead (leituraTensao); // lê a porta analógica //Serial.println(leitura); // Descomente se quiser ver o sinal bruto do AD Vrms = Vrms + pow (((leitura * fatorAD) - offSet), 2.0); // calcula a soma dos quadrados das tensões lidas i ++; // incrementa o iterador}

קוד מקור - חישובים כלליים של הדגימות וזיהוי המקסימום, המינימלי והממוצע

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

// Aplicando fator de multiplicação para determinar o valor real das tensões Vrms = (sqrt (Vrms /amostras)) * fatorMultiplicacao; // detecta se é um valor é máximo if (Vrms> Vmax) {Vmax = Vrms; } // detecta se é um valor mínimo if (Vrms <Vmin) {Vmin = Vrms; } // calcula a média dos valores máximo e mínimo atuais Vmed = (Vmax + Vmin) /2.0;

קוד מקור - אפשרויות פלט

יש לנו שלוש אפשרויות "לתכנן" את ערך הפלט. יש לנו פלט המעוצב לפלייטר הסידורי של Arduino IDE, כמו CSV או ג'ייסון.

// פורמט פורמט לפלטר IDE Arduino Serial.print (Vrms, 3); Serial.print (","); Serial.print (Vmax, 3); Serial.print (","); Serial.print (Vmin, 3); Serial.print (","); Serial.println (Vmed, 3); /* // פורמט פורמט comson json Serial.print ("{" instante (ms) ":"); Serial.print (מילי ()); Serial.print (","); Serial.print ("\" Vrms (V) ":"); Serial.print (Vrms, 3); Serial.print (","); Serial.print ("\" Vmax (V) ":"); Serial.print (Vmax, 3); Serial.print (","); Serial.print ("\" Vmin (V) ":"); Serial.print (Vmin, 3); Serial.print (","); Serial.print ("\" Vmed (V) ":"); Serial.print (Vmed, 3); Serial.println ("}"); * / /* // פורמט פורמט CSV Serial.print (מילי ()); Serial.print (","); Serial.print (Vrms, 3); Serial.print (","); Serial.print (Vmax, 3); Serial.print (","); Serial.print (Vmin, 3); Serial.print (","); Serial.println (Vmed, 3); */}

שלב 14: קבצים

הורד את הקבצים:

PDF

INO

מוּמלָץ: