Բովանդակություն:

Էներգամատակարարման հաճախականությունը և լարման չափումը Arduino- ի միջոցով. 6 քայլ
Էներգամատակարարման հաճախականությունը և լարման չափումը Arduino- ի միջոցով. 6 քայլ

Video: Էներգամատակարարման հաճախականությունը և լարման չափումը Arduino- ի միջոցով. 6 քայլ

Video: Էներգամատակարարման հաճախականությունը և լարման չափումը Arduino- ի միջոցով. 6 քայլ
Video: Control 32 Servo over Wi-Fi using ESP32 and PCA9685 via desktop or mobile phone V5 2024, Հուլիսի
Anonim
Էներգամատակարարման հաճախականությունը և լարման չափումը Arduino- ի միջոցով
Էներգամատակարարման հաճախականությունը և լարման չափումը Arduino- ի միջոցով

Ներածություն:

Այս նախագծի նպատակն է չափել մատակարարման հաճախականությունն ու լարումը, որը 220 -ից 240 վոլտ և 50 Հց միջակայքում է այստեղ ՝ Հնդկաստանում: Ես օգտագործեցի Arduino- ն ազդանշան գրավելու և հաճախականությունն ու լարման հաշվարկման համար, դուք կարող եք օգտագործել ձեր ունեցած ցանկացած այլ միկրոկոնտրոլեր կամ տախտակ: Շղթան պահանջում է մի բուռ բաղադրիչ և բավականին ճշգրիտ է բոլոր գործնական նպատակների համար:

Քայլ 1: Պահանջվում են բաղադրիչներ

  • Արդուինո Ունո
  • IC LM358
  • Նահանջող տրանսֆորմատոր (220 Վ -ից 12 Վ)
  • Կոնդենսատորներ.

    • 0.1uF
    • 2 x 1uF
  • Ռեզիստորներ.

    • 3 x 1 կՕմ
    • 2 x 100kOhm
    • 1.5kOhm
    • 3.3kOhm
    • 6.8 կմ Օմ
  • 3 x 1N4148 դիոդ
  • Հացի տախտակ և թռչկոտ մետաղալար (ըստ ցանկության)

Քայլ 2: Սխեմատիկ դիագրամ

Սխեմատիկ դիագրամ
Սխեմատիկ դիագրամ
Սխեմատիկ դիագրամ
Սխեմատիկ դիագրամ

Վերոնշյալ սխեմայում տրանսֆորմատորի առաջնայինը միացված է մատակարարման ցանցին, իսկ առաջնայինը `մեր չափիչ շղթային

Քայլ 3. Հասկանալով շրջանը

Հասկանալով շրջանը
Հասկանալով շրջանը
Հասկանալով շրջանը
Հասկանալով շրջանը
Հասկանալով շրջանը
Հասկանալով շրջանը

Ֆունկցիոնալության համաձայն, այս սխեման կարելի է բաժանել չորս մասի

A: Zero Crossing Detector շղթա

Այս միացումն առաջացնում է 5 Վ քառակուսի զարկերակ, երբ սինուս ալիքը դրականից անցնում է բացասականի: Ռեզիստոր R1- ը D1- ի և D2- ի հետ համատեղ սահմանափակում է մուտքի լարման ճոճանակը դիոդային հանգույցում մինչև -0,6 Վ -ից մինչև +5,6 Վ (ենթադրելով, որ դիոդի առաջային լարումը կլինի 0,6 Վ): Ավելին, դուք կարող եք մեծացնել շղթայի մուտքային լարման տիրույթը `մեծացնելով R1 արժեքը:

R2 և R3 դիմադրիչները ձևավորում են լարման բաժանարար ՝ բացասական լարման ճոճանակը մինչև -0.24 Վոլտ սահմանափակելու համար, քանի որ LM358- ի մուտքային ընդհանուր ռեժիմի լարումը սահմանափակված է -0.3 Վոլտով:

R4, R5, կոնդենսատոր C1- ը և op-amp- ը (այստեղ օգտագործվում է որպես համեմատիչ) կազմում են Schmitt Trigger- ի միացումը, որտեղ R4 և R5 դիմադրիչները հիստերեզը դնում են գետնից +49.5 մՎ մուտքի վրա: Schmitt Trigger- ի ելքը սնվում է Arduino PIN2- ով հետագա մշակման համար:

Բ. Մեկուսացում և լարման իջեցում

Ինչպես ցույց է տալիս անունը, այս հատվածը մեկուսացնում և իջեցնում է լարումը մինչև մոտ 12 Վրմ: Նվազեցված լարումը հետագայում սնվում է գործիքավորման սխեմայով:

C: Peak Detector շղթա

Այս սխեման որոշում է մուտքային ազդանշանի առավելագույն գագաթնակետային լարումը: Ռեզիստորի բաժանարար R6 և R7 նվազեցնում են մուտքային լարումը 0.23 գործակցով (12Vrms- ը կրճատվում է մինչև 2.76Vrms): D3 դիոդը վարում է ազդանշանի միայն դրական կես ցիկլը: C2- ի լարումը մեծանում է մինչև ուղղված ազդանշանի գագաթնակետը, որը սնվում է Arduino անալոգային A0 պինով `լարումը հետագա հաշվարկելու համար:

Բացի այդ, դուք կարող եք փոխարինել այս սխեման ճշգրիտ գագաթնակետային դետեկտորի սխեմայով, ինչպես նշված են այստեղ: Բայց իմ ցուցադրական նպատակների համար վերը նշված շրջանը բավական կլինի:

Դ: Արդուինո

Այս մասում Arduino- ն գրավում է Schmitt Trigger- ի սխեմայով առաջացած քառակուսի իմպուլսները և կարդում անալոգային լարումը գագաթնակետային դետեկտորի շրջանից: Տվյալները հետագայում մշակվում են ՝ որոշելու քառակուսային զարկերակի (որը հավասար է ac մատակարարման ժամանակի անձին) ժամանակաշրջանը (հետևաբար ՝ հաճախականությունը) և մատակարարման լարումը:

Քայլ 4. Հաճախականության և լարման հաշվարկ

Հաճախականության հաշվարկ

Արդուինոյի օգնությամբ մենք կարող ենք չափել ազդանշանի T ժամանակահատվածը: Zeroրոյական հատման դետեկտորի քառակուսի ալիքի իմպուլսները սնվում են 2-րդ փինով, այնտեղից մենք կարող ենք չափել յուրաքանչյուր զարկերակի ժամանակաշրջանը: Մենք կարող ենք օգտագործել Arduino- ի ներքին ժամաչափը (մասնավորապես Timer1) `քառակուսի զարկերակի երկու բարձրացող եզրերի միջև ընկած ժամանակահատվածը ընդհատումների օգնությամբ հաշվարկելու համար: Timամաչափը ավելանում է 1 -ով մեկ ժամացույցի ցիկլի համար (առանց նախնական չափիչ = 1), և արժեքը պահվում է գրանցամատյանում TCNT1: Այսպիսով, 16 ՄՀց ժամացույցը հաշվիչն ավելացնում է 16 -ով ամեն միկրո վայրկյանում: Նմանապես prescaler = 8 համար ժամաչափը ավելանում է 2 -ով ամեն միկրովայրկյանում: Այսպիսով, երկու բարձրացող եզրերի միջև ընկած ժամանակահատվածը

T = (TCNT1 արժեք) / յուրաքանչյուր հաշվարկի համար վերցված ժամանակը

Որտեղ, յուրաքանչյուր հաշվարկի համար տևած ժամանակը = նախալեզվիչ / (Arduino ժամաչափի արագություն (16 ՄՀց)

Այսպիսով, հաճախականությունը f = 1 / T = (Arduino ժամացույցի արագություն (16 ՄՀց) / (Prescaler * TCNT! Արժեք)

Հետևաբար, ժամաչափի արագությունը (Հց) տրվում է = (Arduino ժամացույցի արագությունը (16 ՄՀց)) / նախալեզվիչով

իսկ ազդանշանի հաճախականությունը տրվում է = (Arduino ժամացույցի արագությամբ

Համապատասխանաբար, մենք կարող ենք f հաճախականությունը հաշվարկել f = 1/T հարաբերությունից:

Լարման հաշվարկ

Arduino- ի ինքնաթիռի ADC- ն ունի 10 բիթ թույլատրություն (հնարավոր արժեքներ = 2^10 = 1024), վերադարձնելով արժեքները 0-1023 միջակայքում: Համապատասխան անալոգային լարման V- ի հաշվարկման համար մենք պետք է օգտագործենք հետևյալ հարաբերակցությունը

V = (ADC ընթերցում) * 5/1023

Մատակարարման լարումը Vs (rms) հաշվարկելու համար մենք պետք է հաշվի առնենք տրանսֆորմատորի հարաբերակցությունը, դիմադրության բաժանարար R6R7- ը և գագաթնակետային դետեկտորի սխեման: Մենք կարող ենք պարզապես միավորել տարբեր գործոններ/հարաբերակցություն ՝ որպես.

Տրանսֆորմատորի հարաբերակցությունը = 12/230 = 0.052

Ռեզիստորի բաժանարար = R7/(R6 + R7) = 0.23

Պիկ դետեկտորի սխեմա = 1.414

Vs (rms) = V/(1.414*0.052*0.23) = (ADC ընթերցում)*0.289

Պետք է նշել, որ այս արժեքը հեռու է իրական արժեքից ՝ հիմնականում իրական տրանսֆորմատորի հարաբերակցության սխալի և դիոդի առաջ լարման անկման պատճառով: Սա շրջանցելու տարբերակներից մեկն այն է, որ գործոնը որոշվի շրջանը հավաքելուց հետո: Դա մատակարարման լարումը և լարումը C2 կոնդենսատորի վրա առանձին չափելով մուլտիմետրով, այնուհետև Vs (rms) հաշվարկելով հետևյալ կերպ.

Vs (rms) = ((Մատակարարման լարման *5)/(Լարման C2 *1023)) *(ADC ընթերցում)

իմ դեպքում Vs (rms) = 0.33*(ADC Reading)

Քայլ 5: Arduino կոդ

#սահմանել volt_in A0 // անալոգային լարման ընթերցման քորոց

անկայուն uint16_t t_period; uint16_t ADC_value = 0; բոց վոլտ, հաճախականություն; void isr () {t_period = TCNT1; // պահել TCNT1 արժեքը t_period TCNT1 = 0; // վերականգնել Timer1 ADC_value = analogRead (volt_in); // կարդալ անալոգային լարման} float get_freq () {uint16_t ժմչփ = t_period; եթե (ժամանակաչափ == 0) վերադարձնել 0; // զրոյի բաժանումից խուսափելու համար այլ կերպ վերադարձնել 16000000.0/(8UL*ժմչփ); // հաճախականությունը տրվում է f = clk_freq/(prescaler*timeperiod)} void setup () {TCCR1A = 0; TCCR1B = բիթ (CS11); // նախնական սակագինը սահմանել 8 TCNT1 = 0; // վերականգնել Timer1 արժեքը TIMSK1 = բիթ (TOIE1); // միացնել Timer1- ի արտահոսքի ընդհատումը EIFR | = բիթ (INTF0); // մաքրել INT0 ընդհատման դրոշը Serial.begin (9600); } void loop () {attachInterrupt (0, isr, RISING); // միացնել արտաքին ընդհատման (INT0) հետաձգումը (1000); detachInterrupt (0); հաճախականություն = get_freq (); վոլտ = ADC_value*0.33; Լարային բուֆ; buf += լարային (հաճախականություն, 3); buf += F ("Hz / t"); buf += Լար (վոլտ); buf += F («Վոլտ»); Serial.println (buf); }

Քայլ 6: Եզրակացություն

Եզրակացություն
Եզրակացություն
Եզրակացություն
Եզրակացություն

Դուք կարող եք միացումը հավաքել տախտակի վրա և կարգաբերել կոդը և ավելացնել SD քարտ ՝ տվյալները պահելու համար, որոնք հետագայում կարող են վերլուծվել: Նման օրինակներից մեկն այն է, որ դուք կարող եք վերլուծել լարումը և հաճախականությունը պիկ ժամերին:

Շրջանակը, որը ես հավաքեցի հացատախտակի վրա, LM358- ի փոխարեն օգտագործեց LM324 (քառուղի) փոխարեն, քանի որ ես այդ պահին չունեի այդ IC- ն, իսկ COVID-19 համաճարակի պատճառով համապետական արգելափակումը դժվարացրեց ինձ նոր IC ստանալը. Այնուամենայնիվ, դա չի ազդի շրջանի աշխատանքի վրա:

Ազատորեն մեկնաբանեք ստորև ՝ ցանկացած առաջարկի և հարցման համար:

Խորհուրդ ենք տալիս: