- DHT11 - స్పెసిఫికేషన్ మరియు వర్కింగ్
- DHT11 సెన్సార్తో కమ్యూనికేట్ చేస్తోంది
- అవసరమైన భాగాలు
- స్కీమాటిక్
- PIC MPLABX కోడ్ వివరణతో DHT11
హోమ్ ఆటోమేషన్, ఎన్విరాన్మెంట్ మానిటరింగ్, వెదర్ స్టేషన్ మొదలైన అనేక అనువర్తనాలలో ఉష్ణోగ్రత మరియు తేమ కొలత తరచుగా ఉపయోగపడుతుంది. LM35 పక్కన అత్యంత ప్రాచుర్యం పొందిన ఉష్ణోగ్రత సెన్సార్ DHT11, మేము ఇంతకుముందు ఆర్డునోతో, రాస్ప్బెర్రీతో ఇంటర్ఫేస్ చేయడం ద్వారా అనేక DHT11 ప్రాజెక్ట్లను నిర్మించాము. పై మరియు అనేక ఇతర అభివృద్ధి బోర్డులు. ఈ వ్యాసంలో, ఈ DHT11 ను PIC16F87A తో 8-బిట్ PIC మైక్రోకంట్రోలర్తో ఎలా ఇంటర్ఫేస్ చేయాలో నేర్చుకుంటాము. మేము ఈ మైక్రోకంట్రోలర్ను DHT11 ఉపయోగించి ఉష్ణోగ్రత మరియు తేమ విలువలను చదవడానికి మరియు దానిని LCD డిస్ప్లేలో ప్రదర్శిస్తాము. మీరు పిఐసి మైక్రోకంట్రోలర్లను ఉపయోగించడంలో పూర్తిగా క్రొత్తగా ఉంటే, పిఐసి మైక్రోకంట్రోలర్ను ఎలా ప్రోగ్రామ్ చేయాలో మరియు ఎలా ఉపయోగించాలో తెలుసుకోవడానికి మీరు మా పిఐసి ట్యుటోరియల్ సిరీస్ను ఉపయోగించుకోవచ్చు, చెప్పాలంటే, ప్రారంభిద్దాం.
DHT11 - స్పెసిఫికేషన్ మరియు వర్కింగ్
DHT11 సెన్సార్ మాడ్యూల్ రూపంలో లేదా సెన్సార్ రూపంలో లభిస్తుంది. ఈ ట్యుటోరియల్లో మనం సెన్సార్ను ఉపయోగిస్తున్నాము, రెండింటి మధ్య ఉన్న తేడా ఏమిటంటే మాడ్యూల్ రూపంలో సెన్సార్కు ఫిల్టరింగ్ కెపాసిటర్ మరియు సెన్సార్ యొక్క అవుట్పుట్ పిన్తో జతచేయబడిన పుల్-అప్ రెసిస్టర్ ఉన్నాయి. కాబట్టి మీరు మాడ్యూల్ ఉపయోగిస్తుంటే మీరు వాటిని బాహ్యంగా జోడించాల్సిన అవసరం లేదు. సెన్సార్ రూపంలో DHT11 క్రింద చూపబడింది.
DHT11 సెన్సార్ నీలం లేదా తెలుపు రంగు కేసింగ్తో వస్తుంది. ఈ కేసింగ్ లోపల, సాపేక్ష ఆర్ద్రత మరియు ఉష్ణోగ్రతను గ్రహించడంలో మాకు సహాయపడే రెండు ముఖ్యమైన భాగాలు ఉన్నాయి. మొదటి భాగం ఎలక్ట్రోడ్ల జత; ఈ రెండు ఎలక్ట్రోడ్ల మధ్య విద్యుత్ నిరోధకత తేమను పట్టుకునే ఉపరితలం ద్వారా నిర్ణయించబడుతుంది. కాబట్టి కొలిచిన ప్రతిఘటన పర్యావరణం యొక్క సాపేక్ష ఆర్ద్రతకు విలోమానుపాతంలో ఉంటుంది. సాపేక్ష ఆర్ద్రత తక్కువగా ఉంటే నిరోధకత యొక్క విలువ ఉంటుంది మరియు దీనికి విరుద్ధంగా ఉంటుంది. అలాగే, సాపేక్ష ఆర్ద్రత అసలు తేమకు భిన్నంగా ఉంటుందని గమనించండి. సాపేక్ష ఆర్ద్రత గాలిలోని ఉష్ణోగ్రతని గాలిలో కొలుస్తుంది.
ఇతర భాగం ఉపరితల మౌంటెడ్ NTC థర్మిస్టర్. NTC అనే పదం ప్రతికూల ఉష్ణోగ్రత గుణకం, ఉష్ణోగ్రత పెరుగుదల కోసం ప్రతిఘటన విలువ తగ్గుతుంది. సెన్సార్ యొక్క అవుట్పుట్ ఫ్యాక్టరీ క్రమాంకనం చేయబడింది మరియు అందువల్ల ప్రోగ్రామర్గా మనం సెన్సార్ను క్రమాంకనం చేయడం గురించి ఆందోళన చెందాల్సిన అవసరం లేదు. 1-వైర్ కమ్యూనికేషన్ ఇచ్చిన సెన్సార్ యొక్క అవుట్పుట్, ఈ సెన్సార్ యొక్క పిన్ మరియు కనెక్షన్ రేఖాచిత్రాన్ని చూద్దాం.
ఉత్పత్తి 4 పిన్ సింగిల్ రో ప్యాకేజీలో ఉంది. 1 వ పిన్ VDD అంతటా కనెక్ట్ చేయబడింది మరియు 4 వ పిన్ GND అంతటా అనుసంధానించబడి ఉంది. 2 వ పిన్ డేటా పిన్, ఇది కమ్యూనికేషన్ ప్రయోజనాల కోసం ఉపయోగించబడుతుంది. ఈ డేటా పిన్కు 5 కె పుల్-అప్ రెసిస్టర్ అవసరం. అయినప్పటికీ, ఇతరులు 10 కే నుండి 4.7 కె వంటి రెసిస్టర్లను కూడా లాగవచ్చు. 3 వ పిన్ దేనితో కనెక్ట్ కాలేదు. కనుక ఇది విస్మరించబడుతుంది.
డేటాషీట్ సాంకేతిక వివరాలతో పాటు కింది పట్టికలో చూడగలిగే ఇంటర్ఫేసింగ్ సమాచారాన్ని అందిస్తుంది.
పై పట్టిక ఉష్ణోగ్రత మరియు తేమ కొలత పరిధి మరియు ఖచ్చితత్వాన్ని చూపుతోంది. ఇది +/- 2-డిగ్రీల సెల్సియస్ యొక్క ఖచ్చితత్వంతో 0-50 డిగ్రీల సెల్సియస్ నుండి మరియు 20-90% RH నుండి సాపేక్ష ఆర్ద్రతను +/- 5% RH యొక్క ఖచ్చితత్వంతో కొలవగలదు. వివరాల వివరణ క్రింది పట్టికలో చూడవచ్చు.
DHT11 సెన్సార్తో కమ్యూనికేట్ చేస్తోంది
ఇంతకు ముందు చెప్పినట్లుగా, PIC తో DHT11 నుండి డేటాను చదవడానికి మేము PIC వన్ వైర్ కమ్యూనికేషన్ ప్రోటోకాల్ను ఉపయోగించాలి. దీన్ని ఎలా చేయాలో వివరాలను DHT 11 యొక్క ఇంటర్ఫేసింగ్ రేఖాచిత్రం నుండి అర్థం చేసుకోవచ్చు, దాని డేటాషీట్లో చూడవచ్చు, అదే క్రింద ఇవ్వబడింది.
కమ్యూనికేషన్ను ప్రారంభించడానికి DHT11 కు MCU నుండి ప్రారంభ సిగ్నల్ అవసరం. అందువల్ల, ప్రతిసారీ MCU ఉష్ణోగ్రత మరియు తేమ విలువలను పంపమని అభ్యర్థించడానికి DHT11 సెన్సార్కు ప్రారంభ సిగ్నల్ పంపాలి. ప్రారంభ సిగ్నల్ పూర్తి చేసిన తరువాత, DHT11 ప్రతిస్పందన సిగ్నల్ను పంపుతుంది, ఇందులో ఉష్ణోగ్రత మరియు తేమ సమాచారం ఉంటుంది. డేటా కమ్యూనికేషన్ సింగిల్ బస్ డేటా కమ్యూనికేషన్ ప్రోటోకాల్ ద్వారా జరుగుతుంది. పూర్తి డేటా పొడవు 40 బిట్ మరియు సెన్సార్ మొదట అధిక డేటా బిట్ను పంపుతుంది.
పుల్-అప్ రెసిస్టర్ కారణంగా, డేటా లైన్ ఎల్లప్పుడూ నిష్క్రియ మోడ్ సమయంలో VCC స్థాయిలో ఉంటుంది. MCU ఈ వోల్టేజ్ను కనిష్టంగా 18ms వరకు తగ్గించాలి. ఈ సమయంలో, DHT11 సెన్సార్ ప్రారంభ సిగ్నల్ను కనుగొంటుంది మరియు మైక్రోకంట్రోలర్ 20-40us కోసం డేటా లైన్ను అధికంగా చేస్తుంది. ఈ 20-40us సమయాన్ని DHT11 ప్రతిస్పందనకు ప్రారంభమయ్యే వెయిటింగ్ పీరియడ్ అంటారు. ఈ నిరీక్షణ కాలం తరువాత, DHT11 డేటాను మైక్రోకంట్రోలర్ యూనిట్కు పంపుతుంది.
DHT11 సెన్సార్ డేటా ఫార్మాట్
డేటా దశాంశ మరియు సమగ్ర భాగాలను కలిపి కలిగి ఉంటుంది. సెన్సార్ క్రింది డేటా ఆకృతిని అనుసరిస్తుంది -
8 బిట్ ఇంటిగ్రల్ RH డేటా + 8 బిట్ దశాంశ RH డేటా + 8 బిట్ ఇంటిగ్రల్ టి డేటా + 8 బిట్ దశాంశ టి డేటా + 8 బిట్ చెక్సమ్.
అందుకున్న డేటాతో చెక్సమ్ విలువను తనిఖీ చేయడం ద్వారా డేటాను ధృవీకరించవచ్చు. ఇది చేయవచ్చు ఎందుకంటే, ప్రతిదీ సరైనది మరియు సెన్సార్ సరైన డేటాను ప్రసారం చేస్తే, చెక్సమ్ “8 బిట్ ఇంటిగ్రల్ RH డేటా + 8 బిట్ దశాంశ RHdata + 8bit ఇంటిగ్రల్ టి డేటా + 8 బిట్ దశాంశ టి డేటా” మొత్తంగా ఉండాలి .
అవసరమైన భాగాలు
ఈ ప్రాజెక్ట్ కోసం, క్రింద విషయాలు అవసరం -
- పిఐసి మైక్రోకంట్రోలర్ (8 బిట్) ప్రోగ్రామింగ్ సెటప్.
- బ్రెడ్బోర్డ్
- 5 వి 500 ఎంఏ విద్యుత్ సరఫరా యూనిట్.
- 4.7 కే రెసిస్టర్ 2 పిసిలు
- 1 కె రెసిస్టర్
- PIC16F877A
- 20mHz క్రిస్టల్
- 33 పిఎఫ్ కెపాసిటర్ 2 పిసిలు
- 16x2 అక్షర LCD
- DHT11 సెన్సార్
- జంపర్ వైర్లు
స్కీమాటిక్
PIC16F877A తో DHT11 ను ఇంటర్ఫేసింగ్ కోసం సర్క్యూట్ రేఖాచిత్రం క్రింద చూపబడింది.
మేము DHT11 నుండి కొలిచే ఉష్ణోగ్రత మరియు తేమ విలువలను ప్రదర్శించడానికి 16x2 LCD ని ఉపయోగించాము. ఎల్సిడి 4-వైర్ మోడ్లో ఇంటర్ఫేస్ చేయబడింది మరియు సెన్సార్ మరియు ఎల్సిడి రెండూ 5 వి బాహ్య విద్యుత్ సరఫరాతో పనిచేస్తాయి. అవసరమైన అన్ని కనెక్షన్లను చేయడానికి నేను బ్రెడ్బోర్డ్ను ఉపయోగించాను మరియు బాహ్య 5 వి అడాప్టర్ను ఉపయోగించాను. 5V తో మీ బోర్డుకి శక్తినివ్వడానికి మీరు ఈ బ్రెడ్బోర్డ్ విద్యుత్ సరఫరా బోర్డును కూడా ఉపయోగించవచ్చు.
సర్క్యూట్ సిద్ధమైన తర్వాత, మనం చేయాల్సిందల్లా ఈ పేజీ దిగువన ఇచ్చిన కోడ్ను అప్లోడ్ చేయడమే మరియు క్రింద చూపిన విధంగా ఉష్ణోగ్రత మరియు తేమను చదవడం ప్రారంభించవచ్చు. కోడ్ ఎలా వ్రాయబడిందో మరియు అది ఎలా పనిచేస్తుందో తెలుసుకోవాలంటే మరింత చదవండి. ఈ పేజీ దిగువన ఇచ్చిన వీడియోలో మీరు ఈ ప్రాజెక్ట్ యొక్క పూర్తి పనిని కనుగొనవచ్చు.
PIC MPLABX కోడ్ వివరణతో DHT11
ఈ కోడ్ MPLABX IDE ని ఉపయోగించి వ్రాయబడింది మరియు XC8 కంపైలర్ ఉపయోగించి కంపైల్ చేయబడింది, ఈ రెండూ మైక్రోచిప్ చేత అందించబడ్డాయి మరియు డౌన్లోడ్ మరియు ఉపయోగించడానికి ఉచితం. ప్రోగ్రామింగ్ యొక్క ప్రాథమికాలను అర్థం చేసుకోవడానికి దయచేసి ప్రాథమిక ట్యుటోరియల్స్ చూడండి, DHT11 సెన్సార్తో కమ్యూనికేట్ చేయడానికి అవసరమైన మూడు ముఖ్యమైన విధులు మాత్రమే క్రింద చర్చించబడ్డాయి. విధులు -
శూన్యమైన dht11_init (); void find_response (); చార్ read_dht11 ();
మొదటి ఫంక్షన్ dht11 తో ప్రారంభ సిగ్నల్ కోసం ఉపయోగించబడుతుంది. ముందు చర్చించినట్లుగా, DHT11 తో ప్రతి కమ్యూనికేషన్ ప్రారంభ సిగ్నల్తో మొదలవుతుంది, ఇక్కడ డేటా పిన్ను మైక్రోకంట్రోలర్ నుండి అవుట్పుట్గా కాన్ఫిగర్ చేయడానికి మొదట పిన్ దిశ మార్చబడుతుంది. అప్పుడు డేటా లైన్ తక్కువగా లాగి 18 ఎంఎస్ కోసం వేచి ఉంటుంది. ఆ తరువాత మళ్ళీ మైక్రోకంట్రోలర్ చేత లైన్ అధికంగా తయారవుతుంది మరియు 30us వరకు వేచి ఉంటుంది. ఆ నిరీక్షణ సమయం తరువాత, డేటాను స్వీకరించడానికి డేటా పిన్ మైక్రోకంట్రోలర్కు ఇన్పుట్గా సెట్ చేయబడింది.
శూన్యమైన dht11_init () { DHT11_Data_Pin_Direction = 0; // RD0 ను అవుట్పుట్ DHT11_Data_Pin = 0 గా కాన్ఫిగర్ చేయండి ; // RD0 సెన్సార్కు 0 పంపుతుంది __delay_ms (18); DHT11_Data_Pin = 1; // RD0 1 సెన్సార్కు పంపుతుంది __delay_us (30); DHT11_Data_Pin_Direction = 1; // RD0 ను ఇన్పుట్గా కాన్ఫిగర్ చేయండి }
డేటా పిన్ స్థితిని బట్టి చెక్ బిట్ సెటప్ చేయడానికి తదుపరి ఫంక్షన్ ఉపయోగించబడుతుంది. DHT11 సెన్సార్ నుండి ప్రతిస్పందనను గుర్తించడానికి ఇది ఉపయోగించబడుతుంది.
void find_response () { Check_bit = 0; __ ఆలస్యం_యూస్ (40); if (DHT11_Data_Pin == 0) { __delay_us (80); if (DHT11_Data_Pin == 1) { Check_bit = 1; } __ ఆలస్యం_యూస్ (50);} }
చివరగా dht11 రీడ్ ఫంక్షన్; ఇక్కడ డేటా 8-బిట్ ఆకృతిలో చదవబడుతుంది, ఇక్కడ డేటా పిన్ స్థితిని బట్టి బిట్ షిఫ్ట్ ఆపరేషన్ ఉపయోగించి డేటా తిరిగి వస్తుంది.
చార్ రీడ్_డిహెచ్ 11 () { చార్ డేటా, ఫర్_కౌంట్; (for_count = 0; for_count <8; for_count ++) { అయితే (! DHT11_Data_Pin); __ ఆలస్యం_ (30); if (DHT11_Data_Pin == 0) { data & = ~ (1 << (7 - for_count)); // క్లియర్ బిట్ (7-బి) } else { data- = (1 << (7 - for_count)); // సెట్ బిట్ (7-బి) అయితే (DHT11_Data_Pin); } } డేటా తిరిగి; }
ఆ తరువాత, ప్రతిదీ ప్రధాన విధిగా జరుగుతుంది. మొదట, సిస్టమ్ ప్రారంభించడం LCD ప్రారంభించబడిన చోట జరుగుతుంది మరియు LCD పిన్స్ పోర్ట్ దిశను అవుట్పుట్కు సెట్ చేస్తారు. అప్లికేషన్ ప్రధాన ఫంక్షన్ లోపల నడుస్తోంది
void main () { system_init (); (1) { __ ఆలస్యం_ఎమ్ఎస్ (800); dht11_init (); find_response (); if (చెక్_బిట్ == 1) { RH_byte_1 = read_dht11 (); RH_byte_2 = read_dht11 (); టెంప్_బైట్_1 = రీడ్_డిహెచ్ 11 (); టెంప్_బైట్_2 = రీడ్_డిహెచ్ 11 (); సమ్మషన్ = read_dht11 (); if (సమ్మషన్ == ((RH_byte_1 + RH_byte_2 + Temp_byte_1 + Temp_byte_2) & 0XFF)) { తేమ = టెంప్_బైట్_1; RH = RH_byte_1; lcd_com (0x80); lcd_puts ("టెంప్:"); // lcd_puts (""); lcd_data (48 + ((తేమ / 10)% 10%); lcd_data (48 + (తేమ% 10%); lcd_data (0xDF); lcd_puts ("C"); lcd_com (0xC0); lcd_puts ("తేమ:"); // lcd_puts (""); lcd_data (48 + ((RH / 10)% 10%); lcd_data (48 + (RH% 10%); lcd_puts ("%"); } else { lcd_puts ("చెక్సమ్ లోపం"); } } else { clear_screen (); lcd_com (0x80); lcd_puts ("లోపం !!!"); lcd_com (0xC0); lcd_puts ("ప్రతిస్పందన లేదు."); } __ ఆలస్యం_ఎంఎస్ (1000); } }
DHT11 సెన్సార్తో కమ్యూనికేషన్ ప్రారంభ సిగ్నల్ సెన్సార్కు సమర్పించబడిన సమయంలో లూప్ లోపల జరుగుతుంది. ఆ తరువాత, find_response ఫంక్షన్ ప్రారంభించబడుతుంది. ఉంటే Check_bit అప్పుడు 1 మరింత కమ్యూనికేషన్ నిర్వహిస్తుంది లేకపోతే LCD లోపం డైలాగ్ చూపిస్తుంది.
40 బిట్ డేటాను బట్టి, రీడ్_డిహెచ్ 11 ను 5 సార్లు (5 రెట్లు x 8 బిట్) అంటారు మరియు డేటాషీట్లో అందించిన డేటా ఫార్మాట్ ప్రకారం డేటాను నిల్వ చేస్తుంది. చెక్సమ్ హోదా కూడా పరిశీలించుటకు మరియు లోపాలను కనుగొన్నారు ఉంటే, అది కూడా LCD లో తెలియజేస్తాము. చివరగా, డేటా 16x2 అక్షర LCD కి మార్చబడుతుంది మరియు ప్రసారం చేయబడుతుంది.
ఈ PIC ఉష్ణోగ్రత మరియు తేమ కొలత కోసం పూర్తి కోడ్ను ఇక్కడ నుండి డౌన్లోడ్ చేసుకోవచ్చు. క్రింద ఇచ్చిన ప్రదర్శన వీడియోను కూడా తనిఖీ చేయండి.
మీరు ప్రాజెక్ట్ను అర్థం చేసుకున్నారని మరియు ఉపయోగకరమైనదాన్ని నిర్మించడం ఆనందించారని ఆశిస్తున్నాము. మీకు ఏవైనా ప్రశ్నలు ఉంటే వాటిని క్రింది వ్యాఖ్య విభాగంలో ఉంచండి లేదా ఇతర సాంకేతిక ప్రశ్నల కోసం మా ఫోరమ్లను ఉపయోగించండి.