Talaan ng mga Nilalaman:

Dalas ng Pag-supply ng Lakas at Sukat ng Boltahe Gamit ang Arduino: 6 na Hakbang
Dalas ng Pag-supply ng Lakas at Sukat ng Boltahe Gamit ang Arduino: 6 na Hakbang

Video: Dalas ng Pag-supply ng Lakas at Sukat ng Boltahe Gamit ang Arduino: 6 na Hakbang

Video: Dalas ng Pag-supply ng Lakas at Sukat ng Boltahe Gamit ang Arduino: 6 na Hakbang
Video: Измерение 5A-30A переменного и постоянного тока с использованием ACS712 с библиотекой Robojax 2024, Hulyo
Anonim
Dalas ng supply ng kuryente at pagsukat ng boltahe gamit ang Arduino
Dalas ng supply ng kuryente at pagsukat ng boltahe gamit ang Arduino

Panimula:

Ang layunin ng proyektong ito ay upang masukat ang dalas ng supply at boltahe, na nasa pagitan ng 220 hanggang 240 Volts at 50Hz dito sa India. Gumamit ako ng isang Arduino para sa pagkuha ng signal at pagkalkula ng dalas at boltahe, maaari kang gumamit ng anumang iba pang microcontroller o board na mayroon ka. Ang circuit ay nangangailangan ng isang maliit na bahagi ng mga bahagi at medyo tumpak para sa lahat ng mga praktikal na layunin.

Hakbang 1: Kinakailangan ang Mga Bahagi

  • Arduino Uno
  • IC LM358
  • Bumaba ang transpormer (220V hanggang 12V)
  • Mga Capacitor:

    • 0.1uF
    • 2 x 1uF
  • Mga lumalaban:

    • 3 x 1kOhm
    • 2 x 100kOhm
    • 1.5kOhm
    • 3.3kOhm
    • 6.8kOhm
  • 3 x 1N4148 diode
  • Bread Board at Jumper wire (opsyonal)

Hakbang 2: Diagram ng Skematika

Diagram ng Skematik
Diagram ng Skematik
Diagram ng Skematik
Diagram ng Skematik

Sa circuit sa itaas, ang pangunahing transpormer ay konektado sa mga supply mains at ang pangunahing ay konektado sa aming circuit sa pagsukat

Hakbang 3: Pag-unawa sa Circuit

Pag-unawa sa Circuit
Pag-unawa sa Circuit
Pag-unawa sa Circuit
Pag-unawa sa Circuit
Pag-unawa sa Circuit
Pag-unawa sa Circuit

Ayon sa pagpapaandar, ang circuit na ito ay maaaring nahahati sa apat na bahagi:

A: Ang circuit ng Zero Crossing Detector

Ang circuit na ito ay bumubuo ng isang 5V square pulse tuwing ang sinewave ay nagmula sa positibo hanggang negatibo. Ang resistor R1 na sinamahan ng D1 at D2 ay naglilimita sa swing voltage input sa diode junction hanggang -0.6V hanggang + 5.6V (ipinapalagay na diode forward voltage na 0.6V). Bukod dito, maaari mong taasan ang saklaw ng input boltahe ng circuit sa pamamagitan ng pagtaas ng halaga ng R1.

Ang risistor R2 at R3 ay bumubuo ng isang divider ng boltahe upang malimitahan ang negatibong boltahe na swing sa -0.24Volts habang ang input na karaniwang-mode na boltahe ng LM358 ay limitado sa -0.3Volts.

Ang risistor R4, R5, capacitor C1 at ang op-amp (dito ginamit bilang isang kumpare) ay bumubuo ng Schmitt Trigger circuit kung saan itinakda ng risistor R4 at R5 ang hysteresis sa input + 49.5mV sa itaas ng lupa. Ang output ng Schmitt Trigger ay pinakain sa Arduino PIN2 para sa karagdagang pagproseso.

B: Pagbaba ng Isolasyon at Boltahe

Tulad ng ipinahihiwatig ng pangalan ng bahaging ito ay ihiwalay at binababa ang boltahe sa humigit-kumulang 12Vrms. Ang stepped-down na boltahe ay karagdagang pinakain sa circuit ng kagamitan.

C: circuit ng Detector ng Peak

Tinutukoy ng circuit na ito ang maximum na boltahe ng rurok ng input signal. Ang resistor divider R6 at R7 ay nagbabawas ng input boltahe ng isang salik na 0.23 (12Vrms ay nabawasan sa 2.76Vrms). Ang diode D3 ay nagsasagawa lamang ng positibong kalahating ikot ng signal. Ang boltahe sa kabuuan ng C2 ay tumataas hanggang sa rurok na halaga ng naitama na signal, na kung saan ay pinakain sa Arduino analog pin A0 upang higit na makalkula ang boltahe.

Bilang karagdagan, maaari mong palitan ang circuit na ito ng isang eksaktong rurok ng detector circuit tulad ng nabanggit dito. Ngunit para sa aking mga hangarin sa pagpapakita, ang circuit sa itaas ay magiging sapat.

D: Arduino

Sa bahaging ito, kinukuha ng Arduino ang mga parisukat na pulso na nabuo ng Schmitt Trigger circuit at binabasa ang boltahe ng analog mula sa rurok ng detector ng rurok. Ang data ay karagdagang pinoproseso upang matukoy ang tagal ng oras (samakatuwid dalas) ng square pulso (na katumbas ng ac supply time person) at boltahe ng supply.

Hakbang 4: Pagkalkula ng Dalas at Boltahe

Pagkalkula ng dalas:

Sa tulong ng Arduino, masusukat natin ang tagal ng panahon T ng signal. Ang mga pulso ng square wave mula sa zero-crossing detector ay pinapakain sa pin 2, mula doon maaari nating masukat ang tagal ng panahon ng bawat pulso. Maaari naming gamitin ang panloob na timer ng Arduino (partikular na Timer1) upang makalkula ang tagal ng panahon sa pagitan ng dalawang Tumataas na mga gilid ng square pulse sa tulong ng mga nakakagambala. Ang timer ay nagdaragdag ng 1 bawat ikot ng orasan (nang walang prescaler = 1) at ang halaga ay nakaimbak sa rehistro TCNT1. Samakatuwid ang 16Mhz na orasan ay nagdaragdag ng counter ng 16 bawat microsecond. Katulad nito para sa prescaler = 8 ang timer ay nadagdagan ng 2 bawat microsecond. Samakatuwid ang tagal ng panahon sa pagitan ng dalawang tumataas na gilid

T = (TCNT1 na halaga) / oras na kinuha para sa bawat bilang

Kung saan, natapos ang oras para sa bawat bilang = prescaler / (Bilis ng orasan ng Arduino (16MHz)

Samakatuwid, dalas f = 1 / T = (Bilis ng orasan ng Arduino (16MHz) / (Prescaler * TCNT! Halaga)

Samakatuwid ang bilis ng timer (Hz) ay ibinibigay ng = (Arduino na bilis ng orasan (16MHz)) / prescaler

at ang dalas ng signal ay ibinibigay ng = (bilis ng orasan ng Arduino

Katumbas, maaari nating kalkulahin ang dalas f mula sa ugnayan f = 1 / T.

Pagkalkula ng boltahe:

Ang onboard ADC ng Arduino ay may isang resolusyon ng 10 bits (mga posibleng halaga = 2 ^ 10 = 1024), na nagbabalik ng mga halaga sa saklaw na 0-1023. Upang makalkula ang kaukulang analog boltahe V kailangan nating gamitin ang sumusunod na ugnayan

V = (Pagbasa ng ADC) * 5/1023

Upang makalkula ang supply volts Vs (rms) dapat nating isaalang-alang ang Transformer Ratio, Resistor divider R6R7 at ang rurok ng detector na rurok. Maaari naming pagsamahin nang magkasama ang iba't ibang mga kadahilanan / ratio bilang:

Transformer ratio = 12/230 = 0.052

Resistor divider = R7 / (R6 + R7) = 0.23

Sa rurok ng detector circuit = 1.414

Vs (rms) = V / (1.414 * 0.052 * 0.23) = (Pagbasa ng ADC) * 0.289

Dapat pansinin na ang halagang ito ay malayo sa aktwal na halaga, higit sa lahat dahil sa pagkakamali sa aktwal na ratio ng transpormer at pagbaba ng boltahe ng diode pasulong. Ang isang paraan upang maiwasan ito ay upang matukoy ang kadahilanan pagkatapos ng pag-assemble ng circuit. Iyon ay sa pamamagitan ng pagsukat ng boltahe ng supply at ng boltahe sa kabuuan ng capacitor C2 na hiwalay sa isang multimeter, pagkatapos ay kinakalkula ang Vs (rms) tulad ng sumusunod:

Vs (rms) = ((Supply Boltahe * 5) / (Boltahe sa buong C2 * 1023)) * (Pagbasa ng ADC)

sa aking kaso, Vs (rms) = 0.33 * (Pagbasa ng ADC)

Hakbang 5: Arduino Code

# tukuyin ang volt_in A0 // analog voltage read pin

pabagu-bago ng isip uint16_t t_period; uint16_t ADC_value = 0; float volt, freq; void isr () {t_period = TCNT1; // store TCNT1 na halaga sa t_period TCNT1 = 0; // reset Timer1 ADC_value = analogRead (volt_in); // read analog voltage} float get_freq () {uint16_t timer = t_period; kung (timer == 0) ibalik ang 0; // upang maiwasan ang paghahati ng zero na bumalik 16000000.0 / (8UL * timer); // frequency ay ibinibigay ng f = clk_freq / (prescaler * timeperiod)} void setup () {TCCR1A = 0; TCCR1B = bit (CS11); // set prescaler to 8 TCNT1 = 0; // reset Timer1 halaga TIMSK1 = bit (TOIE1); // paganahin ang Timer1 overflow makagambala EIFR | = bit (INTF0); // clear INT0 makagambala flag Serial.begin (9600); } void loop () {attachInterrupt (0, isr, RISING); // paganahin ang pagkaantala ng panlabas na abala (INT0) (1000); detachInterrupt (0); freq = get_freq (); volt = ADC_value * 0.33; String buf; buf + = String (freq, 3); buf + = F ("Hz / t"); buf + = String (volt); buf + = F ("Volts"); Serial.println (buf); }

Hakbang 6: Konklusyon

Konklusyon
Konklusyon
Konklusyon
Konklusyon

Maaari mong tipunin ang circuit sa isang breadboard at i-tweak ang code at magdagdag ng isang SD Card upang maiimbak ang data, na maaaring masuri sa paglaon. Ang isang tulad halimbawa ay, maaari mong pag-aralan ang boltahe at dalas sa mga rurok na oras.

Ang circuit na aking natipon sa breadboard ay gumamit ng LM324 (quad opamp) sa halip na LM358 (dual opamp) dahil wala akong IC sa oras na iyon at sa buong bansa na lockdown dahil sa COVID-19 pandemya ay naging mahirap para sa akin na makakuha ng isang bagong IC. Gayunpaman, hindi ito makakaapekto sa pagtatrabaho ng circuit.

Huwag mag-atubiling magbigay ng puna sa ibaba para sa anumang mga mungkahi at query.

Inirerekumendang: