Orodha ya maudhui:

Mzunguko wa Usambazaji wa Nguvu na Upimaji wa Voltage Kutumia Arduino: Hatua 6
Mzunguko wa Usambazaji wa Nguvu na Upimaji wa Voltage Kutumia Arduino: Hatua 6

Video: Mzunguko wa Usambazaji wa Nguvu na Upimaji wa Voltage Kutumia Arduino: Hatua 6

Video: Mzunguko wa Usambazaji wa Nguvu na Upimaji wa Voltage Kutumia Arduino: Hatua 6
Video: Pro Micro ATMEGA32U4 Arduino Pins and 5V, 3.3V Explained 2024, Novemba
Anonim
Mzunguko wa Usambazaji wa Nguvu na Upimaji wa Voltage Kutumia Arduino
Mzunguko wa Usambazaji wa Nguvu na Upimaji wa Voltage Kutumia Arduino

Utangulizi:

Lengo la mradi huu ni kupima mzunguko wa usambazaji na voltage, ambayo ni kati ya Volts 220 hadi 240 na 50Hz hapa India. Nilitumia Arduino kukamata ishara na kuhesabu masafa na voltage, unaweza kutumia mdhibiti mwingine yeyote au bodi unayo. Mzunguko unahitaji vifaa kadhaa na ni sahihi kwa madhumuni yote ya vitendo.

Hatua ya 1: Vipengele vinahitajika

  • Arduino Uno
  • IC LM358
  • Tembea chini ya transformer (220V hadi 12V)
  • Capacitors:

    • 0.1uF
    • 2 x 1uF
  • Kizuizi:

    • 3 x 1kOhm
    • 2 x 100kOhm
    • 1.5kOhm
    • 3.3kOhm
    • 6.8kOhm
  • 3 x 1N4148 diode
  • Bodi ya mkate na waya ya Jumper (hiari)

Hatua ya 2: Mchoro wa Mpangilio

Mchoro wa Mpangilio
Mchoro wa Mpangilio
Mchoro wa Mpangilio
Mchoro wa Mpangilio

Katika mzunguko hapo juu, msingi wa transformer umeunganishwa na vifaa vya usambazaji na msingi umeunganishwa na mzunguko wetu wa kupimia

Hatua ya 3: Kuelewa Mzunguko

Kuelewa Mzunguko
Kuelewa Mzunguko
Kuelewa Mzunguko
Kuelewa Mzunguko
Kuelewa Mzunguko
Kuelewa Mzunguko

Kulingana na utendaji, mzunguko huu unaweza kugawanywa katika sehemu nne:

J: Mzunguko wa Kivinjari cha Zero

Mzunguko huu hutengeneza mapigo ya mraba 5V wakati wowote sinewave inapoenda kutoka chanya kwenda hasi. Resistor R1 pamoja na D1 na D2 inazuia ubadilishaji wa voltage ya pembejeo kwenye makutano ya diode hadi -0.6V hadi + 5.6V (kuchukua diode mbele kuwa 0.6V). Kwa kuongezea, unaweza kuongeza kiwango cha voltage ya pembejeo ya mzunguko kwa kuongeza thamani ya R1.

Kuzuia R2 na R3 huunda mgawanyiko wa voltage ili kupunguza swichi hasi ya voltage -0.24Volts kwani voltage ya kawaida ya njia ya LM358 imepunguzwa hadi -0.3Volts.

Kuzuia R4, R5, capacitor C1 na op-amp (hapa kutumika kama kulinganisha) huunda mzunguko wa Schmitt Trigger ambapo kontena R4 na R5 huweka hysteresis kwenye pembejeo + 49.5mV juu ya ardhi. Pato la Schmitt Trigger hulishwa kwa Arduino PIN2 kwa usindikaji zaidi.

B: Kutengwa na Voltage Shuka chini

Kama jina linavyoonyesha sehemu hii hutenganisha na kushuka kwa voltage kwa takriban 12Vrms. Voltage iliyopunguzwa inalishwa zaidi kwa mzunguko wa vifaa.

C: Kilele Detector mzunguko

Mzunguko huu huamua kiwango cha juu cha voltage ya ishara ya kuingiza. Resistor divider R6 na R7 hupunguza voltage ya pembejeo kwa sababu ya 0.23 (12Vrms imepunguzwa hadi 2.76Vrms). Diode D3 hufanya tu mzunguko mzuri wa nusu ya ishara. Voltage katika C2 inaongezeka hadi thamani ya juu ya ishara iliyosahihishwa, ambayo hulishwa kwa pini ya Analog ya Aduino A0 ili kuhesabu zaidi voltage.

Kwa kuongezea, unaweza kubadilisha mzunguko huu na mzunguko wa kipelelezi cha usahihi kama hizi zilizotajwa hapa. Lakini kwa madhumuni yangu ya maonyesho, mzunguko hapo juu utatosha.

D: Arduino

Katika sehemu hii, Arduino inakamata kunde za mraba zinazozalishwa na mzunguko wa Schmitt Trigger na inasoma voltage ya analog kutoka kwa mzunguko wa kilele cha kipelelezi. Takwimu zinashughulikiwa zaidi kuamua kipindi cha muda (kwa hivyo masafa) ya mapigo ya mraba (ambayo ni sawa na mtu wa usambazaji wa ac) na voltage ya usambazaji.

Hatua ya 4: Hesabu ya Mzunguko na Voltage

Hesabu ya masafa:

Kwa msaada wa Arduino, tunaweza kupima muda wa T wa ishara. Pigo la wimbi la mraba kutoka kwa kichunguzi cha sifuri hulishwa ili kubandika 2, kutoka hapo tunaweza kupima kipindi cha muda wa kila kunde. Tunaweza kutumia kipima muda cha ndani cha Arduino (haswa Timer1) kuhesabu kipindi cha muda kati ya kingo mbili zinazoinuka za mapigo ya mraba kwa msaada wa usumbufu. Kuongezeka kwa saa kwa 1 kwa kila saa (bila prescaler = 1) na thamani inahifadhiwa kwenye rejista TCNT1. Kwa hivyo saa ya 16Mhz inaongeza kaunta kwa 16 kila microsecond. Vivyo hivyo kwa prescaler = 8 kipima muda huongezwa na 2 kila microsecond. Kwa hivyo kipindi cha muda kati ya makali mawili yanayopanda

T = (TCNT1 thamani) / wakati uliochukuliwa kwa kila hesabu

Wapi, wakati uliochukuliwa kwa kila hesabu = prescaler / (kasi ya saa ya Arduino (16MHz)

Kwa hivyo, masafa f = 1 / T = (kasi ya saa ya Arduino (16MHz) / (Prescaler * TCNT! Thamani)

Kwa hivyo kasi ya saa (Hz) imepewa na = (kasi ya saa ya Arduino (16MHz)) / prescaler

na mzunguko wa ishara hutolewa na = (kasi ya saa ya Arduino

Vivyo hivyo, tunaweza kuhesabu masafa f kutoka kwa uhusiano f = 1 / T.

Mahesabu ya voltage:

ADC ya ndani ya Arduino ina azimio la bits 10 (maadili yanayowezekana = 2 ^ 10 = 1024), na kurudisha maadili kwa kiwango cha 0-1023. Ili kuhesabu voltage inayofanana ya Analog V tunapaswa kutumia uhusiano ufuatao

V = (Kusoma kwa ADC) * 5/1023

Ili kuhesabu voltage ya usambazaji Vs (rms) lazima tuzingatie Uwiano wa Transformer, Resistor divider R6R7 na mzunguko wa kipelelezi cha kilele. Tunaweza tu kuweka pamoja sababu / uwiano anuwai kama:

Uwiano wa kubadilisha = 12/230 = 0.052

Mgawanyiko wa mpinzani = R7 / (R6 + R7) = 0.23

Katika mzunguko wa kipelelezi = 1.414

Vs (rms) = V / (1.414 * 0.052 * 0.23) = (Kusoma kwa ADC) * 0.289

Ikumbukwe kwamba thamani hii iko mbali na thamani halisi, haswa kwa sababu ya makosa katika uwiano halisi wa transfoma na kushuka kwa diode mbele ya voltage. Njia moja ya kukwepa hii ni kuamua sababu baada ya kukusanya mzunguko. Hiyo ni kwa kupima voltage ya usambazaji na voltage kwenye capacitor C2 kando na multimeter, kisha kuhesabu Vs (rms) kama ifuatavyo:

Vs (rms) = ((Voltage ya Ugavi * 5) / (Voltage kote C2 * 1023)) * (ADC Reading)

kwa upande wangu, Vs (rms) = 0.33 * (ADC Reading)

Hatua ya 5: Msimbo wa Arduino

#fafanua volt_in A0 // pini ya voltage ya analog inasoma pini

tete uint16_t t_period; uint16_t ADC_thamani = 0; kuelea volt, freq; tupu isr () {t_period = TCNT1; // duka TCNT1 thamani katika t_period TCNT1 = 0; // kuweka upya Timer1 ADC_value = analogRead (volt_in); // soma voltage ya Analog} kuelea get_freq () {uint16_t timer = t_period; ikiwa (timer == 0) kurudi 0; // kuzuia mgawanyiko kwa sifuri kurudi 16000000.0 / (8UL * timer); // frequency hutolewa na f = clk_freq / (prescaler * timeperiod)} usanidi batili () {TCCR1A = 0; TCCR1B = kidogo (CS11); // weka daktari mkuu kwa 8 TCNT1 = 0; // kuweka upya Timer1 thamani TIMSK1 = kidogo (TOIE1); // kuwezesha Timer1 kufurika kukatiza EIFR | = kidogo (INTF0); // wazi INT0 kusumbua bendera Serial.begin (9600); } kitanzi batili () {attachInterrupt (0, isr, RISING); // kuwezesha kuchelewesha kwa nje (INT0) kuchelewesha (1000); ondoa Kukatisha (0); freq = pata_freq (); volt = ADC_thamani * 0.33; Kamba ya buf; buf + = Kamba (freq, 3); buf + = F ("Hz / t"); buf + = Kamba (volt); buf + = F ("Volts"); Serial.println (buf); }

Hatua ya 6: Hitimisho

Hitimisho
Hitimisho
Hitimisho
Hitimisho

Unaweza kukusanya mzunguko kwenye ubao wa mkate na kurekebisha msimbo na kuongeza Kadi ya SD kuhifadhi data, ambayo inaweza kuchambuliwa baadaye. Mfano mmoja kama huo ni, unaweza kuchambua voltage na masafa katika masaa ya kilele.

Mzunguko niliokusanyika kwenye ubao wa mkate ulitumia LM324 (quad opamp) badala ya LM358 (opamp mbili) kwani sikuwa na IC hiyo wakati huo na kuzima kwa nchi nzima kwa sababu ya janga la COVID-19 ilinipa ugumu kupata IC mpya. Walakini, haitaathiri utendaji wa mzunguko.

Jisikie huru kutoa maoni hapa chini kwa maoni na maswali yoyote.

Ilipendekeza: