Përmbajtje:

Matja e Tensionit AC të Vërtetë-RMS: 14 Hapa
Matja e Tensionit AC të Vërtetë-RMS: 14 Hapa

Video: Matja e Tensionit AC të Vërtetë-RMS: 14 Hapa

Video: Matja e Tensionit AC të Vërtetë-RMS: 14 Hapa
Video: Измерение THD с помощью аудиоинтерфейса USB и программного обеспечения ARTA 2024, Korrik
Anonim
Image
Image
Demonstrim
Demonstrim

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

Burimet e Përdorura
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

Bllokimi i Diagramit
Bllokimi i Diagramit

Hapi 4: Skema

Skema
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 - Mbërthim
LM386 - Mbërthim

LM386 ka dy përforcues për kondicionimin ose përforcimin e sinjalit.

Hapi 6: AmpOp - Diferencial (zbritës)

AmpOp - Diferencial (zbritës)
AmpOp - Diferencial (zbritës)

Hapi 7: AmpOp - Inverter Adder

AmpOp - Inverter Adder
AmpOp - Inverter Adder

Hapi 8: Maple Mini - Krasitje

Maple Mini - Fletore
Maple Mini - Fletore

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

Maple Mini - Mbërthimi - a / D Përdoret në Regjistrim
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

Kuvendi
Kuvendi

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

Grafiku Me të dhënat e marra
Grafiku Me të dhënat e marra

Hapi 12: Llogaritja e vlerës së RMS

Llogaritja e vlerës së RMS
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:

PDF

INO

Recommended: