ఎలక్ట్రానిక్స్ మరియు ఎంబెడెడ్ సిస్టమ్స్లో సర్వో మోటార్లు చాలా ఉపయోగపడతాయి. మీ చుట్టూ ఉన్న ప్రతిచోటా మీరు సర్వో మోటారు వాడకాన్ని కనుగొనవచ్చు, అవి బొమ్మలు, రోబోట్లు, కంప్యూటర్ యొక్క సిడి ట్రే, కార్లు, విమానం మొదలైన వాటిలో ఉపయోగించబడతాయి. ఈ విస్తృత పరిధికి కారణం, సర్వో మోటారు చాలా నమ్మదగినది మరియు ఖచ్చితమైనది. మనం దానిని ఏదైనా నిర్దిష్ట కోణానికి తిప్పవచ్చు. అవి విస్తృత పరిధిలో లభిస్తాయి, తక్కువ టార్క్ మోటారు నుండి తక్కువ టార్క్ మోటారులను ఏర్పరుస్తాయి. ఈ ట్యుటోరియల్లో మేము ఒక సర్వో మోటారును 8051 మైక్రోకంట్రోలర్కు (AT89S52) ఇంటర్ఫేస్ చేయబోతున్నాం.
మొదట మనం సర్వో మోటార్లు పనిచేసే సూత్రాన్ని అర్థం చేసుకోవాలి. సర్వో మోటారు పిడబ్ల్యుఎం (పల్స్ వెడల్పు మాడ్యులేషన్) ప్రిన్సిపాల్పై పనిచేస్తుంది, అంటే దాని భ్రమణ కోణం దాని కంట్రోల్ పిన్కు వర్తించే పల్స్ వ్యవధి ద్వారా నియంత్రించబడుతుంది. ప్రాథమికంగా సర్వో మోటారు DC మోటారుతో రూపొందించబడింది, ఇది వేరియబుల్ రెసిస్టర్ (పొటెన్షియోమీటర్) మరియు కొన్ని గేర్లచే నియంత్రించబడుతుంది. DC మోటర్ యొక్క హై స్పీడ్ ఫోర్స్ గేర్స్ చేత టార్క్ గా మార్చబడుతుంది. DC మోటారు ఫోర్స్లో WORK = FORCE X DISTANCE తక్కువగా ఉందని మరియు దూరం (వేగం) ఎక్కువగా ఉందని మరియు సర్వోలో, శక్తి ఎక్కువగా ఉంటుంది మరియు దూరం తక్కువగా ఉంటుందని మాకు తెలుసు. కోణాన్ని లెక్కించడానికి మరియు అవసరమైన కోణంలో DC మోటారును ఆపడానికి, పొటెన్టోమీటర్ సర్వో యొక్క అవుట్పుట్ షాఫ్ట్కు అనుసంధానించబడి ఉంది.
సర్వో మోటారును 0 నుండి 180 డిగ్రీల వరకు తిప్పవచ్చు, కాని ఇది తయారీని బట్టి 210 డిగ్రీల వరకు వెళ్ళవచ్చు. 1ms నుండి 2ms మధ్య వ్యవధికి LOGIC స్థాయి 1 పల్స్ను వర్తింపజేయడం ద్వారా ఈ స్థాయి భ్రమణాన్ని నియంత్రించవచ్చు. ఒక 1 ఎంఎస్ సర్వోను 0 డిగ్రీకి తిప్పగలదు, 1.5 ఎంఎస్ 90 డిగ్రీలకు తిప్పగలదు మరియు 2 ఎంఎస్ పల్స్ దానిని 180 డిగ్రీలకు తిప్పగలదు. 1 నుండి 2 ఎంఎస్ల మధ్య వ్యవధి సర్వో మోటారును 0 నుండి 180 డిగ్రీల మధ్య ఏ కోణంలోనైనా తిప్పగలదు.
సర్క్యూట్ రేఖాచిత్రం మరియు వర్కింగ్ వివరణ
సర్వో మోటారులో మూడు వైర్లు రెడ్ ఫర్ విసిసి (విద్యుత్ సరఫరా), బ్రౌన్ ఫర్ గ్రౌండ్, మరియు ఆరెంజ్ కంట్రోల్ వైర్ ఉన్నాయి. కంట్రోల్ వైర్ను 8051 కి కనెక్ట్ చేయవచ్చు, మేము దానిని 8051 యొక్క పిన్ 2.1 కి కనెక్ట్ చేసాము. ఇప్పుడు మనం ఈ పిన్ను లాజిక్ 1 కి 1 మి.లకు 1 డిగ్రీకి 0 డిగ్రీకి, 1.5 డిగ్రీలు 90 డిగ్రీలకు, 180 డిగ్రీలకు 2 ఎంఎస్లను ఉంచాలి. ఆలస్యాన్ని సృష్టించడానికి మేము 8051 యొక్క చిప్ టైమర్లలో ఉపయోగించాము. మేము “servo_delay” ఫంక్షన్ ద్వారా 50us ఆలస్యాన్ని సృష్టించాము మరియు 50us యొక్క బహుళ ఆలస్యాన్ని సృష్టించడానికి “for” లూప్ను ఉపయోగించాము.
మేము టైమర్ 0 మరియు మోడ్ 1 లో ఉపయోగిస్తున్నాము, కాబట్టి మేము 01H ను TMOD రిజిస్టర్లో ఉంచాము. మోడ్ 1 16 బిట్ టైమర్ మోడ్ మరియు TH0 లో హై బైట్ మరియు TL0 లో 16 బిట్ టైమర్ తక్కువ బైట్ ఉంటుంది. మేము 16 బిట్ టైమర్ రిజిస్టర్లో ఎఫ్ఎఫ్డి 2, టిహెచ్ 0 లో ఎఫ్ఎఫ్, టిఎల్ 0 లో డి 2 ఉంచాము. FFD2 ను ఉంచడం సుమారు ఆలస్యాన్ని సృష్టిస్తుంది. 11.0592MHz క్రిస్టల్తో 50 మాకు. TR0 మరియు TF0 TCON రిజిస్టర్ యొక్క బిట్స్, సెట్ చేసినప్పుడు టైమర్ ప్రారంభించడానికి మరియు రీసెట్ చేసినప్పుడు (0) ఆపడానికి TR పిన్ ఉపయోగించబడుతుంది. TF ఓవర్ఫ్లో ఫ్లాగ్, ఓవర్ఫ్లో ఉన్నప్పుడు హార్డ్వేర్ సెట్ చేస్తుంది మరియు సాఫ్ట్వేర్ ద్వారా దాన్ని రీసెట్ చేయాలి. ప్రాథమికంగా TF టైమర్ పూర్తి కావడాన్ని చెబుతుంది మరియు FFFFH నుండి 0000H కు 16 టైమర్ రవాణా చేసినప్పుడు హార్డ్వేర్ ద్వారా సెట్ చేయబడుతుంది. టైమర్స్ రిజిస్టర్లలో విలువ గణనను అర్థం చేసుకోవడానికి, 50 మాకు ఆలస్యం సృష్టించడానికి మీరు “8051 టైమర్స్” గురించి చదువుకోవచ్చు.
ఇప్పుడు CRO నుండి కొలిచినప్పుడు, సర్వో_డేలే ఫంక్షన్ యొక్క 13 ఉచ్చులు 1ms ఆలస్యాన్ని ఇస్తాయి, కాబట్టి మేము 1ms (13 ఉచ్చులు) నుండి ప్రారంభించి 2 ms (26 ఉచ్చులు) కి వెళ్ళాము. కానీ మేము 1ms నుండి నెమ్మదిగా ఆలస్యాన్ని పెంచాము, మేము 1ms నుండి 2 ms విండోను 1.14ms, 1.28 ms, 1.42ms మరియు 7 భాగాలుగా విభజించాము, కాబట్టి సర్వో సుమారుగా బహుళంగా తిరుగుతుంది. 26 డిగ్రీలు (180/7). 180 తరువాత అది స్వయంచాలకంగా 0 డిగ్రీకి తిరిగి వస్తుంది.