Satura rādītājs:

True-RMS maiņstrāvas sprieguma mērīšana: 14 soļi
True-RMS maiņstrāvas sprieguma mērīšana: 14 soļi

Video: True-RMS maiņstrāvas sprieguma mērīšana: 14 soļi

Video: True-RMS maiņstrāvas sprieguma mērīšana: 14 soļi
Video: Why True-RMS multimeter? 2024, Jūlijs
Anonim
Image
Image
Demonstrācija
Demonstrācija

Šodien mēs izmantosim STM32 Maple Mini, lai veiktu maiņstrāvas lasīšanu. Mūsu piemērā mēs iegūsim elektrotīkla RMS vērtību. Tas ir ļoti noderīgi tiem, kas vēlas uzraudzīt lietisko interneta elektrisko tīklu. Pēc tam mēs izveidosim lietojumprogrammu, izmantojot Maple Mini skaitļošanas jaudu, pielietosim elektronisko shēmu, kas ļaus iegūt 127 Vac signālu, kā arī piemērosim vidējā kvadrāta (RMS) aprēķinu paraugiem.

1. solis: demonstrācija

Šodien mūsu montāžā papildus analogajai shēmai ir ieeja 110. Lai izvairītos no triecieniem, izolējiet pretestību, kas ieiet par 110.

Ķēde ir diezgan jutīga. Es saņemos ar 110, bet es to samazinu 168 reizes, izmantojot sprieguma dalītāju, un ievietoju to operatīvajā pastiprinātājā, kuram ir vairākas funkcijas.

Mums ir arī daži papildu kondensatori avota filtrēšanai. Ja avots ir kvalitatīvs, jums tas nav jāizmanto.

AD ievade tiek aprēķināta, izmantojot osciloskopu, kurā redzat sinusoīdu, kas nav 110 (bet tas ir labi izveidots). Vēl viena lieta ir tāda, ka mūsu elektrotīkla spriegums nav 110 (tas faktiski ir 127 volti). Bet, tā kā mums tiek veikts stabilizators, tas pielāgosies 115 V.

Sērijas monitorā parādītā vērtība ir tā, kas tiek aprēķināta RMS, tas ir, Fluke Meter identificētā vērtība.

2. darbība. Izmantotie resursi

Izmantotie resursi
Izmantotie resursi

• Džemperi

• Kļavu mini

• Protoboard

• LM386 pastiprinātājs

• Simetrisks avots (+ 5V un -5V)

• 10k daudzgriezienu trimpots (vai potenciometrs)

• Četri kondensatori no 100nF poliestera

• Trīs 10k rezistori

• Četri 470k rezistori

• Viens 5k6 rezistors

• Viena 1n4728A zener diode

3. darbība: bloka diagramma

Blokshēma
Blokshēma

4. solis: shēma

Shēma
Shēma

Šī ir shēma, kuru es izstrādāju, pamatojoties uz specifikācijām, kuras, manuprāt, ir vislabākās šim mērījumam, taču ir vairāki citi piemēri, kurus var atrast internetā.

5. darbība: LM386 - piespraušana

LM386 - Piespraušana
LM386 - Piespraušana

LM386 ir divi pastiprinātāji kondicionēšanai vai signāla pastiprināšanai.

6. darbība: AmpOp - diferenciālis (atņemšana)

AmpOp - diferenciālis (atņemt)
AmpOp - diferenciālis (atņemt)

7. solis: AmpOp - invertora papildinātājs

AmpOp - invertora papildinātājs
AmpOp - invertora papildinātājs

8. solis: Maple Mini - Pinage

Maple Mini - Pinage
Maple Mini - Pinage

Tapas atzīmētas uz:

Sarkans >> 3V3 tolerants

Zaļš >> 5V tolerants

9. darbība. Kļavas mini - piespraušana - a / D, ko izmanto uzņemšanā

Kļavas Mini - piespraušana - a / D Izmanto tveršanā
Kļavas Mini - piespraušana - a / D Izmanto tveršanā

Šeit es uzsveru, ka es izmantoju tapu D11, kas (STMicroelectronics nomenklatūrā) ir PA0.

10. solis: montāža

Montāža
Montāža

Mūsu shēmai jums būs nepieciešams simetrisks avots, piemēram, tas, kuru mēs izveidojām šim projektam. Pretējā gadījumā jums būs nepieciešami divi avoti.

11. darbība. Grafiks ar iegūtajiem datiem

Grafiks ar iegūtajiem datiem
Grafiks ar iegūtajiem datiem

12. solis: RMS vērtības aprēķināšana

RMS vērtības aprēķināšana
RMS vērtības aprēķināšana

13. darbība. Avota kods

Avota kods - definīcijas un konstantes

Sākumā tapas nolasījumu definējām kā D11, kā arī dažādās aprēķinos izmantotās konstantes.

#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

Avota kods - globālie mainīgie

Tagad mēs definējam dažus globālos mainīgos.

pludiņš 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

Avota kods - iestatīšana ()

Sāciet seriālo portu ar ātrumu 1 Mb / s. Mēs pielāgojām AD portu kā ievadi un gaidījām 5 sekundes, pirms sākām vākt datus. Gaidīšanas laiks nav obligāts.

void setup () {Serial.begin (1000000); // inicia a a porta serial em 1Mbps pinMode (leituraTensao, INPUT); // ajusta a porta do AD como entrada delay (5000); // aguarda 5s antes de iniciar a coleta. (pēc izvēles)}

Avota kods - cilpa () - sāk datu vākšanas mainīgos

Ciklā mums ir iterācijas mainīgais. Šeit mēs arī saglabājam AD rādījumus 0.0 un restartējam mainīgo VRMS arī 0.0.

tukša cilpa () {int i = 0; // variável para iteração float leitura = 0.0; // armazena as leituras do AD Vrms = 0.0; // reinicia a variável Vrms

Avota kods - uztver un izpilda katra parauga individuālos aprēķinus

Šajā posmā, ja i ir mazāks par paraugu, mēs sākam izlases ciklu, līdz i sasniedz paraugu skaitu. Mēs palaižam analogRead, lai nolasītu analogo portu un aprēķinātu nolasīto spriegumu kvadrātu summu. Visbeidzot, mēs palielinām iteratoru.

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 ++; // iterador pieaugums}

Avota kods - vispārīgi paraugu aprēķini un maksimālā, minimālā un vidējā noteikšana

Mēs izmantojam reizināšanas faktu, lai noteiktu spriegumu faktisko vērtību. Mēs atklājam, vai vērtība ir maksimālā vai minimālā, un aprēķinām vidējo pašreizējo maksimālo un minimālo vērtību.

// Aplicando fator de multiplicação para determinar o valor real das tensões Vrms = (sqrt (Vrms /amostras)) * fatorMultiplicacao; // detektēt se é um valor é máximo if (Vrms> Vmax) {Vmax = Vrms; } // detektēt 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;

Avota kods - izvades opcijas

Mums ir trīs iespējas, kā "uzzīmēt" izvades vērtību. Mums ir izeja, kas formatēta Arduino IDE sērijas ploterim, piemēram, CSV vai Jason.

// saída formatada para ploter serial IDE Arduino Serial.print (Vrms, 3); Serial.print (","); Sērijas nospiedums (Vmax, 3); Serial.print (","); Sērijas nospiedums (Vmin, 3); Serial.print (","); Sērijas.println (Vmed, 3); /* // saída formatada como json Serial.print ("{" instante (ms) ":"); Sērijas nospiedums (milis ()); Serial.print (","); Serial.print ("\" Vrms (V) ":"); Sērijas nospiedums (Vrms, 3); Serial.print (","); Serial.print ("\" Vmax (V) ":"); Sērijas nospiedums (Vmax, 3); Serial.print (","); Serial.print ("\" Vmin (V) ":"); Sērijas nospiedums (Vmin, 3); Serial.print (","); Serial.print ("\" Vmed (V) ":"); Sērijas nospiedums (Vmed, 3); Serial.println ("}"); * / /* // šāds formāts: CSV Serial.print (milis ()); Serial.print (","); Sērijas nospiedums (Vrms, 3); Serial.print (","); Sērijas nospiedums (Vmax, 3); Serial.print (","); Sērijas nospiedums (Vmin, 3); Serial.print (","); Sērijas.println (Vmed, 3); */}

14. darbība: faili

Lejupielādējiet failus:

PDF

ES NĒ

Ieteicams: