ESP32 ADC పరిచయం
ESP32 బోర్డులో SAR (సక్సెసివ్ అప్రోక్సిమేషన్ రిజిస్టర్లు) ADCలు అని కూడా పిలువబడే రెండు ఏకీకృత 12-బిట్ ADCలు ఉన్నాయి. ESP32 బోర్డు ADCలు 18 విభిన్న అనలాగ్ ఇన్పుట్ ఛానెల్లకు మద్దతు ఇస్తాయి అంటే వాటి నుండి ఇన్పుట్ తీసుకోవడానికి 18 విభిన్న అనలాగ్ సెన్సార్లను కనెక్ట్ చేయవచ్చు.
కానీ ఇది ఇక్కడ కాదు; ఈ అనలాగ్ ఛానెల్లు ఛానెల్ 1 మరియు ఛానెల్ 2 అని రెండు వర్గాలుగా విభజించబడ్డాయి, ఈ రెండు ఛానెల్లు ADC ఇన్పుట్ కోసం ఎల్లప్పుడూ అందుబాటులో లేని కొన్ని పిన్లను కలిగి ఉన్నాయి. ఇతరులతో పాటు ఆ ADC పిన్లు ఏమిటో చూద్దాం.
ESP32 ADC పిన్స్
ముందుగా చెప్పినట్లుగా ESP32 బోర్డులో 18 ADC ఛానెల్లు ఉన్నాయి. మొత్తం 30 GPIOలను కలిగి ఉన్న DEVKIT V1 DOIT బోర్డులో 18లో 15 మాత్రమే అందుబాటులో ఉన్నాయి.
దిగువ చిత్రంలో మేము వాటిని హైలైట్ చేసినట్లు మీ బోర్డ్ను చూడండి మరియు ADC పిన్లను గుర్తించండి:
ఛానెల్ 1 ADC పిన్స్
ESP32 DEVKIT DOIT బోర్డ్ యొక్క ఇవ్వబడిన పిన్ మ్యాపింగ్ క్రిందిది. ESP32లోని ADC1 8 ఛానెల్లను కలిగి ఉంది, అయితే DOIT DEVKIT బోర్డు 6 ఛానెల్లకు మాత్రమే మద్దతు ఇస్తుంది. కానీ ఇవి ఇప్పటికీ తగినంత కంటే ఎక్కువగా ఉన్నాయని నేను హామీ ఇస్తున్నాను.
ADC1 | GPIO పిన్ ESP32 |
---|---|
CH0 | 36 |
CH1 | NA 30 పిన్ వెర్షన్ ESP32 (Devkit తప్పక) |
CH2 | అని |
CH3 | 39 |
CH4 | 32 |
CH5 | 33 |
CH6 | 3. 4 |
CH7 | 35 |
క్రింది చిత్రం ESP32 ADC1 ఛానెల్లను చూపుతుంది:
ఛానెల్ 2 ADC పిన్స్
DEVKIT DOIT బోర్డులు ADC2లో 10 అనలాగ్ ఛానెల్లను కలిగి ఉన్నాయి. ADC2 అనలాగ్ డేటాను చదవడానికి 10 అనలాగ్ ఛానెల్లను కలిగి ఉన్నప్పటికీ, ఈ ఛానెల్లు ఎల్లప్పుడూ ఉపయోగించడానికి అందుబాటులో ఉండవు. ADC2 ఆన్బోర్డ్ WiFi డ్రైవర్లతో భాగస్వామ్యం చేయబడింది, అంటే బోర్డు WIFIని ఉపయోగిస్తున్న సమయంలో ఈ ADC2 అందుబాటులో ఉండదు. Wi-Fi డ్రైవర్ ఆఫ్లో ఉన్నప్పుడు మాత్రమే ADC2ని ఉపయోగించడం ఈ సమస్యకు పరిష్కారం.
దిగువ చిత్రం ADC2 ఛానెల్ యొక్క పిన్ మ్యాపింగ్ను చూపుతుంది.
ESP32 ADCని ఎలా ఉపయోగించాలి
ESP32 ADC Arduino లాగా పని చేస్తుంది, ఇక్కడ తేడా ఏమిటంటే దీనికి 12 బిట్ ADC ఉంది. కాబట్టి, ESP32 బోర్డు డిజిటల్ వివిక్త విలువలలో 0 నుండి 4095 వరకు ఉన్న అనలాగ్ వోల్టేజ్ విలువలను మ్యాప్ చేస్తుంది.
- ESP32 ADCకి ఇచ్చిన వోల్టేజ్ సున్నా అయితే 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 కంటే ఎక్కువ వోల్టేజీని కొలవదు.
- Wi-Fi డ్రైవర్లు ప్రారంభించబడినప్పుడు ADC2 ఉపయోగించబడదు. ADC1 యొక్క 8 ఛానెల్లు మాత్రమే ఉపయోగించబడతాయి.
- ESP32 ADC చాలా సరళంగా లేదు; అది చూపిస్తుంది నాన్-లీనియారిటీ ప్రవర్తన మరియు 3.2V మరియు 3.3V మధ్య తేడాను గుర్తించలేము. అయినప్పటికీ, ESP32 ADCని క్రమాంకనం చేయడం సాధ్యపడుతుంది. ఇక్కడ ESP32 ADC నాన్లీనియారిటీ ప్రవర్తనను క్రమాంకనం చేయడానికి మీకు మార్గనిర్దేశం చేసే కథనం.
ESP32 యొక్క నాన్ లీనియారిటీ ప్రవర్తన Arduino IDE యొక్క సీరియల్ మానిటర్లో చూడవచ్చు.
Arduino IDEని ఉపయోగించి ESP32 ADCని ప్రోగ్రామ్ చేయండి
ESP32 ADC యొక్క పనిని అర్థం చేసుకోవడానికి ఉత్తమ మార్గం పొటెన్షియోమీటర్ తీసుకొని, గరిష్టంగా సున్నా నిరోధకతకు వ్యతిరేకంగా విలువలను చదవడం. పొటెన్షియోమీటర్తో ESP32 ఇచ్చిన సర్క్యూట్ ఇమేజ్ క్రింది విధంగా ఉంది.
ESP32 యొక్క డిజిటల్ పిన్ 25 మరియు 3.3V మరియు GND పిన్తో 2 టెర్మినల్ పిన్లతో పొటెన్షియోమీటర్ మధ్య పిన్ను కనెక్ట్ చేయండి.
హార్డ్వేర్
క్రింది చిత్రం పొటెన్షియోమీటర్తో ESP32 యొక్క హార్డ్వేర్ను ప్రదర్శిస్తుంది. అవసరమైన భాగాల జాబితా క్రిందిది:
- ESP32 DEVKIT DOIT బోర్డు
- పొటెన్షియోమీటర్
- బ్రెడ్బోర్డ్
- జంపర్ వైర్లు
కోడ్
Arduino IDE తెరిచి, ESP32 బోర్డులో క్రింది కోడ్ను అప్లోడ్ చేయండి. Arduino IDE క్లిక్తో ESP32ని ఇన్స్టాల్ చేయడం మరియు కాన్ఫిగర్ చేయడం ఎలాగో తనిఖీ చేయడానికి ఇక్కడ .
స్థిరంగా int పిన్_పొటెన్షియోమీటర్ = 25 ; /*GPIO 25 (అనలాగ్ ADC2_CH8) వద్ద పొటెన్షియోమీటర్ కనెక్ట్ చేయబడింది*/int Val_Potentiometer = 0 ; /*పొటెన్షియోమీటర్ రీడ్ విలువ ఇక్కడ నిల్వ చేయబడుతుంది*/
శూన్యం సెటప్ ( ) {
క్రమ. ప్రారంభం ( 115200 ) ; /*సీరియల్ కమ్యూనికేషన్ ప్రారంభమవుతుంది*/
}
శూన్యం లూప్ ( ) {
Val_Potentiometer = అనలాగ్ చదవండి ( పిన్_పొటెన్షియోమీటర్ ) ; /*రీడింగ్ పొటెన్షియోమీటర్ విలువ*/
క్రమ. println ( Val_Potentiometer ) ; /*పొటెన్షియోమీటర్ విలువను ముద్రిస్తుంది*/
ఆలస్యం ( 2000 ) ; /*2 సెకన్ల ఆలస్యం*/
}
ఇక్కడ పై కోడ్లో, మేము ESP32 బోర్డులో పొటెన్షియోమీటర్ కోసం డిజిటల్ పిన్ 25ని ప్రారంభిస్తాము. ఇన్పుట్ తీసుకోవడానికి తర్వాత Val_Potentiometer వేరియబుల్ ప్రారంభించబడుతుంది. బాడ్ రేటును నిర్వచించడం ద్వారా తదుపరి సీరియల్ కమ్యూనికేషన్ ప్రారంభించబడుతుంది.
లో లూప్ అనలాగ్రీడ్() ఫంక్షన్ ADC విలువలను ఉపయోగించి కోడ్లో కొంత భాగం ESP32 యొక్క పిన్ 25లో చదవబడుతుంది. Serial.print()ని ఉపయోగించి తదుపరి అన్ని విలువలు సీరియల్ మానిటర్లో ముద్రించబడతాయి.
అవుట్పుట్
అవుట్పుట్ డిజిటల్ వివిక్త విలువలకు వ్యతిరేకంగా మ్యాప్ చేయబడిన అనలాగ్ విలువలను ప్రదర్శిస్తుంది. రీడ్ వోల్టేజ్ గరిష్టంగా ఉన్నప్పుడు 3.3V డిజిటల్ అవుట్పుట్ 4095కి సమానం మరియు రీడ్ వోల్టేజ్ 0V అయినప్పుడు డిజిటల్ అవుట్పుట్ 0 అవుతుంది.
ముగింపు
అనలాగ్ సెన్సార్లు మరియు హార్డ్వేర్తో మైక్రోకంట్రోలర్ బోర్డులను ఇంటర్ఫేస్ చేయవలసి వచ్చినప్పుడు ప్రతిచోటా అనలాగ్ నుండి డిజిటల్ కన్వర్టర్లు ఉపయోగించబడతాయి. ESP32 ADC కోసం ADC1 మరియు ADC2 అనే రెండు ఛానెల్లను కలిగి ఉంది. ఈ రెండు ఛానెల్లు ఇంటర్ఫేసింగ్ అనలాగ్ సెన్సార్ల కోసం 18 పిన్లను అందిస్తాయి. అయితే, వాటిలో 3 ESP32 30 పిన్ వెర్షన్లో అందుబాటులో లేవు. అనలాగ్ విలువలను చదవడం గురించి మరింత తెలుసుకోవడానికి కథనాన్ని చదవండి.