INHOUDSOPGAWE:

Meting van die ware-RMS-wisselspanning: 14 stappe
Meting van die ware-RMS-wisselspanning: 14 stappe

Video: Meting van die ware-RMS-wisselspanning: 14 stappe

Video: Meting van die ware-RMS-wisselspanning: 14 stappe
Video: 4 Wisselspanning 2024, November
Anonim
Image
Image
Demonstrasie
Demonstrasie

Vandag sal ons die STM32 Maple Mini gebruik om 'n AC -lesing te doen. In ons voorbeeld kry ons die RMS -waarde van die kragnetwerk. Dit is baie handig vir diegene wat die elektriese netwerk vir die internet van dinge wil monitor. Ons sal dan 'n toepassing skep met behulp van die rekenkrag van die Maple Mini, 'n elektroniese stroombaan toepas wat die verkryging van 'n 127Vac sein moontlik maak, sowel as die berekening van die gemiddelde gemiddelde vierkant (RMS) op die monsters.

Stap 1: Demonstrasie

In ons vergadering vandag, het ons die STM32, bykomend tot ons analoog kring om die inset van 110 te maak. Om skokke te vermy, isoleer die weerstand wat met 110 ingaan.

Die kring is redelik sensitief. Ek kom met 110 in, maar ek verminder dit 168 keer met die spanningsverdeler en plaas dit in die operasionele versterker, wat verskeie funksies het.

Ons het ook 'n paar opsionele kapasitors vir bronfiltering. As u bron van goeie gehalte is, hoef u dit nie te gebruik nie.

Die AD -inset word bereken deur die ossilloskoop, waarin u 'n sinusvormige 110 sien (maar dit is goed gevorm). 'N Ander ding is dat die spanning in ons elektriese netwerk nie 110 is nie (dit is eintlik 127 volt). Maar aangesien ons 'n stabilisator ondergaan, pas dit aan op 115V.

Die waarde wat op die seriële monitor vertoon word, word bereken in RMS, dit wil sê die waarde wat deur die Fluke Meter geïdentifiseer word.

Stap 2: Hulpbronne gebruik

Hulpbronne gebruik
Hulpbronne gebruik

• Springers

• 'n Maple Mini

• Protoboard

• 'n LM386 versterker

• 'n Simmetriese bron (+ 5V en -5V)

• 'n 10k multi-draai trimpot (of potensiometer)

• Vier kapasitors van 100nF polyester

• Drie 10k weerstande

• Vier 470k weerstande

• Een 5k6 weerstand

• Een 1n4728A zenerdiode

Stap 3: Blokdiagram

Blokdiagram
Blokdiagram

Stap 4: Skema

Skema
Skema

Dit is 'n kring wat ek ontwikkel het, gebaseer op die spesifikasies wat ek meen die beste is vir hierdie meting, maar daar is verskeie ander voorbeelde op die internet.

Stap 5: LM386 - Speld

LM386 - Speld
LM386 - Speld

Die LM386 het twee versterkers vir kondisionering of seinversterking.

Stap 6: AmpOp - Differensiaal (aftrekker)

AmpOp - Differensiaal (aftrekker)
AmpOp - Differensiaal (aftrekker)

Stap 7: AmpOp - Inverter Adder

AmpOp - Inverter Adder
AmpOp - Inverter Adder

Stap 8: Maple Mini - Pinage

Maple Mini - Pinage
Maple Mini - Pinage

Spelde gemerk op:

Rooi >> 3V3 verdraagsaam

Groen >> 5V verdraagsaam

Stap 9: Maple Mini - Pinning - a / D Word gebruik in die vaslegging

Maple Mini - Pinning - a / D Word gebruik in die vaslegging
Maple Mini - Pinning - a / D Word gebruik in die vaslegging

Ek beklemtoon hier dat die pen wat ek gebruik het die D11 is (in die nomenklatuur van die STMicroelectronics) die PA0.

Stap 10: Montering

Vergadering
Vergadering

Vir ons stroombaan benodig u 'n simmetriese bron, soos dié wat ons vir hierdie projek geskep het. Andersins het u twee bronne nodig.

Stap 11: Grafiek met die verkry data

Grafiek met die verkry data
Grafiek met die verkry data

Stap 12: Berekening van die RMS -waarde

Berekening van die RMS -waarde
Berekening van die RMS -waarde

Stap 13: Bronkode

Bronkode - Definisies en konstantes

Aanvanklik definieer ons die penlesing as D11, sowel as die verskillende konstantes wat in die berekeninge gebruik word.

#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; // resulta em 0, 514 segundos para cada atualização

Bronkode - Globale veranderlikes

Nou definieer ons 'n paar globale veranderlikes.

float 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

Bronkode - Opstelling ()

Begin die reekspoort met 1 Mbps. Ons het die AD -poort as invoer aangepas en 5 sekondes gewag voordat ons begin met die insameling van data. Bystandtyd is opsioneel.

ongeldige opstelling () {Serial.begin (1000000); // inisieer 'n portale reeks met 1Mbps pinMode (leituraTensao, INPUT); // ajusta a porta do AD como entrada delay (5000); // aguarda 5s antes de iniciar a coleta. (opsioneel)}

Bronkode - Lus () - Begin die data -insamelingsveranderlikes

In die Loop het ons die veranderlike vir iterasie. Hier stoor ons ook die lesings van AD in 0.0 en herbegin die veranderlike VRMS ook in 0.0.

leemte lus () {int i = 0; // variável para iteração float leitura = 0.0; // armazena as leituras na AD Vrms = 0.0; // reinicia a variável Vrms

Bronkode - Vang en voer die individuele berekeninge vir elke monster uit

In hierdie stadium, as i kleiner is as die monster, begin ons met 'n monsternemingsiklus totdat ek die aantal monsters bereik. Ons voer analogRead uit om die analoogpoort te lees en die som van die kwadrate van die leesspannings te bereken. Laastens verhoog ons die iterator.

while (i <amostras) {// inicia um ciclo de amostragem até que i alcance o número de amostras leitura = analogRead (leituraTensao); // lê 'n 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}

Bronkode - Algemene berekeninge van die monsters en identifisering van maksimum, minimum en gemiddelde

Ons pas die vermenigvuldigingsfeit toe om die werklike waarde van die spannings te bepaal. Ons ontdek of die waarde maksimum of minimum is, en ons bereken die gemiddelde van die huidige maksimum en minimum waardes.

// 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;

Bronkode - Uitvoeropsies

Ons het drie opsies om die uitsetwaarde te "plot". Ons het uitvoer na die Arduino IDE -reeksplotter geformateer, soos CSV of Jason.

// ook 'n formaat vir die plotter se reeks IDE Arduino Serial.print (Vrms, 3); Serial.print (","); Serial.print (Vmax, 3); Serial.print (","); Serial.print (Vmin, 3); Serial.print (","); Serial.println (Vmed, 3); /* // ook 'n formaat van 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 ("}"); * / /* // ook 'n formaat van 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); */}

Stap 14: lêers

Laai die lêers af:

PDF

EK NEE

Aanbeveel: