Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja izmjena: 2025-01-13 06:57
Uvod:
Cilj ovog projekta je mjerenje frekvencije napajanja i napona, koji je između 220 do 240 volti i 50Hz ovdje u Indiji. Koristio sam Arduino za hvatanje signala i izračunavanje frekvencije i napona, možete koristiti bilo koji drugi mikrokontroler ili ploču koju imate. Krug zahtijeva pregršt komponenti i prilično je precizan za sve praktične svrhe.
Korak 1: Potrebne komponente
- Arduino Uno
- IC LM358
- Opasni transformator (220V do 12V)
-
Kondenzatori:
- 0.1uF
- 2 x 1 uF
-
Otpornici:
- 3 x 1 kOhm
- 2 x 100 kOhm
- 1.5kOhm
- 3.3kOhm
- 6.8kOhm
- 3 x 1N4148 dioda
- Daska za kruh i žica za prespajanje (opcionalno)
Korak 2: Šematski dijagram
U gore navedenom krugu, primarni transformator spojen je na napajanje, a primarni je spojen na naš mjerni krug
Korak 3: Razumevanje kola
Prema funkcionalnosti, ovo kolo se može podijeliti na četiri dijela:
O: Krug detektora nultog prelaska
Ovo kolo generira kvadratni impuls od 5 V kad god sinusni val pređe s pozitivnog na negativno. Otpornik R1 u kombinaciji s D1 i D2 ograničava zamah ulaznog napona na spoju dioda na -0,6V do +5,6V (pretpostavljajući da je napon diode naprijed 0,6V). Nadalje, možete povećati raspon ulaznog napona kruga povećanjem vrijednosti R1.
Otpornici R2 i R3 tvore razdjelnik napona kako bi ograničili zamah negativnog napona na -0,24 V, jer je ulazni zajednički mod LM358 ograničen na -0,3 V.
Otpornik R4, R5, kondenzator C1 i op-pojačalo (ovdje se koristi kao usporednik) tvore Schmittovo okidačko kolo gdje otpornici R4 i R5 postavljaju histerezu na ulaz +49,5 mV iznad zemlje. Izlaz Schmitt Triggera šalje se na Arduino PIN2 za daljnju obradu.
B: Izolacija i napon korak dolje
Kao što naziv govori, ovaj dio izolira i smanjuje napon na približno 12Vrms. Sniženi napon se dalje dovodi u krug instrumentacije.
C: Krug detektora vršnih vrijednosti
Ovo kolo određuje maksimalni vršni napon ulaznog signala. Otpornički razdjelnici R6 i R7 smanjuju ulazni napon za faktor 0,23 (12Vrms se smanjuje na 2.76Vrms). Dioda D3 provodi samo pozitivni poluciklus signala. Napon na C2 raste do vršne vrijednosti ispravljenog signala, koji se dovodi na Arduino analogni pin A0 radi daljnjeg izračunavanja napona.
Osim toga, ovaj krug možete zamijeniti preciznim krugom detektora vrha, poput ovih koji su ovdje spomenuti. Ali za moje demonstracijske svrhe, gornji krug će biti dovoljan.
D: Arduino
U ovom dijelu Arduino hvata kvadratne impulse koje generira Schmitt Trigger kolo i očitava analogni napon iz kruga detektora vrha. Podaci se dalje obrađuju kako bi se odredio vremenski period (dakle frekvencija) kvadratnog impulsa (koji je jednak vremenu napajanja izmjeničnom strujom) i napon napajanja.
Korak 4: Proračun frekvencije i napona
Izračun frekvencije:
Uz pomoć Arduina možemo izmjeriti vremenski period T signala. Pulsi kvadratnog vala iz detektora prelaska nule dovode se na pin 2, odatle možemo mjeriti vremenski period svakog impulsa. Možemo koristiti Arduino interni mjerač vremena (posebno Timer1) za izračunavanje vremenskog perioda između dva rastuća ruba kvadratnog impulsa uz pomoć prekida. Tajmer se povećava za 1 po ciklusu takta (bez predmjerača = 1), a vrijednost se pohranjuje u registar TCNT1. Stoga sat od 16 Mhz povećava brojač za 16 svake mikrosekunde. Slično za predskaler = 8, mjerač se povećava za 2 svake mikrosekunde. Otuda i vremenski period između dva rastuća ruba
T = (vrijednost TCNT1) / vrijeme potrebno za svako brojanje
Gdje, vrijeme potrebno za svaki broj = predskaler / (Arduino takt (16MHz)
Dakle, frekvencija f = 1 / T = (Arduino taktna brzina (16MHz) / (Prescaler * TCNT! Vrijednost)
Otuda je brzina tajmera (Hz) dana = (Arduino taktna brzina (16MHz)) / predmjer
a frekvencija signala je data sa = (Arduino brzina takta
Shodno tome, možemo izračunati frekvenciju f iz relacije f = 1/T.
Proračun napona:
Ugrađeni ADC Arduina ima rezoluciju od 10 bita (moguće vrijednosti = 2^10 = 1024), vraćajući vrijednosti u rasponu od 0-1023. Za izračun odgovarajućeg analognog napona V moramo koristiti sljedeću relaciju
V = (čitanje ADC -a) * 5/1023
Za izračun napona napajanja Vs (rms) moramo uzeti u obzir omjer transformatora, otpornički razdjelnik R6R7 i krug detektora vrha. Možemo jednostavno sastaviti različite faktore/omjere kao:
Omjer transformatora = 12/230 = 0,052
Razdjelnik otpornika = R7/(R6 + R7) = 0,23
Na vrhu kruga detektora = 1.414
Vs (rms) = V/(1.414*0.052*0.23) = (čitanje ADC -a)*0.289
Treba napomenuti da je ova vrijednost daleko od stvarne vrijednosti, uglavnom zbog greške u stvarnom omjeru transformatora i pada napona diode naprijed. Jedan od načina da se to zaobiđe je utvrđivanje faktora nakon sastavljanja kola. To je tako što ćete multimetrom zasebno izmjeriti napon napajanja i napon na kondenzatoru C2, a zatim izračunati Vs (rms) na sljedeći način:
Vs (rms) = ((Napon napajanja *5)/(Napon na C2 *1023)) *(Očitavanje ADC -a)
u mom slučaju, Vs (rms) = 0,33*(čitanje ADC -a)
Korak 5: Arduino kod
#define volt_in A0 // pin za čitanje analognog napona
volatile uint16_t t_period; uint16_t ADC_value = 0; plovak volt, frekv. void isr () {t_period = TCNT1; // sprema vrijednost TCNT1 u t_period TCNT1 = 0; // resetiranje Timer1 ADC_value = analogRead (volt_in); // očitavanje analognog napona} float get_freq () {uint16_t timer = t_period; if (timer == 0) vraća 0; // kako bi se izbjeglo dijeljenje s nulom else return 16000000.0/(8UL*timer); // frekvencija je dana sa f = clk_freq/(prescaler*timeperiod)} void setup () {TCCR1A = 0; TCCR1B = bit (CS11); // podesite predkaler na 8 TCNT1 = 0; // resetiranje vrijednosti Timer1 TIMSK1 = bit (TOIE1); // omogućujemo prekid preopterećenja Timer1 EIFR | = bit (INTF0); // briše zastavu prekida INT0 Serial.begin (9600); } void loop () {attachInterrupt (0, isr, RISING); // omogućavanje kašnjenja vanjskog prekida (INT0) (1000); detachInterrupt (0); freq = get_freq (); volt = ADC_value*0,33; String buf; buf += string (freq, 3); buf += F ("Hz / t"); buf += niz (volt); buf += F ("Volti"); Serial.println (buf); }
Korak 6: Zaključak
Krug možete sastaviti u ploču s opcijama i prilagoditi kôd te dodati SD karticu za spremanje podataka, koji se kasnije mogu analizirati. Jedan takav primjer je da možete analizirati napon i frekvenciju u satima najveće potrošnje.
Krug koji sam sastavio na matičnoj ploči koristio je LM324 (quad opamp) umjesto LM358 (dual opamp) jer u tom trenutku nisam imao taj IC, a zaključavanje u cijeloj zemlji zbog pandemije COVID-19 otežalo mi je nabavku novog IC-a. Ipak, to ne bi utjecalo na rad kola.
Slobodno komentirajte ispod za sve prijedloge i upite.