Tartalomjegyzék:
- 1. lépés: Szükséges összetevők
- 2. lépés: Vázlatos diagram
- 3. lépés: Az áramkör megértése
- 4. lépés: A frekvencia és a feszültség kiszámítása
- 5. lépés: Arduino kód
- 6. lépés: Következtetés
Videó: Tápegység frekvencia és feszültség mérése Arduino használatával: 6 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:39
Bevezetés:
Ennek a projektnek a célja a tápfrekvencia é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, valamint a frekvencia és a feszültség kiszámítására, bármely más mikrokontrollert vagy kártyát használhat. Az áramkör maroknyi alkatrészt igényel, és minden gyakorlati célból meglehetősen pontos.
1. lépés: Szükséges összetevők
- Arduino Uno
- IC LM358
- Lépjen le a transzformátorról (220V - 12V)
-
Kondenzátorok:
- 0,1uF
- 2 x 1uF
-
Ellenállások:
- 3 x 1 kOhm
- 2 x 100 kOhm
- 1,5 kOhm
- 3.3 kOhm
- 6,8 kOhm
- 3 x 1N4148 dióda
- Kenyértábla és jumper huzal (opcionális)
2. lépés: Vázlatos diagram
A fenti áramkörben a transzformátor primer csatlakozik a tápegységhez, a primer pedig a mérőkörünkhöz
3. lépés: Az áramkör megértése
A funkcionalitás szerint ez az áramkör négy részre osztható:
V: A Zero Crossing Detector áramkör
Ez az áramkör 5 V -os négyzetimpulzust generál, amikor a szinuszhullám pozitívból negatívba megy. Az R1 ellenállás a D1 és D2 -vel kombinálva korlátozza a bemeneti feszültség lengését a dióda csomópontjában -0,6V és +5,6V között (feltételezve, hogy a dióda előremenő feszültsége 0,6V). Továbbá növelheti az áramkör bemeneti feszültségtartományát az R1 érték növelésével.
Az R2 és R3 ellenállás feszültségosztót képez, hogy a negatív feszültségingadozást -0,24 Voltra korlátozza, mivel az LM358 bemeneti közös módú feszültsége -0,3 V -ra korlátozódik.
Az R4, R5 ellenállás, a C1 kondenzátor és az op-amp (itt összehasonlításként használják) képezi a Schmitt Trigger áramkört, ahol az R4 és R5 ellenállás a hiszterézist a föld feletti +49,5 mV bemenetre állítja. A Schmitt Trigger kimenete az Arduino PIN2 -hez kerül továbbfeldolgozásra.
B: Szigetelés és feszültség csökkentése
Ahogy a neve is sugallja, ez a rész elkülöníti és lecsökkenti a feszültséget körülbelül 12Vrms -re. A csökkentett feszültséget a műszer áramkörbe továbbítják.
C: Csúcsérzékelő áramkör
Ez az áramkör határozza meg a bemeneti jel maximális csúcsfeszültségét. Az R6 és R7 ellenállásosztó 0,23 -szorosára csökkenti a bemeneti feszültséget (12Vrms 2,76Vrms -ra csökken). A D3 dióda csak a jel pozitív félciklusát vezeti le. A C2 feszültsége a rektifikált jel csúcsértékéig növekszik, amelyet az Arduino analóg A0 tűje táplál, hogy tovább kiszámítsa a feszültséget.
Ezenkívül ezt az áramkört az itt említettekhez hasonló pontosságú csúcsérzékelő áramkörre cserélheti. De demonstrációs célomból a fenti áramkör elegendő lesz.
D: Arduino
Ebben a részben az Arduino rögzíti a Schmitt Trigger áramkör által generált négyzetes impulzusokat, és leolvassa az analóg feszültséget a csúcsérzékelő áramkörből. Az adatokat tovább dolgozzuk fel, hogy meghatározzuk a négyzetimpulzus időtartamát (tehát frekvenciáját) (amely megegyezik az AC tápellátási idő személyével) és a tápfeszültséget.
4. lépés: A frekvencia és a feszültség kiszámítása
A gyakoriság kiszámítása:
Az Arduino segítségével meg tudjuk mérni a jel T időtartamát. A nulla-keresztező detektor négyzethullámú impulzusai a 2. tüskére kerülnek, onnan tudjuk mérni az egyes impulzusok időtartamát. Az Arduino belső időzítőjével (különösen a Timer1 -el) kiszámíthatjuk a négyzetimpulzus két emelkedő éle közötti időtartamot megszakítások segítségével. Az időzítő óránkénti ciklusonként 1 -gyel növekszik (előskálázó nélkül = 1), és az értéket a TCNT1 regiszter tárolja. Ezért a 16 MHz -es óra minden mikroszekundumban 16 -tal növeli a számlálót. Hasonlóképpen az előskálázó = 8 esetén az időzítőt 2 mikroszekundumonként 2 -gyel növeljük. Ezért a két emelkedő él közötti időszak
T = (TCNT1 érték) / minden számláláshoz szükséges idő
Hol, minden számláláshoz szükséges idő = előskálázó / (Arduino órajel (16 MHz)
Ezért a frekvencia f = 1 / T = (Arduino órajel (16 MHz) / (Előbeosztó * TCNT! Érték)
Ezért az időzítő sebességét (Hz) a = (Arduino órajele (16 MHz)) / prescaler adja meg
és a jel frekvenciáját a = (Arduino órajele adja meg
Ennek megfelelően az f = 1/T összefüggésből kiszámíthatjuk az f frekvenciát.
Feszültség számítása:
Az Arduino fedélzeti ADC felbontása 10 bit (lehetséges értékek = 2^10 = 1024), és 0-1023 közötti értékeket ad vissza. A megfelelő analóg V feszültség kiszámításához a következő összefüggést kell használnunk
V = (ADC -leolvasás) * 5/1023
A Vs (rms) tápfeszültség kiszámításához figyelembe kell vennünk a transzformátor arányt, az R6R7 ellenállásosztót és a csúcsérzékelő áramkört. Egyszerűen összerakhatjuk a különböző tényezőket/arányokat:
Transzformátor arány = 12/230 = 0,052
Ellenállásosztó = R7/(R6 + R7) = 0,23
Csúcsérzékelő áramkörnél = 1,414
Vs (rms) = V/(1,414*0,052*0,23) = (ADC -leolvasás)*0,289
Meg kell jegyezni, hogy ez az érték messze van a tényleges értéktől, főként a tényleges transzformátor arány hibája és a dióda előremenő feszültségesése miatt. Ennek kijátszásának egyik módja az áramkör összeszerelése után a tényező meghatározása. Vagyis úgy, hogy multiméterrel külön mérik a tápfeszültséget és a C2 kondenzátor feszültségét, majd kiszámítják a Vs (rms) értékeket az alábbiak szerint:
Vs (rms) = ((tápfeszültség *5)/(feszültség a C2 *1023)) *(ADC -leolvasás)
az én esetemben Vs (rms) = 0,33*(ADC Reading)
5. lépés: Arduino kód
#define volt_in A0 // analóg feszültség olvasócsap
illékony uint16_t t_period; uint16_t ADC_value = 0; úszó volt, frekvencia; void isr () {t_period = TCNT1; // TCNT1 érték tárolása t_periodban TCNT1 = 0; // reset Timer1 ADC_value = analogRead (volt_in); // analóg feszültség olvasása} float get_freq () {uint16_t timer = t_period; if (timer == 0) return 0; // a nullával való osztás elkerülése érdekében 16000000.0/(8UL*időzítő); // a gyakoriságot az f = clk_freq/(prescaler*timeperiod)} void setup () {TCCR1A = 0; TCCR1B = bit (CS11); // állítsa az előskálázót 8 -ra TCNT1 = 0; // reset Timer1 value TIMSK1 = bit (TOIE1); // Timer1 overflow interrupt engedélyezése EIFR | = bit (INTF0); // törölje az INT0 megszakítás jelzőjét Serial.begin (9600); } void loop () {attachInterrupt (0, isr, RISING); // külső megszakítás engedélyezése (INT0) késleltetés (1000); detachInterrupt (0); freq = get_freq (); volt = ADC_érték*0,33; String buf; buf += Karakterlánc (gyakori, 3); buf += F ("Hz / t"); buf += Karakterlánc (volt); buf += F ("Volt"); Soros.println (buf); }
6. lépés: Következtetés
Összeállíthatja az áramkört egy kenyértáblán, és módosíthatja a kódot, és hozzáadhat egy SD -kártyát az adatok tárolásához, amelyeket később elemezhet. Ilyen például a feszültség és a frekvencia elemzése csúcsidőben.
A kenyértáblán összeállított áramkör LM324 (quad opamp) -ot használt az LM358 (kettős opamp) helyett, mivel abban a pillanatban nem rendelkeztem ezzel az IC-vel, és a COVID-19 világjárvány miatti országos lezárás megnehezítette az új IC beszerzését. Ennek ellenére ez nem befolyásolja az áramkör működését.
Nyugodtan tegyen megjegyzést az alábbi javaslatokhoz és kérdésekhez.
Ajánlott:
A hálózati frekvencia mérése Arduino használatával: 7 lépés (képekkel)
A hálózati frekvencia mérése Arduino használatával: Április 3 -án, Shri, India miniszterelnöke. Narendra Modi felhívást intézett az indiánokhoz, hogy kapcsolják le a lámpákat és gyújtsanak lámpát (Diya) április 5 -én 21:00 órakor, hogy jelezzék India koronavírus elleni harcát. A bejelentés után nagy káosz alakult ki
True-RMS AC feszültség mérése: 14 lépés
A True-RMS AC feszültség mérése: Ma az STM32 Maple Mini készüléket 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 dolgok internete miatt. Ezután létrehozunk egy alkalmazást
220V - 24V 15A tápegység - Kapcsoló tápegység - IR2153: 8 lépés
220V - 24V 15A tápegység | Kapcsoló tápegység | IR2153: Szia srác ma 220V -24V 15A tápegységet gyártunk | Kapcsoló tápegység | IR2153 az ATX tápegységből
Kompakt, szabályozott tápegység - Tápegység: 9 lépés (képekkel)
Kompakt szabályozott tápegység - Tápegység: Már készítettem néhány tápegységet. Kezdetben mindig azt feltételeztem, hogy sok erősítővel rendelkező tápegységre van szükségem, de néhány év kísérletezése és építése során rájöttem, hogy szükségem van egy kicsi, kompakt tápegységre, stabilizálással és jó feszültségszabályozással
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