ESP32 ADC - Arduino IDE के साथ एनालॉग मान पढ़ें

Esp32 Adc Arduino Ide Ke Satha Enaloga Mana Parhem



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

ESP32 एडीसी परिचय

ESP32 बोर्ड में दो एकीकृत 12-बिट ADCs हैं जिन्हें SAR (क्रमिक सन्निकटन रजिस्टर) ADC के रूप में भी जाना जाता है। ESP32 बोर्ड ADCs 18 विभिन्न एनालॉग इनपुट चैनलों का समर्थन करते हैं, जिसका अर्थ है कि हम उनसे इनपुट लेने के लिए 18 विभिन्न एनालॉग सेंसर कनेक्ट कर सकते हैं।

लेकिन यहाँ ऐसा नहीं है; इन एनालॉग चैनलों को दो श्रेणियों चैनल 1 और चैनल 2 में विभाजित किया गया है, इन दोनों चैनलों में कुछ पिन हैं जो हमेशा एडीसी इनपुट के लिए उपलब्ध नहीं होते हैं। आइए देखें कि वे एडीसी पिन दूसरों के साथ क्या हैं।







ESP32 एडीसी पिन

जैसा कि पहले बताया गया है कि ESP32 बोर्ड में 18 ADC चैनल हैं। 18 में से केवल 15 DEVKIT V1 DOIT बोर्ड में उपलब्ध हैं, जिसमें कुल 30 GPIO हैं।



अपने बोर्ड को देखें और एडीसी पिन की पहचान करें जैसा कि हमने उन्हें नीचे की छवि में हाइलाइट किया है:







चैनल 1 एडीसी पिन

ESP32 DEVKIT DOIT बोर्ड की पिन मैपिंग निम्नलिखित है। ESP32 में ADC1 में 8 चैनल हैं हालांकि DOIT DEVKIT बोर्ड केवल 6 चैनलों का समर्थन करता है। लेकिन मैं गारंटी देता हूं कि ये अभी भी पर्याप्त से अधिक हैं।

एडीसी1 GPIO पिन ESP32
सीएच0 36
सीएच1 30 पिन संस्करण ESP32 में NA (Devkit MUST)
CH2 वह
सीएच3 39
सीएच4 32
सीएच5 33
सीएच6 3. 4
CH7 35

निम्नलिखित छवि ESP32 ADC1 चैनल दिखाती है:



चैनल 2 एडीसी पिन

DEVKIT DOIT बोर्ड में ADC2 में 10 एनालॉग चैनल हैं। हालाँकि ADC2 में एनालॉग डेटा पढ़ने के लिए 10 एनालॉग चैनल हैं, लेकिन ये चैनल हमेशा उपयोग के लिए उपलब्ध नहीं होते हैं। ADC2 को ऑनबोर्ड वाईफाई ड्राइवरों के साथ साझा किया जाता है, जिसका अर्थ है कि जिस समय बोर्ड वाईफ़ाई का उपयोग कर रहा है, उस समय ये ADC2 उपलब्ध नहीं होंगे। इस समस्या का समाधान केवल वाई-फाई ड्राइवर के बंद होने पर ही ADC2 का उपयोग करना है।

नीचे की छवि ADC2 चैनल की पिन मैपिंग दिखाती है।

ESP32 ADC का उपयोग कैसे करें

ESP32 ADC Arduino की तरह ही काम करता है, यहाँ केवल अंतर यह है कि इसमें 12 बिट ADC है। तो, ESP32 बोर्ड डिजिटल असतत मूल्यों में 0 से 4095 तक के एनालॉग वोल्टेज मानों को मैप करता है।

  • यदि ESP32 ADC को दिया गया वोल्टेज शून्य है तो ADC चैनल का डिजिटल मान शून्य होगा।
  • यदि एडीसी को दिया गया वोल्टेज अधिकतम मतलब 3.3V है तो आउटपुट डिजिटल वैल्यू 4095 के बराबर होगी।
  • उच्च वोल्टेज मापने के लिए, हम वोल्टेज विभक्त विधि का उपयोग कर सकते हैं।

टिप्पणी: ESP32 ADC डिफ़ॉल्ट रूप से 12-बिट्स पर सेट होता है, हालाँकि इसे 0-बिट, 10-बिट और 11-बिट में कॉन्फ़िगर करना संभव है। 12-बिट डिफ़ॉल्ट ADC मान को माप सकता है 2^12=4096 और एनालॉग वोल्टेज 0V से 3.3V तक होता है।

ESP32 . पर ADC सीमा

यहाँ ESP32 ADC की कुछ सीमाएँ हैं:

  • ESP32 ADC सीधे 3.3V से अधिक वोल्टेज को माप नहीं सकता है।
  • जब वाई-फाई ड्राइवर सक्षम होते हैं तो ADC2 का उपयोग नहीं किया जा सकता है। ADC1 के केवल 8 चैनल का उपयोग किया जा सकता है।
  • ESP32 ADC बहुत रैखिक नहीं है; पता चलता है गैर linearity व्यवहार और 3.2V और 3.3V के बीच अंतर नहीं कर सकता। हालाँकि, ESP32 ADC को कैलिब्रेट करना संभव है। यहां एक लेख है जो आपको ESP32 ADC गैर-रैखिकता व्यवहार को जांचने के लिए मार्गदर्शन करेगा।

Arduino IDE के सीरियल मॉनिटर पर ESP32 का गैर-रैखिकता व्यवहार देखा जा सकता है।

प्रोग्राम ESP32 ADC Arduino IDE का उपयोग कर

ESP32 ADC की कार्यप्रणाली को समझने का सबसे अच्छा तरीका है कि एक पोटेंशियोमीटर लिया जाए और शून्य प्रतिरोध के विरुद्ध मानों को अधिकतम तक पढ़ा जाए। पोटेंशियोमीटर के साथ ESP32 की दी गई सर्किट छवि निम्नलिखित है।

पोटेंशियोमीटर के मध्य पिन को ESP32 के डिजिटल पिन 25 और 2 टर्मिनल पिन को क्रमशः 3.3V और GND पिन से कनेक्ट करें।

हार्डवेयर

निम्नलिखित छवि पोटेंशियोमीटर के साथ ESP32 के हार्डवेयर को प्रदर्शित करती है। निम्नलिखित आवश्यक घटकों की सूची है:

  • ESP32 DEVKIT DOIT बोर्ड
  • तनाव नापने का यंत्र
  • ब्रेड बोर्ड
  • जम्पर तार

कोड

Arduino IDE खोलें और नीचे दिए गए कोड को ESP32 बोर्ड में अपलोड करें। Arduino IDE के साथ ESP32 को स्थापित और कॉन्फ़िगर करने का तरीका देखने के लिए क्लिक करें यहां .

स्थिरांक पूर्णांक पिन_पोटेंशियोमीटर = 25 ; /*GPIO 25 (एनालॉग ADC2_CH8) पर कनेक्टेड पोटेंशियोमीटर*/
पूर्णांक वैल_पोटेंशियोमीटर = 0 ; /*पोटेंशियोमीटर रीड वैल्यू यहां स्टोर की जाएगी*/
शून्य स्थापित करना ( ) {
धारावाहिक। शुरू करना ( 115200 ) ; /*सीरियल संचार शुरू होता है*/
}
शून्य फंदा ( ) {
वैल_पोटेंशियोमीटर = एनालॉगपढ़ें ( पिन_पोटेंशियोमीटर ) ; /*पोटेंशियोमीटर मान पढ़ना*/
धारावाहिक। प्रिंट्लन ( वैल_पोटेंशियोमीटर ) ; /*पोटेंशियोमीटर मान प्रिंट करता है*/
देरी ( 2000 ) ; /*2सेकंड की देरी*/
}

यहां उपरोक्त कोड में, हम ESP32 बोर्ड पर पोटेंशियोमीटर के लिए डिजिटल पिन 25 को इनिशियलाइज़ करते हैं। इनपुट लेने के लिए एक वैरिएबल Val_Potentiometer को इनिशियलाइज़ किया जाता है। अगला सीरियल संचार बॉड दर को परिभाषित करके शुरू किया गया है।

में फंदा एनालॉग रीड () फ़ंक्शन का उपयोग करके कोड का हिस्सा एडीसी मान ईएसपी 32 के पिन 25 पर पढ़ा जाएगा। इसके बाद Serial.print() का उपयोग करते हुए सभी मान सीरियल मॉनीटर पर प्रिंट हो जाते हैं।

उत्पादन

आउटपुट डिजिटल असतत मानों के विरुद्ध मैप किए गए एनालॉग मान प्रदर्शित करता है। जब रीड वोल्टेज अधिकतम होता है तो 3.3V डिजिटल आउटपुट 4095 के बराबर होता है और जब रीड वोल्टेज 0V होता है तो डिजिटल आउटपुट 0 हो जाता है।

निष्कर्ष

एनालॉग टू डिजिटल कन्वर्टर्स का उपयोग हर जगह किया जाता है, खासकर जब हमें एनालॉग सेंसर और हार्डवेयर के साथ माइक्रोकंट्रोलर बोर्ड को इंटरफेस करना होता है। ESP32 में ADC के लिए दो चैनल हैं जो ADC1 और ADC2 हैं। ये दो चैनल एनालॉग सेंसर को इंटरफेस करने के लिए 18 पिन प्रदान करने के लिए गठबंधन करते हैं। हालाँकि, उनमें से 3 ESP32 30 पिन संस्करण पर उपलब्ध नहीं हैं। अनुरूप मूल्यों को पढ़ने के बारे में अधिक देखने के लिए लेख पढ़ें।