- రోటరీ ఎన్కోడర్ మరియు దాని రకాలు
- KY-040 రోటరీ ఎన్కోడర్ పిన్అవుట్ మరియు వివరణ
- రోటరీ ఎన్కోడర్ ఎలా పనిచేస్తుంది
- భాగాలు అవసరం
- PIC16F877A రోటరీ ఎన్కోడర్ ఇంటర్ఫేసింగ్ సర్క్యూట్ రేఖాచిత్రం
- కోడ్ వివరణ
ఒక రోటరీ ఎన్కోడర్ ఒక వ్యవస్థతో సంకర్షణ సహాయపడుతుంది ఒక ఇన్పుట్ పరికరం. ఇది రేడియో పొటెన్టోమీటర్ లాగా కనిపిస్తుంది, అయితే ఇది పప్పుల రైలును ఉత్పత్తి చేస్తుంది, ఇది దాని అనువర్తనాన్ని ప్రత్యేకంగా చేస్తుంది. ఎన్కోడర్ యొక్క నాబ్ తిప్పబడినప్పుడు అది చిన్న దశల రూపంలో తిరుగుతుంది, ఇది స్టెప్పర్ / సర్వో మోటారు నియంత్రణ కోసం ఉపయోగించటానికి సహాయపడుతుంది, మెను యొక్క క్రమం ద్వారా నావిగేట్ చేస్తుంది మరియు సంఖ్య యొక్క విలువను పెంచడం / తగ్గించడం మరియు మరెన్నో.
ఈ వ్యాసంలో, వివిధ రకాల రోటరీ ఎన్కోడర్ల గురించి మరియు ఇది ఎలా పనిచేస్తుందో తెలుసుకుందాం. మేము దానిని PIC మైక్రోకంట్రోలర్ PIC16F877A తో ఇంటర్ఫేస్ చేస్తాము మరియు ఎన్కోడర్ను తిప్పడం ద్వారా పూర్ణాంకం విలువను నియంత్రిస్తాము మరియు దాని విలువను 16 * 2 LCD తెరపై ప్రదర్శిస్తాము. ఈ ట్యుటోరియల్ చివరలో, మీ ప్రాజెక్ట్ల కోసం రోటరీ ఎన్కోడర్ను ఉపయోగించడం మీకు సౌకర్యంగా ఉంటుంది. కాబట్టి ప్రారంభిద్దాం…
రోటరీ ఎన్కోడర్ మరియు దాని రకాలు
రోటరీ ఎన్కోడర్ను తరచుగా షాఫ్ట్ ఎన్కోడర్ అని పిలుస్తారు. ఇది ఎలెక్ట్రోమెకానికల్ ట్రాన్స్డ్యూసెర్, అనగా ఇది యాంత్రిక కదలికలను ఎలక్ట్రానిక్ పప్పులుగా మారుస్తుంది లేదా మరో మాటలో చెప్పాలంటే ఇది కోణీయ స్థానం లేదా కదలిక లేదా షాఫ్ట్ స్థానాన్ని డిజిటల్ లేదా అనలాగ్ సిగ్నల్గా మారుస్తుంది. ఇది ఒక నాబ్ను కలిగి ఉంటుంది, ఇది తిరిగేటప్పుడు దశల వారీగా కదులుతుంది మరియు ప్రతి దశకు ముందుగా నిర్వచించిన వెడల్పుతో పల్స్ రైళ్ల క్రమాన్ని ఉత్పత్తి చేస్తుంది.
మార్కెట్లో అనేక రకాల రోటరీ ఎన్కోడర్ ఉన్నాయి, డిజైనర్ తన అప్లికేషన్ ప్రకారం ఒకదాన్ని ఎంచుకోవచ్చు. అత్యంత సాధారణ రకాలు క్రింద ఇవ్వబడ్డాయి
- పెరుగుతున్న ఎన్కోడర్
- సంపూర్ణ ఎన్కోడర్
- మాగ్నెటిక్ ఎన్కోడర్
- ఆప్టికల్ ఎన్కోడర్
- లేజర్ ఎన్కోడర్
ఈ ఎన్కోడర్లు అవుట్పుట్ సిగ్నల్ మరియు సెన్సింగ్ టెక్నాలజీ ఆధారంగా వర్గీకరించబడ్డాయి, పెరుగుతున్న ఎన్కోడర్ మరియు సంపూర్ణ ఎన్కోడర్లు అవుట్పుట్ సిగ్నల్ ఆధారంగా వర్గీకరించబడతాయి మరియు మాగ్నెటిక్, ఆప్టికల్ మరియు లేజర్ ఎన్కోడర్ సెన్సింగ్ టెక్నాలజీ ఆధారంగా వర్గీకరించబడతాయి. ఎన్కోడర్ ఇక్కడ ఉపయోగించే ఒక ఇంక్రిమెంటల్ రకం ఎన్కోడర్ ఉంది.
సంపూర్ణ ఎన్కోడర్ శక్తిని తీసివేసిన తర్వాత కూడా స్థాన సమాచారాన్ని నిల్వ చేస్తుంది మరియు మేము దానికి మళ్లీ శక్తిని వర్తింపజేసినప్పుడు స్థాన సమాచారం అందుబాటులో ఉంటుంది.
ఇతర ప్రాథమిక రకం, ఎన్కోడర్ దాని స్థానాన్ని మార్చినప్పుడు డేటాను పెంచుతుంది. ఇది స్థాన సమాచారాన్ని నిల్వ చేయలేకపోయింది.
KY-040 రోటరీ ఎన్కోడర్ పిన్అవుట్ మరియు వివరణ
KY-040 పెరుగుతున్న రకం రోటరీ ఎన్కోడర్ యొక్క పిన్అవుట్లు క్రింద చూపించబడ్డాయి. ఈ ప్రాజెక్ట్లో, మేము ఈ రోటరీ ఎన్కోడర్ను మైక్రోచిప్ నుండి ప్రసిద్ధ మైక్రోకంట్రోలర్ PIC16F877A తో ఇంటర్ఫేస్ చేస్తాము.
ఎన్కోడర్ను శక్తివంతం చేయడానికి మొదటి రెండు పిన్లు (గ్రౌండ్ మరియు విసిసి) ఉపయోగించబడతాయి, సాధారణంగా + 5 వి సరఫరా ఉపయోగించబడుతుంది. గడియారం వారీగా మరియు యాంటీ-సవ్యదిశలో నాబ్ను తిప్పడంతో పాటు, ఎన్కోడర్లో ఒక స్విచ్ (యాక్టివ్ తక్కువ) కూడా ఉంది, దీనిని లోపల నాబ్ నొక్కడం ద్వారా నొక్కవచ్చు. ఈ స్విచ్ నుండి సిగ్నల్ పిన్ 3 (SW) ద్వారా పొందబడుతుంది. చివరగా ఇది రెండు అవుట్పుట్ పిన్స్ (డిటి మరియు సిఎల్కె) ను కలిగి ఉంది, ఇది ఇప్పటికే క్రింద చర్చించిన విధంగా తరంగ రూపాలను ఉత్పత్తి చేస్తుంది. మేము ఈ రోటరీ ఎన్కోడర్ను గతంలో ఆర్డునోతో ఇంటర్ఫేస్ చేసాము.
రోటరీ ఎన్కోడర్ ఎలా పనిచేస్తుంది
అవుట్పుట్ పూర్తిగా అంతర్గత రాగి ప్యాడ్లపై ఆధారపడి ఉంటుంది, ఇది షాఫ్ట్తో GND మరియు VCC తో కనెక్షన్ను అందిస్తుంది.
రోటరీ ఎన్కోడర్లో రెండు భాగాలు ఉన్నాయి. షాఫ్ట్తో అనుసంధానించబడిన షాఫ్ట్ వీల్ మరియు షాఫ్ట్ యొక్క భ్రమణాన్ని బట్టి సవ్యదిశలో లేదా యాంటీ-సవ్యదిశలో తిరుగుతుంది మరియు విద్యుత్ కనెక్షన్ చేసిన బేస్. బేస్ పోర్టులు లేదా పాయింట్లను కలిగి ఉంది, ఇది షాఫ్ట్ వీల్ తిరిగేటప్పుడు, అది బేస్ పాయింట్లను అనుసంధానిస్తుంది మరియు DT మరియు CLK పోర్ట్ రెండింటిలో చదరపు తరంగాన్ని అందిస్తుంది.
షాఫ్ట్ తిరిగేటప్పుడు అవుట్పుట్ ఉంటుంది-
రెండు పోర్టులు చదరపు తరంగాన్ని అందిస్తాయి కాని టైమింగ్లో స్వల్ప తేడా ఉంది. ఈ కారణంగా, మేము అవుట్పుట్ను 1 మరియు 0 గా అంగీకరిస్తే, 0 0, 1 0, 1 1, 0 అనే నాలుగు రాష్ట్రాలు మాత్రమే ఉండవచ్చు. బైనరీ అవుట్పుట్ యొక్క క్రమం సవ్యదిశలో మలుపు లేదా యాంటీ-సవ్యదిశలో మలుపును నిర్ణయిస్తుంది. ఉదాహరణకు, రోటరీ ఎన్కోడర్ నిష్క్రియ స్థితిలో 1 0 ను అందించి, ఆ తర్వాత 1 1 ని అందిస్తే, అంటే ఎన్కోడర్ దాని స్థానాన్ని సవ్యదిశలో ఒక అడుగుగా మారుస్తుంది, కానీ నిష్క్రియ 1 0 తర్వాత 0 0 అందిస్తుంటే, అంటే షాఫ్ట్ దాని స్థానాలను యాంటీ-సవ్యదిశలో ఒక దశతో మారుస్తుంది.
భాగాలు అవసరం
రోటరీ ఎన్కోడర్ను పిఐసి మైక్రోకంట్రోలర్తో ఇంటర్ఫేస్ చేయాల్సిన అవసరం ఏమిటో గుర్తించాల్సిన సమయం ఇది.
- PIC16F877A
- 4.7 కే రెసిస్టర్
- 1 కె రెసిస్టర్
- 10 కే కుండ
- 33 పిఎఫ్ సిరామిక్ డిస్క్ కెపాసిటర్ - 2 పిసిలు
- 20Mhz క్రిస్టల్
- 16x2 డిస్ప్లే
- రోటరీ ఎన్కోడర్
- 5 వి అడాప్టర్.
- బ్రెడ్ బోర్డు
- హుక్అప్ వైర్లు.
PIC16F877A రోటరీ ఎన్కోడర్ ఇంటర్ఫేసింగ్ సర్క్యూట్ రేఖాచిత్రం
సర్క్యూట్ రేఖాచిత్రం ప్రకారం భాగాలను కనెక్ట్ చేసిన తర్వాత తుది సెటప్ యొక్క చిత్రం క్రింద ఉంది:
పొటెన్షియోమీటర్ను ఉపయోగించకుండా ఎల్సిడికి విరుద్ధంగా 1 సి రెసిస్టర్ను ఉపయోగించాము. అలాగే, చివరిలో ఇచ్చిన పూర్తి పని వీడియోను తనిఖీ చేయండి.
కోడ్ వివరణ
ప్రదర్శన ప్రాజెక్ట్ తో ఈ ప్రాజెక్ట్ చివరిలో పూర్తి PIC కోడ్ ఇవ్వబడింది, ఇక్కడ మేము కోడ్ యొక్క కొన్ని ముఖ్యమైన భాగాలను వివరిస్తున్నాము. మీరు PIC మైక్రోకంట్రోలర్తో కొత్తగా ఉంటే, మొదటి నుండి మా PIC ట్యుటోరియల్లను అనుసరించండి.
మేము ఇంతకుముందు చర్చించినట్లుగా, మేము అవుట్పుట్ను తనిఖీ చేయాలి మరియు DT మరియు CLK రెండింటికీ బైనరీ అవుట్పుట్ను వేరు చేయాలి, కాబట్టి మేము ఆపరేషన్ కోసం if-else భాగాన్ని సృష్టించాము.
if (ఎన్కోడర్_సిఎల్కె! = స్థానం) { if (ఎన్కోడర్_డిటి! = స్థానం) { // lcd_com (0x01); కౌంటర్ ++; // lcd lcd_com (0xC0) లో ముద్రించబడే కౌంటర్ను పెంచండి ; lcd_puts (""); lcd_com (0xC0); lcd_bcd (1, కౌంటర్); } else { // lcd_com (0x01); lcd_com (0xC0); కౌంటర్--; // కౌంటర్ lcd_puts ("") ను తగ్గించండి; lcd_com (0xC0); lcd_bcd (1, కౌంటర్); // lcd_puts ("ఎడమ"); } }
మేము ప్రతి దశలో స్థానం నిల్వ చేయాలి. దీన్ని చేయడానికి, మేము ప్రస్తుత స్థానాన్ని నిల్వ చేసే వేరియబుల్ “స్థానం” ను ఉపయోగించాము.
స్థానం = ఎన్కోడర్_సిఎల్కె; // ఇది ఎన్కోడర్ క్లాక్ పొజిషన్ను వేరియబుల్లో నిల్వ చేయడం. 0 లేదా 1 కావచ్చు.
ఇది కాకుండా ఎల్సిడిలో స్విచ్ ప్రెస్ గురించి తెలియజేయడానికి ఒక ఎంపిక ఇవ్వబడుతుంది.
if (ఎన్కోడర్_ఎస్డబ్ల్యూ == 0) { sw_delayms (20); // ఆలస్యం ఆలస్యం (ఎన్కోడర్_ఎస్డబ్ల్యు == 0) { // ఎల్సిడి_కామ్ (1); // lcd_com (0xC0); lcd_puts ("స్విచ్ నొక్కినప్పుడు"); // ఐటోవా (కౌంటర్, విలువ, 10); // lcd_puts (విలువ);
System_init ఫంక్షన్ పిన్ I / O ఆపరేషన్, LCD ప్రారంభించడం మరియు ది రోటరీ ఎన్కోడర్ స్థానం నిల్వ చేయడానికి ఉపయోగిస్తారు.
void system_init () { TRISB = 0x00; // PORT B అవుట్పుట్గా, ఈ పోర్ట్ LCD TRISDbits కోసం ఉపయోగించబడుతుంది. TRISD2 = 1; TRISDbits.TRISD3 = 1; TRISCbits.TRISC4 = 1; lcd_init (); // ఇది ఎల్సిడి స్థానాన్ని ప్రారంభిస్తుంది = ఎన్కోడర్_సిఎల్కె; // లూప్ ప్రారంభానికి ముందు, సిస్టమ్ ఇనిట్లో సిఎల్కె స్థానాన్ని పొందింది. }
LCD ఫంక్షన్ lcd.c మరియు lcd.h లైబ్రరీలో వ్రాయబడుతుంది, ఇక్కడ lcd_puts (), lcd_cmd () ప్రకటించబడతాయి.
వేరియబుల్ డిక్లరేషన్, కాన్ఫిగరేషన్ బిట్స్ మరియు ఇతర కోడ్ స్నిప్పెట్స్ కోసం, దయచేసి పూర్తి కోడ్ను క్రింద కనుగొనండి.