- అవసరమైన పదార్థాలు:
- అల్ట్రాసోనిక్ సెన్సార్ ఎలా పనిచేస్తుంది?
- మీ PIC మైక్రోకంట్రోలర్ను ప్రోగ్రామింగ్ చేయడం:
ఏదైనా ప్రాజెక్ట్ సజీవంగా రావడానికి, మేము సెన్సార్లను ఉపయోగించాలి. పొందుపరిచిన అన్ని అనువర్తనాలకు సెన్సార్లు కళ్ళు మరియు చెవులుగా పనిచేస్తాయి, ఈ నిజమైన అనలాగ్ ప్రపంచంలో వాస్తవానికి ఏమి జరుగుతుందో అర్థం చేసుకోవడానికి ఇది డిజిటల్ మైక్రోకంట్రోలర్కు సహాయపడుతుంది. ఈ ట్యుటోరియల్లో PIC మైక్రోకంట్రోలర్తో అల్ట్రాసోనిక్ సెన్సార్ HC-SR04 ను ఎలా ఇంటర్ఫేస్ చేయాలో నేర్చుకుంటాము.
HC-SR04 అతిదైర్ఘ్య సెన్సార్ ఉంది 450cm (సిద్ధాంతపరంగా) కు 2cm మధ్య దూరం ఎక్కడైనా కొలిచే చెయ్యవచ్చు. ఈ సెన్సార్ అడ్డంకులను గుర్తించడం, దూర కొలత, ఎన్విరాన్మెంట్ మ్యాపింగ్ మొదలైన అనేక ప్రాజెక్టులలో అమర్చడం ద్వారా తనను తాను విలువైనదిగా నిరూపించుకుంది. ఈ ఆర్టికల్ చివరలో మీరు ఈ సెన్సార్ ఎలా పనిచేస్తుందో మరియు దూరాన్ని కొలవడానికి మరియు ప్రదర్శించడానికి PIC16F877A మైక్రోకంట్రోలర్తో ఎలా ఇంటర్ఫేస్ చేయాలో నేర్చుకుంటారు. ఇది LCD తెరపై. ఆసక్తికరంగా అనిపిస్తుంది !! కాబట్టి ప్రారంభిద్దాం…
అవసరమైన పదార్థాలు:
- ప్రోగ్రామింగ్ సెటప్తో PIC16F877A MCU
- LCD 16 * 2 డిస్ప్లే
- అల్ట్రాసోనిక్ సెన్సార్ (HC-SR04)
- వైర్లను కనెక్ట్ చేస్తోంది
అల్ట్రాసోనిక్ సెన్సార్ ఎలా పనిచేస్తుంది?
మేము ఇంకా ముందు, అల్ట్రాసోనిక్ సెన్సార్ ఎలా పనిచేస్తుందో తెలుసుకోవాలి, తద్వారా ఈ ట్యుటోరియల్ను మనం బాగా అర్థం చేసుకోగలం. ఈ ప్రాజెక్ట్లో ఉపయోగించిన అల్ట్రాసోనిక్ సెన్సార్ క్రింద చూపబడింది.
మీరు చూడగలిగినట్లుగా, ప్రొజెక్షన్స్ వంటి రెండు వృత్తాకార కళ్ళు మరియు దాని నుండి నాలుగు పిన్స్ బయటకు వస్తాయి. అంచనాల వంటి రెండు కళ్ళు అల్ట్రాసోనిక్ వేవ్ (ఇకపై యుఎస్ వేవ్ అని పిలుస్తారు) ట్రాన్స్మిటర్ మరియు రిసీవర్. ట్రాన్స్మిటర్ 40Hz పౌన frequency పున్యంలో US తరంగాన్ని విడుదల చేస్తుంది, ఈ తరంగం గాలి గుండా ప్రయాణిస్తుంది మరియు ఒక వస్తువును గ్రహించినప్పుడు తిరిగి ప్రతిబింబిస్తుంది. తిరిగి వచ్చే తరంగాలను రిసీవర్ గమనించవచ్చు. ఈ వేవ్ ప్రతిబింబించడానికి మరియు తిరిగి రావడానికి తీసుకున్న సమయం ఇప్పుడు మనకు తెలుసు మరియు యుఎస్ వేవ్ యొక్క వేగం కూడా సార్వత్రికమైనది (3400 సెం.మీ / సె). ఈ సమాచారం మరియు దిగువ హైస్కూల్ సూత్రాలను ఉపయోగించి మనం కవర్ చేసిన దూరాన్ని లెక్కించవచ్చు.
దూరం = వేగం × సమయం
యుఎస్ సెన్సార్ ఎలా పనిచేస్తుందో ఇప్పుడు మనకు తెలుసు, నాలుగు పిన్లను ఉపయోగించి ఏదైనా MCU / CPU తో ఎలా ఇంటర్ఫేస్ చేయవచ్చో చూద్దాం. ఈ నాలుగు పిన్స్ వరుసగా విసిసి, ట్రిగ్గర్, ఎకో మరియు గ్రౌండ్. మాడ్యూల్ + 5 విలో పనిచేస్తుంది మరియు అందువల్ల మాడ్యూల్కు శక్తినిచ్చేందుకు విసిసి మరియు గ్రౌండ్ పిన్ ఉపయోగించబడుతుంది. ఇతర రెండు పిన్స్ I / O పిన్స్, వీటిని ఉపయోగించి మేము మా MCU కి కమ్యూనికేట్ చేస్తాము. ట్రిగ్గర్ పిన్ ఒక అవుట్పుట్ పిన్ ప్రకటించాలని ఉండాలి మరియు ఒక 10uS కోసం అధిక తయారు, ఈ 8 చక్రం సోనిక్ పేలవచ్చు గాలిలోకి సంయుక్త వేవ్ ప్రసారం చేస్తుంది. తరంగాన్ని గమనించిన తర్వాత, ఎకో పిన్ ఖచ్చితమైన సమయానికి విరామం కోసం వెళుతుంది, ఇది సెన్సార్ మాడ్యూల్కు తిరిగి రావడానికి యుఎస్ వేవ్ తీసుకున్న సమయం. అందువల్ల ఈ ఎకో పిన్ ఇన్పుట్గా ప్రకటించబడుతుందిమరియు పిన్ ఎంత పొడవుగా ఉందో కొలవడానికి టైమర్ ఉపయోగించబడుతుంది. దిగువ టైమింగ్ రేఖాచిత్రం ద్వారా దీన్ని మరింత అర్థం చేసుకోవచ్చు.
ఈ సెన్సార్ను PIC తో ఇంటర్ఫేస్ చేయడానికి మీరు తాత్కాలిక మార్గంలో వచ్చారని ఆశిస్తున్నాము. మేము ఈ ట్యుటోరియల్లో టైమర్ మాడ్యూల్ మరియు ఎల్సిడి మాడ్యూల్ను ఉపయోగిస్తాము మరియు మీకు రెండింటి గురించి తెలిసిందని నేను అనుకుంటాను, కాకపోతే దయచేసి సంబంధిత ట్యుటోరియల్కు తిరిగి రండి, ఎందుకంటే నేను దీనికి సంబంధించిన చాలా సమాచారాన్ని దాటవేస్తాను.
- పిఐసి మైక్రోకంట్రోలర్తో ఎల్సిడి ఇంటర్ఫేసింగ్
- పిఐసి మైక్రోకంట్రోలర్లో టైమర్లను అర్థం చేసుకోవడం
సర్క్యూట్ రేఖాచిత్రం:
PIC16F877A తో అల్ట్రాసోనిక్ సెన్సార్ను ఇంటర్ఫేసింగ్ కోసం పూర్తి సర్క్యూట్ రేఖాచిత్రం క్రింద చూపబడింది:
చూపినట్లుగా, సర్క్యూట్లో LCD డిస్ప్లే మరియు అల్ట్రాసోనిక్ సెన్సార్ కంటే ఎక్కువ ఏమీ ఉండదు. యుఎస్ సెన్సార్ + 5 వి ద్వారా శక్తినివ్వగలదు మరియు అందువల్ల ఇది నేరుగా 7805 వోల్టేజ్ రెగ్యులేటర్ ద్వారా శక్తిని పొందుతుంది. సెన్సార్లో ఒక అవుట్పుట్ పిన్ (ట్రిగ్గర్ పిన్) ఉంది, ఇది పిన్ 34 (ఆర్బి 1) తో అనుసంధానించబడి ఉంది మరియు ఇన్పుట్ పిన్ (ఎకో పిన్) పిన్ 35 (ఆర్బి 2) కు అనుసంధానించబడి ఉంది. పూర్తి పిన్ కనెక్షన్ క్రింది పట్టికలో వివరించబడింది.
ఎస్. లేదు: |
పిఐసి పిన్ నంబర్ |
పిన్ పేరు |
సంబంధం కలిగిఉన్నది |
1 |
21 |
RD2 |
LCD యొక్క RS |
2 |
22 |
RD3 |
LCD యొక్క E. |
3 |
27 |
RD4 |
LCD యొక్క D4 |
4 |
28 |
RD5 |
LCD యొక్క D5 |
5 |
29 |
RD6 |
ఎల్సిడి యొక్క డి 6 |
6 |
30 |
RD7 |
ఎల్సిడి యొక్క డి 7 |
7 |
34 |
ఆర్బి 1 |
యుఎస్ యొక్క ట్రిగ్గర్ |
8 |
35 |
RB2 |
యుఎస్ యొక్క ఎకో |
మీ PIC మైక్రోకంట్రోలర్ను ప్రోగ్రామింగ్ చేయడం:
ఈ ట్యుటోరియల్ కోసం పూర్తి ప్రోగ్రామ్ ఈ పేజీ చివరలో ఇవ్వబడింది, మరింత దిగువ నేను మీరు అర్థం చేసుకోవడానికి కోడ్ను చిన్న అర్ధ పూర్తి భాగాలుగా వివరించాను. ఇంతకుముందు చెప్పినట్లుగా, ఈ ప్రోగ్రామ్లో ఎల్సిడి ఇంటర్ఫేసింగ్ మరియు టైమర్ అనే భావన ఉంటుంది, ఇది మునుపటి ట్యుటోరియల్లలో మేము ఇప్పటికే వాటిని కవర్ చేసినందున ఈ ట్యుటోరియల్లో వివరాలతో వివరించబడదు.
లోపల, యథావిధిగా IO పిన్స్ మరియు ఇతర రిజిస్టర్లను ప్రారంభించడం ద్వారా మేము ప్రారంభించే ప్రధాన పని. మేము LCD మరియు US సెన్సార్ కోసం IO పిన్లను నిర్వచించాము మరియు టైమర్ 1 రిజిస్టర్ను 1: 4 ప్రీ-స్కేలార్పై పని చేయడానికి మరియు అంతర్గత గడియారాన్ని (ఫోస్క్ / 4) ఉపయోగించడానికి సెట్ చేయడం ద్వారా దాన్ని ప్రారంభిస్తాము.
TRISD = 0x00; // PORTD ఇంటర్ఫేసింగ్ LCD TRISB0 = 1 కొరకు అవుట్పుట్గా ప్రకటించబడింది; // అంతరాయ పిన్గా ఉపయోగించడానికి RB0 పిన్ను ఇన్పుట్గా నిర్వచించండి TRISB1 = 0; // యుఎస్ సెన్సార్ యొక్క ట్రిగ్గర్ పిన్ అవుట్పుట్ పిన్ TRISB2 = 1 గా పంపబడుతుంది; // యుఎస్ సెన్సార్ యొక్క ఎకో పిన్ ఇన్పుట్ పిన్ TRISB3 = 0 గా సెట్ చేయబడింది; // RB3 అనేది LED T1CON = 0x20 కోసం అవుట్పుట్ పిన్; // 4 ప్రెస్-స్కేలార్ మరియు అంతర్గత గడియారం
టైమర్ 1 అనేది PIC16F877A లో ఉపయోగించిన 16-బిట్ టైమర్, T1CON రిజిస్టర్ టైమర్ మాడ్యూల్ యొక్క పారామితులను నియంత్రిస్తుంది మరియు ఫలితం TMR1H మరియు TMR1L లలో నిల్వ చేయబడుతుంది ఎందుకంటే ఇది 16-బిట్ ఫలితం మొదటి 8 TMR1H లో నిల్వ చేయబడుతుంది మరియు TMR1L లో తదుపరి 8. ఈ టైమర్ను వరుసగా TMR1ON = 0 మరియు TMR1ON = 1 ఉపయోగించి ఆన్ లేదా ఆఫ్ చేయవచ్చు.
ఇప్పుడు, టైమర్ ఉపయోగించడానికి సిద్ధంగా ఉంది, కాని మేము యుఎస్ తరంగాలను సెన్సార్ నుండి పంపించాలి, దీన్ని చేయడానికి మేము ట్రిగ్గర్ పిన్ను 10uS కోసం ఎక్కువగా ఉంచాలి, ఇది క్రింది కోడ్ ద్వారా జరుగుతుంది.
ట్రిగ్గర్ = 1; __ ఆలస్యం_యూస్ (10); ట్రిగ్గర్ = 0;
పై టైమింగ్ రేఖాచిత్రంలో చూపినట్లుగా , వేవ్ తిరిగి వచ్చే వరకు ఎకో పిన్ తక్కువగా ఉంటుంది మరియు తరువాత తరంగాలు తిరిగి రావడానికి తీసుకున్న ఖచ్చితమైన సమయానికి అధికంగా ఉంటుంది. ఈ సమయాన్ని టైమర్ 1 మాడ్యూల్ ద్వారా కొలవాలి, దీనిని ఈ క్రింది పంక్తి ద్వారా చేయవచ్చు
అయితే (ఎకో == 0); TMR1ON = 1; అయితే (ఎకో == 1); TMR1ON = 0;
సమయం కొలిచిన తర్వాత ఫలిత విలువ TMR1H మరియు TMR1L రిజిస్టర్లలో సేవ్ చేయబడుతుంది, 16-బిట్ విలువను పొందడానికి ఈ రిజిస్టర్లను సేకరించాలి. దిగువ పంక్తిని ఉపయోగించడం ద్వారా ఇది జరుగుతుంది
time_taken = (TMR1L - (TMR1H << 8%);
ఈ సమయ_సారీకరణ ఫారమ్ బైట్లలో ఉంటుంది, వాస్తవ సమయ విలువను పొందడానికి మేము ఈ క్రింది సూత్రాన్ని ఉపయోగించాలి.
సమయం = (16-బిట్ రిజిస్టర్ విలువ) * (1 / అంతర్గత గడియారం) * (ప్రీ-స్కేల్) అంతర్గత గడియారం = ఫాస్క్ / 4 మన విషయంలో, ఫోస్క్ = 20000000Mhz మరియు ప్రీ-స్కేల్ = 4 అందువల్ల అంతర్గత గడియారం విలువ 5000000Mhz మరియు సమయం విలువ సమయం = (16-బిట్ రిజిస్టర్ విలువ) * (1/5000000) * (4) = (16-బిట్ రిజిస్టర్ విలువ) * (4/5000000) = (16-బిట్ రిజిస్టర్ విలువ) * 0.0000008 సెకన్లు (OR) సమయం = (16-బిట్ రిజిస్టర్ విలువ) * 0.8 మైక్రో సెకన్లు
మా ప్రోగ్రామ్లో 16-బిట్ రిజిస్టర్ విలువ వేరియబుల్ టైమ్_టేకెన్లో నిల్వ చేయబడుతుంది మరియు అందువల్ల మైక్రో సెకన్లలో టైమ్_టేకెన్ను లెక్కించడానికి ఈ క్రింది పంక్తి ఉపయోగించబడుతుంది.
time_taken = time_taken * 0.8;
తరువాత మనం దూరాన్ని ఎలా లెక్కించాలో కనుగొనాలి. మనకు తెలిసిన దూరం = వేగం * సమయం. వేవ్ ప్రసార దూరం మరియు స్వీకరించే దూరం రెండింటినీ కప్పి ఉంచినందున ఇక్కడ ఫలితాన్ని 2 ద్వారా విభజించాలి. మాకు వేవ్ (ధ్వని) వేగం 34000 సెం.మీ / సె.
దూరం = (వేగం * సమయం) / 2 = (34000 * (16-బిట్ రిజిస్టర్ విలువ) * 0.0000008) / 2 దూరం = (0.0272 * 16-బిట్ రిజిస్టర్ విలువ) / 2
కాబట్టి దూరాన్ని దిగువ వంటి సెంటీమీటర్లలో లెక్కించవచ్చు:
దూరం = (0.0272 * సమయం_ తీసుకున్నారు) / 2;
తీసుకున్న దూరం మరియు సమయం యొక్క విలువను లెక్కించిన తరువాత మనం వాటిని LCD తెరపై ప్రదర్శించాలి.
PIC మరియు అల్ట్రాసోనిక్ సెన్సార్ ఉపయోగించి దూరాన్ని కొలవడం:
కనెక్షన్లు చేసి, కోడ్ను అప్లోడ్ చేసిన తర్వాత, మీ ప్రయోగాత్మక సెటప్ క్రింది చిత్రంలో చూపిన విధంగా కనిపిస్తుంది.
ఈ చిత్రంలో చూపించే PIC పెర్ఫ్ బోర్డు, మా PIC ట్యుటోరియల్ సిరీస్ కోసం తయారు చేయబడింది, దీనిలో PIC మైక్రోకంట్రోలర్ను ఎలా ఉపయోగించాలో నేర్చుకున్నాము. పికిట్ 3 ను ఉపయోగించి ప్రోగ్రామ్ను ఎలా బర్న్ చేయాలో మీకు తెలియకపోతే మీరు MPLABX మరియు XC8 ఉపయోగించి ఆ PIC మైక్రోకంట్రోలర్ ట్యుటోరియల్లకు తిరిగి వెళ్లాలనుకోవచ్చు, ఎందుకంటే నేను ఆ ప్రాథమిక సమాచారాన్ని వదిలివేస్తాను.
ఇప్పుడు సెన్సార్ ముందు ఒక వస్తువును ఉంచండి మరియు అది సెన్సార్ నుండి వస్తువు ఎంత దూరంలో ఉందో ప్రదర్శిస్తుంది. తరంగం ప్రసారం చేయడానికి మరియు తిరిగి రావడానికి మైక్రో సెకన్లలో ప్రదర్శించబడే సమయాన్ని కూడా మీరు గమనించవచ్చు.
మీరు మీకు కావలసిన దూరం వద్ద వస్తువును తరలించవచ్చు మరియు LCD లో ప్రదర్శించబడే విలువను తనిఖీ చేయవచ్చు. నేను 0.5 సెం.మీ ఖచ్చితత్వంతో 2 సెం.మీ నుండి 350 సెం.మీ వరకు దూరాన్ని కొలవగలిగాను. ఇది చాలా సంతృప్తికరమైన ఫలితం! మీరు ట్యుటోరియల్ని ఆస్వాదించారని మరియు మీ స్వంతంగా ఎలా తయారు చేయాలో నేర్చుకున్నారని ఆశిస్తున్నాము. మీకు ఏవైనా సందేహాలు ఉంటే వాటిని క్రింది వ్యాఖ్య విభాగంలో ఉంచండి లేదా ఫోరమ్లను ఉపయోగించండి.
ఇతర మైక్రోకంట్రోలర్లతో అల్ట్రాసోనిక్ సెన్సార్ యొక్క ఇంటర్ఫేసింగ్ను కూడా తనిఖీ చేయండి:
- ఆర్డునో & అల్ట్రాసోనిక్ సెన్సార్ ఆధారిత దూర కొలత
- రాస్ప్బెర్రీ పై మరియు HCSR04 అల్ట్రాసోనిక్ సెన్సార్ ఉపయోగించి దూరాన్ని కొలవండి
- HC-SR04 మరియు AVR మైక్రోకంట్రోలర్ ఉపయోగించి దూర కొలత