Tartalomjegyzék:

True-RMS AC feszültség mérése: 14 lépés
True-RMS AC feszültség mérése: 14 lépés

Videó: True-RMS AC feszültség mérése: 14 lépés

Videó: True-RMS AC feszültség mérése: 14 lépés
Videó: Mérés multiméterrel (így használd) 2024, Július
Anonim
Image
Image
Demonstráció
Demonstráció

Ma az STM32 Maple Minit használjuk váltakozó áramú leolvasáshoz. Példánkban megkapjuk az elektromos hálózat RMS értékét. Ez nagyon hasznos azok számára, akik fel akarják figyelni az elektromos hálózatot a tárgyak internetére vonatkozóan. Ezután létrehozunk egy alkalmazást a Maple Mini számítási teljesítményének felhasználásával, egy elektronikus áramkört alkalmazunk, amely lehetővé teszi a 127 Vac jel felvételét, valamint alkalmazzuk a mintákon az RMS -számítást.

1. lépés: Demonstráció

A mai összeállításunkban az analóg áramkörön kívül az STM32 -et is használjuk, hogy 110 bemenetet adjunk. A sokk elkerülése érdekében szigetelje le a bemenő ellenállást 110 -gyel.

Az áramkör meglehetősen érzékeny. 110 -el beszállok, de 168 -szorosra csökkentem a feszültségosztó segítségével, és beteszem a többfunkciós műveleti erősítőbe.

Van néhány opcionális kondenzátorunk is a forrásszűréshez. Ha a forrás jó minőségű, akkor nem kell használnia őket.

Az AD bemenetet oszcilloszkóppal számítják ki, amelyben egy szinuszot lát, amely nem 110 (de jól formázott). A másik dolog az, hogy az elektromos hálózatunk feszültsége nem 110 (valójában 127 volt). De ahogy stabilizátoron megyünk keresztül, az 115 V -ra áll.

A soros monitoron megjelenített érték az RMS -ben számított érték, azaz a Fluke Meter által azonosított érték.

2. lépés: Felhasznált erőforrások

Felhasznált források
Felhasznált források

• Szvetterek

• Maple Mini

• Protoboard

• LM386 erősítő

• Szimmetrikus forrás (+ 5V és -5V)

• 10 k-os többfordulós trimpot (vagy potenciométer)

• Négy 100nF poliészter kondenzátor

• Három 10 ezer ellenállás

• Négy 470k ellenállás

• Egy 5k6 -os ellenállás

• Egy 1n4728A Zener dióda

3. lépés: Blokkdiagram

Blokk diagramm
Blokk diagramm

4. lépés: Séma

Rendszer
Rendszer

Ezt az áramkört a specifikációk alapján fejlesztettem ki, amelyek szerintem a legjobbak ehhez a méréshez, de számos más példa is megtalálható az interneten.

5. lépés: LM386 - Rögzítés

LM386 - Rögzítés
LM386 - Rögzítés

Az LM386 két erősítővel rendelkezik a kondicionáláshoz vagy a jelerősítéshez.

6. lépés: AmpOp - differenciálmű (kivonó)

AmpOp - differenciálmű (kivonó)
AmpOp - differenciálmű (kivonó)

7. lépés: AmpOp - Inverter Adder

AmpOp - Inverter Adder
AmpOp - Inverter Adder

8. lépés: Maple Mini - Pinning

Maple Mini - Pinning
Maple Mini - Pinning

Csapok megjelölve:

Piros >> 3V3 Toleráns

Zöld >> 5V toleráns

9. lépés: Maple Mini - Rögzítés - a / D rögzítéskor használatos

Maple Mini - Rögzítés - a / D Rögzítésnél használt
Maple Mini - Rögzítés - a / D Rögzítésnél használt

Itt hangsúlyozom, hogy a csap, amelyet használtam, az a D11, amely (az STMicroelectronics nómenklatúrájában) a PA0.

10. lépés: Összeszerelés

Összeszerelés
Összeszerelés

Az áramkörünkhöz szükségünk lesz egy szimmetrikus forrásra, mint amilyet a projekthez készítettünk. Ellenkező esetben két forrás szükséges.

11. lépés: Grafikon a megszerzett adatokkal

Grafikon a megszerzett adatokkal
Grafikon a megszerzett adatokkal

12. lépés: Az RMS érték kiszámítása

Az RMS érték kiszámítása
Az RMS érték kiszámítása

13. lépés: Forráskód

Forráskód - Definíciók és állandók

Először a tű leolvasását D11 -ként határoztuk meg, valamint a számítások során használt különböző állandókat.

#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

Forráskód - Globális változók

Most definiálunk néhány globális változót.

úszó 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

Forráskód - Beállítás ()

Indítsa el a soros portot 1Mbps sebességgel. Beállítottuk az AD portot bemenetként, és vártunk 5 másodpercet, mielőtt elkezdtük az adatgyűjtést. A készenléti idő opcionális.

void setup () {Serial.begin (1000000); // inicial a porta serial em 1Mbps pinMode (leituraTensao, INPUT); // ajusta a porta do AD como entrada delay (5000); // aguarda 5s antes de iniciar a coleta. (opcionális)}

Forráskód - Loop () - Elindítja az adatgyűjtési változókat

A ciklusban megvan az iteráció változója. Itt az AD leolvasásait is 0.0 -ban tároljuk, és újraindítjuk a VRMS változót is 0.0 -ban.

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

Forráskód - rögzíti és végrehajtja az egyes minták egyedi számításait

Ebben a szakaszban, ha i kisebb, mint a minta, mintavételi ciklust kezdünk, amíg el nem érem a minták számát. Futtatjuk az analogRead programot, hogy kiolvassuk az analóg portot, és kiszámítsuk az olvasási feszültségek négyzeteinek összegét. Végül növeljük az iterátort.

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

Forráskód - A minták általános számításai és a maximum, minimum és átlag azonosítása

A szorzás tényét alkalmazzuk a feszültségek tényleges értékének meghatározására. Észleljük, hogy az érték maximális vagy minimum, és kiszámítjuk az aktuális maximális és minimális értékek átlagát.

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

Forráskód - Kimeneti beállítások

Három lehetőségünk van a kimeneti érték "ábrázolására". Az Arduino IDE soros plotterhez formázott kimeneteket használunk, például CSV vagy Jason.

// saída formatada para plotter serial IDE Arduino Serial.print (Vrms, 3); Serial.print (","); Soros.nyomtatás (Vmax, 3); Serial.print (","); Soros.nyomtatás (Vmin, 3); Serial.print (","); Sorozat.println (Vmed, 3); /* // saída formatada como json Serial.print ("{" instante (ms) ":"); Soros.nyomat (millis ()); Serial.print (","); Serial.print ("\" Vrms (V) ":"); Sorozatnyomat (Vrms, 3); Serial.print (","); Soros.print ("\" Vmax (V) ":"); Soros.nyomtatás (Vmax, 3); Serial.print (","); Sorozat.print ("\" Vmin (V) ":"); Soros.nyomtatás (Vmin, 3); Serial.print (","); Soros.print ("\" Vmed (V) ":"); Sorozatnyomat (Vmed, 3); Serial.println ("}"); * / /* // saída formatada como CSV Serial.print (millis ()); Serial.print (","); Sorozatnyomat (Vrms, 3); Serial.print (","); Soros.nyomtatás (Vmax, 3); Serial.print (","); Soros.nyomtatás (Vmin, 3); Serial.print (","); Sorozat.println (Vmed, 3); */}

14. lépés: Fájlok

Töltse le a fájlokat:

PDF

ÉN NEM

Ajánlott: