Tartalomjegyzék:
- 1. lépés: Demonstráció
- 2. lépés: Felhasznált erőforrások
- 3. lépés: Blokkdiagram
- 4. lépés: Séma
- 5. lépés: LM386 - Rögzítés
- 6. lépés: AmpOp - differenciálmű (kivonó)
- 7. lépés: AmpOp - Inverter Adder
- 8. lépés: Maple Mini - Pinning
- 9. lépés: Maple Mini - Rögzítés - a / D rögzítéskor használatos
- 10. lépés: Összeszerelés
- 11. lépés: Grafikon a megszerzett adatokkal
- 12. lépés: Az RMS érték kiszámítása
- 13. lépés: Forráskód
- 14. lépés: Fájlok
Videó: True-RMS AC feszültség mérése: 14 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:42
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
• 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
4. lépés: Séma
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
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ó)
7. lépés: AmpOp - Inverter Adder
8. lépés: 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
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
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
12. lépés: 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:
ÉN NEM
Ajánlott:
LINEÁRIS FESZÜLTSÉG SZABÁLYOZÓK 78XX: 6 lépés
LINEÁRIS FESZÜLTSÉG SZABÁLYOZÓK 78XX: Itt szeretnénk megmutatni, hogyan kell dolgozni a 78XX lineáris feszültségszabályozókkal. Elmagyarázzuk, hogyan lehet őket áramkörhöz csatlakoztatni, és milyen korlátai vannak a feszültségszabályozók használatának. Itt láthatjuk a szabályozókat: 5V, 6V, 9V, 12V, 18V, 24V
Sinilink WiFi kapcsoló módosítása INA219 feszültség/áramérzékelővel: 11 lépés
A Sinilink WiFi kapcsoló módosítása INA219 feszültség/áramérzékelővel: A Sinilink XY-WFUSB WIFI USB kapcsoló egy jó kis eszköz a csatlakoztatott USB-eszköz távoli be- és kikapcsolásához. Sajnos hiányzik a csatlakoztatott eszköz tápfeszültségének vagy használt áramának mérése. Ez az utasítás megmutatja, hogyan módosíthatom
Tápegység frekvencia és feszültség mérése Arduino használatával: 6 lépés
Tápegység frekvenciájának és feszültségének mérése Arduino használatával: Bevezetés: A projekt célja az ellátási frekvencia és feszültség mérése, ami itt, Indiában 220-240 V és 50 Hz között van. Arduino -t használtam a jel rögzítésére, a frekvencia és a feszültség kiszámítására, bármilyen más mikrokonzont is használhat
DC - DC feszültség Lépés lekapcsoló mód Buck feszültségátalakító (LM2576/LM2596): 4 lépés
DC-DC feszültség Lépés lekapcsoló üzemmód Buck feszültségátalakító (LM2576/LM2596): A rendkívül hatékony bakkonverter készítése nehéz feladat, és még a tapasztalt mérnököknek is többféle kivitelre van szükségük, hogy a megfelelőt hozzák létre. egy DC-DC áramátalakító, amely csökkenti a feszültséget (miközben növeli
DC feszültség mérése Arduino és Node-RED használatával: 8 lépés (képekkel)
Egyenáramú feszültség mérése Arduino és Node-RED segítségével: Sok oktatóanyag létezik az egyenáramú feszültség mérésére az Arduino segítségével, ebben az esetben találtam egy olyan oktatóanyagot, amelyet a legjobb funkcionális módszernek tartok az egyenáram mérésére anélkül, hogy be kellene állítani az ellenállást, csak némi ellenállást igényel és multiméter