विषयसूची:

Arduino वोल्ट मीटर (0-100V DC) - संस्करण 2 (बेहतर): 3 चरण
Arduino वोल्ट मीटर (0-100V DC) - संस्करण 2 (बेहतर): 3 चरण

वीडियो: Arduino वोल्ट मीटर (0-100V DC) - संस्करण 2 (बेहतर): 3 चरण

वीडियो: Arduino वोल्ट मीटर (0-100V DC) - संस्करण 2 (बेहतर): 3 चरण
वीडियो: Different Ways for Measuring Current With Arduino 2024, नवंबर
Anonim
Image
Image
चरण 1: स्कीमैटिक्स
चरण 1: स्कीमैटिक्स

इस निर्देशयोग्य में, मैंने एक Arduino नैनो और ADS 1115 ADC का उपयोग करके सापेक्ष सटीकता और सटीकता के साथ उच्च वोल्टेज DC (0-100v) को मापने के लिए एक वाल्टमीटर बनाया है।

यह वाल्टमीटर का दूसरा संस्करण है जिसका उपयोग मेरे पिछले निर्देशयोग्य यहाँ किया गया है:

मेरे द्वारा लिए गए परीक्षण माप सटीक थे, ज्यादातर एक मानक वोल्टमीटर (मैंने एस्ट्रो एआई DM6000AR का उपयोग किया) के साथ मापा वास्तविक वोल्टेज के 0.1v के भीतर।

Arduino पर बाहरी वोल्टेज संदर्भ का उपयोग करने की तुलना में यह मेरी राय में बहुत बेहतर और आसान है।

आपूर्ति

1 एक्स अरुडिनो नैनो - लिंक

1 एक्स ओलेड डिस्प्ले (एसएसडी 1306) - लिंक

1 एक्स एडीएस 1115 - 16 बिट एडीसी - लिंक

1 x 1/4W (हालांकि मैं 1W प्रतिरोधों का उपयोग करने का सुझाव देता हूं) 1% प्रतिरोधक - 220k ओम - लिंक

1 x 1/4W (हालांकि मैं 1W प्रतिरोधों का उपयोग करने का सुझाव देता हूं) 1% प्रतिरोधक - 10k ओम - लिंक

ब्रेडबोर्ड और तार - लिंक

एस्ट्रो एआई DM6000AR - लिंक

यूएसबी पावर बैंक - लिंक

9वी बैटरी - लिंक

कैनेडियनविंटर्स अमेज़ॅन सर्विसेज एलएलसी एसोसिएट्स प्रोग्राम में एक भागीदार है, जो एक संबद्ध विज्ञापन कार्यक्रम है जो साइटों को Amazon.com और संबद्ध साइटों से लिंक करके फीस अर्जित करने का साधन प्रदान करने के लिए डिज़ाइन किया गया है। इन लिंक्स का उपयोग करके, एक अमेज़ॅन एसोसिएट के रूप में मैं योग्यता खरीद से कमाता हूं, भले ही आप कुछ और खरीदते हों-- और इसमें आपको कुछ भी खर्च नहीं करना पड़ेगा।

चरण 1: चरण 1: स्कीमैटिक्स

चरण 1: स्कीमैटिक्स
चरण 1: स्कीमैटिक्स

मैंने उपरोक्त योजना के अनुसार सभी भागों को जोड़ा।

मैंने ADC1115 के ADDR पिन को जमीन से बांध दिया। यह ADC का पता 0x48 पर सेट करता है।

चरण 2: चरण 2: कोड और प्रतिरोधी गणना

चरण 2: कोड और प्रतिरोधी गणना
चरण 2: कोड और प्रतिरोधी गणना

जैसा कि पिछले निर्देश में है, सर्किट का विचार यह है कि मापा जाने वाला डीसी वोल्टेज एक वोल्टेज रोकनेवाला के माध्यम से जाता है। स्केल किया गया वोल्टेज और फिर पढ़ने के लिए ADC कनवर्टर के एनालॉग पिन में चला जाता है, फिर I2C के माध्यम से Arduino को पास किया जाता है और फिर फिर से स्केल किया जाता है और OLED डिस्प्ले पर प्रदर्शित किया जाता है।

मैंने इस मामले में कोड में किसी भी औसत या स्मूथिंग का उपयोग नहीं किया, क्योंकि रीडिंग काफी सटीक और सटीक लगती है। शोर को कम करने के लिए, आप A0 (ADC पर) और जमीन के बीच एक छोटा संधारित्र जोड़ना चाह सकते हैं। हालांकि मेरे परीक्षण के लिए इसकी आवश्यकता नहीं थी।

एक बात जिस पर मैंने गौर किया, वह थी थोड़ा शोर जब कोई बैटरी जुड़ी नहीं थी (0 वोल्ट)। मैंने ADC मान प्रदर्शित करने और कोड के माध्यम से इसे सही/समायोजित करने के लिए Arduino के सीरियल मॉनिटर का उपयोग किया।

जैसा कि पिछले निर्देश में है, मैंने एक स्प्रेडशीट बनाई है जो वोल्टेज डिवाइडर में विभिन्न प्रतिरोधक मानों का उपयोग करने के मामले में गणना को स्वचालित करती है: Google शीट से लिंक करें

इस परियोजना के लिए मैंने जो कोड इस्तेमाल किया है वह यहां दिया गया है:

#शामिल

#include #include #include Adafruit_ADS1115 विज्ञापन (0x48); // ADC U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0) का पता;// (रोटेशन, [रीसेट]) int कैलिबर = 7; // त्रुटि फ्लोट वोल्टेज = 0 को कम करने के लिए ADS1115 के अंशांकन का मूल्य; // वोल्टेज वैल्यू फ्लोट रैडजस्ट = ०.०४३४२१९०५ को स्टोर करने के लिए उपयोग किया जाता है; // वोल्टेज विभक्त कारक (R2 / R1 + R2) फ्लोट vbat = 0; // कैल्क्स के बाद अंतिम वोल्टेज- बैटरी का वोल्टेज // बिना देरी के स्क्रीन को रिफ्रेश करने के लिए वेरिएबल्स, लंबे समय तक बिना देरी के मिलिस = 0; // पिछली बार स्क्रीन रीफ्रेश होने पर स्टोर करेगा//स्थिरांक नहीं बदलेगा: कॉन्स लंबा अंतराल = 250; // अंतराल जिस पर स्क्रीन रीफ्रेश करने के लिए (मिलीसेकंड) शून्य सेटअप (शून्य) { Serial.begin(9600); u8g2.begin (); ads.begin (); } शून्य लूप (शून्य) { int16_t adc0; // 16 बिट्स ADC इनपुट A0 adc0 = ads.readADC_SingleEnded(0); वोल्टेज = ((adc0 + कैलिबर) * 0.1875)/1000; अहस्ताक्षरित लंबी वर्तमानमिलिस = मिली (); vbat = वोल्टेज/समायोजन; // बैटरी के डिस्कनेक्ट होने पर नकारात्मक वोल्टेज प्रदर्शित करने से रोकें यदि (vbat = अंतराल) {पिछलामिलिस = करंटमिलिस; u8g2.clearBuffer (); // आंतरिक मेनरी साफ़ करें // वोल्टेज डिस्प्ले पैक करें - इस पृष्ठ पर फ़ॉन्ट्स: https://github.com/olikraus/u8g2/wiki/fntlistall //u8g2.setFont(u8g2_font_fub20_tr); // 20px फ़ॉन्ट u8g2.setFont (u8g2_font_fub35_tr); // 35px फ़ॉन्ट u8g2.setCursor (1, 42); u8g2.प्रिंट (vbat, 2); u8g2.setFont (u8g2_font_8x13B_mr); // 10 पीएक्स फ़ॉन्ट u8g2.setCursor (1, 60); u8g2.print ("वोल्ट"); } u8g2.sendBuffer (); // आंतरिक मेमोरी को डिस्प्ले डिले में ट्रांसफर करें (1); }

चरण 3: चरण 3: आइए इसका परीक्षण करें

चरण 3: आइए इसका परीक्षण करें!
चरण 3: आइए इसका परीक्षण करें!

इस वाल्टमीटर का परीक्षण करने के लिए मैंने 10x 9v बैटरी का उपयोग किया जो मुझे एक स्थानीय स्टोर पर मिली। इस बार मैं 97 वोल्ट तक माप सकता था! मैं अपने इलेक्ट्रिक साइकिल बैटरी पैक पर वोल्टेज को मापने के लिए इस वोल्टमीटर का उपयोग करने की योजना बना रहा हूं (उनके पास कभी-कभी 72v वाले 24-60v से लेकर वोल्टेज होते हैं)।

एक बार जब इलेक्ट्रॉनिक्स को एक पीसीबी और एक छोटे से बॉक्स में पैक कर दिया जाता है, तो यह एक अच्छा और पोर्टेबल बैटरी पैक मीटर बना देगा। ओएलईडी पर ग्राफिक्स और फोंट को आपकी आवश्यकताओं के अनुरूप अनुकूलित किया जा सकता है (उदाहरण के लिए आसान पढ़ने के लिए बड़ा फ़ॉन्ट)। मेरा लक्ष्य Oled/Arduino मीटर पर मेरे डिजिटल मल्टी मीटर से बहुत दूर वोल्टेज रीडिंग करना था। मैं +/- 0, 3v अधिकतम डेल्टा के लिए लक्ष्य बना रहा था।

जैसा कि आप वीडियो से इंस्ट्रक्शनल की शुरुआत में देख सकते हैं, मैं इसे आर्काइव करने में सक्षम था! अधिकांश रीडिंग हाजिर थे!

मुझे आशा है कि आपको यह निर्देश अच्छा लगा होगा और मुझे अपने विचार बताएं!

सिफारिश की: