Përmbajtje:
- Hapi 1: Demonstrim
- Hapi 2: Burimet e përdorura
- Hapi 3: Diagrami i Bllokut
- Hapi 4: Skema
- Hapi 5: LM386 - Mbërthimi
- Hapi 6: AmpOp - Diferencial (zbritës)
- Hapi 7: AmpOp - Inverter Adder
- Hapi 8: Maple Mini - Krasitje
- Hapi 9: Maple Mini - Mbërthimi - a / D Përdoret në Regjistrim
- Hapi 10: Asambleja
- Hapi 11: Grafiku me të dhënat e marra
- Hapi 12: Llogaritja e vlerës së RMS
- Hapi 13: Kodi Burimor
- Hapi 14: Skedarët
Video: Matja e Tensionit AC të Vërtetë-RMS: 14 Hapa
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:23
Sot, ne do të përdorim STM32 Maple Mini për të bërë një lexim AC. Në shembullin tonë, ne do të marrim vlerën RMS të rrjetit të energjisë. Kjo është shumë e dobishme për ata që duan të monitorojnë rrjetin elektrik për Internetin e Gjërave. Më pas do të krijojmë një aplikacion duke përdorur fuqinë llogaritëse të Maple Mini, do të aplikojmë një qark elektronik të aftë për të lejuar marrjen e një sinjali 127Vac, si dhe të aplikojmë llogaritjen e katrorit mesatar të rrënjës (RMS) në mostra.
Hapi 1: Demonstrim
Në asamblenë tonë sot, ne kemi STM32, përveç qarkut tonë analog për të bërë hyrjen e 110. Për të shmangur goditjet, izoloni rezistencën që po hyn me 110.
Qarku është mjaft i ndjeshëm. Po futem me 110, por e zvogëloj atë 168 herë duke përdorur ndarësin e tensionit dhe e vendos në amplifikatorin operacional, i cili ka disa funksione.
Ne gjithashtu kemi disa kondensatorë opsionalë për filtrimin e burimit. Nëse burimi juaj është i një cilësie të mirë, nuk keni nevojë t'i përdorni ato.
Hyrja AD llogaritet përmes oshiloskopit, në të cilin shihni një sinusoid, i cili nuk është 110 (por është i formuar mirë). Një gjë tjetër është se tensioni në rrjetin tonë elektrik nuk është 110 (në fakt është 127 volt). Por ndërsa po kalojmë një stabilizues, ai do të përshtatet në 115V.
Vlera e shfaqur në monitorin serik është ajo që llogaritet në RMS, domethënë ajo e identifikuar nga Matësi Fluke.
Hapi 2: Burimet e përdorura
• Kërcyesit
• Një Maple Mini
• Protoboard
• Një përforcues LM386
• Një burim simetrik (+ 5V dhe -5V)
• Një trimpot me 10 kthesa me shumë kthesa (ose potenciometër)
• Katër kondensatorë prej poliesteri 100nF
• Tre rezistente 10k
• Katër rezistencë 470k
• Një rezistencë 5k6
• Një diodë zener 1n4728A
Hapi 3: Diagrami i Bllokut
Hapi 4: Skema
Ky është një qark që kam zhvilluar bazuar në specifikimet që besoj se janë më të mirat për këtë matje, por ka disa shembuj të tjerë që mund të gjenden në internet.
Hapi 5: LM386 - Mbërthimi
LM386 ka dy përforcues për kondicionimin ose përforcimin e sinjalit.
Hapi 6: AmpOp - Diferencial (zbritës)
Hapi 7: AmpOp - Inverter Adder
Hapi 8: Maple Mini - Krasitje
Kunjat e shënuara në:
E kuqe >> 3V3 Tolerante
E gjelbër >> Tolerancë 5V
Hapi 9: Maple Mini - Mbërthimi - a / D Përdoret në Regjistrim
Theksoj këtu se kunja që kam përdorur është D11 që (në nomenklaturën e STMicroelectronics) është PA0.
Hapi 10: Asambleja
Për qarkun tonë, do t'ju duhet një burim simetrik, si ai që kemi krijuar për këtë projekt. Përndryshe, do t'ju duhen dy burime.
Hapi 11: Grafiku me të dhënat e marra
Hapi 12: Llogaritja e vlerës së RMS
Hapi 13: Kodi Burimor
Kodi burim - Përkufizimet dhe konstantet
Në fillim, ne përcaktuam leximin e pinit si D11, si dhe konstantet e ndryshme të përdorura në llogaritjet.
#define leituraTensao 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; // rezultati em 0, 514 artikuj para cada atualização
Kodi burim - Variablat globale
Tani, ne përcaktojmë disa ndryshore globale.
noton Vrms = 0.0; // armazena o valor rms da tensãofloat Vmax = 0.0; // armazena o valor máximo deteado float Vmin = 10000.0; // armazena o valor mínimo deteado float Vmed = 0.0; // armazena o valor médio entre Vmáx e Vmín
Kodi Burim - Konfigurimi ()
Filloni portën serike me 1 Mbps. Ne e rregulluam portën AD si hyrje dhe pritëm 5 sekonda para se të fillojmë të mbledhim të dhëna. Koha e gatishmërisë është fakultative.
void setup () {Serial.begin (1000000); // inicia a porta serial em 1Mbps pinMode (leituraTensao, INPUT); // ajusta a porta do AD como entrada vonesë (5000); // aguarda 5s antes de iniciar a coleta. (opcional)}
Kodi Burim - Loop () - Fillon variablat e mbledhjes së të dhënave
Në lak, ne kemi ndryshoren për përsëritje. Këtu, ne gjithashtu ruajmë leximet e AD në 0.0 dhe rinisim ndryshoren VRMS gjithashtu në 0.0.
lak void () {int i = 0; // variável para iteração float leitura = 0.0; // armazena si leituras AD Vrms = 0.0; // reinicia a Vrms të ndryshme
Kodi Burim - Kap dhe ekzekuton llogaritjet individuale për secilën mostër
Në këtë fazë, nëse i jam më i vogël se mostra, ne fillojmë një cikël kampionimi derisa të arrij numrin e mostrave. Ne drejtojmë analogRead për të lexuar portën analoge dhe për të llogaritur shumën e katrorëve të tensioneve të lexuara. Së fundi, ne e rrisim përsëritësin.
ndërsa (i <amostras) {// inicia um ciclo de amostragem até que i alcance o número de amostras leitura = analogRexo (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 ++; // rritje e iteradorit}
Kodi burim - Llogaritjet e përgjithshme të mostrave dhe identifikimi i maksimumit, minimumit dhe mesatares
Ne aplikojmë faktin e shumëzimit për të përcaktuar vlerën aktuale të tensioneve. Ne zbulojmë nëse vlera është maksimale apo minimale, dhe llogarisim mesataren e vlerave maksimale dhe minimale aktuale.
// Apliko fator de multiplicação për përcaktues ose vlera reale të tensioneve Vrms = (sqrt (Vrms /amostras)) * fatorMultiplicacao; // zbulo se é um or valor é máximo if (Vrms> Vmax) {Vmax = Vrms; } // detea 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;
Kodi Burim - Opsionet e Daljes
Ne kemi tre mundësi për "vizatimin" e vlerës së daljes. Ne kemi dalje të formatuar në komplotuesin serik Arduino IDE, si CSV ose Jason.
// sajta për formatin serik të serisë IDE Arduino Serial.print (Vrms, 3); Serial.print (","); Serial.print (Vmax, 3); Serial.print (","); Serial.print (Vmin, 3); Serial.print (","); Serial.println (Vmed, 3); /* // saída formatada como json Serial.print ("{" instante (ms) ":"); Serial.print (millis ()); 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 ("}"); * / /* // formatimi i mëparshëm i CSV Serial.print (millis ()); Serial.print (","); Serial.print (Vrms, 3); Serial.print (","); Serial.print (Vmax, 3); Serial.print (","); Serial.print (Vmin, 3); Serial.print (","); Serial.println (Vmed, 3); */}
Hapi 14: Skedarët
Shkarkoni skedarët:
INO
Recommended:
Matja e frekuencës dhe tensionit të furnizimit me energji duke përdorur Arduino: 6 hapa
Matja e frekuencës dhe tensionit të furnizimit me energji duke përdorur Arduino: Hyrje: Qëllimi i këtij projekti është të matë frekuencën dhe tensionin e furnizimit, i cili është midis 220 deri 240 Volt dhe 50Hz këtu në Indi. Kam përdorur një Arduino për kapjen e sinjalit dhe llogaritjen e frekuencës dhe tensionit, ju mund të përdorni çdo mikrokontroll tjetër
Matja e tensionit DC duke përdorur Arduino: 5 hapa
Matja e Tensionit DC Duke përdorur Arduino: Në këtë projekt do t'ju tregoj se si të matni tensionin DC deri në 50v duke përdorur arduino dhe dhe të shfaqet në modulin e ekranit OLED pjesa ka nevojë për arduino ekran të pa -ftohur 10k ohm rezistencë 1k ohm rezistencë kabllo jumper
Furnizimi me energji DC i Tensionit të Rregullueshëm Duke përdorur Rregullatorin e Tensionit LM317: 10 Hapa
Furnizimi me Rrymë i Tensionit i Rregullueshëm Duke Përdorur Rregullatorin e Tensionit LM317: Në këtë projekt, unë kam hartuar një furnizim të thjeshtë me tension të rregullueshëm DC duke përdorur IC LM317 me një diagram qarkor të furnizimit me energji LM317. Meqenëse ky qark ka një ndreqës të integruar të urës, kështu që ne mund të lidhim drejtpërdrejt furnizimin AC 220V/110V në hyrje.
Matja e tensionit duke përdorur Arduino: 5 hapa
Matja e tensionit duke përdorur Arduino: Matja e tensionit është mjaft e lehtë duke përdorur çdo mikrokontrollues në krahasim me matjen e rrymës. Matja e tensioneve bëhet e nevojshme nëse punoni me bateri ose dëshironi të bëni furnizimin tuaj me energji të rregullueshme. Edhe pse kjo metodë zbatohet
Matja e tensionit DC me Arduino dhe Node-RED: 8 hapa (me fotografi)
Matja e Tensionit DC Me Arduino dhe Node-RED: Ka shumë mësime për matjen e tensionit DC me Arduino, në këtë rast kam gjetur një tutorial që e konsideroj metodën më të mirë funksionale për të matur DC pa kërkuar vlera hyrëse të rezistencës, kërkon vetëm njëfarë rezistence dhe një multimetër,