- सामग्री की आवश्यकता
- सर्किट आरेख
- मापन इकाई
- संगणना और प्रदर्शन इकाई
- Arduino प्रोग्रामिंग
- अधिक सटीकता के साथ कैसे मापें?
- कार्य करना और परीक्षण करना
इलेक्ट्रॉनिक्स इंजीनियरों के रूप में, हम हमेशा सर्किट के काम को मापने और विश्लेषण करने के लिए मीटर / उपकरणों पर निर्भर करते हैं। एक साधारण मल्टीमीटर के साथ एक जटिल बिजली की गुणवत्ता के विश्लेषणकर्ताओं या डीएसओ के लिए सब कुछ अपने स्वयं के अनूठे अनुप्रयोग हैं। इनमें से अधिकांश मीटर आसानी से उपलब्ध हैं और मापे जाने वाले मापदंडों और उनकी सटीकता के आधार पर खरीदे जा सकते हैं। लेकिन कभी-कभी हम ऐसी स्थिति में समाप्त हो सकते हैं, जहां हमें अपने स्वयं के मीटर बनाने की आवश्यकता होती है। उदाहरण के लिए कहें कि आप सोलर पीवी प्रोजेक्ट पर काम कर रहे हैं और आप अपने लोड की बिजली खपत की गणना करना चाहते हैं, ऐसे परिदृश्यों में हम Arduino जैसे सरल माइक्रोकंट्रोलर प्लेटफॉर्म का उपयोग करके अपना खुद का Wattmeter बना सकते हैं।
अपने स्वयं के मीटर का निर्माण न केवल परीक्षण की लागत को कम करता है, बल्कि हमें परीक्षण की प्रक्रिया को आसान बनाने के लिए भी जगह देता है। जैसे, Arduino का उपयोग करके बनाया गया एक वाटमीटर आसानी से सीरियल मॉनिटर पर परिणामों की निगरानी करने और सीरियल प्लॉटर पर एक ग्राफ बनाने या पूर्व-परिभाषित अंतराल पर वोल्टेज, वर्तमान और शक्ति के मूल्यों को स्वचालित रूप से लॉग करने के लिए एसडी कार्ड जोड़ने के लिए जोड़ा जा सकता है । दिलचस्प सही लगता है !? तो चलो शुरू करते है…
सामग्री की आवश्यकता
- अरुडिनो नैनो
- LM358 Op-Amp
- 7805 वोल्टेज नियामक
- 16 * 2 एलसीडी डिस्प्ले
- 0.22 ओम 2Watt शंट रोकनेवाला
- 10k ट्रिमर पॉट
- 10k, 20k, 2.2k, 1k रेसिस्टर्स
- 0.1uF कैपेसिटर
- टेस्ट लोड
- परफ़ेक्ट बोर्ड या ब्रेडबोर्ड
- टांका लगाने की किट (वैकल्पिक)
सर्किट आरेख
Arduino वाटमीटर प्रोजेक्ट का पूरा सर्किट आरेख नीचे दिया गया है।
Arduino Wattmeter सर्किट को समझने में आसानी के लिए दो इकाइयों में विभाजित किया गया है। सर्किट का ऊपरी हिस्सा मापने की इकाई है और सर्किट का निचला हिस्सा गणना और प्रदर्शन इकाई है। इस प्रकार के सर्किट में नए लोगों के लिए, लेबल का अनुसरण किया गया। उदाहरण + 5 वी लेबल है जिसका अर्थ है कि सभी पिन जिस लेबल से जुड़े हैं उन्हें माना जाना चाहिए क्योंकि वे एक साथ जुड़े हुए हैं। आमतौर पर लेबल का उपयोग सर्किट आरेख को साफ-सुथरा बनाने के लिए किया जाता है।
सर्किट को 0-24V के बीच ऑपरेटिंग सिस्टम में फिट करने के लिए डिज़ाइन किया गया है, जो 0-1A की वर्तमान सीमा के साथ सौर पीवी के विनिर्देश को ध्यान में रखते हुए संचालित होता है। लेकिन सर्किट के काम को समझने के बाद आप आसानी से सीमा बढ़ा सकते हैं। सर्किट के पीछे अंतर्निहित सिद्धांत लोड द्वारा वोल्टेज को मापना है और इसके माध्यम से विद्युत खपत की गणना करना है। सभी मापा मूल्यों को 16 * 2 अल्फ़ान्यूमेरिक एलसीडी में प्रदर्शित किया जाएगा।
आगे चलिए सर्किट को छोटे-छोटे खंडों में विभाजित करते हैं ताकि हम स्पष्ट चित्र प्राप्त कर सकें कि सर्किट कैसे काम करने के लिए प्रेरित है।
मापन इकाई
मापने वाली इकाई में वोल्टेज को मापने में मदद करने के लिए एक संभावित विभक्त होता है और सर्किट के माध्यम से वर्तमान को मापने में हमारी मदद करने के लिए नॉन-इनवर्टिंग ओप-amp के साथ एक शट प्रतिरोधक का उपयोग किया जाता है। उपरोक्त सर्किट से संभावित विभक्त भाग नीचे दिखाया गया है
यहां इनपुट वोल्टेज Vcc द्वारा दर्शाया गया है, जैसा कि पहले बताया गया है कि हम 0V से 24V तक की वोल्टेज रेंज के लिए सर्किट डिजाइन कर रहे हैं। लेकिन Arduino जैसे एक माइक्रोकंट्रोलर वोल्टेज के ऐसे उच्च मूल्यों को माप नहीं सकते हैं; यह केवल 0-5V से वोल्टेज को माप सकता है। इसलिए हमें 0-24V से 0-5V की वोल्टेज रेंज को मैप (कन्वर्ट) करना होगा। यह आसानी से एक संभावित विभक्त सर्किट का उपयोग करके किया जा सकता है जैसा कि नीचे दिखाया गया है। रोकनेवाला 10k और 2.2k एक साथ संभावित विभक्त सर्किट बनाते हैं। एक संभावित विभक्त के आउटपुट वोल्टेज की गणना नीचे दिए गए सूत्रों का उपयोग करके की जा सकती है। अपने प्रतिरोधों के मूल्य को तय करने के लिए उसी का उपयोग किया जाता है, यदि आप सर्किट को फिर से डिजाइन कर रहे हैं, तो आप रोकनेवाला के मूल्य की गणना करने के लिए हमारे ऑनलाइन कैलकुलेटर का उपयोग कर सकते हैं।
Vout = (Vin × R2) / (R1 + R2)
मैप किए गए 0-5 V को मध्य भाग से प्राप्त किया जा सकता है जिसे वोल्ट के रूप में लेबल किया गया है। इस मैप किए गए वोल्टेज को बाद में अरुडिनो एनालॉग पिन को खिलाया जा सकता है।
अगला हमें लोड के माध्यम से वर्तमान को मापना होगा। जैसा कि हम जानते हैं कि माइक्रोकंट्रोलर केवल एनालॉग वोल्टेज पढ़ सकते हैं, इसलिए हमें किसी तरह वर्तमान के मूल्य को वोल्टेज में बदलना होगा। इसे केवल उस पथ में एक रोकनेवाला (शंट रेसिस्टर) जोड़कर किया जा सकता है, जो ओम के नियम के अनुसार उस पार वोल्टेज का एक मूल्य गिरा देगा जो इसके माध्यम से बहने वाले वर्तमान के लिए आनुपातिक है। इस वोल्टेज ड्रॉप का मूल्य बहुत कम होगा इसलिए हम इसे बढ़ाने के लिए एक ऑप-एम्प का उपयोग करते हैं। उसी के लिए सर्किट नीचे दिखाया गया है
यहां शंट रेसिस्टर (SR1) का मान 0.22 ओम है। जैसा कि पहले कहा गया था कि हम 0-1 ए के लिए सर्किट डिजाइन कर रहे हैं, इसलिए ओम कानून के आधार पर हम इस अवरोधक पर वोल्टेज ड्रॉप की गणना कर सकते हैं जो लगभग 0.2V होगा जब अधिकतम 1 ए वर्तमान लोड से गुजर रहा है। यह वोल्टेज पढ़ने के लिए एक माइक्रोकंट्रोलर के लिए बहुत छोटा है, हम Arduino को पढ़ने के लिए वोल्टेज को 0.2V से उच्च स्तर तक बढ़ाने के लिए नॉन-इनवर्टिंग एम्पलीफायर मोड में Op-Amp का उपयोग करते हैं।
नॉन-इनवर्टिंग मोड में Op-Amp ऊपर दिखाया गया है। एम्पलीफायर को 21 के लाभ के लिए डिज़ाइन किया गया है, ताकि 0.2 * 21 = 4.2 वी। Op-amp के लाभ की गणना करने के सूत्र नीचे दिए गए हैं, यदि आप सर्किट को फिर से डिजाइन कर रहे हैं, तो अपने अवरोधक का मूल्य प्राप्त करने के लिए आप इस ऑनलाइन लाभ कैलकुलेटर का उपयोग भी कर सकते हैं।
लाभ = वाउट / विन = 1 + (आरएफ / रिन)
यहाँ हमारे मामले में Rf का मान 20k है और Rin का मान 1k है जो हमें 21 का मान देता है। प्रवर्धित वोल्टेज फॉर्म Op-amp को तब प्रतिरोधक 1k और एक संधारित्र 0.1kF के साथ RC फ़िल्टर को दिया जाता है। किसी भी शोर को युग्मित करें। अंत में वोल्टेज तब Arduino एनालॉग पिन को खिलाया जाता है।
पिछले भाग को मापने की इकाई में छोड़ दिया जाता है जो वोल्टेज नियामक भाग होता है। चूंकि हम एक चर इनपुट वोल्टेज देंगे, जिसे संचालित करने के लिए हमें Arduino और Op-amp के लिए एक विनियमित + 5V वोल्ट की आवश्यकता होगी। यह विनियमित वोल्टेज 7805 वोल्ट नियामक द्वारा प्रदान किया जाएगा। शोर को फ़िल्टर करने के लिए आउटपुट पर एक संधारित्र जोड़ा जाता है।
संगणना और प्रदर्शन इकाई
मापने की इकाई में हमने वोल्ट और करंट के मापदंडों को 0-5V में बदलने के लिए सर्किट तैयार किया है जिसे Arduino Analogins में खिलाया जा सकता है। अब सर्किट के इस भाग में हम इन वोल्टेज संकेतों को Arduino से जोड़ेंगे और Arduino को 16 × 2 अल्फ़ान्यूमेरिक डिस्प्ले भी इंटरफ़ेस करेंगे ताकि हम परिणाम देख सकें। उसी के लिए सर्किट नीचे दिखाया गया है
जैसा कि आप देख सकते हैं वोल्टेज पिन एनालॉग पिन ए 3 से जुड़ा है और वर्तमान पिन एनालॉग पिन ए 4 से जुड़ा है। LCD 7805 से + 5V से संचालित होता है और 4-बिट मोड में काम करने के लिए Arduino के डिजिटल पिन से जुड़ा होता है। हमने एलसीडी के विपरीत को अलग करने के लिए कॉन पिन से जुड़े एक पोटेंशियोमीटर (10k) का भी उपयोग किया है।
Arduino प्रोग्रामिंग
अब जब हमें हार्डवेयर की अच्छी समझ है, तो हम Arduino खोलें और प्रोग्रामिंग शुरू करें। कोड का उद्देश्य पिन A3 और A4 पर एनालॉग वोल्टेज को पढ़ना और वोल्टेज, करंट और पावर वैल्यू की गणना करना और अंत में इसे एलसीडी स्क्रीन पर प्रदर्शित करना है। ऐसा करने का पूरा कार्यक्रम पृष्ठ के अंत में दिया गया है, जिसका उपयोग ऊपर चर्चा किए गए हार्डवेयर के लिए किया जा सकता है। इसके अलावा कोड को छोटे स्निपेट में विभाजित किया गया है और समझाया गया है।
सभी कार्यक्रमों के रूप में, हम उन पिनों को परिभाषित करना शुरू करते हैं, जिनका हमने उपयोग किया है। आउट प्रोजेक्ट में ए 3 और ए 4 पिन का उपयोग क्रमशः वोल्टेज और करंट को मापने के लिए किया जाता है और डिजिटल पिन 3,4,8,9,10 और 11 का उपयोग एलसीडी को Arduino के साथ इंटरफेस करने के लिए किया जाता है
int Read_Voltage = A3; int Read_Current = A4; const int rs = 3, en = 4, d4 = 8, d5 = 9, d6 = 10, d7 = 11; // एलसीडी कनेक्शन के लिए पिन नंबर का उल्लेख करें LiquidCrystal एलसीडी (आरएस, एन, डी 4, डी 5, डी 6, डी 7);
हमने Arduino के साथ LCD इंटरफ़ेस करने के लिए लिक्विड क्रिस्टल नामक हेडर फ़ाइल भी शामिल की है। फिर सेटअप फ़ंक्शन के अंदर हम एलसीडी डिस्प्ले को इनिशियलाइज़ करते हैं और “Arduino Wattmeter” के रूप में एक इंट्रो टेक्स्ट प्रदर्शित करते हैं और इसे साफ़ करने से पहले दो सेकंड तक प्रतीक्षा करते हैं। उसी के लिए कोड नीचे दिखाया गया है।
शून्य सेटअप () { lcd.begin (16, 2); // प्रारंभिक 16 * 2 एलसीडी lcd.print ("Arduino Wattmeter"); // इंट्रो मैसेज लाइन 1 lcd.setCursor (0, 1); lcd.print ("- सर्किटडिगेस्ट"); // इंट्रो मैसेज लाइन 2 देरी (2000); lcd.clear (); }
मुख्य लूप फ़ंक्शन के अंदर, हम पिन A3 और A4 से वोल्टेज मान को पढ़ने के लिए एनालॉग रीड फ़ंक्शन का उपयोग करते हैं। जैसा कि हम Arduino ADC आउटपुट वैल्यू को 0-1203 से जानते हैं क्योंकि इसमें 10-बिट ADC है। इस मान को फिर 0-5V में बदलना होगा जो कि (5/1023) के साथ गुणा करके किया जा सकता है। फिर पहले के हार्डवेयर में हमने वोल्टेज के वास्तविक मूल्य को 0-24V से 0-5V तक और वर्तमान रूप के वास्तविक मूल्य 0-1A से 0-5V तक मैप किया है। इसलिए अब हमें इन मूल्यों को वापस वास्तविक मूल्य पर वापस लाने के लिए एक गुणक का उपयोग करना होगा। यह एक गुणक मूल्य के साथ गुणा करके किया जा सकता है। गुणक के मूल्य की गणना या तो सैद्धांतिक रूप से हार्डवेयर अनुभाग में दिए गए सूत्रों का उपयोग करके की जा सकती है या यदि आपके पास वोल्टेज और वर्तमान मूल्यों का ज्ञात सेट है तो आप व्यावहारिक रूप से इसकी गणना कर सकते हैं।मैंने बाद वाले विकल्प का पालन किया है क्योंकि यह वास्तविक समय में अधिक सटीक होता है। इसलिए यहां मल्टीप्लायरों का मूल्य 6.46 और 0.239 है। इसलिए कोड नीचे की तरह दिखता है
float Voltage_Value = analogRead (Read_Voltage); float Current_Value = analogRead (Read_Current); वोल्टेज_वायु = वोल्ट_वायु * (5.0 / 1023.0) * 6.46; करंट_वेल्यू = करंट_वेल्यू * (5.0 / 1023.0) * 0.239;
अधिक सटीकता के साथ कैसे मापें?
वास्तविक वोल्टेज और वर्तमान के मूल्य की गणना करने का उपरोक्त तरीका ठीक काम करेगा। लेकिन एक खामी से ग्रस्त है, कि मापा एडीसी वोल्टेज और वास्तविक वोल्टेज के बीच संबंध रैखिक नहीं होगा इसलिए एक एकल गुणक बहुत सटीक परिणाम नहीं देगा, वही वर्तमान के लिए भी लागू होता है।
तो सटीकता में सुधार करने के लिए हम मूल्यों के ज्ञात सेट का उपयोग करके वास्तविक वाल्वों के साथ मापा एडीसी मूल्यों के सेट की साजिश कर सकते हैं और फिर उस डेटा का उपयोग ग्राफ़ बनाने के लिए और रैखिक प्रतिगमन विधि का उपयोग करके गुणक समीकरण प्राप्त करने के लिए कर सकते हैं। आप Arduino dB मीटर का उल्लेख कर सकते हैं जिसमें मैंने एक समान विधि का उपयोग किया है।
अंत में, एक बार जब हमने लोड के माध्यम से वास्तविक वोल्टेज और वास्तविक वर्तमान के मूल्य की गणना की है, तो हम सूत्रों (P = V * I) का उपयोग करके पावर की गणना कर सकते हैं। फिर हम एलसीडी डिस्प्ले पर तीनों मूल्यों को नीचे दिए गए कोड का उपयोग करके प्रदर्शित करते हैं।
lcd.setCursor (0, 0); lcd.print ("V ="); lcd.print (वोल्ट_वैल्यू); lcd.print (""); lcd.print ("I ="); lcd.print (करंट_वैल्यू); float Power_Value = Voltage_Value * करंट_वैल्यू; lcd.setCursor (0, 1); lcd.print ("पावर ="); lcd.print (Power_Value);
कार्य करना और परीक्षण करना
ट्यूटोरियल के लिए मैंने सर्किट में दिखाए गए अनुसार सभी घटकों को मिलाप करने के लिए एक परिपूर्ण बोर्ड का उपयोग किया है। मैंने अपने पावर स्रोत को जोड़ने के लिए लोड और सामान्य डीसी बैरल जैक को जोड़ने के लिए एक फीनिक्स स्क्रू टर्मिनल का उपयोग किया है। Arduino नैनो बोर्ड और LCD को फीमेल बर्गस्टिक पर लगाया गया है ताकि बाद में ज़रूरत पड़ने पर उनका दोबारा इस्तेमाल किया जा सके।
हार्डवेयर तैयार होने के बाद, Arduino कोड को अपने नैनो बोर्ड पर अपलोड करें। एलसीडी के कंट्रास्ट स्तर को नियंत्रित करने के लिए ट्रिमर पॉट को तब तक समायोजित करें जब तक आपको एक स्पष्ट इंट्रो टेक्स्ट दिखाई न दे। बोर्ड का परीक्षण करने के लिए लोड को स्क्रू टर्मिनल कनेक्टर और स्रोत को बैरल जैक से कनेक्ट करें। इस परियोजना के काम करने के लिए स्रोत वोल्टेज 6V से अधिक होना चाहिए, क्योंकि Arduino को संचालित करने के लिए + 5V की आवश्यकता होती है। यदि सब कुछ ठीक काम कर रहा है, तो आपको लोड के पार वोल्ट का मान और उसके माध्यम से करंट को एलसीडी की पहली लाइन में प्रदर्शित किया जाना चाहिए और एलसीडी की दूसरी लाइन पर प्रदर्शित गणना की गई शक्ति जैसा कि नीचे दिखाया गया है।
किसी चीज के निर्माण का मजेदार हिस्सा यह जांचने में निहित है कि यह ठीक से काम कैसे करेगा। ऐसा करने के लिए मैंने लोड के रूप में 12V ऑटोमोबाइल इंडिकेटर बब्स और स्रोत के रूप में आरपीएस का उपयोग किया है। चूंकि RPS स्वयं करंट और वोल्टेज के मूल्य को माप और प्रदर्शित कर सकता है, इसलिए हमारे सर्किट की सटीकता और प्रदर्शन की जांच करना हमारे लिए आसान होगा। और हां, मैंने अपने आरपीएस का उपयोग अपने गुणक मूल्य को जांचने के लिए भी किया है ताकि मैं सटीक मूल्य के करीब पहुंच सकूं।
पूरा काम इस पृष्ठ के अंत में दिए गए वीडियो पर पाया जा सकता है। आशा है कि आपने सर्किट और कार्यक्रम को समझा और कुछ उपयोगी सीखा। यदि आपको इसे काम करने में कोई समस्या है तो इसे नीचे टिप्पणी अनुभाग पर पोस्ट करें या अधिक तकनीकी सहायता के लिए हमारे मंचों पर लिखें।
इस Arduino आधारित Wattmeter प्रोजेक्ट में कई और अपग्रेड हैं जिन्हें ऑटो डेटा लॉगिंग, प्लॉटिंग ग्राफ, वोल्टेज पर या वर्तमान स्थितियों पर सूचित करने आदि के लिए प्रदर्शन बढ़ाने के लिए जोड़ा जा सकता है। इसलिए उत्सुक रहें और मुझे बताएं कि आप इसके लिए क्या उपयोग करेंगे।