- MCP4725 DAC మాడ్యూల్ (డిజిటల్ నుండి అనలాగ్ కన్వర్టర్)
- MCP4725 DAC లో I2C కమ్యూనికేషన్
- భాగాలు అవసరం
- సర్క్యూట్ రేఖాచిత్రం
- DAC Arduino ప్రోగ్రామింగ్
- MCP4725 మరియు Arduino ఉపయోగించి డిజిటల్ నుండి అనలాగ్ మార్పిడి
మైక్రోకంట్రోలర్లు డిజిటల్ విలువలతో మాత్రమే పనిచేస్తాయని మనందరికీ తెలుసు, కాని వాస్తవ ప్రపంచంలో మనం అనలాగ్ సిగ్నల్స్ తో వ్యవహరించాలి. అందుకే వాస్తవ ప్రపంచ అనలాగ్ విలువలను డిజిటల్ రూపంలోకి మార్చడానికి ADC (అనలాగ్ టు డిజిటల్ కన్వర్టర్స్) ఉంది, తద్వారా మైక్రోకంట్రోలర్లు సంకేతాలను ప్రాసెస్ చేయవచ్చు. మనకు డిజిటల్ విలువల నుండి అనలాగ్ సిగ్నల్స్ అవసరమైతే, ఇక్కడ DAC (డిజిటల్ నుండి అనలాగ్ కన్వర్టర్) వస్తుంది.
డిజిటల్ టు అనలాగ్ కన్వర్టర్కు ఒక సాధారణ ఉదాహరణ స్టూడియోలో ఒక పాటను రికార్డ్ చేయడం, ఇక్కడ ఒక ఆర్టిస్ట్ సింగర్ మైక్రోఫోన్ ఉపయోగిస్తున్నారు మరియు ఒక పాట పాడుతున్నారు. ఈ అనలాగ్ సౌండ్ తరంగాలు డిజిటల్ రూపంలోకి మార్చబడతాయి మరియు తరువాత డిజిటల్ ఫార్మాట్ ఫైల్లో నిల్వ చేయబడతాయి మరియు నిల్వ చేసిన డిజిటల్ ఫైల్ను ఉపయోగించి పాటను ప్లే చేసినప్పుడు, ఆ డిజిటల్ విలువలు స్పీకర్ అవుట్పుట్ కోసం అనలాగ్ సిగ్నల్గా మార్చబడతాయి. కాబట్టి ఈ వ్యవస్థలో DAC ఉపయోగించబడుతుంది.
మోటారు నియంత్రణ, ఎల్ఈడీ లైట్ల కంట్రోల్ బ్రైట్నెస్, ఆడియో యాంప్లిఫైయర్, వీడియో ఎన్కోడర్లు, డేటా అక్విజిషన్ సిస్టమ్స్ వంటి అనేక అనువర్తనాల్లో డిఎసిని ఉపయోగించవచ్చు.
అనేక మైక్రోకంట్రోలర్లలో అనలాగ్ అవుట్పుట్ను ఉత్పత్తి చేయడానికి ఉపయోగించే అంతర్గత DAC ఉంది. కానీ ATmega328 / ATmega168 వంటి Arduino ప్రాసెసర్లకు DAC ఇన్బిల్ట్ లేదు. ఆర్డునోకు ADC ఫీచర్ (అనలాగ్ టు డిజిటల్ కన్వర్టర్) ఉంది, కానీ దీనికి DAC లేదు (డిజిటల్ నుండి అనలాగ్ కన్వర్టర్). ఇది అంతర్గత ADC లో 10-బిట్ DAC ను కలిగి ఉంది, కానీ ఈ DAC ని స్వతంత్రంగా ఉపయోగించలేము. కాబట్టి ఇక్కడ ఈ Arduino DAC ట్యుటోరియల్లో, మేము Arduino తో MCP4725 DAC మాడ్యూల్ అనే అదనపు బోర్డుని ఉపయోగిస్తాము .
MCP4725 DAC మాడ్యూల్ (డిజిటల్ నుండి అనలాగ్ కన్వర్టర్)
MCP4725 IC అనేది 12-బిట్ డిజిటల్ నుండి అనలాగ్ కన్వర్టర్ మాడ్యూల్, ఇది అవుట్పుట్ అనలాగ్ వోల్టేజ్లను (0 నుండి 5V వరకు) ఉత్పత్తి చేయడానికి ఉపయోగించబడుతుంది మరియు ఇది I2C కమ్యూనికేషన్ను ఉపయోగించడం ద్వారా నియంత్రించబడుతుంది. ఇది బోర్డు నాన్వోలేటైల్ మెమరీ EEPROM తో కూడా వస్తుంది.
ఈ ఐసికి 12-బిట్ రిజల్యూషన్ ఉంది. రిఫరెన్స్ వోల్టేజ్కు సంబంధించి వోల్టేజ్ అవుట్పుట్ను అందించడానికి మేము (0 నుండి 4096 వరకు) ఇన్పుట్గా ఉపయోగిస్తాము. గరిష్ట సూచన వోల్టేజ్ 5 వి.
అవుట్పుట్ వోల్టేజ్ను లెక్కించడానికి ఫార్ములా
O / P వోల్టేజ్ = (రిఫరెన్స్ వోల్టేజ్ / రిజల్యూషన్) x డిజిటల్ విలువ
ఉదాహరణ కోసం మేము 5V ను రిఫరెన్స్ వోల్టేజ్గా ఉపయోగిస్తే మరియు డిజిటల్ విలువ 2048 అని అనుకుందాం. కాబట్టి DAC అవుట్పుట్ను లెక్కించడానికి.
O / P వోల్టేజ్ = (5/4096) x 2048 = 2.5 వి
MCP4725 యొక్క పిన్అవుట్
పిన్ పేర్లను స్పష్టంగా సూచించే MCP4725 యొక్క చిత్రం క్రింద ఉంది.
MCP4725 యొక్క పిన్స్ |
వా డు |
అవుట్ |
అవుట్పుట్లు అనలాగ్ వోల్టేజ్ |
GND |
అవుట్పుట్ కోసం GND |
ఎస్సీఎల్ |
I2C సీరియల్ క్లాక్ లైన్ |
SDA |
I2C సీరియల్ డేటా లైన్ |
వీసీసీ |
ఇన్పుట్ రిఫరెన్స్ వోల్టేజ్ 5 వి లేదా 3.3 వి |
GND |
ఇన్పుట్ కోసం GND |
MCP4725 DAC లో I2C కమ్యూనికేషన్
ఈ DAC IC ని I2C కమ్యూనికేషన్ ఉపయోగించి ఏదైనా మైక్రోకంట్రోలర్తో ఇంటర్ఫేస్ చేయవచ్చు. I2C కమ్యూనికేషన్కు రెండు వైర్లు SCL మరియు SDA మాత్రమే అవసరం. అప్రమేయంగా, MCP4725 యొక్క I2C చిరునామా 0x60 లేదా 0x61 లేదా 0x62. నాకు దాని 0x61. I2C బస్సును ఉపయోగించి మనం బహుళ MCP4725 DAC IC ని కనెక్ట్ చేయవచ్చు. ఐసి యొక్క I2C చిరునామాను మార్చడం మాత్రమే విషయం. Arduino లో I2C కమ్యూనికేషన్ ఇప్పటికే మునుపటి ట్యుటోరియల్లో వివరంగా వివరించబడింది.
ఈ ట్యుటోరియల్లో మేము MCP4725 DAC IC ని Arduino Uno తో అనుసంధానిస్తాము మరియు పొటెన్షియోమీటర్ ఉపయోగించి Arduino పిన్ A0 కి అనలాగ్ ఇన్పుట్ విలువను అందిస్తాము. అనలాగ్ విలువను డిజిటల్ రూపంలోకి మార్చడానికి ADC ఉపయోగించబడుతుంది. ఆ తరువాత ఆ డిజిటల్ విలువలు DAC MCP4725 IC ని ఉపయోగించి అనలాగ్ సిగ్నల్స్ గా మార్చడానికి I2C బస్సు ద్వారా MCP4725 కు పంపబడతాయి. పిన్ OUT నుండి MCP4725 యొక్క అనలాగ్ అవుట్పుట్ను తనిఖీ చేయడానికి మరియు చివరికి 16x2 LCD డిస్ప్లేలో ADC & DAC విలువలు మరియు వోల్టేజ్లను ప్రదర్శించడానికి Arduino పిన్ A1 ఉపయోగించబడుతుంది.
భాగాలు అవసరం
- ఆర్డునో నానో / ఆర్డునో యునో
- 16x2 LCD డిస్ప్లే మాడ్యూల్
- MCP4725 DAC IC
- 10 కె పొటెన్టోమీటర్
- బ్రెడ్బోర్డ్
- జంపర్ వైర్లు
సర్క్యూట్ రేఖాచిత్రం
దిగువ పట్టిక MCP4725 DAC IC, Arduino నానో మరియు మల్టీ మీటర్ మధ్య కనెక్షన్ను చూపిస్తుంది
MCP4725 |
ఆర్డునో నానో |
మల్టిమీటర్ |
SDA |
ఎ 4 |
NC |
ఎస్సీఎల్ |
A5 |
NC |
A0 లేదా OUT |
ఎ 1 |
+ ve టెర్మినల్ |
GND |
GND |
-ve టెర్మినల్ |
వీసీసీ |
5 వి |
NC |
16x2 LCD మరియు Arduino నానో మధ్య కనెక్షన్
LCD 16x2 |
ఆర్డునో నానో |
వి.ఎస్.ఎస్ |
GND |
VDD |
+ 5 వి |
వి 0 |
ఎల్సిడికి విరుద్ధంగా సర్దుబాటు చేయడానికి పొటెన్టోమీటర్ సెంటర్ పిన్ నుండి |
ఆర్ఎస్ |
డి 2 |
ఆర్డబ్ల్యూ |
GND |
ఇ |
డి 3 |
డి 4 |
డి 4 |
డి 5 |
డి 5 |
డి 6 |
డి 6 |
డి 7 |
డి 7 |
జ |
+ 5 వి |
కె |
GND |
ఒక potentiometer Arduino నానో, ఎడమ పిన్ GND కనెక్ట్ మరియు Arduino యొక్క 5V కనెక్ట్ కుడి అత్యంత పిన్ A0 అనలాగ్ ఇన్పుట్ కనెక్ట్ సెంటర్ పిన్ ఉపయోగిస్తారు.
DAC Arduino ప్రోగ్రామింగ్
DAC ట్యుటోరియల్ కోసం పూర్తి ఆర్డునో కోడ్ చివర్లో ప్రదర్శన వీడియోతో ఇవ్వబడుతుంది. ఇక్కడ మేము కోడ్ లైన్ ను లైన్ ద్వారా వివరించాము.
మొదట, వైర్.హెచ్ మరియు లిక్విడ్ క్రిస్టల్.హెచ్ లైబ్రరీని ఉపయోగించి I2C మరియు LCD కొరకు లైబ్రరీని చేర్చండి.
# చేర్చండి
మేము ఆర్డునో నానోతో కనెక్ట్ చేసిన పిన్ల ప్రకారం ఎల్సిడి పిన్లను నిర్వచించండి మరియు ప్రారంభించండి
లిక్విడ్ క్రిస్టల్ ఎల్సిడి (2,3,4,5,6,7); // LCD డిస్ప్లే పిన్లను RS, E, D4, D5, D6, D7 ను నిర్వచించండి
తరువాత MCP4725 DAC IC యొక్క I2C చిరునామాను నిర్వచించండి
# MCP4725 0x61 ను నిర్వచించండి
శూన్య సెటప్లో ()
మొదట I2C కమ్యూనికేషన్ను ఆర్డునో నానో యొక్క పిన్స్ A4 (SDA) మరియు A5 (SCL) వద్ద ప్రారంభించండి
వైర్.బెగిన్ (); // I2C కమ్యూనికేషన్ ప్రారంభమవుతుంది
తరువాత 16x2 మోడ్లో ఎల్సిడి డిస్ప్లేను సెట్ చేసి, స్వాగత సందేశాన్ని ప్రదర్శిస్తుంది.
lcd.begin (16,2); // 16X2 మోడ్లో LCD ని సెట్ చేస్తుంది 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 సెట్ చేస్తుంది)
బఫర్ = 0 బి 01000000;
2. కింది స్టేట్మెంట్ పిన్ A0 నుండి అనలాగ్ విలువను చదువుతుంది మరియు దానిని డిజిటల్ విలువలుగా మారుస్తుంది (0-1023). Arduino ADC 10-బిట్ రిజల్యూషన్ కాబట్టి 4 తో గుణించాలి: 0-4096, ఎందుకంటే DAC 12-బిట్ రిజల్యూషన్.
adc = అనలాగ్ రీడ్ (A0) * 4;
3. ఈ ప్రకటన ADC ఇన్పుట్ విలువ (0 నుండి 4096 వరకు) మరియు రిఫరెన్స్ వోల్టేజ్ 5V గా కనుగొనడం
float ipvolt = (5.0 / 4096.0) * adc;
4. మొదటి పంక్తి క్రింద ADC వేరియబుల్లో 4 బిట్లను కుడి వైపుకు మార్చడం ద్వారా బఫర్లో చాలా ముఖ్యమైన బిట్ విలువలను ఉంచుతుంది, మరియు రెండవ పంక్తి ADC వేరియబుల్లో 4 బిట్లను ఎడమకు మార్చడం ద్వారా బఫర్లో తక్కువ ముఖ్యమైన బిట్ విలువలను ఉంచుతుంది.
బఫర్ = adc >> 4; బఫర్ = adc << 4;
5. కింది స్టేట్మెంట్ A1 నుండి అనలాగ్ వోల్టేజ్ ను చదువుతుంది, అది DAC అవుట్పుట్ (MCP4725 DAC IC యొక్క OUTPUT పిన్). అవుట్పుట్ వోల్టేజ్ను తనిఖీ చేయడానికి ఈ పిన్ను మల్టీమీటర్కు కూడా కనెక్ట్ చేయవచ్చు. మల్టీమీటర్ ఎలా ఉపయోగించాలో ఇక్కడ తెలుసుకోండి.
సంతకం చేయని పూర్ణాంక అనలాగ్ = అనలాగ్ రీడ్ (A1) * 4;
6. మరింత వేరియబుల్ అనలాగ్ నుండి వోల్టేజ్ విలువ క్రింది సూత్రాన్ని ఉపయోగించి లెక్కించబడుతుంది
float opvolt = (5.0 / 4096.0) * అనలాగ్;
7. MCP4725 తో ప్రసారాన్ని ప్రారంభించడానికి క్రింది ప్రకటన ఉపయోగించబడుతుంది
వైర్.బెగిన్ ట్రాన్స్మిషన్ (MCP4725);
కంట్రోల్ బైట్ను I2C కి పంపుతుంది
వైర్.రైట్ (బఫర్);
MSB ని I2C కి పంపుతుంది
వైర్.రైట్ (బఫర్);
ఎల్ఎస్బిని ఐ 2 సికి పంపుతుంది
వైర్.రైట్ (బఫర్);
ప్రసారం ముగుస్తుంది
వైర్.ఎండ్ ట్రాన్స్మిషన్ ();
ఇప్పుడు చివరకు ఆ ఫలితాలను lcd.print () ఉపయోగించి LCD 16x2 డిస్ప్లేలో ప్రదర్శించండి
lcd.setCursor (0,0); lcd.print ("A IP:"); lcd.print (adc); lcd.setCursor (10,0); lcd.print ("V:"); lcd.print (ipvolt); lcd.setCursor (0,1); lcd.print ("D OP:"); lcd.print (అనలాగ్ రీడ్); lcd.setCursor (10,1); lcd.print ("V:"); lcd.print (opvolt); ఆలస్యం (500); lcd.clear ();
MCP4725 మరియు Arduino ఉపయోగించి డిజిటల్ నుండి అనలాగ్ మార్పిడి
అన్ని సర్క్యూట్ కనెక్షన్లను పూర్తి చేసి, కోడ్ను ఆర్డునోలోకి అప్లోడ్ చేసిన తరువాత, పొటెన్షియోమీటర్ను మార్చండి మరియు ఎల్సిడిలో అవుట్పుట్ చూడండి . LCD యొక్క మొదటి పంక్తి ఇన్పుట్ ADC విలువ మరియు వోల్టేజ్ చూపిస్తుంది మరియు రెండవ పంక్తి అవుట్పుట్ DAC విలువ మరియు వోల్టేజ్ చూపిస్తుంది.
MCP4725 యొక్క OUT మరియు GND పిన్కు మల్టీమీటర్ను కనెక్ట్ చేయడం ద్వారా మీరు అవుట్పుట్ వోల్టేజ్ను కూడా తనిఖీ చేయవచ్చు.
DAC మాడ్యూల్ MCP4725 ను Arduino తో ఇంటర్ఫేస్ చేయడం ద్వారా మేము డిజిటల్ విలువలను అనలాగ్గా మార్చగలము.