विषयसूची:

Arduino और TI ADS1110 16-बिट ADC: 6 चरण
Arduino और TI ADS1110 16-बिट ADC: 6 चरण

वीडियो: Arduino और TI ADS1110 16-बिट ADC: 6 चरण

वीडियो: Arduino और TI ADS1110 16-बिट ADC: 6 चरण
वीडियो: Amazing arduino project 2024, जुलाई
Anonim
Arduino और TI ADS1110 16-बिट ADC
Arduino और TI ADS1110 16-बिट ADC

इस ट्यूटोरियल में हम टेक्सास इंस्ट्रूमेंट्स ADS1110 के साथ काम करने के लिए Arduino का उपयोग करने की जांच करते हैं - एक अविश्वसनीय रूप से छोटा लेकिन उपयोगी 16-बिट एनालॉग-टू-डिजिटल कनवर्टर IC।

यह 2.7 और 5.5 V के बीच काम कर सकता है इसलिए यह Arduino ड्यू और अन्य लो-वोल्टेज डेवलपमेंट बोर्ड के लिए भी ठीक है। आगे जारी रखने से पहले, कृपया डेटा शीट (पीडीएफ) डाउनलोड करें क्योंकि यह इस ट्यूटोरियल के दौरान उपयोगी और संदर्भित होगी। ADS1110 आपको Arduino के 10-बिट ADCs की तुलना में अधिक सटीक ADC का विकल्प देता है - और इसका उपयोग करना अपेक्षाकृत आसान है। हालाँकि यह SOT23-6 में केवल एक नंगे भाग के रूप में उपलब्ध है।

चरण 1:

छवि
छवि

अच्छी खबर यह है कि आप एक बहुत ही सुविधाजनक ब्रेकआउट बोर्ड पर लगे ADS1110 को ऑर्डर कर सकते हैं। ADS1110 संचार के लिए I2C बस का उपयोग करता है। और जैसा कि केवल छह पिन हैं, आप बस का पता सेट नहीं कर सकते हैं - इसके बजाय, आप ADS1110 के छह प्रकारों में से चुन सकते हैं - प्रत्येक का अपना पता (डेटा शीट का पृष्ठ दो देखें)।

जैसा कि आप ऊपर फोटो में देख सकते हैं, हमारा "ईडीओ" चिह्नित है जो बस के पते 1001000 या 0x48h से मेल खाता है। और उदाहरण सर्किट के साथ हमने I2C बस में 10kΩ पुल-अप प्रतिरोधों का उपयोग किया है।

आप ADS1110 को सिंगल-एंडेड या डिफरेंशियल ADC के रूप में उपयोग कर सकते हैं - लेकिन पहले हमें कॉन्फ़िगरेशन रजिस्टर की जांच करने की आवश्यकता है जिसका उपयोग विभिन्न विशेषताओं और डेटा रजिस्टर को नियंत्रित करने के लिए किया जाता है।

चरण 2: कॉन्फ़िगरेशन रजिस्टर

डेटा शीट के पेज ग्यारह की ओर मुड़ें। कॉन्फ़िगरेशन रजिस्टर आकार में एक बाइट है, और ADS1110 एक शक्ति-चक्र पर रीसेट करता है - यदि आपकी ज़रूरतें डिफ़ॉल्ट से भिन्न हैं तो आपको रजिस्टर को रीसेट करने की आवश्यकता है। डेटा शीट इसे काफी बड़े करीने से बताती है … बिट्स 0 और 1 पीजीए (प्रोग्रामेबल गेन एम्पलीफायर) के लिए गेन सेटिंग निर्धारित करते हैं।

यदि आप केवल वोल्टेज माप रहे हैं या प्रयोग कर रहे हैं, तो 1V/V के लाभ के लिए इन्हें शून्य के रूप में छोड़ दें। इसके बाद, ADS1110 के लिए डेटा दर को बिट्स 2 और 3 के साथ नियंत्रित किया जाता है। यदि आपके पास निरंतर नमूनाकरण चालू है, तो यह ADC द्वारा लिए गए प्रति सेकंड नमूनों की संख्या निर्धारित करता है।

Arduino Uno के साथ कुछ प्रयोग करने के बाद हमने पाया कि ADC से लौटाए गए मान सबसे तेज़ दर का उपयोग करते समय थोड़े दूर थे, इसलिए इसे 15 SPS के रूप में छोड़ दें जब तक कि अन्यथा आवश्यक न हो। बिट 4 या तो निरंतर नमूनाकरण (0) या एकबारगी नमूनाकरण (1) सेट करता है। बिट्स 5 और 6 पर ध्यान न दें, हालांकि वे हमेशा 0 के रूप में सेट होते हैं।

अंत में बिट 7 - यदि आप एकबारगी नमूना मोड में हैं, तो इसे 1 नमूने के अनुरोध पर सेट करना - और इसे पढ़ना आपको बताएगा कि क्या लौटाया गया डेटा नया (0) या पुराना (1) है। आप जांच सकते हैं कि मापा गया मान एक नया मान है - यदि डेटा के बाद आने वाले कॉन्फ़िगरेशन बाइट का पहला बिट 0 है, तो यह नया है। यदि यह 1 लौटाता है तो ADC रूपांतरण समाप्त नहीं हुआ है।

चरण 3: डेटा रजिस्टर

चूंकि ADS1110 एक 16-बिट ADC है, यह डेटा को दो बाइट्स पर लौटाता है - और फिर कॉन्फ़िगरेशन रजिस्टर के मान के साथ आता है। इसलिए यदि आप तीन बाइट्स का अनुरोध करते हैं तो पूरा लॉट वापस आ जाता है। डेटा "दो के पूरक" रूप में है, जो बाइनरी के साथ हस्ताक्षरित संख्याओं का उपयोग करने की एक विधि है।

उन दो बाइट्स को परिवर्तित करना कुछ सरल गणित द्वारा किया जाता है। 15 एसपीएस पर नमूना लेते समय, एडीएस 1110 (वोल्टेज नहीं) द्वारा लौटाया गया मान -32768 और 32767 के बीच आता है। मूल्य के उच्च बाइट को 256 से गुणा किया जाता है, फिर निचले बाइट में जोड़ा जाता है - जिसे बाद में 2.048 से गुणा किया जाता है और अंत में 32768 से विभाजित। घबराओ मत, जैसा कि हम आगामी उदाहरण स्केच में करते हैं।

चरण 4: सिंगल-एंडेड एडीसी मोड

सिंगल-एंडेड एडीसी मोड
सिंगल-एंडेड एडीसी मोड

इस मोड में आप एक वोल्टेज पढ़ सकते हैं जो शून्य और 2.048 V के बीच आता है (जो ADS1110 के लिए इनबिल्ट रेफरेंस वोल्टेज भी होता है)। उदाहरण सर्किट सरल है (डेटा शीट से)।

I2C बस में 10kΩ पुल-अप प्रतिरोधों को न भूलें। निम्नलिखित स्केच डिफ़ॉल्ट मोड में ADS1110 का उपयोग करता है, और केवल मापा वोल्टेज लौटाता है:

// उदाहरण 53.1 - ADS1110 सिंगल-साइडेड वाल्टमीटर (0~2.048VDC) #include "Wire.h" #define ads1110 0x48 फ्लोट वोल्टेज, डेटा; बाइट हाईबाइट, लोबाइट, configRegister; शून्य सेटअप () {Serial.begin (९६००); वायर.बेगिन (); } शून्य लूप () { Wire.requestFrom (ads1110, 3); जबकि (वायर.उपलब्ध ()) // सुनिश्चित करें कि सभी डेटा {हाईबाइट = वायर.रीड (); में आता है; // हाई बाइट * B11111111 लोबाइट = वायर.रीड (); // कम बाइट configRegister = Wire.read (); }

डेटा = हाईबाइट * 256;

डेटा = डेटा + लोबाइट; सीरियल.प्रिंट ("डेटा >>"); Serial.println (डेटा, डीईसी); सीरियल.प्रिंट ("वोल्टेज >>"); वोल्टेज = डेटा * 2.048; वोल्टेज = वोल्टेज / ३२७६८.०; सीरियल.प्रिंट (वोल्टेज, डीईसी); सीरियल.प्रिंट्लन ("वी"); देरी (1000); }

चरण 5:

छवि
छवि

एक बार अपलोड हो जाने पर, सीरियल मॉनिटर को मापने और खोलने के लिए सिग्नल कनेक्ट करें - आपको इस चरण में दिखाए गए सीरियल मॉनिटर छवि के समान कुछ प्रस्तुत किया जाएगा।

यदि आपको एडीसी के आंतरिक प्रोग्राम योग्य लाभ एम्पलीफायर के लाभ को बदलने की आवश्यकता है - आपको कॉन्फ़िगरेशन रजिस्टर में एक नया बाइट लिखना होगा:

Wire.beginTransmission (ads1110); Wire.write (कॉन्फ़िगरेशन बाइट); वायर.एंडट्रांसमिशन ();

एडीसी डेटा का अनुरोध करने से पहले। यह क्रमशः 2, 4 और 8 के गेन वैल्यू के लिए 0x8D, 0x8E या 0x8F होगा - और ADS1110 को वापस डिफ़ॉल्ट पर रीसेट करने के लिए 0x8C का उपयोग करें।

चरण 6: डिफरेंशियल एडीसी मोड

डिफरेंशियल एडीसी मोड
डिफरेंशियल एडीसी मोड

इस मोड में आप दो वोल्टेज के बीच के अंतर को पढ़ सकते हैं जो प्रत्येक शून्य और 5 वी के बीच आते हैं। उदाहरण सर्किट सरल है (डेटा शीट से)।

हमें यहां (और डेटा शीट में) ध्यान देना चाहिए कि ADS1110 किसी भी इनपुट पर नकारात्मक वोल्टेज स्वीकार नहीं कर सकता है। आप उसी परिणाम के लिए पिछले स्केच का उपयोग कर सकते हैं - और परिणामी वोल्टेज विन का मान होगा- विन + से घटाया गया। उदाहरण के लिए, यदि आपके पास विन + पर 2 वी और विन पर 1 वी था- परिणामी वोल्टेज 1 वी (लाभ 1 पर सेट के साथ) होगा।

एक बार फिर हम आशा करते हैं कि आपको यह रुचिकर और संभवतः उपयोगी लगी होगी। यह पोस्ट आपके लिए pmdway.com द्वारा लाया गया है - निर्माताओं और इलेक्ट्रॉनिक्स के प्रति उत्साही लोगों के लिए, दुनिया भर में मुफ्त डिलीवरी के साथ।

सिफारिश की: