- భాగాలు అవసరం
- MCP4725 DAC మాడ్యూల్ (డిజిటల్ నుండి అనలాగ్ కన్వర్టర్)
- MCP4725 లో I2C కమ్యూనికేషన్
- సర్క్యూట్ రేఖాచిత్రం మరియు వివరణ
- డిజిటల్ టు అనలాగ్ మార్పిడి కోసం ప్రోగ్రామింగ్ STM32F103C8
- STM32 తో DAC ను పరీక్షిస్తోంది
మైక్రోకంట్రోలర్లు డిజిటల్ విలువలతో మాత్రమే పనిచేస్తాయని మనందరికీ తెలుసు, కాని వాస్తవ ప్రపంచంలో మనం అనలాగ్ సిగ్నల్స్ తో వ్యవహరించాలి. అందుకే వాస్తవ ప్రపంచ అనలాగ్ విలువలను డిజిటల్ రూపంలోకి మార్చడానికి ADC (అనలాగ్ టు డిజిటల్ కన్వర్టర్స్) ఉంది, తద్వారా మైక్రోకంట్రోలర్లు సంకేతాలను ప్రాసెస్ చేయవచ్చు. మనకు డిజిటల్ విలువల నుండి అనలాగ్ సిగ్నల్స్ అవసరమైతే, ఇక్కడ DAC (డిజిటల్ నుండి అనలాగ్ కన్వర్టర్) వస్తుంది.
డిజిటల్ టు అనలాగ్ కన్వర్టర్కు ఒక సాధారణ ఉదాహరణ స్టూడియోలో ఒక పాటను రికార్డ్ చేయడం, ఇక్కడ ఒక ఆర్టిస్ట్ సింగర్ మైక్రోఫోన్ ఉపయోగిస్తున్నారు మరియు ఒక పాట పాడుతున్నారు. ఈ అనలాగ్ సౌండ్ తరంగాలు డిజిటల్ రూపంలోకి మార్చబడతాయి మరియు తరువాత డిజిటల్ ఫార్మాట్ ఫైల్లో నిల్వ చేయబడతాయి మరియు నిల్వ చేసిన డిజిటల్ ఫైల్ను ఉపయోగించి పాటను ప్లే చేసినప్పుడు, ఆ డిజిటల్ విలువలు స్పీకర్ అవుట్పుట్ కోసం అనలాగ్ సిగ్నల్గా మార్చబడతాయి. కాబట్టి ఈ వ్యవస్థలో DAC ఉపయోగించబడుతుంది.
మోటారు నియంత్రణ, ఎల్ఈడీ లైట్ల కంట్రోల్ బ్రైట్నెస్, ఆడియో యాంప్లిఫైయర్, వీడియో ఎన్కోడర్లు, డేటా అక్విజిషన్ సిస్టమ్స్ వంటి అనేక అనువర్తనాల్లో డిఎసిని ఉపయోగించవచ్చు.
మేము ఇప్పటికే MCP4725 DAC మాడ్యూల్ను Arduino తో ఇంటర్ఫేస్ చేసాము. ఈ రోజు మనం STM32F103C8 మైక్రోకంట్రోలర్ను ఉపయోగించి డిజిటల్ టు అనలాగ్ కన్వర్టర్ను రూపొందించడానికి అదే MCP4725 DAC IC ని ఉపయోగిస్తాము.
భాగాలు అవసరం
- STM32F103C8
- MCP4725 DAC IC
- 10 కె పొటెన్టోమీటర్
- 16x2 LCD డిస్ప్లే
- బ్రెడ్బోర్డ్
- వైర్లను కనెక్ట్ చేస్తోంది
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 లో I2C కమ్యూనికేషన్
ఈ DAC IC ని I2C కమ్యూనికేషన్ ఉపయోగించి ఏదైనా మైక్రోకంట్రోలర్తో ఇంటర్ఫేస్ చేయవచ్చు. I2C కమ్యూనికేషన్కు రెండు వైర్లు SCL మరియు SDA మాత్రమే అవసరం. అప్రమేయంగా, MCP4725 కోసం I2C చిరునామా 0x60. STM32F103C8 లో I2C కమ్యూనికేషన్ గురించి మరింత తెలుసుకోవడానికి లింక్ను అనుసరించండి.
STM32F103C8 లో I2C పిన్స్:
SDA: PB7 లేదా PB9, PB11.
SCL: PB6 లేదా PB8, PB10.
సర్క్యూట్ రేఖాచిత్రం మరియు వివరణ
STM32F103C8 & 16x2 LCD మధ్య కనెక్షన్లు
ఎల్సిడి పిన్ నం |
LCD పిన్ పేరు |
STM32 పిన్ పేరు |
1 |
గ్రౌండ్ (Gnd) |
గ్రౌండ్ (జి) |
2 |
వీసీసీ |
5 వి |
3 |
VEE |
దీనికి విరుద్ధంగా సెంటర్ ఆఫ్ పొటెన్టోమీటర్ నుండి పిన్ చేయండి |
4 |
రిజిస్టర్ సెలెక్ట్ (RS) |
పిబి 11 |
5 |
చదవండి / వ్రాయండి (RW) |
గ్రౌండ్ (జి) |
6 |
ప్రారంభించండి (EN) |
పిబి 10 |
7 |
డేటా బిట్ 0 (DB0) |
కనెక్షన్ లేదు (NC) |
8 |
డేటా బిట్ 1 (డిబి 1) |
కనెక్షన్ లేదు (NC) |
9 |
డేటా బిట్ 2 (డిబి 2) |
కనెక్షన్ లేదు (NC) |
10 |
డేటా బిట్ 3 (డిబి 3) |
కనెక్షన్ లేదు (NC) |
11 |
డేటా బిట్ 4 (డిబి 4) |
పిబి 0 |
12 |
డేటా బిట్ 5 (డిబి 5) |
పిబి 1 |
13 |
డేటా బిట్ 6 (డిబి 6) |
పిసి 13 |
14 |
డేటా బిట్ 7 (డిబి 7) |
పిసి 14 |
15 |
LED పాజిటివ్ |
5 వి |
16 |
LED నెగటివ్ |
గ్రౌండ్ (జి) |
MCP4725 DAC IC మరియు STM32F103C8 మధ్య కనెక్షన్
MCP4725 |
STM32F103C8 |
మల్టిమీటర్ |
SDA |
పిబి 7 |
NC |
ఎస్సీఎల్ |
పిబి 6 |
NC |
అవుట్ |
PA1 |
పాజిటివ్ ప్రోబ్ |
GND |
GND |
నెగటివ్ ప్రోబ్ |
వీసీసీ |
3.3 వి |
NC |
STM32F10C8 యొక్క PA1 అనలాగ్ ఇన్పుట్ (ADC) తో సెంటర్ పిన్ కనెక్ట్ చేయబడి, ఎడమ పిన్ GND కి కనెక్ట్ చేయబడింది మరియు కుడివైపు పిన్ STM32F103C8 యొక్క 3.3V కి కనెక్ట్ చేయబడింది.
ఈ ట్యుటోరియల్లో మేము MCP4725 DAC IC ని STM32 తో కనెక్ట్ చేస్తాము మరియు STM32 ADC పిన్ PA0 కు అనలాగ్ ఇన్పుట్ విలువను అందించడానికి 10k పొటెన్షియోమీటర్ను ఉపయోగిస్తాము. ఆపై అనలాగ్ విలువను డిజిటల్ రూపంలోకి మార్చడానికి ADC ని ఉపయోగించండి. ఆ తరువాత ఆ డిజిటల్ విలువలను I2C బస్సు ద్వారా MCP4725 కు పంపండి. ఆ డిజిటల్ విలువలను DAC MCP4725 IC ని ఉపయోగించి అనలాగ్గా మార్చండి, ఆపై STM32 యొక్క మరొక ADC పిన్ PA1 ను ఉపయోగించి పిన్ OUT నుండి MCP4725 యొక్క అనలాగ్ అవుట్పుట్ను తనిఖీ చేయండి. చివరగా 16x2 LCD డిస్ప్లేలో వోల్టేజ్లతో ADC & DAC విలువలు రెండింటినీ ప్రదర్శించండి.
డిజిటల్ టు అనలాగ్ మార్పిడి కోసం ప్రోగ్రామింగ్ STM32F103C8
STM32F103C8 కు కోడ్ను అప్లోడ్ చేయడానికి ఇప్పుడు FTDI ప్రోగ్రామర్ అవసరం లేదు. STM32 యొక్క USB పోర్ట్ ద్వారా PC కి కనెక్ట్ చేయండి మరియు ARDUINO IDE తో ప్రోగ్రామింగ్ ప్రారంభించండి. Arduino IDE లో మీ STM32 ను ప్రోగ్రామింగ్ చేయడం గురించి మరింత తెలుసుకోవడానికి ఈ లింక్ను సందర్శించండి. ఈ STM32 DAC ట్యుటోరియల్ కోసం పూర్తి ప్రోగ్రామ్ చివరిలో ఇవ్వబడుతుంది.
మొదట వైర్.హెచ్, సాఫ్ట్వైర్.హెచ్ మరియు లిక్విడ్క్రిస్టల్.హెచ్ లైబ్రరీని ఉపయోగించి ఐ 2 సి మరియు ఎల్సిడి కోసం లైబ్రరీని చేర్చండి. STM32 మైక్రోకంట్రోలర్లో I2C గురించి మరింత తెలుసుకోండి.
# చేర్చండి
తరువాత STM32F103C8 తో అనుసంధానించబడిన LCD పిన్ల ప్రకారం LCD పిన్లను నిర్వచించండి మరియు ప్రారంభించండి
const int rs = PB11, en = PB10, d4 = PB0, d5 = PB1, d6 = PC13, d7 = PC14; లిక్విడ్ క్రిస్టల్ ఎల్సిడి (rs, en, d4, d5, d6, d7);
అప్పుడు MCP4725 DAC IC యొక్క I2C చిరునామాను నిర్వచించండి. MCP4725 DAC డిఫాల్ట్ I2C చిరునామా 0x60
# MCP4725 0x60 ను నిర్వచించండి
శూన్య సెటప్లో ()
మొదట STM32F103C8 యొక్క పిన్స్ PB7 (SDA) మరియు PB6 (SCL) వద్ద I2C కమ్యూనికేషన్ను ప్రారంభించండి.
వైర్.బెగిన్ (); // I2C కమ్యూనికేషన్ ప్రారంభమవుతుంది
తరువాత 16x2 మోడ్లో ఎల్సిడి డిస్ప్లేను సెట్ చేసి, స్వాగత సందేశాన్ని ప్రదర్శిస్తుంది.
lcd.begin (16,2); lcd.print ("CIRCUIT DIGEST"); ఆలస్యం (1000); lcd.clear (); lcd.setCursor (0,0); lcd.print ("STM32F103C8"); lcd.setCursor (0,1); lcd.print ("MCP4725 తో DAC"); ఆలస్యం (2000); lcd.clear ();
శూన్య లూప్లో ()
1. బఫర్లో మొదట కంట్రోల్ బైట్ విలువను (0b01000000) ఉంచండి.
(010-రైట్ మోడ్లో MCP4725 సెట్ చేస్తుంది) బఫర్ = 0b01000000;
2. కింది స్టేట్మెంట్ పిన్ PA0 నుండి అనలాగ్ విలువను చదువుతుంది మరియు దానిని 0 నుండి 4096 వరకు డిజిటల్ విలువగా మారుస్తుంది, ఎందుకంటే ADC 12-బిట్ రిజల్యూషన్ మరియు వేరియబుల్ adc లో నిల్వ చేస్తుంది.
adc = అనలాగ్ రీడ్ (PA0);
3. ఈ క్రింది స్టేట్మెంట్ 3.3V యొక్క రిఫరెన్స్ వోల్టేజ్తో ADC ఇన్పుట్ విలువ (0 నుండి 4096) నుండి వోల్టేజ్ను లెక్కించడానికి ఉపయోగించే సూత్రం.
float ipvolt = (3.3 / 4096.0) * adc;
4. ఎడమ 4 బిట్స్ తరలించడం ద్వారా బఫర్ లో ADC వేరియబుల్ కుడి, మరియు కనీసం ముఖ్యమైన బిట్ విలువలకు 4 బిట్స్ తరలించడం ద్వారా బఫర్ లో చాలా ముఖ్యమైన బిట్ విలువలు ఉంచండి ADC వేరియబుల్.
బఫర్ = adc >> 4; బఫర్ = adc << 4;
5. కింది స్టేట్మెంట్ STM32 యొక్క ADC పిన్ PA1 నుండి అనలాగ్ విలువను చదువుతుంది, అది DAC అవుట్పుట్ (MCP4725 DAC IC యొక్క OUTPUT పిన్). అవుట్పుట్ వోల్టేజ్ను తనిఖీ చేయడానికి ఈ పిన్ను మల్టీమీటర్కు కూడా కనెక్ట్ చేయవచ్చు.
సంతకం చేయని పూర్ణాంక అనలాగ్ = అనలాగ్ రీడ్ (PA1);
6. ఇంకా వేరియబుల్ అనలాగ్ నుండి వోల్టేజ్ విలువ కింది స్టేట్మెంట్తో సూత్రాన్ని ఉపయోగించి లెక్కించబడుతుంది.
float opvolt = (3.3 / 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 ();
STM32 తో DAC ను పరీక్షిస్తోంది
పొటెన్షియోమీటర్ను తిప్పడం ద్వారా మేము ఇన్పుట్ ADC విలువ మరియు వోల్టేజ్ను మార్చినప్పుడు, అవుట్పుట్ DAC విలువ మరియు వోల్టేజ్ కూడా మారుతుంది. ఇక్కడ ఇన్పుట్ విలువలు మొదటి వరుసలో మరియు LCD డిస్ప్లే యొక్క రెండవ వరుసలో అవుట్పుట్ విలువలు చూపబడతాయి. అనలాగ్ వోల్టేజ్ను ధృవీకరించడానికి మల్టీమీటర్ MCP4725 అవుట్పుట్ పిన్కు అనుసంధానించబడి ఉంది.
ప్రదర్శన వీడియోతో పూర్తి కోడ్ క్రింద ఇవ్వబడింది.