ఈ ప్రాజెక్ట్లో మేము ఉష్ణోగ్రతను కొలవడానికి ఒక సర్క్యూట్ను రూపొందించబోతున్నాం. ఈ సర్క్యూట్ లీనియర్ వోల్టేజ్ సెన్సార్ “ LM35 ” ను ఉపయోగించి అభివృద్ధి చేయబడింది. ఉష్ణోగ్రత సాధారణంగా “సెంటిగ్రేడ్” లేదా “ఫరాహైట్” లో కొలుస్తారు. “LM35” సెన్సార్ స్కేల్ ఆఫ్ సెంటిగ్రేడ్ ఆధారంగా అవుట్పుట్ అందిస్తుంది.
LM35 అనేది పరికరం వంటి మూడు పిన్ ట్రాన్సిస్టర్. దీనికి VCC, GND మరియు OUTPUT ఉన్నాయి. ఈ సెన్సార్ ఉష్ణోగ్రత ఆధారంగా అవుట్పుట్ వద్ద వేరియబుల్ వోల్టేజ్ను అందిస్తుంది.
పై చిత్రంలో చూపినట్లుగా, ప్రతి +1 సెంటీగ్రేడ్ ఉష్ణోగ్రత పెరుగుదలకు + 10 ఎంవి అధిక ఉత్పత్తి ఉంటుంది. కాబట్టి ఉష్ణోగ్రత 0◦ సెంటిగ్రేడ్ అయితే సెన్సార్ యొక్క అవుట్పుట్ 0 వి అవుతుంది, ఉష్ణోగ్రత 10◦ సెంటీగ్రేడ్ అయితే సెన్సార్ యొక్క అవుట్పుట్ + 100 ఎంవి అవుతుంది, ఉష్ణోగ్రత 25◦ సెంటీగ్రేడ్ అయితే సెన్సార్ యొక్క అవుట్పుట్ + 250 ఎంవి ఉంటుంది.
కాబట్టి ఇప్పుడు LM35 తో మనం వేరియబుల్ వోల్టేజ్ రూపంలో ఉష్ణోగ్రతను పొందుతాము. ఈ ఉష్ణోగ్రత ఆధారిత వోల్టేజ్ ATMEGA32A యొక్క ADC (అనలాగ్ టు డిజిటల్ కన్వర్టర్) కు ఇన్పుట్గా ఇవ్వబడుతుంది. పొందిన మార్పిడి తర్వాత డిజిటల్ విలువ 16x2 LCD లో ఉష్ణోగ్రతగా చూపబడుతుంది.
భాగాలు అవసరం
హార్డ్వేర్: ATMEGA32 మైక్రోకంట్రోలర్, విద్యుత్ సరఫరా (5v), AVR-ISP PROGRAMMER, JHD_162ALCD (16x2LCD), 100uF కెపాసిటర్ (రెండు ముక్కలు), 100nF కెపాసిటర్, LM35 ఉష్ణోగ్రత సెన్సార్.
సాఫ్ట్వేర్: అట్మెల్ స్టూడియో 6.1, ప్రోగిస్ప్ లేదా ఫ్లాష్ మ్యాజిక్.
సర్క్యూట్ రేఖాచిత్రం మరియు వివరణ
సర్క్యూట్లో, ATMEGA32 యొక్క PORTB LCD యొక్క డేటా పోర్ట్కు అనుసంధానించబడి ఉంది. ఇక్కడ ఒక PORTC ను సాధారణ కమ్యూనికేషన్ పోర్ట్గా ఉపయోగించాలనుకుంటే, ఫ్యూజ్ బైట్లను మార్చడం ద్వారా PORTC ot ATMEGA లో JTAG కమ్యూనికేషన్ను నిలిపివేయాలని గుర్తుంచుకోవాలి. 16x2 LCD లో బ్యాక్ లైట్ ఉంటే అన్నింటికంటే 16 పిన్స్ ఉన్నాయి, బ్యాక్ లైట్ లేకపోతే 14 పిన్స్ ఉంటాయి. బ్యాక్ లైట్ పిన్లను శక్తివంతం చేయవచ్చు లేదా వదిలివేయవచ్చు. ఇప్పుడు 14 పిన్లలో 8 డేటా పిన్స్ (7-14 లేదా డి 0-డి 7), 2 విద్యుత్ సరఫరా పిన్స్ (1 & 2 లేదా విఎస్ఎస్ & విడిడి లేదా జిఎన్డి & + 5 వి), కాంట్రాస్ట్ కంట్రోల్ కోసం 3 వ పిన్ (అక్షరాలు ఎంత మందంగా ఉండాలో VEE- నియంత్రిస్తుంది చూపబడింది), 3 కంట్రోల్ పిన్స్ (RS & RW & E).
సర్క్యూట్లో, నేను రెండు కంట్రోల్ పిన్స్ మాత్రమే తీసుకున్నాను, ఎందుకంటే ఇది మంచి అవగాహన యొక్క సౌలభ్యాన్ని ఇస్తుంది. కాంట్రాస్ట్ బిట్ మరియు READ / WRITE తరచుగా ఉపయోగించబడవు కాబట్టి వాటిని భూమికి తగ్గించవచ్చు. ఇది ఎల్సిడిని అత్యధిక కాంట్రాస్ట్ మరియు రీడ్ మోడ్లో ఉంచుతుంది. అక్షరాలు మరియు డేటాను తదనుగుణంగా పంపడానికి మేము ఎనేబుల్ మరియు RS పిన్లను నియంత్రించాలి.
LCD కోసం చేసిన కనెక్షన్లు క్రింద ఇవ్వబడ్డాయి:
పిన్ 1 లేదా విఎస్ఎస్ ------------------ గ్రౌండ్
PIN2 లేదా VDD లేదా VCC ------------ + 5v శక్తి
PIN3 లేదా VEE --------------- గ్రౌండ్ (ఒక అనుభవశూన్యుడు కోసం గరిష్ట విరుద్ధతను ఉత్తమంగా ఇస్తుంది)
పిన్ 4 లేదా ఆర్ఎస్ (రిజిస్టర్ ఎంపిక) --------------- యుసి యొక్క పిడి 6
PIN5 లేదా RW (చదవడం / వ్రాయడం) ----------------- గ్రౌండ్ (LCD ని రీడ్ మోడ్లో ఉంచుతుంది వినియోగదారు కోసం కమ్యూనికేషన్ను సులభతరం చేస్తుంది)
UC యొక్క PIN6 లేదా E (ప్రారంభించు) ------------------- PD5
పిన్ 7 లేదా డి 0 ----------------------------- యుసి యొక్క పిబి 0
పిన్ 8 లేదా డి 1 ----------------------------- యుసి యొక్క పిబి 1
పిన్ 9 లేదా డి 2 ----------------------------- యుసి యొక్క పిబి 2
పిన్ 10 లేదా డి 3 ----------------------------- యుసి యొక్క పిబి 3
పిన్ 11 లేదా డి 4 ----------------------------- యుసి యొక్క పిబి 4
పిన్ 12 లేదా డి 5 ----------------------------- యుసి యొక్క పిబి 5
పిసి 13 లేదా డి 6 ----------------------------- యుసి యొక్క పిబి 6
పిసి 14 లేదా డి 7 ----------------------------- యుసి యొక్క పిబి 7
సర్క్యూట్లో మేము 8 బిట్ కమ్యూనికేషన్ (డి 0-డి 7) ను ఉపయోగించామని మీరు చూడవచ్చు, అయితే ఇది తప్పనిసరి కాదు, మేము 4 బిట్ కమ్యూనికేషన్ (డి 4-డి 7) ను ఉపయోగించవచ్చు, కాని 4 బిట్ కమ్యూనికేషన్ ప్రోగ్రామ్ కొంచెం క్లిష్టంగా మారుతుంది కాబట్టి నేను 8 బిట్ ఎంచుకున్నాను కమ్యూనికేషన్.
కాబట్టి పై పట్టిక నుండి కేవలం పరిశీలన నుండి మేము 10 పిన్స్ ఎల్సిడిని కంట్రోలర్కు కలుపుతున్నాము, ఇందులో 8 పిన్స్ డేటా పిన్స్ మరియు నియంత్రణ కోసం 2 పిన్స్. సెన్సార్ అందించిన వోల్టేజ్ అవుట్పుట్ పూర్తిగా సరళమైనది కాదు; ఇది ధ్వనించేది. శబ్దాన్ని ఫిల్టర్ చేయడానికి చిత్రంలో చూపిన విధంగా సెన్సార్ యొక్క అవుట్పుట్ వద్ద కెపాసిటర్ ఉంచాలి.
ముందుకు వెళ్ళే ముందు మనం ATMEGA32A యొక్క ADC గురించి మాట్లాడాలి. ATMEGA32A లో, మేము PORTA యొక్క ఎనిమిది ఛానెల్లలో దేనినైనా అనలాగ్ ఇన్పుట్ ఇవ్వగలము, అన్నీ ఒకే విధంగా ఉన్నందున మనం ఏ ఛానెల్ని ఎంచుకున్నా అది పట్టింపు లేదు. మేము PORTA యొక్క ఛానల్ 0 లేదా PIN0 ను ఎంచుకోబోతున్నాము. ATMEGA32A లో, ADC 10 బిట్ రిజల్యూషన్ కలిగి ఉంటుంది, కాబట్టి నియంత్రిక Vref / 2 ^ 10 యొక్క కనీస మార్పును గుర్తించగలదు, కాబట్టి రిఫరెన్స్ వోల్టేజ్ 5V అయితే ప్రతి 5/2 ^ 10 = 5mV కి డిజిటల్ అవుట్పుట్ ఇంక్రిమెంట్ లభిస్తుంది. కాబట్టి ఇన్పుట్లోని ప్రతి 5 ఎంవి ఇంక్రిమెంట్ కోసం మనకు డిజిటల్ అవుట్పుట్ వద్ద ఒకటి ఇంక్రిమెంట్ ఉంటుంది.
ఇప్పుడు మేము ఈ క్రింది నిబంధనల ఆధారంగా ADC యొక్క రిజిస్టర్ను సెట్ చేయాలి:
1.అడిసిలో ఎడిసి ఫీచర్ను ఎనేబుల్ చెయ్యాలి.
2. మేము గది ఉష్ణోగ్రతను కొలుస్తున్నందున, మనకు నిజంగా వంద డిగ్రీలకు మించిన విలువలు అవసరం లేదు (LM35 యొక్క 1000mV అవుట్పుట్). కాబట్టి మేము ADC యొక్క గరిష్ట విలువ లేదా సూచనను 2.5V కి సెటప్ చేయవచ్చు.
3. నియంత్రికకు ట్రిగ్గర్ మార్పిడి లక్షణం ఉంది, అనగా ADC మార్పిడి బాహ్య ట్రిగ్గర్ తర్వాత మాత్రమే జరుగుతుంది, ఎందుకంటే నిరంతర ఉచిత రన్నింగ్ మోడ్లో అమలు చేయడానికి ADC కోసం రిజిస్టర్లను సెట్ చేయాల్సిన అవసరం మాకు లేదు.
4. ఏదైనా ADC కొరకు, మార్పిడి యొక్క ఫ్రీక్వెన్సీ (అనలాగ్ విలువ నుండి డిజిటల్ విలువ) మరియు డిజిటల్ అవుట్పుట్ యొక్క ఖచ్చితత్వం విలోమానుపాతంలో ఉంటాయి. కాబట్టి డిజిటల్ అవుట్పుట్ యొక్క మంచి ఖచ్చితత్వం కోసం మనం తక్కువ ఫ్రీక్వెన్సీని ఎంచుకోవాలి. తక్కువ ADC గడియారం కోసం మేము ADC యొక్క ప్రీసెల్ను గరిష్ట విలువకు (128) సెట్ చేస్తున్నాము. మేము 1MHZ యొక్క అంతర్గత గడియారాన్ని ఉపయోగిస్తున్నందున, ADC యొక్క గడియారం (1000000/128) అవుతుంది.
ADC తో ప్రారంభించడానికి మనం తెలుసుకోవలసిన నాలుగు విషయాలు ఇవి. పైన పేర్కొన్న నాలుగు ఫీచర్లు రెండు రిజిస్టర్లచే సెట్ చేయబడ్డాయి.
RED (ADEN): ATMEGA యొక్క ADC లక్షణాన్ని ప్రారంభించడానికి ఈ బిట్ను సెట్ చేయాలి.
నీలం (REFS1, REFS0): రిఫరెన్స్ వోల్టేజ్ (లేదా మేము ఇవ్వబోయే గరిష్ట ఇన్పుట్ వోల్టేజ్) సెట్ చేయడానికి ఈ రెండు బిట్స్ ఉపయోగించబడతాయి. మేము రిఫరెన్స్ వోల్టేజ్ 2.56V కలిగి ఉండాలనుకుంటున్నాము కాబట్టి, REFS0 మరియు REFS1 రెండూ టేబుల్ ద్వారా సెట్ చేయాలి.
లైట్ గ్రీన్ (ADATE): ADC నిరంతరం అమలు కావడానికి ఈ బిట్ సెట్ చేయాలి (ఉచిత రన్నింగ్ మోడ్).
పింక్ (MUX0-MUX4): ఈ ఐదు బిట్స్ ఇన్పుట్ ఛానెల్కు చెప్పడం కోసం. మేము ADC0 లేదా PIN0 ను ఉపయోగించబోతున్నాం కాబట్టి, పట్టిక ప్రకారం మేము ఏ బిట్లను సెట్ చేయనవసరం లేదు.
BROWN (ADPS0-ADPS2): ఈ మూడు బిట్స్ ADC కోసం ప్రీస్కాలర్ను సెట్ చేయడానికి. మేము 128 యొక్క ప్రెస్కాలర్ను ఉపయోగిస్తున్నాము, మేము మూడు బిట్లను సెట్ చేయాలి.
డార్క్ గ్రీన్ (ADSC): ADC మార్పిడిని ప్రారంభించడానికి ఈ బిట్ సెట్ చేయబడింది. మేము మార్పిడిని ఆపాల్సిన అవసరం వచ్చినప్పుడు ఈ బిట్ను ప్రోగ్రామ్లో నిలిపివేయవచ్చు.
Arduino తో ఈ ప్రాజెక్ట్ చేయడానికి, ఈ ట్యుటోరియల్ చూడండి: Arduino ఉపయోగించి డిజిటల్ థర్మామీటర్
ప్రోగ్రామింగ్ వివరణ
TEMPARATURE MEASUREMENT యొక్క పని క్రింద ఇవ్వబడిన C కోడ్ యొక్క దశల వారీగా ఉత్తమంగా వివరించబడింది:
పిన్లపై డేటా ప్రవాహ నియంత్రణను ప్రారంభించడానికి # చేర్చండి // శీర్షిక
# F_CPU 1000000 ను నిర్వచించండి // కంట్రోలర్ క్రిస్టల్ ఫ్రీక్వెన్సీని జతచేయడం
# చేర్చండి
# E 5 ని నిర్వచించండి PORTD యొక్క 5 వ పిన్కు “ఎనేబుల్” పేరు ఇవ్వడం, ఎందుకంటే ఇది LCD ఎనేబుల్ పిన్తో అనుసంధానించబడి ఉంది
# RSD // ని నిర్వచించండి PORTD యొక్క 6 వ పిన్కు “రిజిస్టర్ సెలెక్షన్ ” పేరు ఇవ్వడం, ఎందుకంటే LCD RS పిన్తో అనుసంధానించబడి ఉంది
void send_a_command (సంతకం చేయని చార్ కమాండ్);
void send_a_character (సంతకం చేయని చార్ అక్షరం);
రద్దు పంపండి_అ_ స్ట్రింగ్ (చార్ * స్ట్రింగ్_ఆఫ్_చరాక్టర్స్);
పూర్ణాంకానికి ప్రధానమైనది (శూన్యమైనది)
{
DDRB = 0xFF; // పోర్ట్బి మరియు పోర్ట్డిని అవుట్పుట్ పిన్లుగా ఉంచడం
DDRD = 0xFF;
_delay_ms (50); // 50ms ఆలస్యం ఇస్తుంది
DDRA = 0; // portA ని ఇన్పుట్గా తీసుకుంటుంది.
ADMUX - = (1 <
ADCSRA - = (1 <0)
{
send_a_character (* string_of_characters ++);
}
}