תוכן עניינים:
- שלב 1: הפגנה
- שלב 2: שימוש במשאבים
- שלב 3: חסום תרשים
- שלב 4: תכנית
- שלב 5: LM386 - הצמדה
- שלב 6: AmpOp - דיפרנציאלי (מפחית)
- שלב 7: AmpOp - Adder Adder
- שלב 8: מייפל מיני - פינס
- שלב 9: מייפל מיני - הצמדת - A / D בשימוש בלכידה
- שלב 10: הרכבה
- שלב 11: גרף עם הנתונים המתקבלים
- שלב 12: חישוב ערך ה- RMS
- שלב 13: קוד המקור
- שלב 14: קבצים
וִידֵאוֹ: מדידת מתח AC-RMS אמיתי: 14 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:16
היום נשתמש ב- 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 שני מגברים להתניה או להגברת אותות.
שלב 6: AmpOp - דיפרנציאלי (מפחית)
שלב 7: AmpOp - Adder Adder
שלב 8: מייפל מיני - פינס
סיכות מסומנות ב:
אדום >> 3V3 סובלני
ירוק >> 5V סובלני
שלב 9: מייפל מיני - הצמדת - A / D בשימוש בלכידה
אני מדגיש כאן שהסיכה שבה השתמשתי היא ה- D11 ש (במינוח STMicroelectronics) הוא ה- PA0.
שלב 10: הרכבה
עבור המעגל שלנו, תזדקק למקור סימטרי, כמו זה שיצרנו לפרויקט זה. אחרת, תזדקק לשני מקורות.
שלב 11: גרף עם הנתונים המתקבלים
שלב 12: חישוב ערך ה- 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: קבצים
הורד את הקבצים:
INO
מוּמלָץ:
מדידת זמן (שעון מדידת סרט): 5 שלבים (עם תמונות)
מדידת זמן (שעון מדידת סרט): לפרויקט זה לקחנו (אלכס פיל ואנה לינטון) כלי מדידה יומיומי והפכנו אותו לשעון! התוכנית המקורית הייתה להניע סרט מדידה קיים. בכך, החלטנו שיהיה קל יותר ליצור מעטפת משלנו לשימוש
ממיר מתח DC למטה מתח מתח DC (LM2576/LM2596): 4 שלבים
DC-מתג הורדת מתח למטה Buck ממיר מתח באק (LM2576/LM2596): הכנת ממיר באק יעיל ביותר היא עבודה קשה ואפילו מהנדסים ותיקים דורשים עיצובים מרובים כדי להגיע לאחד הנכון. ממיר באק (ממיר הורדה) הוא ממיר מתח DC-to-DC, שמוריד את המתח (תוך הגברת
מדידת מתח DC באמצעות Arduino: 5 שלבים
מדידת מתח DC באמצעות Arduino: בפרויקט זה אראה לך כיצד למדוד מתח DC עד 50v באמצעות arduino ולהציג על חלק מודול תצוגה OLED צריך display arduino UNOoled 10k ohm resistor1k ohm resistorjumper כבל
מדידת מתח באמצעות Arduino: 5 שלבים
מדידת מתח באמצעות Arduino: מדידת מתח היא קלה למדי באמצעות כל מיקרו -בקר לעומת מדידת הזרם. מדידת מתח הופכת נחוצה אם אתה עובד עם סוללות או שאתה רוצה ליצור אספקת חשמל מתכווננת בעצמך. למרות ששיטה זו מיישמת
מדידת מתח DC עם Arduino ו- Node-Red: 8 שלבים (עם תמונות)
מדידת מתח DC עם Arduino ו- Node-RED: יש הרבה מדריכים למדידת מתח DC עם Arduino, במקרה הזה מצאתי הדרכה שאני מחשיב כשיטה הפונקציונלית הטובה ביותר למדידת DC מבלי לדרוש ערכי קלט של התנגדות, רק דורש קצת התנגדות ומולטימטר