Obsah:

Měření střídavého napětí True-RMS: 14 kroků
Měření střídavého napětí True-RMS: 14 kroků

Video: Měření střídavého napětí True-RMS: 14 kroků

Video: Měření střídavého napětí True-RMS: 14 kroků
Video: Klešťový ampérmetr - měření velkých proudů - MUSTOOL X1 - test 2024, Listopad
Anonim
Image
Image
Demonstrace
Demonstrace

Dnes použijeme STM32 Maple Mini k provedení měření AC. V našem příkladu získáme hodnotu RMS energetické sítě. To je velmi užitečné pro ty, kteří chtějí monitorovat elektrickou síť pro internet věcí. Poté vytvoříme aplikaci využívající výpočetní výkon Maple Mini, použijeme elektronický obvod schopný umožnit získání signálu 127 Vac, stejně jako použijeme na vzorky výpočet střední hodnoty odmocniny (RMS).

Krok 1: Ukázka

V naší dnešní sestavě máme kromě analogového obvodu STM32 také vstup 110. Abyste se vyhnuli šokům, izolujte odpor, který vstupuje na 110.

Obvod je docela citlivý. Začínám s 110, ale 168krát to zmenším pomocí děliče napětí a vložím to do operačního zesilovače, který má několik funkcí.

Máme také několik volitelných kondenzátorů pro filtrování zdrojů. Pokud je váš zdroj dobré kvality, nemusíte jej používat.

Vstup AD se počítá pomocí osciloskopu, ve kterém vidíte sinusoidu, která není 110 (ale je dobře tvarovaná). Další věcí je, že napětí v naší elektrické síti není 110 (ve skutečnosti je to 127 voltů). Jak ale procházíme stabilizátorem, upraví se na 115V.

Hodnota zobrazená na sériovém monitoru je vypočtena v RMS, tj. Hodnotě identifikované měřičem Fluke.

Krok 2: Použité zdroje

Použité zdroje
Použité zdroje

• Propojky

• Javor Mini

• Protoboard

• Zesilovač LM386

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

• 10k víceotáčkový trimpot (nebo potenciometr)

• Čtyři kondenzátory ze 100nF polyesteru

• Tři 10k odpory

• Čtyři 470k odpory

• Jeden odpor 5k6

• Jedna zenerova dioda 1n4728A

Krok 3: Blokový diagram

Blokové schéma
Blokové schéma

Krok 4: Schéma

Systém
Systém

Toto je obvod, který jsem vyvinul na základě specifikací, které považuji za nejlepší pro toto měření, ale existuje několik dalších příkladů, které lze nalézt na internetu.

Krok 5: LM386 - Připnutí

LM386 - Připnutí
LM386 - Připnutí

LM386 má dva zesilovače pro úpravu nebo zesílení signálu.

Krok 6: AmpOp - Differential (subtractor)

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

Krok 7: AmpOp - Inverter Adder

AmpOp - Inverter Adder
AmpOp - Inverter Adder

Krok 8: Maple Mini - Pinage

Maple Mini - Pinage
Maple Mini - Pinage

Piny označené na:

Červená >> Tolerantní 3V3

Zelená >> 5V Tolerantní

Krok 9: Maple Mini - Pinning - a / D použitý při snímání

Maple Mini - Pinning - a / D používané při snímání
Maple Mini - Pinning - a / D používané při snímání

Zde zdůrazňuji, že pin, který jsem použil, je D11, který (v nomenklatuře STMicroelectronics) je PA0.

Krok 10: Sestavení

Shromáždění
Shromáždění

Pro náš obvod budete potřebovat symetrický zdroj, jako je ten, který jsme vytvořili pro tento projekt. V opačném případě budete potřebovat dva zdroje.

Krok 11: Graf se získanými daty

Graf se získanými daty
Graf se získanými daty

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 - Definice a konstanty

Nejprve jsme definovali čtení pinů jako D11, stejně jako různé konstanty používané ve výpočtech.

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

Zdrojový kód - globální proměnné

Nyní definujeme některé globální proměnné.

float Vrms = 0,0; // armazena o valor rms da tensãofloat Vmax = 0,0; // armazena o valor máximo detectado float Vmin = 10 000,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 - nastavení ()

Spusťte sériový port rychlostí 1 Mb / s. Upravili jsme port AD jako vstup a čekali 5 sekund, než jsme začali sbírat data. Pohotovostní doba je volitelná.

neplatné nastavení () {Serial.begin (10 000 000); // inicia a porta serial em 1Mbps pinMode (leituraTensao, INPUT); // iusta a porta do AD como entrada delay (5000); // aguarda 5s před zahájením colety. (volitelně)}

Zdrojový kód - Smyčka () - Spustí proměnné sběru dat

Ve smyčce máme proměnnou pro iteraci. Zde také ukládáme hodnoty AD v 0,0 a restartujeme proměnnou VRMS také v 0,0.

void loop () {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

Zdrojový kód - Zachycuje a provádí jednotlivé výpočty pro každý vzorek

V této fázi, pokud je i menší než vzorek, zahájíme vzorkovací cyklus, dokud i nedosáhnu počtu vzorků. Spustíme analogRead, abychom přečetli analogový port a vypočetli součet druhých mocnin čtených napětí. Nakonec iterátor zvýšíme.

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); // kalkulace a počet bodů v paměti i ++; // incrementa o iterador}

Zdrojový kód - Obecné výpočty vzorků a identifikace maxima, minima a průměru

Ke zjištění skutečné hodnoty napětí použijeme multiplikační fakt. Zjistíme, zda je hodnota maximální nebo minimální, a vypočítáme průměr aktuálních maximálních a minimálních hodnot.

// Více informací o různých hodnotách Skutečné hodnoty ve 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;

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

Máme tři možnosti „vykreslení“výstupní hodnoty. Máme výstup formátovaný do sériového plotru Arduino IDE, jako CSV nebo Jason.

// formát formátu para plotru sériové IDE Arduino Serial.print (Vrms, 3); Serial.print (","); Serial.print (Vmax, 3); Serial.print (","); Serial.print (Vmin, 3); Serial.print (","); Serial.println (Vmed, 3); /* // formátování souboru 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 ("}"); * / /* // formát formátu 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); */}

Krok 14: Soubory

Stáhnout soubory:

PDF

INO

Doporučuje: