ఈ ట్యుటోరియల్లో మనం ఫ్లెక్స్ సెన్సార్ను ATMEGA8 మైక్రోకంట్రోలర్తో ఇంటర్ఫేస్ చేయబోతున్నాం. ATMEGA8 లో, మేము ఈ పని చేయడానికి 10bit ADC (అనలాగ్ టు డిజిటల్ కన్వర్షన్) లక్షణాన్ని ఉపయోగించబోతున్నాము. ఇప్పుడు ATMEGA లోని ADC + 5V కన్నా ఎక్కువ ఇన్పుట్ తీసుకోదు.
ఫ్లెక్స్ సెన్సార్ అంటే ఏమిటి?
ఒక FLEX సెన్సార్ దాని ఆకారం మార్చబడింది ఉన్నప్పుడు దాని నిరోధకత మారే ఒక ట్రాన్స్డ్యూసెర్ ఉంది. ఇది క్రింద ఉన్న చిత్రంలో చూపబడింది.
ఈ సెన్సార్ సరళతలో మార్పులను గ్రహించడానికి ఉపయోగించబడుతుంది. కాబట్టి ఫ్లెక్స్ సెన్సార్ వంగి ఉన్నప్పుడు ప్రతిఘటన తీవ్రంగా వంగి ఉంటుంది. ఇది క్రింద ఉన్న చిత్రంలో చూపబడింది.
ఇప్పుడు వోల్టేజ్లో మార్పుకు ప్రతిఘటనలో ఈ మార్పును మార్చడానికి, మేము వోల్టేజ్ డివైడర్ సర్క్యూట్ను ఉపయోగించబోతున్నాము. ఈ రెసిస్టివ్ నెట్వర్క్లో మనకు ఒక స్థిరమైన నిరోధకత మరియు ఇతర వేరియబుల్ నిరోధకత ఉన్నాయి. క్రింద ఉన్న చిత్రంలో చూపినట్లుగా, ఇక్కడ R1 స్థిరమైన నిరోధకత మరియు R2 అనేది FLEX సెన్సార్, ఇది ప్రతిఘటనగా పనిచేస్తుంది. శాఖ యొక్క మధ్య బిందువు కొలతకు తీసుకోబడుతుంది. ప్రతిఘటన R2 మారినప్పుడు, వోట్ దానితో సరళంగా మారుతుంది. కాబట్టి దీనితో మనకు వోల్టేజ్ ఉంది, ఇది సరళతతో మారుతుంది.
ఇప్పుడు ఇక్కడ గమనించవలసిన ముఖ్యమైన విషయం ఏమిటంటే, ADC మార్పిడి కోసం నియంత్రిక తీసుకున్న ఇన్పుట్ 50µAmp కంటే తక్కువగా ఉంటుంది. వోట్ ఆఫ్ వోల్టేజ్ డివైడర్ నుండి తీసిన కరెంట్ లోపం శాతాన్ని పెంచుతున్నందున రెసిస్టెన్స్ బేస్డ్ వోల్టేజ్ డివైడర్ యొక్క ఈ లోడింగ్ ప్రభావం చాలా ముఖ్యం, ప్రస్తుతానికి లోడింగ్ ప్రభావం గురించి మనం ఆందోళన చెందాల్సిన అవసరం లేదు.
మేము రెండు రెసిస్టర్లను తీసుకొని డివైడర్ సర్క్యూట్ను ఏర్పాటు చేయబోతున్నాము, తద్వారా 25 వోల్ట్స్ విన్ కోసం, మనకు 5 వోల్ట్ వోట్ లభిస్తుంది. కాబట్టి మనం చేయాల్సిందల్లా నిజమైన ఇన్పుట్ వోల్టేజ్ పొందడానికి ప్రోగ్రామ్లోని Vout విలువను “5” తో గుణించాలి.
భాగాలు అవసరం
హార్డ్వేర్: ATMEGA8, విద్యుత్ సరఫరా (5v), AVR-ISP PROGRAMMER, JHD_162ALCD (16x2LCD), 100uF కెపాసిటర్, 100nF కెపాసిటర్ (5 ముక్కలు), 100KΩ రెసిస్టర్.
సాఫ్ట్వేర్: అట్మెల్ స్టూడియో 6.1, ప్రోగిస్ప్ లేదా ఫ్లాష్ మ్యాజిక్.
సర్క్యూట్ రేఖాచిత్రం మరియు వర్కింగ్ వివరణ
సర్క్యూట్లో ATMEGA8 యొక్క PORTD డేటా పోర్ట్ LCD కి అనుసంధానించబడి ఉంది. 16x2 LCD లో బ్యాక్ లైట్ ఉంటే అన్నింటికంటే 16 పిన్స్ ఉన్నాయి, బ్యాక్ లైట్ లేకపోతే 14 పిన్స్ ఉంటాయి. బ్యాక్ లైట్ పిన్లను శక్తివంతం చేయవచ్చు లేదా వదిలివేయవచ్చు. ఇప్పుడు 14 పిన్లలో 8 డేటా పిన్స్ (7-14 లేదా డి 0-డి 7), 2 విద్యుత్ సరఫరా పిన్స్ (1 & 2 లేదా విఎస్ఎస్ & విడిడి లేదా జిఎన్డి & + 5 వి), కాంట్రాస్ట్ కంట్రోల్ కోసం 3 వ పిన్ (అక్షరాలు ఎంత మందంగా ఉండాలో VEE- నియంత్రిస్తుంది చూపబడింది) మరియు 3 కంట్రోల్ పిన్స్ (RS & RW & E).
సర్క్యూట్లో, నేను రెండు కంట్రోల్ పిన్స్ మాత్రమే తీసుకున్నానని మీరు గమనించవచ్చు. కాంట్రాస్ట్ బిట్ మరియు READ / WRITE తరచుగా ఉపయోగించబడవు కాబట్టి వాటిని భూమికి తగ్గించవచ్చు. ఇది ఎల్సిడిని అత్యధిక కాంట్రాస్ట్ మరియు రీడ్ మోడ్లో ఉంచుతుంది. అక్షరాలు మరియు డేటాను తదనుగుణంగా పంపడానికి మేము ఎనేబుల్ మరియు RS పిన్లను నియంత్రించాలి.
ATmega8 తో LCD కనెక్షన్లు క్రింది విధంగా ఉన్నాయి:
పిన్ 1 లేదా విఎస్ఎస్ టు గ్రౌండ్
PIN2 లేదా VDD లేదా VCC నుండి + 5v శక్తికి
PIN3 లేదా VEE నుండి గ్రౌండ్ (ఒక అనుభవశూన్యుడు కోసం గరిష్ట విరుద్ధంగా ఉత్తమంగా ఇస్తుంది)
UC యొక్క PB0 కు PIN4 లేదా RS (రిజిస్టర్ ఎంపిక)
గ్రౌండ్కు PIN5 లేదా RW (చదవడం / వ్రాయడం) (LCD ని రీడ్ మోడ్లో ఉంచుతుంది వినియోగదారు కోసం కమ్యూనికేషన్ను సులభతరం చేస్తుంది)
UC యొక్క PB1 కు PIN6 లేదా E (ప్రారంభించు)
UC యొక్క PIN7 లేదా D0 నుండి PD0 వరకు
UC యొక్క PIN8 లేదా D1 నుండి PD1 వరకు
UC యొక్క PIN9 లేదా D2 నుండి PD2 వరకు
UC యొక్క PIN10 లేదా D3 నుండి PD3 వరకు
UC యొక్క PIN11 లేదా D4 నుండి D4 వరకు
UC యొక్క PIN12 లేదా D5 నుండి PD5 వరకు
UC యొక్క PIN13 లేదా D6 నుండి PD6 వరకు
UC యొక్క PIN14 లేదా D7 నుండి PD7 వరకు
సర్క్యూట్లో మేము 8 బిట్ కమ్యూనికేషన్ (డి 0-డి 7) ను ఉపయోగించామని మీరు చూడవచ్చు, అయితే ఇది తప్పనిసరి కాదు, మేము 4 బిట్ కమ్యూనికేషన్ (డి 4-డి 7) ను ఉపయోగించవచ్చు, కాని 4 బిట్ కమ్యూనికేషన్ ప్రోగ్రామ్ కొంచెం క్లిష్టంగా మారుతుంది కాబట్టి మేము 8 బిట్ తో వెళ్ళాము కమ్యూనికేషన్. (ఈ ట్యుటోరియల్ను కూడా తనిఖీ చేయండి: AVR మైక్రోకంట్రోలర్తో 16x2 LCD ఇంటర్ఫేసింగ్)
కాబట్టి పై పట్టిక నుండి కేవలం పరిశీలన నుండి మేము 10 పిన్స్ ఎల్సిడిని కంట్రోలర్కు కలుపుతున్నాము, దీనిలో 8 పిన్స్ డేటా పిన్స్ మరియు 2 పిన్స్ నియంత్రణ కోసం.
R2 అంతటా వోల్టేజ్ పూర్తిగా సరళంగా లేదు; ఇది ధ్వనించేది. ఫిల్టర్ చేయడానికి శబ్దం కెపాసిటర్లు డివైడర్ సర్క్యూట్లో ప్రతి రెసిస్టర్ అంతటా చిత్రంలో చూపిన విధంగా ఉంచబడతాయి.
ADC యొక్క ఖచ్చితత్వాన్ని సర్దుబాటు చేయడం ఇక్కడ 1K కుండ. ఇప్పుడు ATMEGA8 యొక్క ADC గురించి చర్చిద్దాం.
ATMEGA8 లో, మేము PORTC యొక్క ఏదైనా నాలుగు ఛానెల్లకు అనలాగ్ ఇన్పుట్ ఇవ్వగలము, అన్నీ ఒకే విధంగా ఉన్నందున మనం ఏ ఛానెల్ని ఎంచుకున్నా ఫర్వాలేదు, మేము PORTC యొక్క ఛానల్ 0 లేదా PIN0 ని ఎంచుకోబోతున్నాము.
ATMEGA8 లో, ADC 10 బిట్ రిజల్యూషన్ కలిగి ఉంటుంది, కాబట్టి నియంత్రిక Vref / 2 ^ 10 యొక్క కనీస మార్పును గుర్తించగలదు, కాబట్టి రిఫరెన్స్ వోల్టేజ్ 5V అయితే ప్రతి 5/2 ^ 10 = 5mV కి డిజిటల్ అవుట్పుట్ ఇంక్రిమెంట్ లభిస్తుంది. కాబట్టి ఇన్పుట్లోని ప్రతి 5 ఎంవి ఇంక్రిమెంట్ కోసం మనకు డిజిటల్ అవుట్పుట్ వద్ద ఒకటి ఇంక్రిమెంట్ ఉంటుంది.
ఇప్పుడు మేము ఈ క్రింది నిబంధనల ఆధారంగా ADC యొక్క రిజిస్టర్ను సెట్ చేయాలి, 1. మొదట మనం ADC లో ADC లక్షణాన్ని ప్రారంభించాలి.
2. ఇక్కడ ADC మార్పిడి కోసం గరిష్ట ఇన్పుట్ వోల్టేజ్ + 5 వి. కాబట్టి మేము ADC యొక్క గరిష్ట విలువ లేదా సూచనను 5V కి సెటప్ చేయవచ్చు.
3. నియంత్రికకు ట్రిగ్గర్ మార్పిడి లక్షణం ఉంది, అంటే ADC మార్పిడి బాహ్య ట్రిగ్గర్ తర్వాత మాత్రమే జరుగుతుంది, ఎందుకంటే నిరంతర ఉచిత రన్నింగ్ మోడ్లో అమలు చేయడానికి ADC కోసం రిజిస్టర్లను సెట్ చేయాల్సిన అవసరం మాకు లేదు.
4. ఏదైనా ADC కొరకు, మార్పిడి యొక్క ఫ్రీక్వెన్సీ (అనలాగ్ విలువ నుండి డిజిటల్ విలువ) మరియు డిజిటల్ అవుట్పుట్ యొక్క ఖచ్చితత్వం విలోమానుపాతంలో ఉంటాయి. కాబట్టి డిజిటల్ అవుట్పుట్ యొక్క మంచి ఖచ్చితత్వం కోసం మనం తక్కువ ఫ్రీక్వెన్సీని ఎంచుకోవాలి. సాధారణ ADC గడియారం కోసం మేము ADC యొక్క ప్రీసెల్ను గరిష్ట విలువ (2) కు సెట్ చేస్తున్నాము. మేము 1MHZ యొక్క అంతర్గత గడియారాన్ని ఉపయోగిస్తున్నందున, ADC యొక్క గడియారం (1000000/2) అవుతుంది.
ADC తో ప్రారంభించడానికి మనం తెలుసుకోవలసిన నాలుగు విషయాలు ఇవి.
పైన పేర్కొన్న నాలుగు లక్షణాలు రెండు రిజిస్టర్లచే సెట్ చేయబడ్డాయి:
RED (ADEN): ATMEGA యొక్క ADC లక్షణాన్ని ప్రారంభించడానికి ఈ బిట్ను సెట్ చేయాలి.
నీలం (REFS1, REFS0): రిఫరెన్స్ వోల్టేజ్ (లేదా మేము ఇవ్వబోయే గరిష్ట ఇన్పుట్ వోల్టేజ్) సెట్ చేయడానికి ఈ రెండు బిట్స్ ఉపయోగించబడతాయి. మేము రిఫరెన్స్ వోల్టేజ్ 5 వి కలిగి ఉండాలనుకుంటున్నాము కాబట్టి, పట్టిక ద్వారా REFS0 సెట్ చేయాలి.
YELLOW (ADFR): ADC నిరంతరం అమలు కావడానికి ఈ బిట్ సెట్ చేయాలి (ఉచిత రన్నింగ్ మోడ్).
పింక్ (MUX0-MUX3): ఈ నాలుగు బిట్స్ ఇన్పుట్ ఛానెల్కు చెప్పడం కోసం. మేము ADC0 లేదా PIN0 ను ఉపయోగించబోతున్నాం కాబట్టి, పట్టిక ప్రకారం మేము ఏ బిట్లను సెట్ చేయనవసరం లేదు.
BROWN (ADPS0-ADPS2): ఈ మూడు బిట్స్ ADC కోసం ప్రీస్కాలర్ను సెట్ చేయడానికి. మేము 2 యొక్క ప్రెస్కాలర్ను ఉపయోగిస్తున్నందున, మేము ఒక బిట్ను సెట్ చేయాలి.
డార్క్ గ్రీన్ (ADSC): ADC మార్పిడిని ప్రారంభించడానికి ఈ బిట్ సెట్ చేయబడింది. మేము మార్పిడిని ఆపాల్సిన అవసరం వచ్చినప్పుడు ఈ బిట్ను ప్రోగ్రామ్లో నిలిపివేయవచ్చు.
ATmega8 తో FLEX సెన్సార్ ఇంటర్ఫేసింగ్ క్రింద ఇచ్చిన సి కోడ్లో దశల వారీగా వివరించబడింది.