Obsah:

Meranie striedavého napätia True-RMS: 14 krokov
Meranie striedavého napätia True-RMS: 14 krokov

Video: Meranie striedavého napätia True-RMS: 14 krokov

Video: Meranie striedavého napätia True-RMS: 14 krokov
Video: Meranie odporov porovnávacou metódou 2024, November
Anonim
Image
Image
Ukážka
Ukážka

Dnes použijeme STM32 Maple Mini na čítanie striedavého prúdu. V našom prípade dostaneme hodnotu RMS elektrickej siete. To je veľmi užitočné pre tých, ktorí chcú monitorovať elektrickú sieť pre internet vecí. Potom vytvoríme aplikáciu s využitím výpočtového výkonu Maple Mini, použijeme elektronický obvod schopný umožniť získanie signálu 127 Vac, ako aj na vzorky použijeme výpočet stredného štvorca (RMS).

Krok 1: Ukážka

V našej dnešnej zostave máme okrem nášho analógového obvodu STM32, ktorý má vstup 110. Aby ste sa vyhli otrasom, izolujte vstupný odpor na 110.

Obvod je dosť citlivý. Dostávam sa k 110, ale 168 -krát ho znížim pomocou deliča napätia a vložím do operačného zosilňovača, ktorý má niekoľko funkcií.

Máme tiež niekoľko voliteľných kondenzátorov na filtrovanie zdrojov. Ak je váš zdroj dobrej kvality, nemusíte ho používať.

Vstup AD sa počíta pomocou osciloskopu, v ktorom vidíte sínusoidu, ktorá nemá 110 (ale je dobre tvarovaná). Ďalšou vecou je, že napätie v našej elektrickej sieti nie je 110 (v skutočnosti je to 127 voltov). Ale keď podstupujeme stabilizátor, upraví sa na 115V.

Hodnota zobrazená na sériovom monitore je vypočítaná v RMS, tj. Hodnota identifikovaná meračom Fluke.

Krok 2: Použité zdroje

Použité zdroje
Použité zdroje

• Svetre

• Javor Mini

• Protoboard

• Zosilňovač LM386

• Symetrický zdroj (+ 5V a -5V)

• 10k viacotáčkový trimpot (alebo potenciometer)

• Štyri kondenzátory zo 100nF polyesteru

• Tri 10k odpory

• Štyri odpory 470k

• Jeden odpor 5k6

• Jedna zenerova dióda 1n4728A

Krok 3: Blokový diagram

Bloková schéma
Bloková schéma

Krok 4: Schéma

Schéma
Schéma

Toto je obvod, ktorý som vyvinul na základe špecifikácií, ktoré sú podľa mňa najlepšie na toto meranie, ale na internete je možné nájsť niekoľko ďalších príkladov.

Krok 5: LM386 - Pripnutie

LM386 - Pripínanie
LM386 - Pripínanie

LM386 má dva zosilňovače na úpravu alebo zosilnenie signálu.

Krok 6: AmpOp - diferenciál (odčítač)

AmpOp - Differential (subtractor)
AmpOp - Differential (subtractor)

Krok 7: AmpOp - sčítač invertora

AmpOp - sčítač invertora
AmpOp - sčítač invertora

Krok 8: Maple Mini - Pinage

Mini Maple - Pinage
Mini Maple - Pinage

Kolíky označené na:

Červená >> 3V3 Tolerantný

Zelená >> 5V Tolerantná

Krok 9: Maple Mini - pripínanie - a / D používané pri snímaní

Maple Mini - pripínanie - a / D používané pri snímaní
Maple Mini - pripínanie - a / D používané pri snímaní

Tu zdôrazňujem, že kolíkom, ktorý som použil, je D11, ktorý (v nomenklatúre STMicroelectronics) je PA0.

Krok 10: Zostavenie

zhromaždenie
zhromaždenie

Pre náš obvod budete potrebovať symetrický zdroj, ako je ten, ktorý sme vytvorili pre tento projekt. V opačnom prípade budete potrebovať dva zdroje.

Krok 11: Graf so získanými údajmi

Graf so získanými údajmi
Graf so získanými údajmi

Krok 12: Výpočet hodnoty RMS

Výpočet hodnoty RMS
Výpočet hodnoty RMS

Krok 13: Zdrojový kód

Zdrojový kód - Definície a konštanty

Najprv sme definovali čítanie pinov ako D11, ako aj rôzne konštanty používané vo výpočtoch.

#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 on 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; // poradenstvo 1, 027 segundos para cada atualização // const int amostras = 35715; // result em 0, 514 segundos para cada atualização

Zdrojový kód - Globálne premenné

Teraz definujeme niektoré globálne premenné.

plavák Vrms = 0,0; // armazena o valor rms da tensãofloat Vmax = 0,0; // armazena o valor má maximálnu detekciu 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

Zdrojový kód - nastavenie ()

Spustite sériový port s rýchlosťou 1 Mbps. Port AD sme upravili ako vstup a čakali 5 sekúnd, kým sme začali zbierať údaje. Pohotovostný čas je voliteľný.

neplatné nastavenie () {Serial.begin (10 000 000); // iniciacia a porta serial em 1Mbps pinMode (leituraTensao, INPUT); // ajusta a porta do AD como entrada delay (5000); // aguarda 5s pred inicializáciou a coletou. (voliteľné)}

Zdrojový kód - Slučka () - Spustí premenné zberu údajov

V slučke máme premennú na iteráciu. Tu tiež uložíme hodnoty AD v 0,0 a reštartujeme premennú VRMS tiež v 0,0.

prázdna slučka () {int i = 0; // variável para iteração float leitura = 0,0; // armazena ako leituras do AD Vrms = 0,0; // reinicia a variável Vrms

Zdrojový kód - Zachytáva a vykonáva jednotlivé výpočty pre každú vzorku

V tomto štádiu, ak je i menšie ako vzorka, spustíme vzorkovací cyklus, kým i nedosiahnem počet vzoriek. Spustíme analogRead, aby sa prečítal analógový port a vypočítal sa súčet druhých mocnín načítaných napätí. Nakoniec iterátor zvýšime.

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); // kalkulácia a výpočet všetkých hodnôt i ++; // incrementa o iterador}

Zdrojový kód - Všeobecné výpočty vzoriek a identifikácia maxima, minima a priemeru

Na určenie skutočnej hodnoty napätí použijeme multiplikačný fakt. Zistíme, či je hodnota maximálna alebo minimálna, a vypočítame priemer aktuálnych maximálnych a minimálnych hodnôt.

// Viacnásobné určovanie parametrov alebo hodnota skutočných hodnôt 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; } // kalkula a média dos valores máximo e mínimo atuais Vmed = (Vmax + Vmin) /2.0;

Zdrojový kód - Možnosti výstupu

Máme tri možnosti „vykreslenia“výstupnej hodnoty. Máme výstup naformátovaný na sériový plotter Arduino IDE, napríklad CSV alebo Jason.

// formát formátu pre plotr sériového IDE Arduino Serial.print (Vrms, 3); Serial.print (","); Sériový tlač (Vmax, 3); Serial.print (","); Serial.print (Vmin, 3); Serial.print (","); Serial.println (Vmed, 3); /* // formátovanie súboru json Serial.print ("{" instante (ms) ":"); Serial.print (millis ()); Serial.print (","); Serial.print ("\" Vrms (V) ":"); Serial.print (Vrms, 3); Serial.print (","); Serial.print ("\" Vmax (V) ":"); Sériový tlač (Vmax, 3); Serial.print (","); Serial.print ("\" Vmin (V) ":"); Serial.print (Vmin, 3); Serial.print (","); Serial.print ("\" Vmed (V) ":"); Serial.print (Vmed, 3); Serial.println ("}"); * / /* // formát formátu CSV Serial.print (millis ()); Serial.print (","); Serial.print (Vrms, 3); Serial.print (","); Sériový tlač (Vmax, 3); Serial.print (","); Serial.print (Vmin, 3); Serial.print (","); Serial.println (Vmed, 3); */}

Krok 14: Súbory

Stiahnite si súbory:

PDF

INO

Odporúča: