- ADC అంటే ఏమిటి (అనలాగ్ టు డిజిటల్ కన్వర్షన్)
- AVR మైక్రోకంట్రోలర్ Atmega16 లో ADC
- భాగాలు అవసరం
- సర్క్యూట్ రేఖాచిత్రం
- Atmega16 లో ADC నియంత్రణ రిజిస్టర్లను ఏర్పాటు చేస్తోంది
- ADC కోసం ప్రోగ్రామింగ్ Atmega16
దాదాపు ప్రతి ఎంబెడెడ్ అప్లికేషన్లో ఉపయోగించే ఒక సాధారణ లక్షణం ADC మాడ్యూల్ (అనలాగ్ టు డిజిటల్ కన్వర్టర్). ఈ అనలాగ్ టు డిజిటల్ కన్వర్టర్స్ టెంపరేచర్ సెన్సార్, టిల్ట్ సెన్సార్, కరెంట్ సెన్సార్, ఫ్లెక్స్ సెన్సార్ వంటి అనలాగ్ సెన్సార్ల నుండి వోల్టేజ్ చదవగలదు. ఈ ట్యుటోరియల్లో ADC అంటే ఏమిటి మరియు Atmega16 లో ADC ఎలా ఉపయోగించాలో నేర్చుకుంటాము. ఈ ట్యుటోరియల్లో Atmega16 యొక్క ADC పిన్తో ఒక చిన్న పొటెన్షియోమీటర్ను కనెక్ట్ చేయడం మరియు ADC ఇన్పుట్ విలువలో మార్పుకు సంబంధించి ADC అవుట్పుట్ విలువ యొక్క మారుతున్న వోల్టేజ్ను ప్రదర్శించడానికి 8 LED లు ఉపయోగించబడతాయి.
ఇంతకుముందు మేము ఇతర మైక్రోకంట్రోలర్లలో ADC ని వివరించాము:
- ARM7 LPC2148 లో ADC ని ఎలా ఉపయోగించాలి - అనలాగ్ వోల్టేజ్ను కొలవడం
- STM32F103C8 లో ADC ని ఎలా ఉపయోగించాలి - అనలాగ్ వోల్టేజ్ను కొలవడం
- MSP430G2 లో ADC ని ఎలా ఉపయోగించాలి - అనలాగ్ వోల్టేజ్ను కొలవడం
- Arduino Uno లో ADC ని ఎలా ఉపయోగించాలి?
- MPLAB మరియు XC8 తో PIC మైక్రోకంట్రోలర్ యొక్క ADC మాడ్యూల్ ఉపయోగించడం
ADC అంటే ఏమిటి (అనలాగ్ టు డిజిటల్ కన్వర్షన్)
ADC అంటే అనలాగ్ టు డిజిటల్ కన్వర్టర్. ఎలక్ట్రానిక్స్లో, ADC అనేది ప్రస్తుత మరియు వోల్టేజ్ వంటి అనలాగ్ సిగ్నల్ను డిజిటల్ కోడ్ (బైనరీ రూపం) గా మార్చే పరికరం. వాస్తవ ప్రపంచంలో చాలా సంకేతాలు అనలాగ్ మరియు ఏదైనా మైక్రోకంట్రోలర్ లేదా మైక్రోప్రాసెసర్ బైనరీ లేదా డిజిటల్ భాషను అర్థం చేసుకుంటుంది (0 లేదా 1). కాబట్టి, మైక్రోకంట్రోలర్లకు అనలాగ్ సిగ్నల్లను అర్థం చేసుకోవడానికి, మేము ఈ అనలాగ్ సిగ్నల్లను డిజిటల్ రూపంలోకి మార్చాలి. ADC ఖచ్చితంగా మన కోసం దీన్ని చేస్తుంది. వివిధ అనువర్తనాల కోసం అనేక రకాల ADC అందుబాటులో ఉన్నాయి. ఫ్లాష్, వరుస ఉజ్జాయింపు మరియు సిగ్మా-డెల్టా కొన్ని ప్రసిద్ధ ADC లు.
ADC యొక్క అత్యంత చవకైన రకం విజయవంతమైన-ఉజ్జాయింపు మరియు ఈ ట్యుటోరియల్లో వారసత్వ-ఉజ్జాయింపు ADC ఉపయోగించబడుతుంది. ADC యొక్క వరుస-ఉజ్జాయింపు రకంలో, డిజిటల్ సంకేతాల శ్రేణి, ప్రతి ఒక్కటి ఫిక్స్ అనలాగ్ స్థాయికి అనుగుణంగా ఉంటాయి, ఇవి వరుసగా ఉత్పత్తి చేయబడతాయి. మార్పిడి కింద అనలాగ్ సిగ్నల్తో పోల్చడానికి అంతర్గత కౌంటర్ ఉపయోగించబడుతుంది. అనలాగ్ సిగ్నల్ కంటే అనలాగ్ స్థాయి పెద్దదిగా మారినప్పుడు తరం ఆగిపోతుంది. డిజిటల్ కోడ్ అనలాగ్ స్థాయికి అనుగుణంగా ఉంటుంది అనలాగ్ సిగ్నల్ యొక్క కావలసిన డిజిటల్ ప్రాతినిధ్యం. ఇది వరుస-ఉజ్జాయింపుపై మా చిన్న వివరణను పూర్తి చేస్తుంది.
మీరు ADC ని చాలా లోతుగా అన్వేషించాలనుకుంటే, మీరు ADC లో మా మునుపటి ట్యుటోరియల్ని చూడవచ్చు. ADC లు IC ల రూపంలో లభిస్తాయి మరియు మైక్రోకంట్రోలర్లు ఈ రోజుల్లో అంతర్నిర్మిత ADC తో వస్తాయి. ఈ ట్యుటోరియల్లో మేము Atmega16 యొక్క అంతర్నిర్మిత ADC ని ఉపయోగిస్తాము. Atmega16 యొక్క అంతర్నిర్మిత ADC గురించి చర్చిద్దాం.
AVR మైక్రోకంట్రోలర్ Atmega16 లో ADC
Atmega16 లో అంతర్నిర్మిత 10 బిట్ మరియు 8-ఛానల్ ADC ఉంది. ఇన్పుట్ వోల్టేజ్ 0-5 వి అయితే 10 బిట్ దానికి అనుగుణంగా ఉంటుంది, అది 10 బిట్ విలువలో విభజించబడుతుంది, అనగా 1024 స్థాయి వివిక్త అనలాగ్ విలువలు (2 10 = 1024). ఇప్పుడు 8-ఛానల్ Atmega16 లోని అంకితమైన 8 ADC పిన్లకు అనుగుణంగా ఉంటుంది, ఇక్కడ ప్రతి పిన్ అనలాగ్ వోల్టేజ్ను చదవగలదు. పూర్తి పోర్టా (GPIO33-GPIO40) ADC ఆపరేషన్ కోసం అంకితం చేయబడింది. అప్రమేయంగా, PORTA పిన్స్ సాధారణ IO పిన్స్, అంటే పోర్ట్ పిన్స్ మల్టీప్లెక్స్. ఈ పిన్లను ADC పిన్లుగా ఉపయోగించడానికి మేము ADC నియంత్రణకు అంకితమైన కొన్ని రిజిస్టర్లను కాన్ఫిగర్ చేయాలి. అందుకే రిజిస్టర్లను ఎడిసి కంట్రోల్ రిజిస్టర్లు అంటారు. అంతర్నిర్మిత ADC పనితీరును ప్రారంభించడానికి ఈ రిజిస్టర్లను ఎలా సెటప్ చేయాలో చర్చించుకుందాం.
Atmega16 లో ADC పిన్స్
భాగాలు అవసరం
- Atmega16 మైక్రోకంట్రోలర్ IC
- 16Mhz క్రిస్టల్ ఓసిలేటర్
- రెండు 100 ఎన్ఎఫ్ కెపాసిటర్లు
- రెండు 22 పిఎఫ్ కెపాసిటర్లు
- నొక్కుడు మీట
- జంపర్ వైర్లు
- బ్రెడ్బోర్డ్
- USBASP v2.0
- లెడ్ (ఏదైనా రంగు)
సర్క్యూట్ రేఖాచిత్రం
Atmega16 లో ADC నియంత్రణ రిజిస్టర్లను ఏర్పాటు చేస్తోంది
1. ADMUX రిజిస్టర్ (ADC మల్టీప్లెక్సర్ ఎంపిక రిజిస్టర్) :
ADMUX రిజిస్టర్ ADC ఛానెల్ ఎంపిక మరియు రిఫరెన్స్ వోల్టేజ్ ఎంచుకోవడం కోసం. దిగువ చిత్రం ADMUX రిజిస్టర్ యొక్క అవలోకనాన్ని చూపిస్తుంది. వివరణ క్రింద వివరించబడింది.
- బిట్ 0-4: ఛానెల్ ఎంపిక బిట్స్.
MUX4 |
MUX3 |
MUX2 |
MUX1 |
MUX0 |
ADC ఛానల్ ఎంచుకోబడింది |
0 |
0 |
0 |
0 |
0 |
ADC0 |
0 |
0 |
0 |
0 |
1 |
ADC1 |
0 |
0 |
0 |
1 |
0 |
ADC2 |
0 |
0 |
0 |
1 |
1 |
ADC3 |
0 |
0 |
1 |
0 |
0 |
ADC4 |
0 |
0 |
1 |
0 |
1 |
ADC5 |
0 |
0 |
1 |
1 |
0 |
ADC6 |
0 |
0 |
1 |
1 |
1 |
ADC7 |
- బిట్ -5: ఫలితాన్ని కుడి లేదా ఎడమకు సర్దుబాటు చేయడానికి ఇది ఉపయోగించబడుతుంది.
ADLAR |
వివరణ |
0 |
ఫలితాన్ని కుడివైపు సర్దుబాటు చేయండి |
1 |
ఫలితాన్ని ఎడమవైపు సర్దుబాటు చేయండి |
- బిట్ 6-7: అవి ADC కొరకు రిఫరెన్స్ వోల్టేజ్ను ఎంచుకోవడానికి ఉపయోగిస్తారు.
REFS1 |
REFS0 |
వోల్టేజ్ రిఫరెన్స్ ఎంపిక |
0 |
0 |
AREF, అంతర్గత వ్రేఫ్ ఆపివేయబడింది |
0 |
1 |
AREF పిన్ వద్ద బాహ్య కెపాసిటర్తో AVCC |
1 |
0 |
రిజర్వు చేయబడింది |
1 |
1 |
AREF పిన్ వద్ద బాహ్య కెపాసిటర్తో అంతర్గత 2.56 వోల్టేజ్ సూచన |
ఇప్పుడు ప్రోగ్రామ్లో ఈ రిజిస్టర్ బిట్లను కాన్ఫిగర్ చేయడం ప్రారంభించండి, అంటే మేము PORTC యొక్క అన్ని పిన్లకు అంతర్గత ADC రీడ్ మరియు అవుట్పుట్ పొందుతాము.
ADC కోసం ప్రోగ్రామింగ్ Atmega16
పూర్తి ప్రోగ్రామ్ క్రింద ఇవ్వబడింది. JTAG మరియు Atmel స్టూడియోని ఉపయోగించి Atmega16 లో ప్రోగ్రామ్ను బర్న్ చేయండి మరియు ADC విలువను మార్చడానికి పొటెన్షియోమీటర్ను తిప్పండి. ఇక్కడ, కోడ్ లైన్ ద్వారా వివరించబడింది.
ADC మార్చబడిన విలువను చదవడానికి ఒక ఫంక్షన్ చేయడం ప్రారంభించండి. అప్పుడు ఛానల్ విలువగా పాస్ 'chnl' లో ADC_read ఫంక్షన్.
సంతకం చేయని పూర్ణాంకం ADC_read (సంతకం చేయని చార్ chnl)
మనకు 8 ADC ఛానెల్లు మాత్రమే ఉన్నందున ఛానెల్ విలువలు 0 నుండి 7 మధ్య ఉండాలి.
chnl = chnl & 0b00000111;
ADMUX రిజిస్టర్కు '40' అంటే '01000000' వ్రాయడం ద్వారా మేము PORTA0 ను ADC0 గా ఎంచుకున్నాము, ఇక్కడ డిజిటల్ మార్పిడి కోసం అనలాగ్ ఇన్పుట్ కనెక్ట్ అవుతుంది.
ADMUX = 0x40;
ఇప్పుడు ఈ దశలో ADC మార్పిడి ప్రక్రియ ఉంటుంది, ఇక్కడ ADCSRA రిజిస్టర్లో ADSC Bit కి ఒకదాన్ని వ్రాయడం ద్వారా మేము మార్పిడిని ప్రారంభిస్తాము. ఆ తరువాత, మార్పిడి పూర్తయినప్పుడు ADIF బిట్ విలువను తిరిగి ఇచ్చే వరకు వేచి ఉండండి. ADCSRA రిజిస్టర్లోని ADIF Bit వద్ద '1' వ్రాయడం ద్వారా మేము మార్పిడిని ఆపివేస్తాము. మార్పిడి పూర్తయినప్పుడు ADC విలువను తిరిగి ఇవ్వండి.
ADCSRA - = (1 <
ఇక్కడ REFS0 బిట్ను సెట్ చేయడం ద్వారా అంతర్గత ADC రిఫరెన్స్ వోల్టేజ్ ఎంపిక చేయబడుతుంది. ఆ తరువాత ADC ని ప్రారంభించి, ప్రెస్కాలర్ను 128 గా ఎంచుకోండి.
ADMUX = (1 <
ఇప్పుడు ADC విలువను సేవ్ చేసి PORTC కి పంపండి. PORTC లో, 8 LED లు అనుసంధానించబడి ఉన్నాయి, ఇవి డిజిటల్ ఉత్పత్తిని 8 బిట్ ఆకృతిలో చూపుతాయి. మేము చూపించిన ఉదాహరణ ఒక 1K కుండను ఉపయోగించి 0V నుండి 5V మధ్య వోల్టేజ్ మారుతుంది.
i = ADC_read (0); PORTC = i;
ADC పిన్లో అనలాగ్ ఇన్పుట్ వోల్టేజ్ను ప్రదర్శించడానికి డిజిటల్ మల్టీమీటర్ ఉపయోగించబడుతుంది మరియు ADC అవుట్పుట్ యొక్క 8 బిట్ విలువను చూపించడానికి 8 LED లు ఉపయోగించబడతాయి. పొటెన్టోమీటర్ను తిప్పండి మరియు సంబంధిత ఫలితాన్ని మల్టీమీటర్తో పాటు మెరుస్తున్న LED లలో చూడండి.
పూర్తి కోడ్ మరియు వర్కింగ్ వీడియో క్రింద ఇవ్వబడ్డాయి.