- అవసరమైన పదార్థాలు:
- కవర్ వేగం మరియు దూరాన్ని లెక్కించడం:
- సర్క్యూట్ రేఖాచిత్రం మరియు హార్డ్వేర్ సెటప్:
- అనుకరణ:
- మీ PIC16F877A ను ప్రోగ్రామింగ్ చేస్తోంది:
- పని వివరణ:
వాహనం లేదా మోటారు యొక్క వేగం / ఆర్పిఎమ్ను కొలవడం ఎల్లప్పుడూ మనకు ప్రయత్నించడానికి మనోహరమైన ప్రాజెక్ట్. కాబట్టి, ఈ ప్రాజెక్టులో మేము ఇండస్ట్రియల్ రెడీ పిఐసి మైక్రోకంట్రోలర్లను ఉపయోగించి ఒకదాన్ని నిర్మించబోతున్నాము. వేగాన్ని కొలవడానికి మేము అయస్కాంతం మరియు హాల్ సెన్సార్ను ఉపయోగిస్తాము. వేగాన్ని కొలవడానికి ఇతర మార్గాలు / సెన్సార్లు ఉన్నాయి, కానీ, హాల్ సెన్సార్ను ఉపయోగించడం చౌకగా ఉంటుంది మరియు ఏ రకమైన మోటారు / వాహనంలోనైనా ఉపయోగించవచ్చు. ఈ ప్రాజెక్ట్ చేయడం ద్వారా మేము PIC16F877A నేర్చుకోవడంలో మా నైపుణ్యాలను కూడా పెంచుతాము, ఎందుకంటే ఈ ప్రాజెక్ట్ అంతరాయాలు మరియు టైమర్ల వాడకాన్ని కలిగి ఉంటుంది. వద్ద, ఈ ప్రాజెక్ట్ చివరలో మీరు ఏదైనా తిరిగే వస్తువు ద్వారా కప్పబడిన వేగం మరియు దూరాలను లెక్కించగలుగుతారు మరియు వాటిని 16x2 LCD తెరపై ప్రదర్శిస్తారు. ఈ డిజిటల్ స్పీడోమీటర్ మరియు ఓడోమీటర్ సర్క్యూట్తో పిఐసితో ప్రారంభిద్దాం.
అవసరమైన పదార్థాలు:
- PIC16F877A
- 7805 వోల్టేజ్ రెగ్యులేటర్
- హాల్ ఎఫెక్ట్ సెన్సార్ (US1881 / 04E)
- 16 * 2 ఎల్సిడి డిస్ప్లే
- అయస్కాంతం యొక్క చిన్న ముక్క
- వైర్లను కనెక్ట్ చేస్తోంది
- కెపాసిటర్లు
- బ్రెడ్బోర్డ్.
- విద్యుత్ పంపిణి
కవర్ వేగం మరియు దూరాన్ని లెక్కించడం:
మేము నిజంగా సర్క్యూట్ను నిర్మించటానికి ముందు, చక్రం యొక్క వేగాన్ని లెక్కించడానికి హాల్ సెన్సార్ మరియు అయస్కాంతాన్ని ఎలా ఉపయోగిస్తామో అర్థం చేసుకుందాం. ఆండ్రాయిడ్ స్మార్ట్ ఫోన్లో రీడింగులను ప్రదర్శించే ఆర్డునో స్పీడోమీటర్ను నిర్మించడానికి ఇంతకుముందు మేము అదే టెక్నిక్ని ఉపయోగించాము.
హాల్ సెన్సార్ అంటే దాని ధ్రువణత ఆధారంగా అయస్కాంతం ఉనికిని గుర్తించగల పరికరం. మేము చక్రం మీద ఒక చిన్న అయస్కాంతాన్ని అంటుకుని, హాల్ సెన్సార్ను దాని దగ్గర ఉంచుతాము, ప్రతిసారీ చక్రం తిరిగేటప్పుడు హాల్ సెన్సార్ దానిని కనుగొంటుంది. చక్రం యొక్క పూర్తి భ్రమణానికి తీసుకున్న సమయాన్ని లెక్కించడానికి మేము మా PIC మైక్రోకంట్రోలర్లో టైమర్లు మరియు అంతరాయాల సహాయాన్ని ఉపయోగిస్తాము.
తీసుకున్న సమయం తెలిసిన తర్వాత మేము ఈ క్రింది సూత్రాలను ఉపయోగించి RPM ను లెక్కించవచ్చు, ఇక్కడ 1000 / సమయం తీసుకున్నది మాకు RPS ని ఇస్తుంది మరియు దానిని 60 తో గుణించడం వలన మీకు RPM లభిస్తుంది
rpm = (1000 / టైమ్టేకెన్) * 60;
ఎక్కడ (1000 / టైమ్టేక్) rps (సెకనుకు విప్లవాలు) ఇస్తుంది మరియు rps ను rpm గా మార్చడానికి ఇది 60 గుణించాలి (నిమిషానికి విప్లవాలు).
ఇప్పుడు వాహనం యొక్క వేగాన్ని లెక్కించడానికి మనం చక్రం యొక్క వ్యాసార్థాన్ని తెలుసుకోవాలి. మా ప్రాజెక్ట్లో మేము కేవలం 3 సెం.మీ వ్యాసార్థం కలిగిన చిన్న బొమ్మ చక్రం ఉపయోగించాము. కానీ, చక్రం యొక్క వ్యాసార్థం 30 సెం.మీ (0.3 మీ) గా ఉంటుందని మేము అనుకున్నాము, తద్వారా మేము రీడింగులను దృశ్యమానం చేయవచ్చు.
వెలాసిటీ = (RPM (వ్యాసం * పై) / 60) అని మనకు తెలుసు కాబట్టి విలువ కూడా 0.37699 తో గుణించబడుతుంది . సూత్రాలు క్రిందికి సరళీకృతం చేయబడ్డాయి
v = వ్యాసార్థం_ఆఫ్_వీల్ * rpm * 0.37699;
మేము వేగాన్ని లెక్కించిన తర్వాత, ఇదే విధమైన పద్ధతిని ఉపయోగించి కప్పబడిన దూరాన్ని కూడా లెక్కించవచ్చు. మా హాల్ మరియు అయస్కాంత అమరికతో చక్రం ఎన్నిసార్లు తిరిగినదో మనకు తెలుసు. చక్రం యొక్క వ్యాసార్థం కూడా మనకు తెలుసు, వీటిని ఉపయోగించి చక్రం యొక్క చుట్టుకొలతను కనుగొనవచ్చు, చక్రం యొక్క వ్యాసార్థం 0.3 మీ (R) గా భావించి, చుట్టుకొలత విలువలు పై * R * R విలువ 0.2827 అవుతుంది. అంటే హాల్ సెన్సార్ అయస్కాంతాన్ని కలిసిన ప్రతిసారీ 0.2827 మీటర్ల దూరం చక్రం కప్పబడి ఉంటుంది.
దూరం_ కవర్డ్ = దూరం_ కవర్డ్ + చుట్టుకొలత___సర్కిల్
అప్పటి నుండి, ఈ ప్రాజెక్ట్ ఎలా పని చేస్తుందో మనకు తెలుసు, మా సర్క్యూట్ రేఖాచిత్రానికి వెళ్లి దానిని నిర్మించడం ప్రారంభించండి.
సర్క్యూట్ రేఖాచిత్రం మరియు హార్డ్వేర్ సెటప్:
ఈ స్పీడోమీటర్ మరియు ఓడోమీటర్ ప్రాజెక్ట్ యొక్క సర్క్యూట్ రేఖాచిత్రం చాలా సులభం మరియు దీనిని బ్రెడ్బోర్డ్లో నిర్మించవచ్చు. మీరు PIC ట్యుటోరియల్లను అనుసరిస్తుంటే, PIC మైక్రోకంట్రోలర్లను నేర్చుకోవడానికి మేము ఉపయోగించిన హార్డ్వేర్ను కూడా మీరు తిరిగి ఉపయోగించుకోవచ్చు. క్రింద చూపిన విధంగా పిఐసి మైక్రోకంట్రోలర్తో ఎల్ఇడి బ్లింక్ కోసం మేము నిర్మించిన అదే పెర్ఫ్ బోర్డ్ను ఇక్కడ ఉపయోగించాము:
PIC16F877A MCU కోసం పిన్ కనెక్షన్లు క్రింది పట్టికలో ఇవ్వబడ్డాయి.
ఎస్. లేదు: |
పిన్ నెంబర్ |
పిన్ పేరు |
సంబంధం కలిగిఉన్నది |
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 |
33 |
RB0 / INT |
హాల్ సెన్సార్ యొక్క 3 వ పిన్ |
మీరు మీ ప్రాజెక్ట్ను నిర్మించిన తర్వాత అది క్రింది చిత్రంలో కనిపిస్తుంది
మీరు చూడగలిగినట్లుగా, మోటారును మరియు హాల్ సెన్సార్ను సమీప స్థానంలో ఉంచడానికి నేను రెండు పెట్టెలను ఉపయోగించాను. మీరు మీ భ్రమణ వస్తువుపై అయస్కాంతాన్ని పరిష్కరించవచ్చు మరియు దానికి దగ్గరగా ఉన్న హాల్ సెన్సార్ను అయస్కాంతాన్ని గుర్తించే విధంగా చెక్కుచెదరకుండా చేయవచ్చు.
గమనిక: హాల్ సెన్సార్ ధ్రువణతలను కలిగి ఉంది, కాబట్టి ఇది ఏ ధ్రువాన్ని గుర్తించిందో నిర్ధారించుకోండి మరియు తదనుగుణంగా ఉంచండి.
హాల్ సెన్సార్ యొక్క అవుట్పుట్ పిన్తో మీరు పుల్-అప్ రెసిస్టర్ను ఉపయోగించారని నిర్ధారించుకోండి.
అనుకరణ:
ఈ ప్రాజెక్ట్ కోసం అనుకరణ ప్రోటీస్ ఉపయోగించి జరుగుతుంది. ప్రాజెక్ట్ కదిలే వస్తువులను కలిగి ఉన్నందున, అనుకరణను ఉపయోగించి పూర్తి ప్రాజెక్ట్ను ప్రదర్శించడం సాధ్యం కాదు కాని LCD యొక్క పనిని ధృవీకరించవచ్చు. హెక్స్ ఫైల్ను అనుకరణకు లోడ్ చేసి, దానిని అనుకరించండి. క్రింద చూపిన విధంగా LCD పనిచేయడాన్ని మీరు గమనించగలరు.
స్పీడోమీటర్ మరియు ఓడోమీటర్ పనిచేస్తుందో లేదో తనిఖీ చేయడానికి నేను హాల్ సెన్సార్ను లాజిక్ స్టేట్ పరికరంతో భర్తీ చేసాను. అనుకరణ సమయంలో మీరు అంతరాయాన్ని ప్రేరేపించడానికి లాజిక్ స్టేట్ బటన్పై క్లిక్ చేసి, పైన చూపిన విధంగా కవర్ చేయబడిన వేగం మరియు దూరం నవీకరించబడుతుందో లేదో తనిఖీ చేయవచ్చు.
మీ PIC16F877A ను ప్రోగ్రామింగ్ చేస్తోంది:
ఇంతకు ముందే చెప్పినట్లుగా, చక్రం యొక్క పూర్తి భ్రమణానికి తీసుకున్న సమయాన్ని లెక్కించడానికి PIC16F877A మైక్రోకంట్రోలర్లో టైమర్లు మరియు అంతరాయాల సహాయాన్ని ఉపయోగిస్తాము. మా విస్తృతమైన ట్యుటోరియల్లో టైమర్లను ఎలా ఉపయోగించాలో మేము ఇప్పటికే నేర్చుకున్నాము. నేను ఈ వ్యాసం చివరిలో ప్రాజెక్ట్ యొక్క పూర్తి కోడ్ ఇచ్చాను. ఇంకా నేను క్రింద కొన్ని ముఖ్యమైన పంక్తులను వివరించాను.
కోడ్ యొక్క దిగువ పంక్తులు పోర్ట్ D ని LCD ఇంటర్ఫేసింగ్ కోసం అవుట్పుట్ పిన్లుగా మరియు RB0 ను బాహ్య పిన్గా ఉపయోగించడానికి ఇన్పుట్ పిన్గా ప్రారంభిస్తాయి. ఇంకా మేము OPTION_REG ని ఉపయోగించి అంతర్గత పుల్-అప్ రెసిస్టర్ను ప్రారంభించాము మరియు 64 ను ప్రీసెల్గా కూడా సెట్ చేసాము. WE అప్పుడు టైమర్ మరియు బాహ్య అంతరాయాన్ని ప్రారంభించడానికి గ్లోబల్ మరియు పెరిఫెరల్ ఇంటరప్ట్ను ప్రారంభించండి. RB0 ను బాహ్య అంతరాయ బిట్గా నిర్వచించడానికి INTE ను అధికంగా చేయాలి. ఓవర్ఫ్లో విలువ 100 గా సెట్ చేయబడింది, తద్వారా ప్రతి 1 మిల్లీసెకన్లకు టైమర్ ఇంటరప్ట్ ఫ్లాగ్ TMR0IF ప్రారంభించబడుతుంది. మిల్లీసెకన్లో తీసుకున్న సమయాన్ని నిర్ణయించడానికి మిల్లీసెకండ్ టైమర్ను అమలు చేయడానికి ఇది సహాయపడుతుంది:
TRISD = 0x00; // PORTD ఇంటర్ఫేసింగ్ LCD TRISB0 = 1 కొరకు అవుట్పుట్గా ప్రకటించబడింది; // అంతరాయ పిన్గా ఉపయోగించడానికి RB0 పిన్ను ఇన్పుట్గా నిర్వచించండి OPTION_REG = 0b00000101; // టైమర్ 0 64 ప్రెస్కాలర్గా // అలాగే PULL UP లను ప్రారంభిస్తుంది TMR0 = 100; // 1ms కోసం సమయ విలువను లోడ్ చేయండి; delayValue 0-256 మధ్య మాత్రమే ఉంటుంది TMR0IE = 1; // PIE1 రిజిస్టర్ GIE = 1 లో టైమర్ అంతరాయ బిట్ను ప్రారంభించండి; // గ్లోబల్ ఇంటరప్ట్ PEIE = 1 ను ప్రారంభించండి; // పరిధీయ అంతరాయాన్ని ప్రారంభించండి INTE = 1; // RB0 ను బాహ్య అంతరాయ పిన్గా ప్రారంభించండి
అంతరాయం కనుగొనబడిన ప్రతిసారీ దిగువ ఫంక్షన్ అమలు అవుతుంది. మన కోరిక ప్రకారం ఫంక్షన్కు పేరు పెట్టవచ్చు కాబట్టి నేను దీనికి స్పీడ్_ఐఎస్ఆర్ () అని పేరు పెట్టాను. ఈ ప్రోగ్రామ్ రెండు అంతరాయాలతో వ్యవహరిస్తుంది ఒకటి టైమర్ ఇంటరప్ట్ మరియు మరొకటి బాహ్య అంతరాయం. టైమర్ అంతరాయం సంభవించినప్పుడల్లా జెండా TMR0IF అధికంగా వెళుతుంది, అంతరాయాన్ని క్లియర్ చేసి రీసెట్ చేయడానికి, దిగువ కోడ్లో చూపిన విధంగా TMR0IF = 0 ని నిర్వచించడం ద్వారా మనం దానిని తక్కువ చేయాలి.
void interrupt speed_isr () {if (TMR0IF == 1) // టైమర్ పొంగిపోయింది {TMR0IF = 0; // క్లియర్ టైమర్ అంతరాయ జెండా mli_sec ++; } if (INTF == 1) {rpm = (1000 / mli_sec) * 60; వేగం = 0.3 * ఆర్పిఎమ్ * 0.37699; // (చక్రాల వ్యాసార్థం 30 సెం.మీ అని uming హిస్తే) INTF = 0; // అంతరాయ జెండాను క్లియర్ చేయండి mli_sec = 0; దూరం = దూరం + 028.2; }}
అదేవిధంగా బాహ్య అంతరాయం సంభవించినప్పుడు జెండా INTF అధికంగా ఉంటుంది, ఇది INTF = 0 ని నిర్వచించడం ద్వారా కూడా క్లియర్ చేయాలి. తీసుకున్న సమయం టైమర్ ఇంటరప్ట్ చేత ట్రాక్ చేయబడుతుంది మరియు చక్రం ఒక పూర్తి భ్రమణాన్ని పూర్తి చేసినప్పుడు బాహ్య అంతరాయం నిర్ణయిస్తుంది. ఈ డేటాతో ప్రతి బాహ్య అంతరాయం సమయంలో చక్రం కప్పబడిన వేగం మరియు దూరం లెక్కించబడుతుంది.
వేగం మరియు దూరం లెక్కించిన తర్వాత వాటిని మా ఎల్సిడి ఫంక్షన్లను ఉపయోగించి ఎల్సిడి తెరపై ప్రదర్శించవచ్చు. మీరు LCD లకు క్రొత్తగా ఉంటే, PIC16F877A MCU ట్యుటోరియల్తో మా ఇంటర్ఫేసింగ్ LCD ని చూడండి.
పని వివరణ:
మీరు హార్డ్వేర్ మరియు సాఫ్ట్వేర్లను సిద్ధం చేసిన తర్వాత, మీ PIC16F877A కు కోడ్ను అప్లోడ్ చేయండి. మీరు PIC కి పూర్తిగా క్రొత్తగా ఉంటే, PIC16F877A మైక్రోకంట్రోలర్కు ప్రోగ్రామ్ను ఎలా అప్లోడ్ చేయాలో తెలుసుకోవడంపై మీరు కొన్ని ట్యుటోరియల్లను చదవాలి.
ప్రదర్శన ప్రయోజనం కోసం మోటార్ వేగాన్ని సర్దుబాటు చేయడానికి నేను వేరియబుల్ POT ని ఉపయోగించాను. మీరు నిజ సమయ అనువర్తనాన్ని కనుగొనటానికి కూడా అదే ఉపయోగించవచ్చు. ప్రతిదీ expected హించిన విధంగా పనిచేస్తే, మీరు క్రింది వీడియోలో చూపిన విధంగా Km / Hr లో వేగం మరియు మీటర్ల పరంగా దూరాన్ని పొందగలుగుతారు.
మీరు ప్రాజెక్ట్ను ఆస్వాదించారని మరియు అది పని చేసిందని ఆశిస్తున్నాము. కాకపోతే మీరు మీ సందేహాన్ని పోస్ట్ చేయడానికి దిగువ వ్యాఖ్య విభాగాన్ని లేదా ఫోరమ్ను ఉపయోగించవచ్చు.