- MCP4725 DAC मॉड्यूल (डिजिटल से एनालॉग कनवर्टर)
- MCP4725 DAC में I2C संचार
- अवयव आवश्यक
- सर्किट आरेख
- DAC Arduino प्रोग्रामिंग
- MCP4725 और Arduino का उपयोग करके डिजिटल से एनालॉग रूपांतरण
हम सभी जानते हैं कि माइक्रोकंट्रोलर केवल डिजिटल मूल्यों के साथ काम करते हैं लेकिन वास्तविक दुनिया में हमें एनालॉग संकेतों से निपटना पड़ता है। यही कारण है कि एडीसी (एनालॉग टू डिजिटल कन्वर्टर्स) वास्तविक विश्व एनालॉग मूल्यों को डिजिटल रूप में परिवर्तित करने के लिए है ताकि माइक्रोकंट्रोलर संकेतों को संसाधित कर सकें। लेकिन क्या होगा अगर हमें डिजिटल मूल्यों से एनालॉग सिग्नल की आवश्यकता है, इसलिए यहां डीएसी (डिजिटल से एनालॉग कनवर्टर) आता है।
डिजिटल से एनालॉग कनवर्टर के लिए एक सरल उदाहरण स्टूडियो में एक गीत रिकॉर्ड कर रहा है जहां एक कलाकार गायक माइक्रोफोन का उपयोग कर रहा है और एक गाना गा रहा है। इन एनालॉग ध्वनि तरंगों को डिजिटल रूप में परिवर्तित किया जाता है और फिर एक डिजिटल प्रारूप फ़ाइल में संग्रहीत किया जाता है और जब संग्रहीत डिजिटल फ़ाइल का उपयोग करके गाना बजाया जाता है, तो उन डिजिटल मूल्यों को स्पीकर आउटपुट के लिए एनालॉग सिग्नल में परिवर्तित किया जाता है। तो इस प्रणाली में DAC का उपयोग किया जाता है।
डीएसी का उपयोग कई अनुप्रयोगों में किया जा सकता है जैसे मोटर नियंत्रण, एलईडी रोशनी की नियंत्रण चमक, ऑडियो एम्पलीफायर, वीडियो एनकोडर, डेटा अधिग्रहण प्रणाली आदि।
कई माइक्रोकंट्रोलर में एक आंतरिक डीएसी होता है जिसका उपयोग एनालॉग आउटपुट का उत्पादन करने के लिए किया जा सकता है। लेकिन Armeino प्रोसेसर जैसे ATmega328 / ATmega168 में DAC इनबिल्ट नहीं है। Arduino में ADC फीचर (एनालॉग से डिजिटल कन्वर्टर) है, लेकिन इसमें कोई DAC (डिजिटल से एनालॉग कनवर्टर) नहीं है। इसकी आंतरिक ADC में 10-बिट DAC है, लेकिन इस DAC को स्टैंडअलोन के रूप में उपयोग नहीं किया जा सकता है। तो यहाँ इस Arduino DAC ट्यूटोरियल में, हम Arduino के साथ MCP4725 DAC मॉड्यूल नामक एक अतिरिक्त बोर्ड का उपयोग करते हैं ।
MCP4725 DAC मॉड्यूल (डिजिटल से एनालॉग कनवर्टर)
MCP4725 IC एक 12-बिट डिजिटल से एनालॉग कन्वर्टर मॉड्यूल है, जिसका उपयोग (0 से 5V) से आउटपुट एनालॉग वोल्टेज उत्पन्न करने के लिए किया जाता है और इसे I2C संचार का उपयोग करके नियंत्रित किया जाता है। यह बोर्ड नॉनवॉल्टाइल मेमोरी EEPROM पर भी आता है।
इस आईसी में 12-बिट रिज़ॉल्यूशन है। इसका मतलब है कि हम संदर्भ वोल्टेज के साथ वोल्टेज आउटपुट प्रदान करने के लिए इनपुट के रूप में (0 से 4096) का उपयोग करते हैं। अधिकतम संदर्भ वोल्टेज 5V है।
आउटपुट वोल्टेज की गणना करने के लिए सूत्र
ओ / पी वोल्टेज = (संदर्भ वोल्टेज / संकल्प) एक्स डिजिटल मूल्य
उदाहरण के लिए यदि हम संदर्भ वोल्टेज के रूप में 5V का उपयोग करते हैं और मान लेते हैं कि डिजिटल मूल्य 2048 है। इसलिए DAC आउटपुट की गणना करें।
ओ / पी वोल्टेज = (5/4096) x 2048 = 2.5 वी
MCP4725 का पिनआउट
नीचे पिन नामों के स्पष्ट संकेत के साथ MCP4725 की छवि है।
MCP4725 के पिन |
उपयोग |
बाहर |
आउटपुट एनालॉग वोल्टेज |
GND |
आउटपुट के लिए जीएनडी |
एससीएल |
I2C सीरियल क्लॉक लाइन |
एसडीए |
I2C सीरियल डेटा लाइन |
वीसीसी |
इनपुट संदर्भ वोल्टेज 5V या 3.3V |
GND |
इनपुट के लिए जीएनडी |
MCP4725 DAC में I2C संचार
इस डीएसी आईसी को I2C संचार का उपयोग करके किसी भी माइक्रोकंट्रोलर के साथ हस्तक्षेप किया जा सकता है। I2C संचार के लिए केवल दो तारों SCL और SDA की आवश्यकता होती है। डिफ़ॉल्ट रूप से, MCP4725 के लिए I2C पता 0x60 या 0x61 या 0x62 है। मेरे लिए इसका 0x61 है। I2C बस का उपयोग करके हम कई MCP4725 DAC IC कनेक्ट कर सकते हैं। केवल एक चीज हमें आईसी के I2C पते को बदलने की आवश्यकता है। Arduino में I2C संचार पहले से ही पिछले ट्यूटोरियल में विस्तार से बताया गया है।
इस ट्यूटोरियल में हम Arduino Uno के साथ MCP4725 DAC IC को कनेक्ट करेंगे और एक पोटेंशियोमीटर का उपयोग करके Arduino pin A0 को एनालॉग इनपुट वैल्यू प्रदान करेंगे। फिर ADC का उपयोग एनालॉग वैल्यू को डिजिटल रूप में परिवर्तित करने के लिए किया जाएगा। इसके बाद उन डिजिटल मूल्यों को D2 MCP4725 IC का उपयोग करके एनालॉग सिग्नल में परिवर्तित करने के लिए I2C बस के माध्यम से MCP4725 को भेजा जाता है। Arduino pin A1 का उपयोग OUT से MCP4725 के एनालॉग आउटपुट की जांच करने के लिए किया जाता है और अंत में 16x2 LCD डिस्प्ले में ADC और DAC मान और वोल्टेज दोनों को प्रदर्शित करता है।
अवयव आवश्यक
- Arduino नैनो / Arduino Uno
- 16x2 एलसीडी डिस्प्ले मॉड्यूल
- MCP4725 DAC IC
- 10k पोटेंशियोमीटर
- ब्रेड बोर्ड
- जम्पर तार
सर्किट आरेख
नीचे दी गई तालिका में MCP4725 DAC IC, Arduino Nano और बहु-मीटर के बीच संबंध दिखाया गया है
MCP4725 |
अरुडिनो नैनो |
मल्टीमीटर |
एसडीए |
ए 4 |
एनसी |
एससीएल |
A5 |
एनसी |
A0 या OUT |
ए 1 |
+ वी टर्मिनल |
GND |
GND |
-वे टर्मिनल |
वीसीसी |
5 वी |
एनसी |
16x2 एलसीडी और Arduino नैनो के बीच कनेक्शन
एलसीडी 16x2 |
अरुडिनो नैनो |
वीएसएस |
GND |
VDD |
+ 5 वी |
वि ० |
एलसीडी के विपरीत को समायोजित करने के लिए पोटेंशियोमीटर सेंटर पिन से |
रुपये |
डी 2 |
आरडब्ल्यू |
GND |
इ |
डी 3 |
डी 4 |
डी 4 |
D5 |
D5 |
डी 6 |
डी 6 |
डी 7 |
डी 7 |
ए |
+ 5 वी |
क |
GND |
एक पोटेंशियोमीटर का उपयोग Arduino Nano के A0 एनालॉग इनपुट से जुड़ा सेंटर पिन, GND से जुड़ा लेफ्ट पिन और Arduino के 5V से जुड़ा सबसे राइट पिन के साथ किया जाता है।
DAC Arduino प्रोग्रामिंग
DAC ट्यूटोरियल के लिए पूरा Arduino कोड एक प्रदर्शन वीडियो के साथ अंत में दिया गया है । यहाँ हमने कोड लाइन को लाइन द्वारा समझाया है।
सबसे पहले, I2C और एलसीडी प्रयोग करने के लिए पुस्तकालय शामिल wire.h और liquidcrystal.h पुस्तकालय।
#शामिल
अगला, एलसीडी पिनों को परिभाषित करें और आरंभ करें जो हमने Arduino Nano के साथ जोड़ा है
लिक्विडकल्चर एलसीडी (2,3,4,5,6,7); // एलसीडी डिस्प्ले पिन, आरएस, ई, डी 4, डी 5, डी 6, डी 7 को परिभाषित करें
अगला MCP4725 DAC IC के I2C पते को परिभाषित करें
# डेफिन MCP4725 0x61
शून्य सेटअप में ()
सबसे पहले Arduino Nano के P4 A4 (SDA) और A5 (SCL) पर I2C संचार शुरू करें
तार.बेगिन (); // I2C संचार शुरू होता है
अगला एलसीडी डिस्प्ले 16x2 मोड में सेट करें और एक स्वागत योग्य संदेश प्रदर्शित करें।
lcd.begin (16,2); // सेट एलसीडी 16X2 मोड में lcd.print ("CIRCUIT DIGEST"); देरी (1000); lcd.clear (); lcd.setCursor (0,0); lcd.print ("Arduino"); lcd.setCursor (0,1); lcd.print ("MCP4725 के साथ DAC"); देरी (2000); lcd.clear ();
शून्य लूप में ()
1. पहले बफ़र में कंट्रोल बाइट वैल्यू (0b01000000) डालें
(लिखें मोड में 010-सेट MCP4725)
बफर = 0b01000000;
2. निम्नलिखित कथन पिन A0 से एनालॉग वैल्यू को पढ़ता है और इसे डिजिटल वैल्यू (0-1023) में परिवर्तित करता है। Arduino ADC 10-बिट रिज़ॉल्यूशन वाला है इसलिए इसे 4 के साथ गुणा करें: 0-4096, क्योंकि DAC 12-बिट रिज़ॉल्यूशन है।
adc = analogRead (A0) * 4;
3. यह कथन ADC इनपुट मान (0 से 4096) और संदर्भ वोल्टेज 5V के रूप में वोल्टेज को खोजने के लिए है
फ्लोट ipvolt = (5.0 / 4096.0) * adc;
4. पहली पंक्ति के नीचे एडीसी चर में दाईं ओर 4 बिट्स को स्थानांतरित करके बफर में सबसे महत्वपूर्ण बिट वैल्यू डालता है, और दूसरी पंक्ति एडीसी चर में बाईं ओर 4 बिट्स को स्थानांतरित करके बफर में सबसे कम महत्वपूर्ण बिट मान डालता है।
बफर = एडीसी >> 4; बफर = एडीसी << 4;
5. निम्न कथन ए 1 से एनालॉग वोल्टेज को पढ़ता है जो डीएसी आउटपुट (MCP4725 DAC IC का OUTPUT पिन) है। आउटपुट वोल्टेज की जांच के लिए इस पिन को मल्टीमीटर से भी जोड़ा जा सकता है। यहां मल्टीमीटर का उपयोग करना सीखें।
अहस्ताक्षरित int analogread = analogRead (A1) * 4;
6. आगे चर एनालॉग से वोल्टेज मान नीचे सूत्र का उपयोग करके गणना की जाती है
फ्लोट opvolt = (5.0 / 4096.0) * अनुरूप;
7. MCP4725 के साथ प्रसारण शुरू करने के लिए निम्नलिखित कथन का उपयोग किया जाता है
वायर.beginTransmission (MCP4725);
I2C को नियंत्रण बाइट भेजता है
वायर.राइट (बफर);
I2C को MSB भेजता है
वायर.राइट (बफर);
I2C को LSB भेजता है
वायर.राइट (बफर);
संचरण समाप्त करता है
वायर.endTransmission ();
अब अंत में उन परिणामों को LCD 16x2 डिस्प्ले में lcd.print () का उपयोग करके प्रदर्शित करें
lcd.setCursor (0,0); lcd.print ("एक आईपी:"); lcd.print (adc); lcd.setCursor (10,0); lcd.print ("V:"); lcd.print (ipvolt); lcd.setCursor (0,1); lcd.print ("डी ओपी:"); lcd.print (अनुरूप); lcd.setCursor (10,1); lcd.print ("V:"); lcd.print (opvolt); देरी (500); lcd.clear ();
MCP4725 और Arduino का उपयोग करके डिजिटल से एनालॉग रूपांतरण
सभी सर्किट कनेक्शन को पूरा करने और Arduino में कोड अपलोड करने के बाद, पोटेंशियोमीटर में बदलाव करें और एलसीडी पर आउटपुट देखें । एलसीडी की पहली पंक्ति इनपुट एडीसी मूल्य और वोल्टेज दिखाएगी, और दूसरी पंक्ति आउटपुट डीएसी मूल्य और वोल्टेज दिखाएगी।
आप MCP4725 के OUT और GND पिन से मल्टीमीटर को जोड़कर आउटपुट वोल्टेज की जांच कर सकते हैं।
इस प्रकार हम Arduino के साथ DAC मॉड्यूल MCP4725 को इंटरफेज करके डिजिटल मानों को एनालॉग में बदल सकते हैं ।