विषयसूची:

Arduino का उपयोग करके बिजली आपूर्ति आवृत्ति और वोल्टेज मापन: 6 कदम
Arduino का उपयोग करके बिजली आपूर्ति आवृत्ति और वोल्टेज मापन: 6 कदम

वीडियो: Arduino का उपयोग करके बिजली आपूर्ति आवृत्ति और वोल्टेज मापन: 6 कदम

वीडियो: Arduino का उपयोग करके बिजली आपूर्ति आवृत्ति और वोल्टेज मापन: 6 कदम
वीडियो: Distribution Transformer Arc Discharge High Voltage Transformer #shorts #highvoltage #shortcircuit 2024, नवंबर
Anonim
Arduino का उपयोग करके बिजली आपूर्ति आवृत्ति और वोल्टेज मापन
Arduino का उपयोग करके बिजली आपूर्ति आवृत्ति और वोल्टेज मापन

परिचय:

इस परियोजना का लक्ष्य आपूर्ति आवृत्ति और वोल्टेज को मापना है, जो भारत में 220 से 240 वोल्ट और 50 हर्ट्ज के बीच है। मैंने सिग्नल कैप्चर करने और फ़्रीक्वेंसी और वोल्टेज की गणना के लिए एक Arduino का उपयोग किया है, आप अपने पास मौजूद किसी अन्य माइक्रोकंट्रोलर या बोर्ड का उपयोग कर सकते हैं। सर्किट को मुट्ठी भर घटकों की आवश्यकता होती है और यह सभी व्यावहारिक उद्देश्यों के लिए काफी सटीक है।

चरण 1: आवश्यक घटक

  • Arduino Uno
  • आईसी एलएम३५८
  • स्टेप डाउन ट्रांसफार्मर (220V से 12V)
  • संधारित्र:

    • 0.1uF
    • 2 एक्स 1यूएफ
  • प्रतिरोधक:

    • 3 एक्स 1kOhm
    • 2 x 100kOhm
    • 1.5kOhm
    • 3.3kOhm
    • 6.8kOhm
  • 3 x 1N4148 डायोड
  • ब्रेड बोर्ड और जम्पर वायर (वैकल्पिक)

चरण 2: योजनाबद्ध आरेख

योजनाबद्ध आरेख
योजनाबद्ध आरेख
योजनाबद्ध आरेख
योजनाबद्ध आरेख

उपरोक्त सर्किट में, ट्रांसफॉर्मर प्राइमरी सप्लाई मेन से जुड़ा है और प्राइमरी हमारे मेजरिंग सर्किट से जुड़ा है

चरण 3: सर्किट को समझना

सर्किट को समझना
सर्किट को समझना
सर्किट को समझना
सर्किट को समझना
सर्किट को समझना
सर्किट को समझना

कार्यक्षमता के अनुसार, इस सर्किट को चार भागों में विभाजित किया जा सकता है:

ए: जीरो क्रॉसिंग डिटेक्टर सर्किट

जब भी साइनवेव सकारात्मक से नकारात्मक में जाती है तो यह सर्किट 5V वर्ग पल्स उत्पन्न करता है। D1 और D2 के साथ संयुक्त रेसिस्टर R1 डायोड जंक्शन पर इनपुट वोल्टेज स्विंग को -0.6V से +5.6V तक सीमित करता है (डायोड फॉरवर्ड वोल्टेज को 0.6V मानते हुए)। इसके अलावा, आप R1 के मान को बढ़ाकर सर्किट के इनपुट वोल्टेज रेंज को बढ़ा सकते हैं।

रोकनेवाला R2 और R3 नकारात्मक वोल्टेज स्विंग को -0.24Volts तक सीमित करने के लिए एक वोल्टेज विभक्त बनाते हैं क्योंकि LM358 का इनपुट कॉमन-मोड वोल्टेज -0.3Volts तक सीमित है।

रोकनेवाला R4, R5, संधारित्र C1 और op-amp (यहाँ एक तुलनित्र के रूप में उपयोग किया जाता है) श्मिट ट्रिगर सर्किट बनाता है जहाँ रोकनेवाला R4 और R5 जमीन के ऊपर +49.5mV इनपुट पर हिस्टैरिसीस सेट करते हैं। श्मिट ट्रिगर का आउटपुट आगे की प्रक्रिया के लिए Arduino PIN2 को खिलाया जाता है।

बी: अलगाव और वोल्टेज नीचे कदम

जैसा कि नाम से पता चलता है कि यह हिस्सा अलग हो जाता है और वोल्टेज को लगभग 12Vrms तक कम कर देता है। स्टेप-डाउन वोल्टेज को आगे इंस्ट्रूमेंटेशन सर्किट में फीड किया जाता है।

सी: पीक डिटेक्टर सर्किट

यह सर्किट इनपुट सिग्नल के अधिकतम पीक वोल्टेज को निर्धारित करता है। रेसिस्टर डिवाइडर R6 और R7 इनपुट वोल्टेज को 0.23 के कारक से कम करते हैं (12Vrms को 2.76Vrms तक घटाया जाता है)। डायोड D3 सिग्नल के केवल धनात्मक आधे चक्र का संचालन करता है। C2 के पार वोल्टेज रेक्टिफाइड सिग्नल के चरम मूल्य तक बढ़ जाता है, जिसे आगे वोल्टेज की गणना करने के लिए Arduino एनालॉग पिन A0 को खिलाया जाता है।

इसके अलावा, आप इस सर्किट को यहां बताए गए सटीक पीक डिटेक्टर सर्किट से बदल सकते हैं। लेकिन मेरे प्रदर्शन उद्देश्यों के लिए, उपरोक्त सर्किट पर्याप्त होगा।

डी: अरुडिनो

इस भाग में, Arduino Schmitt Trigger सर्किट द्वारा उत्पन्न वर्ग दालों को पकड़ता है और पीक डिटेक्टर सर्किट से एनालॉग वोल्टेज को पढ़ता है। वर्ग पल्स की समय अवधि (इसलिए आवृत्ति) (जो एसी आपूर्ति समय व्यक्ति के बराबर है) और आपूर्ति के वोल्टेज को निर्धारित करने के लिए डेटा को आगे संसाधित किया जाता है।

चरण 4: आवृत्ति और वोल्टेज की गणना

आवृत्ति की गणना:

Arduino की मदद से, हम सिग्नल की समयावधि T को माप सकते हैं। जीरो-क्रॉसिंग डिटेक्टर से स्क्वायर वेव पल्स को पिन 2 में फीड किया जाता है, वहां से हम प्रत्येक पल्स की समय अवधि को माप सकते हैं। हम इंटरप्ट की मदद से वर्गाकार पल्स के दो बढ़ते किनारों के बीच की समय अवधि की गणना करने के लिए Arduino के आंतरिक टाइमर (विशेष रूप से Timer1) का उपयोग कर सकते हैं। टाइमर 1 प्रति घड़ी चक्र (बिना प्रीस्केलर = 1 के) बढ़ता है और मान रजिस्टर TCNT1 में संग्रहीत होता है। इसलिए 16 मेगाहर्ट्ज घड़ी प्रति माइक्रोसेकंड 16 से काउंटर बढ़ा देती है। इसी तरह प्रीस्केलर = 8 के लिए टाइमर हर माइक्रोसेकंड में 2 से बढ़ जाता है। इसलिए दो बढ़ते किनारों के बीच की समय अवधि

T = (TCNT1 मान) / प्रत्येक गणना के लिए लिया गया समय

जहाँ, प्रत्येक गणना के लिए लिया गया समय = प्रीस्केलर / (Arduino घड़ी की गति (16MHz)

इसलिए, आवृत्ति f = 1/T = (Arduino घड़ी की गति (16MHz) / (Prescaler * TCNT! मान)

इसलिए टाइमर की गति (Hz) = (Arduino घड़ी की गति (16MHz)) / prescaler. द्वारा दी गई है

और सिग्नल की आवृत्ति = (Arduino घड़ी की गति.) द्वारा दी जाती है

इसी प्रकार, हम f = 1/T के संबंध से आवृत्ति f की गणना कर सकते हैं।

वोल्टेज की गणना:

Arduino के ऑनबोर्ड ADC में १० बिट्स (संभावित मान = २ ^ १० = १०२४) का रिज़ॉल्यूशन है, जो ०-१०२३ की सीमा में मान लौटाता है। संबंधित एनालॉग वोल्टेज वी की गणना करने के लिए हमें निम्नलिखित संबंध का उपयोग करना होगा:

वी = (एडीसी पढ़ना) * 5/1023

आपूर्ति वोल्टेज बनाम (आरएमएस) की गणना करने के लिए हमें ट्रांसफार्मर अनुपात, प्रतिरोधी विभक्त R6R7 और पीक डिटेक्टर सर्किट को ध्यान में रखना चाहिए। हम बस विभिन्न कारकों/अनुपातों को एक साथ रख सकते हैं:

ट्रांसफार्मर अनुपात = 12/230 = 0.052

रेसिस्टर डिवाइडर = R7/(R6 + R7) = 0.23

पीक डिटेक्टर सर्किट पर = १.४१४

बनाम(आरएमएस) = वी/(1.414*0.052*0.23) = (एडीसी रीडिंग) * 0.289

यह ध्यान दिया जाना चाहिए कि यह मान वास्तविक मूल्य से बहुत दूर है, मुख्य रूप से वास्तविक ट्रांसफार्मर अनुपात में त्रुटि और डायोड फॉरवर्ड वोल्टेज ड्रॉप के कारण। इसे दरकिनार करने का एक तरीका सर्किट को असेंबल करने के बाद कारक का निर्धारण करना है। वह है आपूर्ति वोल्टेज और वोल्टेज को कैपेसिटर C2 में एक मल्टीमीटर के साथ अलग से मापकर, फिर Vs (rms) की गणना निम्नानुसार की जाती है:

Vs(rms) = ((आपूर्ति वोल्टेज * 5)/(C2 *1023) के पार वोल्टेज)*(ADC रीडिंग)

मेरे मामले में, बनाम (आरएमएस) = 0.33 * (एडीसी रीडिंग)

चरण 5: Arduino कोड

#define volt_in A0 //एनालॉग वोल्टेज रीड पिन

अस्थिर uint16_t t_period; uint16_t ADC_value = 0; फ्लोट वोल्ट, आवृत्ति; शून्य आईएसआर () {t_period = TCNT1; // TCNT1 मान को t_period TCNT1 = 0 में संग्रहीत करें; // टाइमर 1 ADC_value रीसेट करें = एनालॉगरेड (वोल्ट_इन); // एनालॉग वोल्टेज पढ़ें} फ्लोट get_freq () {uint16_t टाइमर = t_period; अगर (टाइमर == 0) वापसी 0; // शून्य से विभाजन से बचने के लिए १६०००००.०/(८यूएल*टाइमर) लौटाएं; // आवृत्ति f = clk_freq/(prescaler*timeperiod)} शून्य सेटअप() {TCCR1A = 0; TCCR1B = बिट (CS11); // प्रीस्कूलर को 8 TCNT1 = 0 पर सेट करें; // टाइमर 1 मान को रीसेट करें TIMSK1 = बिट (TOIE1); // टाइमर 1 ओवरफ्लो इंटरप्ट ईआईएफआर सक्षम करें | = बिट (आईएनटीएफ 0); // क्लियर INT0 इंटरप्ट फ्लैग Serial.begin (९६००); } शून्य लूप () {अटैचइंटरप्ट (0, आईएसआर, राइजिंग); // बाहरी व्यवधान (INT0) विलंब (1000) सक्षम करें; डिटैचइंटरप्ट (0); फ्रीक = get_freq (); वोल्ट = ADC_value * 0.33; स्ट्रिंग बफ; बफ + = स्ट्रिंग (आवृत्ति, 3); बफ + = एफ ("हर्ट्ज / टी"); बफ + = स्ट्रिंग (वोल्ट); बफ + = एफ ("वोल्ट"); Serial.println (buf); }

चरण 6: निष्कर्ष

निष्कर्ष
निष्कर्ष
निष्कर्ष
निष्कर्ष

आप सर्किट को ब्रेडबोर्ड में इकट्ठा कर सकते हैं और कोड को ट्वीक कर सकते हैं और डेटा को स्टोर करने के लिए एक एसडी कार्ड जोड़ सकते हैं, जिसका बाद में विश्लेषण किया जा सकता है। ऐसा ही एक उदाहरण है, आप व्यस्त समय में वोल्टेज और आवृत्ति का विश्लेषण कर सकते हैं।

मैंने ब्रेडबोर्ड में जो सर्किट असेंबल किया था, उसमें LM358 (डुअल ऑपैंप) के बजाय LM324 (क्वाड opamp) का इस्तेमाल किया गया था क्योंकि उस समय मेरे पास वह IC नहीं था और COVID-19 महामारी के कारण देशव्यापी लॉकडाउन ने मेरे लिए एक नया IC प्राप्त करना मुश्किल बना दिया था।. फिर भी, यह सर्किट के कामकाज को प्रभावित नहीं करेगा।

किसी भी सुझाव और प्रश्न के लिए नीचे टिप्पणी करने के लिए स्वतंत्र महसूस करें।

सिफारिश की: