- LM393 స్పీడ్ సెన్సార్ మాడ్యూల్ (H206)
- H206 సెన్సార్ మౌంటు అమరిక
- DIY Arduino LM393 స్పీడ్ సెన్సార్ రోబోట్ సర్క్యూట్ రేఖాచిత్రం
- LM393 స్పీడ్ సెన్సార్ మాడ్యూల్తో వేగాన్ని కొలవడం వెనుక లాజిక్
- చక్రం ప్రయాణించిన దూరాన్ని కొలవడం వెనుక తర్కం
- బోట్ యొక్క కోణాన్ని కొలవడం వెనుక తర్కం
- ఆర్డునో రోబోట్ కోడ్
- దూరం, వేగం మరియు కోణాన్ని కొలవడానికి ఆర్డునో రోబోట్ను పరీక్షించడం
మన జీవితాన్ని సరళంగా మార్చడానికి రోబోట్లు నెమ్మదిగా మన సమాజంలోకి క్రాల్ చేయడం ప్రారంభించాయి. UK లోని రోడ్లపై స్టార్షిప్ నుండి ఆరు చక్రాల ఫుడ్ డెలివరీ రోబోట్లను మేము ఇప్పటికే కనుగొనవచ్చు, దాని గమ్యాన్ని చేరుకోవడానికి పౌరులలో తెలివిగా నావిగేట్ చేస్తాము. పర్యావరణంలోకి నావిగేట్ చేసే ప్రతి మొబైల్ రోబోట్ వాస్తవ ప్రపంచానికి సంబంధించి దాని స్థానం మరియు ధోరణి గురించి ఎల్లప్పుడూ తెలుసుకోవాలి. జిపిఎస్, ఆర్ఎఫ్ ట్రయాంగ్యులేషన్, యాక్సిలెరోమీటర్స్, గైరోస్కోప్స్ వంటి విభిన్న సాంకేతిక పరిజ్ఞానాలను ఉపయోగించడం ద్వారా దీనిని సాధించడానికి అనేక మార్గాలు ఉన్నాయి. ప్రతి టెక్నిక్ దాని స్వంత ప్రయోజనాన్ని కలిగి ఉంటుంది మరియు దాని ద్వారా ప్రత్యేకంగా ఉంటుంది. ఈ Arduino LM393 స్పీడ్ సెన్సార్ ట్యుటోరియల్లో మేము సరళమైన మరియు సులభంగా లభించే LM393 స్పీడ్ సెన్సార్ మాడ్యూల్ని ఉపయోగిస్తాముఆర్డునో ఉపయోగించి వేగం, ప్రయాణించిన దూరం మరియు రోబోట్ యొక్క యాంగిల్ వంటి కొన్ని ముఖ్యమైన పారామితులను కొలవడానికి. ఈ పారామితులతో రోబోట్ దాని వాస్తవ ప్రపంచ స్థితిని తెలుసుకోగలదు మరియు సురక్షితంగా నావిగేట్ చెయ్యడానికి దాన్ని ఉపయోగించవచ్చు.
సాధారణ లైన్ అనుచరుడి నుండి మరింత సంక్లిష్టమైన స్వీయ-బ్యాలెన్సింగ్ లేదా ఫ్లోర్ క్లీనింగ్ రోబోట్ వరకు రోబోలను నిర్మించడానికి అభిరుచి ఉన్నవారిలో ఆర్డునో అత్యంత ప్రాచుర్యం పొందిన ఎంపిక. మీరు రోబోటిక్స్ విభాగంలో అన్ని రకాల రోబోట్లను తనిఖీ చేయవచ్చు.
మేము లిథియం బ్యాటరీతో నడిచే చిన్న రోబోట్ను నిర్మిస్తాము మరియు జాయ్స్టిక్ను ఉపయోగించి డ్రైవ్ చేస్తాము. రన్టైమ్లో మనం రోబోట్ యొక్క వేగం, దూరం మరియు కోణాన్ని కొలవవచ్చు మరియు ఆర్డునోకు కనెక్ట్ చేయబడిన ఎల్సిడి డిస్ప్లేలో నిజ సమయంలో ప్రదర్శించవచ్చు. ఈ పారామితులను కొలవడంలో ఈ ప్రాజెక్ట్ మీకు సహాయపడుతుంది, మీరు దీన్ని పూర్తి చేసిన తర్వాత, మీ బోట్ను స్వయంచాలకంగా అవసరమైన విధంగా ఆపరేట్ చేయడానికి ఈ పారామితులను ఉపయోగించవచ్చు. ఆసక్తికరంగా అనిపిస్తుందా? కాబట్టి ప్రారంభిద్దాం.
LM393 స్పీడ్ సెన్సార్ మాడ్యూల్ (H206)
మేము ప్రాజెక్ట్ కోసం సర్క్యూట్ రేఖాచిత్రం మరియు కోడ్లోకి ప్రవేశించే ముందు, ప్రాజెక్ట్లో కీలక పాత్ర పోషిస్తున్నందున LM393 స్పీడ్ సెన్సార్ మాడ్యూల్ను అర్థం చేసుకుందాం. H206 స్పీడ్ సెన్సర్ మాడ్యూల్ ఒక ఇన్ఫ్రారెడ్ లైట్ కలిగి సెన్సార్ LM393 వోల్టేజ్ comparator IC అందుకే పేరు LM393 స్పీడ్ సెన్సర్ సంఘటిత. మాడ్యూల్ గ్రిడ్ ప్లేట్ను కలిగి ఉంటుంది, ఇది మోటారు యొక్క భ్రమణ షాఫ్ట్కు అమర్చాలి. అన్ని భాగాలు క్రింద ఉన్న చిత్రంలో లేబుల్ చేయబడ్డాయి.
ఇన్ఫ్రారెడ్ లైట్ సెన్సర్ ఒక IR LED మరియు ఒక ఫోటో-ట్రాన్సిస్టర్ ఒక చిన్న గలగలమని వేరు కలిగి. పైన చూపిన విధంగా మొత్తం సెన్సార్ అమరిక బ్లాక్ హౌసింగ్లో ఉంచబడుతుంది. గ్రిడ్ ప్లేట్ స్లాట్లను కలిగి ఉంటుంది, ఇన్ఫ్రారెడ్ లైట్ సెన్సార్ యొక్క అంతరం మధ్య ప్లేట్ అమర్చబడి ఉంటుంది, ఈ విధంగా సెన్సార్ గ్రిడ్ ప్లేట్లోని అంతరాలను గ్రహించగలదు. గ్రిడ్ ప్లేట్లోని ప్రతి గ్యాప్ గ్యాప్ గుండా వెళుతున్నప్పుడు IR సెన్సార్ను ప్రేరేపిస్తుంది; ఈ ట్రిగ్గర్లను కంపారిటర్ ఉపయోగించి వోల్టేజ్ సిగ్నల్గా మారుస్తారు. కంపారిటర్ ON సెమీకండక్టర్స్ నుండి LM393 IC తప్ప మరొకటి కాదు. మాడ్యూల్ మూడు పిన్లను కలిగి ఉంది, వీటిలో రెండు మాడ్యూల్కు శక్తినివ్వడానికి మరియు ట్రిగ్గర్ల సంఖ్యను లెక్కించడానికి ఒక అవుట్పుట్ పిన్ ఉపయోగించబడుతుంది.
H206 సెన్సార్ మౌంటు అమరిక
ఈ రకమైన సెన్సార్లను మౌంట్ చేయడం కొంచెం గమ్మత్తైనది. షాఫ్ట్ రెండు వైపులా పొడుచుకు వచ్చిన మోటారులకు మాత్రమే దీనిని అమర్చవచ్చు. షాఫ్ట్ యొక్క ఒక వైపు చక్రానికి అనుసంధానించబడి ఉండగా, మరొక వైపు పైన చూపిన విధంగా గ్రిడ్ ప్లేట్ను మౌంట్ చేయడానికి ఉపయోగిస్తారు.
చక్రం మరియు పలక ఒకే షాఫ్ట్కు అనుసంధానించబడినందున రెండూ ఒకే వేగంతో తిరుగుతాయి మరియు తద్వారా ప్లేట్ యొక్క వేగాన్ని కొలవడం ద్వారా మనం చక్రం యొక్క వేగాన్ని కొలవవచ్చు. గ్రిడ్ ప్లేట్లోని ఖాళీలు ఐఆర్ సెన్సార్ గుండా వెళుతున్నాయని నిర్ధారించుకోండి, అప్పుడే సెన్సార్ గుండా వెళ్ళిన అంతరాల సంఖ్యను లెక్కించగలుగుతుంది. పేర్కొన్న పరిస్థితిని సంతృప్తిపరిచినంత వరకు సెన్సార్ను మౌంట్ చేయడానికి మీరు మీ స్వంత యాంత్రిక అమరికతో కూడా రావచ్చు. రోబోట్కు అడ్డంకుల గురించి మార్గనిర్దేశం చేయడానికి ఐఆర్ సెన్సార్ సాధారణంగా అనేక రోబోటిక్స్ ప్రాజెక్టులలో ఉపయోగించబడుతుంది.
పైన చూపిన గ్రిడ్ ప్లేట్లో 20 స్లాట్లు (గ్రిడ్లు) ఉన్నాయి. అంటే చక్రం యొక్క పూర్తి భ్రమణానికి సెన్సార్ 20 అంతరాలను కనుగొంటుంది. సెన్సార్ గుర్తించిన అంతరాల సంఖ్యను లెక్కించడం ద్వారా మనం చక్రం ప్రయాణించిన దూరాన్ని లెక్కించవచ్చు, అదేవిధంగా చక్రం యొక్క వేగాన్ని మనం గుర్తించగలిగే అంతరాలను సెన్సార్ ఎంత వేగంగా కనుగొంటుందో కొలవడం ద్వారా. మా రోబోట్లో ఈ సెన్సార్ రెండు చక్రాలకు అమర్చబడి ఉంటుంది మరియు అందువల్ల రోబోట్ యొక్క కోణాన్ని కూడా కనుగొనవచ్చు. అయితే భ్రమణ కోణాన్ని యాక్సిలెరోమీటర్ లేదా గైరోస్కోప్ ఉపయోగించి మరింత తెలివిగా లెక్కించవచ్చు, యాక్సిలెరోమీటర్ మరియు గైరోస్కోప్ను ఆర్డునోతో ఇంటర్ఫేస్ చేయడానికి ఇక్కడ నేర్చుకోండి మరియు వాటిని ఉపయోగించి భ్రమణ కోణాన్ని కొలవడానికి ప్రయత్నించండి.
DIY Arduino LM393 స్పీడ్ సెన్సార్ రోబోట్ సర్క్యూట్ రేఖాచిత్రం
ఈ స్పీడ్ మరియు డిస్టెన్స్ సెన్సింగ్ రోబోట్ యొక్క పూర్తి సర్క్యూట్ రేఖాచిత్రం క్రింద చూపబడింది. బాట్ దాని మెదడుగా ఆర్డునో నానోను కలిగి ఉంటుంది, చక్రాల కోసం రెండు DC మోటార్లు L298N H- బ్రిడ్జ్ మోటార్ డ్రైవర్ మాడ్యూల్ చేత నడపబడతాయి. బోట్ యొక్క వేగం మరియు దిశను నియంత్రించడానికి జాయ్ స్టిక్ ఉపయోగించబడుతుంది మరియు బోట్ యొక్క వేగం, దూరం మరియు దేవదూతను కొలవడానికి రెండు స్పీడ్ సెన్సార్లు H206 ఉపయోగించబడుతుంది. కొలిచిన విలువలు 16x2 LCD మాడ్యూల్లో ప్రదర్శించబడతాయి. LCD కి అనుసంధానించబడిన పొటెన్టోమీటర్ LCD యొక్క విరుద్ధతను సర్దుబాటు చేయడానికి ఉపయోగించబడుతుంది మరియు LCD యొక్క బ్యాక్లైట్కు ప్రవహించే ప్రస్తుతాన్ని పరిమితం చేయడానికి రెసిస్టర్ ఉపయోగించబడుతుంది.
పూర్తి సర్క్యూట్ ఒక 7.4V లిథియం సెల్ శక్తితో. ఈ 7.4 వి మోటార్ డ్రైవర్ మాడ్యూల్ యొక్క 12 వి పిన్కు సరఫరా చేయబడుతుంది. మోటారు డ్రైవర్ మాడ్యూల్లోని వోల్టేజ్ రెగ్యులేటర్ 7.4V ని నియంత్రిత + 5 విగా మారుస్తుంది, ఇది ఆర్డునో, ఎల్సిడి, సెన్సార్లు మరియు జాయ్స్టిక్లకు శక్తినివ్వడానికి ఉపయోగించబడుతుంది.
మోటారును ఆర్డునో యొక్క 8,9,10 మరియు 11 డిజిటల్ పిన్స్ నియంత్రిస్తాయి. మోటారు వేగాన్ని కూడా నియంత్రించవలసి ఉన్నందున మనం మోటారు యొక్క సానుకూల టెర్మినల్కు పిడబ్ల్యుఎం సిగ్నల్లను సరఫరా చేయాలి. అందువల్ల మనకు పిన్ 9 మరియు 10 ఉన్నాయి, ఇవి రెండూ పిడబ్ల్యుఎం సామర్థ్యం గల పిన్స్. X మరియు Y విలువలు వరుసగా అనలాగ్ పిన్స్ A2 మరియు A3 ఉపయోగించి జాయ్ స్టిక్ చదవబడతాయి.
గ్రిడ్ ప్లేట్లోని అంతరం గుర్తించినప్పుడు ట్రిగ్గర్ను ఉత్పత్తి చేసే H206 సెన్సార్ మనకు తెలుసు. సరైన వేగం మరియు దూరాన్ని లెక్కించడానికి ఈ ట్రిగ్గర్లను ఎల్లప్పుడూ ఖచ్చితంగా చదవకూడదు కాబట్టి ట్రిగ్గర్ (అవుట్పుట్) పిన్లు రెండూ ఆర్డునో బోర్డు యొక్క బాహ్య అంతరాయ పిన్ 2 మరియు 3 లకు అనుసంధానించబడి ఉన్నాయి. మొత్తం సర్క్యూట్ను చట్రంపై సమీకరించండి మరియు వివరించిన విధంగా స్పీడ్ సెన్సార్ను మౌంట్ చేయండి, కనెక్షన్లు పూర్తయిన తర్వాత నా బోట్ క్రింద ఉన్నట్లు అనిపించింది. మీరు కూడా చేయవచ్చు వీడియోను సెన్సార్ ఎలా తగిలించారు తెలుసుకోవటానికి ఈ పేజీ చివర.
ఇప్పుడు హార్డ్వేర్ భాగం పూర్తయింది, మనం బోట్ యొక్క వేగం, దూరం మరియు సింగిల్ను ఎలా కొలుస్తామో అనే తర్కాల్లోకి ప్రవేశించి, ఆపై ప్రోగ్రామింగ్ విభాగానికి వెళ్దాం.
LM393 స్పీడ్ సెన్సార్ మాడ్యూల్తో వేగాన్ని కొలవడం వెనుక లాజిక్
సెన్సార్ మౌంటు సెటప్ నుండి LM393 స్పీడ్ సెన్సార్ మాడ్యూల్ (H206) గ్రిడ్ ప్లేట్లో ఉన్న అంతరాలను మాత్రమే కొలుస్తుందని మీరు తెలుసుకోవాలి. మౌంటు చేసేటప్పుడు చక్రం (దీని వేగాన్ని కొలవాలి) మరియు గ్రిడ్ ప్లేట్ ఒకే వేగంతో తిరుగుతున్నాయని నిర్ధారించుకోవాలి. ఇక్కడ మాదిరిగా, మేము చక్రం మరియు ప్లేట్ రెండింటినీ ఒకే షాఫ్ట్లో అమర్చినందున అవి రెండూ ఒకే వేగంతో తిరుగుతాయి.
మా సెటప్లో బోట్ యొక్క కోణాన్ని కొలవడానికి ప్రతి చక్రానికి రెండు సెన్సార్లను అమర్చాము. మీ లక్ష్యం వేగం మరియు దూరాన్ని మాత్రమే కొలవడం అయితే మేము ఏ ఒక్క చక్రంలోనైనా సెన్సార్ను మౌంట్ చేయవచ్చు. సెన్సార్ యొక్క అవుట్పుట్ (ట్రిగ్గర్ సిగ్నల్స్) సాధారణంగా మైక్రోకంట్రోలర్ యొక్క బాహ్య అంతరాయ పిన్తో అనుసంధానించబడుతుంది. గ్రిడ్ ప్లేట్లోని అంతరం గుర్తించిన ప్రతిసారీ అంతరాయం ట్రిగ్గర్ అవుతుంది మరియు ISR (ఇంటరప్ట్ సర్వీస్ రొటీన్) లోని కోడ్ అమలు అవుతుంది. అలాంటి రెండు ట్రిగ్గర్ల మధ్య సమయ వ్యవధిని మనం లెక్కించగలిగితే, మేము చక్రం యొక్క వేగాన్ని లెక్కించవచ్చు.
ఆర్డునోలో మిల్లీస్ () ఫంక్షన్ను ఉపయోగించడం ద్వారా ఈ సమయ విరామాన్ని సులభంగా లెక్కించవచ్చు. ఈ మిల్లీస్ ఫంక్షన్ పరికరాన్ని శక్తివంతం చేసే సమయం నుండి ప్రతి మిల్లీ సెకనుకు 1 చొప్పున పెంచుతుంది. కాబట్టి మొదటి అంతరాయం సంభవించినప్పుడు మనం మిల్లీస్ () యొక్క విలువను డమ్మీ వేరియబుల్లో (ఈ కోడ్లోని పెవ్టైమ్ వంటివి ) సేవ్ చేయవచ్చు మరియు రెండవ అంతరాయం సంభవించినప్పుడు మనం పెవ్టైమ్ విలువను తీసివేయడం ద్వారా తీసుకున్న సమయాన్ని మిల్లీస్ ().
సమయం తీసుకున్న = ప్రస్తుత సమయం - మునుపటి సమయం timetaken = millis () - pevtime ; // timetaken లో millisec
మేము తీసుకున్న సమయాన్ని లెక్కించిన తర్వాత, ఈ క్రింది సూత్రాలను ఉపయోగించి rpm విలువను లెక్కించవచ్చు, ఇక్కడ (1000 / టైమ్టేక్) RPS (సెకనుకు విప్లవాలు) ఇస్తుంది మరియు RPS ను RPM గా మార్చడానికి ఇది 60 గుణించాలి (నిమిషానికి విప్లవాలు).
rpm = (1000 / టైమ్టేకెన్) * 60;
ఆర్పిఎమ్ను లెక్కించిన తరువాత, చక్రం యొక్క వ్యాసార్థం మనకు తెలిస్తే, ఈ క్రింది సూత్రాలను ఉపయోగించి వాహనం యొక్క వేగాన్ని లెక్కించవచ్చు.
వేగం = 2π × RPS wheel చక్రం యొక్క వ్యాసార్థం. v = వ్యాసార్థం_ఆఫ్_వీల్ * rpm * 0.104
గమనిక, పై సూత్రం m / s లో వేగాన్ని లెక్కించడానికి, మీరు km / hr లో లెక్కించాలనుకుంటే 0.0104 ను 0.376 తో భర్తీ చేయండి. విలువ 0.104 ఎలా పొందాలో తెలుసుకోవాలనే ఆసక్తి మీకు ఉంటే, అప్పుడు చక్రం యొక్క V = 2π × RPS × వ్యాసార్థం సూత్రాన్ని సరళీకృతం చేయడానికి ప్రయత్నించండి.
తిరిగే వస్తువు యొక్క వేగాన్ని కొలవడానికి హాల్ సెన్సార్ ఉపయోగించినప్పటికీ అదే సాంకేతికత ఉపయోగించబడుతుంది. కానీ హెచ్ 206 సెన్సార్ కోసం క్యాచ్ ఉంది, గ్రిడ్ ప్లేట్లో 20 స్లాట్లు ఉన్నాయి మరియు అందువల్ల రెండు స్లాట్ అంతరాల మధ్య సమయాన్ని కొలిచేందుకు మైక్రోకంట్రోలర్ను ఓవర్లోడ్ చేస్తుంది. అందువల్ల మేము చక్రం యొక్క పూర్తి భ్రమణంలో మాత్రమే వేగాన్ని కొలుస్తాము. ప్రతి గ్యాప్కు రెండు అంతరాయాలు ఉత్పత్తి అవుతాయి కాబట్టి (ప్రారంభంలో ఒకటి మరియు గ్యాప్ చివరిలో మరొకటి) ఒక పూర్తి భ్రమణాన్ని చేయడానికి చక్రం కోసం మొత్తం 40 అంతరాయాలను పొందుతాము. కాబట్టి మేము నిజంగా చక్రం యొక్క వేగాన్ని లెక్కించే ముందు 40 అంతరాయాల కోసం వేచి ఉంటాము. దాని కోసం కోడ్ క్రింద చూపబడింది
if (భ్రమణం> = 40) { timetaken = mlis () - pevtime; // మిల్లీసెక్ ఆర్పిఎమ్లో టైమ్టేకాన్ = (1000 / టైమ్టేకెన్) * 60; rpm pevtime = మిల్లీస్ () లెక్కించడానికి // సూత్రాలు ; భ్రమణం = 0; }
ఈ పద్ధతిలో ఉన్న మరొక లోపం ఏమిటంటే, వేగం యొక్క విలువ సున్నాకి పడిపోదు, ఎందుకంటే అంతరాయం ఎల్లప్పుడూ rpm విలువను లెక్కించడానికి చక్రం ఒక భ్రమణాన్ని పూర్తి చేయడానికి వేచి ఉంటుంది. రెండు అంతరాయాల మధ్య సమయ వ్యవధిని పర్యవేక్షించే సరళమైన కోడ్ను జోడించడం ద్వారా ఈ లోపాన్ని సులభంగా అధిగమించవచ్చు మరియు ఇది సాధారణం కంటే మించి ఉంటే, అప్పుడు మేము rpm మరియు వేగం యొక్క విలువను సున్నాగా బలవంతం చేయవచ్చు. కింది కోడ్లోని లింక్ మేము సమయ వ్యత్యాసాన్ని తనిఖీ చేయడానికి వేరియబుల్ డైటైమ్ని ఉపయోగించాము మరియు అది 500 మిల్లీ సెకన్లకు మించి ఉంటే వేగం మరియు ఆర్పిఎమ్ విలువ సున్నాగా ఉంటుంది.
/ * సున్నా డ్రాప్ వాహనం ఆగిపోయింది ఉంటే * / ఉంటే (millis () - dtime> 500) // ఏ inetrrupt 500 మిసె కనుగొనబడలేదు { rpm = v = 0; // rpm మరియు వేగాన్ని సున్నా dtime = మిల్లీస్ () గా చేయండి; }
చక్రం ప్రయాణించిన దూరాన్ని కొలవడం వెనుక తర్కం
చక్రం ఒక పూర్తి భ్రమణాన్ని చేసినప్పుడు Arduino 40 అంతరాయాలను గ్రహిస్తుందని మాకు ఇప్పటికే తెలుసు. కాబట్టి చక్రం చేసిన ప్రతి భ్రమణానికి చక్రం ప్రయాణించే దూరం చక్రం చుట్టుకొలతకు సమానం అని స్పష్టంగా తెలుస్తుంది. చక్రం యొక్క వ్యాసార్థం మనకు ఇప్పటికే తెలుసు కాబట్టి, దిగువ సూత్రాన్ని ఉపయోగించి కప్పబడిన దూరాన్ని సులభంగా లెక్కించవచ్చు
దూరం = 2πr * భ్రమణాల దూరం = (2 * 3.141 * వ్యాసార్థం_ఆ_వీల్) * (ఎడమ_ఇంటర్ / 40)
ఇక్కడ చక్రం యొక్క చుట్టుకొలత 2πr సూత్రాన్ని ఉపయోగించి లెక్కించబడుతుంది మరియు తరువాత అది చక్రం చేసిన భ్రమణాల సంఖ్యతో గుణించబడుతుంది.
బోట్ యొక్క కోణాన్ని కొలవడం వెనుక తర్కం
రోబోట్ యొక్క దేవదూతను నిర్ణయించడానికి అనేక మార్గాలు ఉన్నాయి. ఈ విలువలను నిర్ణయించడానికి యాక్సిలెరోమీటర్లు మరియు గైరోస్కోప్లను సాధారణంగా ఉపయోగిస్తారు. కానీ మరో చౌక విధానం ఏమిటంటే రెండు చక్రాలపై H206 సెన్సార్ను ఉపయోగించడం. ఈ విధంగా ప్రతి చక్రం ఎన్ని మలుపులు చేసిందో మనకు తెలుస్తుంది. కోణం ఎలా లెక్కించబడుతుందో ఈ క్రింది బొమ్మ వివరిస్తుంది.
రోబోట్ ప్రారంభించినప్పుడు అది ఎదుర్కొంటున్న కోణం 0 as గా పరిగణించబడుతుంది. అక్కడ నుండి ఎడమవైపు తిరుగుతుంది కోణం ప్రతికూలంగా పెరుగుతుంది మరియు అది కుడివైపు తిరితే దేవదూత సానుకూలంగా పెరుగుతుంది. అవగాహన కోసం చిత్రంలో చూపిన విధంగా -90 నుండి +90 పరిధిని పరిశీలిద్దాం. రెండు చక్రాలు ఒకే వ్యాసంతో ఉన్నందున అటువంటి అమరికలో, ఏదైనా చక్రం పూర్తి భ్రమణాన్ని చేస్తే, మేము 90 of కోణంలో తిరిగే బోట్.
ఉదాహరణకు, ఎడమ చక్రం ఒక పూర్తి భ్రమణాన్ని (80 అంతరాయాలు) చేస్తే, బోట్ 90 ° ఎడమ వైపుకు తిరుగుతుంది మరియు అదేవిధంగా కుడి చక్రం ఒక పూర్తి భ్రమణాన్ని (80 అంతరాయాలు) చేస్తే, బోట్ -90 right కుడి వైపుకు మారుతుంది. ఆర్డునో ఒక చక్రంలో 80 అంతరాయాలను గుర్తించినట్లయితే, బోట్ 90 by ద్వారా మారిందని మరియు బోట్ సానుకూల (కుడి) లేదా ప్రతికూల (ఎడమ) ద్వారా మారిందా అని మనం ఏ చక్రం ఆధారంగా చెప్పగలమో ఇప్పుడు మనకు తెలుసు. కాబట్టి దిగువ సూత్రాలను ఉపయోగించి ఎడమ మరియు కుడి కోణాన్ని లెక్కించవచ్చు
int angle_left = (left_intr% 360) * (90/80); int angle_right = (right_intr% 360) * (90/80);
80 యొక్క అంతరాయాన్ని చేసేటప్పుడు 90 కోణం కప్పబడి ఉంటుంది. ఫలిత విలువ గుణించిన సంఖ్య అంతరాయాలు. మేము 360 యొక్క మాడ్యులస్ను కూడా ఉపయోగించాము, తద్వారా ఫలిత విలువ 36 ని మించదు. ఎడమ మరియు కుడి కోణం రెండింటినీ లెక్కించిన తర్వాత, బోట్ ఎదుర్కొంటున్న ప్రభావవంతమైన కోణాన్ని ఎడమ కోణాన్ని లంబ కోణంలో తీసివేయడం ద్వారా పొందవచ్చు.
angle = angle_right - angle_left;
ఆర్డునో రోబోట్ కోడ్
ఈ వేగం మరియు కోణ కొలత రోబోట్ కోసం పూర్తి ఆర్డునో కోడ్ ఈ పేజీ చివరిలో చూడవచ్చు. పై లాజిక్లను ఉపయోగించి బోట్ యొక్క వేగం, దూరం మరియు కోణాన్ని లెక్కించడం మరియు దానిని ఎల్సిడి తెరపై ప్రదర్శించడం ప్రోగ్రామ్ యొక్క లక్ష్యం. అలా కాకుండా ఇది జాయ్ స్టిక్ ఉపయోగించి బోట్ ను నియంత్రించే ఎంపికను అందించాలి.
మేము రెండు మోటారుల కోసం డిజిటల్ I / O పిన్లను నిర్వచించడం ద్వారా ప్రోగ్రామ్ను ప్రారంభిస్తాము. మేము మోటారు యొక్క వేగాన్ని కూడా నియంత్రించాల్సి ఉందని గమనించండి మరియు అందువల్ల మోటారులను నియంత్రించడానికి ఆర్డునోపై పిడబ్ల్యుఎం పిన్లను ఉపయోగించాలి. ఇక్కడ మేము పిన్ 8,9,10 మరియు 11 ను ఉపయోగించాము.
# define LM_pos 9 // ఎడమ మోటార్ # define LM_neg 8 // ఎడమ మోటార్ # define RM_pos 10 // కుడి మోటార్ # define RM_neg 11 // కుడి మోటార్ # define joyX A2 # define joyY A3
కప్పబడిన వేగం మరియు దూరాన్ని కొలవడానికి మనం చక్రం యొక్క వ్యాసార్థాన్ని తెలుసుకోవాలి, విలువను కొలవండి మరియు క్రింద చూపిన విధంగా మీటర్లలో నమోదు చేయండి. నా బోట్ కోసం వ్యాసార్థం 0.033 మీటర్లు, కానీ మీ బోట్ ఆధారంగా ఇది మీకు భిన్నంగా ఉంటుంది.
ఫ్లోట్ వ్యాసార్థం_ఆఫ్_వీల్ = 0.033; // మీ చక్రం యొక్క వ్యాసార్థాన్ని కొలవండి మరియు ఇక్కడ సెం.మీ.
సెటప్ ఫంక్షన్ లోపల, మేము అన్ని విలువలను సున్నాగా ప్రారంభించాము మరియు తరువాత LCD లో పరిచయ వచనాన్ని ప్రదర్శిస్తాము. డీబగ్గింగ్ ప్రయోజనం కోసం మేము సీరియల్ మానిటర్ను కూడా ప్రారంభించాము. అప్పుడు స్పీడ్ సెన్సార్లు H206 బాహ్య అంతరాయాలుగా పిన్ 2 మరియు 3 లకు అనుసంధానించబడిందని మేము పేర్కొన్నాము. అక్కడే అంతరాయం కనుగొనబడినప్పుడు ISR ఫంక్షన్ Left_ISR మరియు Right_ISR తదనుగుణంగా అమలు చేయబడతాయి.
void setup () { భ్రమణం = rpm = pevtime = 0; // అన్ని వేరియబుల్ను సున్నాకి ప్రారంభించండి Serial.begin (9600); lcd.begin (16, 2); // 16 * 2 LCD lcd.print ను ప్రారంభించండి ("బొట్ మానిటర్"); // పరిచయ సందేశ పంక్తి 1 lcd.setCursor (0, 1); lcd.print ("- సర్క్యూట్ డైజెస్ట్"); // పరిచయ సందేశ పంక్తి 2 ఆలస్యం (2000); lcd.clear (); lcd.print ("Lt: Rt:"); lcd.setCursor (0, 1); lcd.print ("S: D: A:"); పిన్మోడ్ (LM_pos, OUTPUT); పిన్మోడ్ (LM_neg, OUTPUT); పిన్మోడ్ (RM_pos, OUTPUT); పిన్మోడ్ (RM_neg, OUTPUT); డిజిటల్ రైట్ (LM_neg, LOW); డిజిటల్ రైట్ (RM_neg, LOW); అటాచ్ఇంటరప్ట్ (డిజిటల్ పిన్టోఇంటరప్ట్ (2), లెఫ్ట్_ఐఎస్ఆర్, ఛేంజ్); ఎడమ చక్రాల సెన్సార్ను ప్రేరేపించినప్పుడు ఎడమ_ఐఎస్ఆర్ అటాచ్ఇంటరప్ట్ (డిజిటల్ పిన్టోఇంటరప్ట్ (3), రైట్_ఐఎస్ఆర్, ఛేంజ్); // కుడి చక్ర సెన్సార్ ప్రేరేపించబడినప్పుడు కుడి_ఐఎస్ఆర్ అంటారు }
Left_ISR దినచర్యలో, మేము ఎడమ_ఇన్టర్ అని పిలువబడే వేరియబుల్ను పెంచుతాము, తరువాత ఇది బోట్ యొక్క కోణాన్ని కొలవడానికి ఉపయోగించబడుతుంది. కుడి_ఐఎస్ఆర్ లోపల మేము అదే పని చేస్తాము కాని అదనంగా మేము ఇక్కడ వేగాన్ని కూడా లెక్కిస్తాము. ప్రతి అంతరాయానికి వేరియబుల్ భ్రమణం పెంచబడుతుంది మరియు తరువాత వేగాన్ని లెక్కించడానికి పై తర్కం ఉపయోగించబడుతుంది.
void Left_ISR () { left_intr ++; ఆలస్యం (10); } శూన్యమైన Right_ISR () { right_intr ++; ఆలస్యం (10); భ్రమణం ++; dtime = మిల్లీస్ (); if (భ్రమణం> = 40) { timetaken = mlis () - pevtime; // మిల్లీసెక్ rpm లో టైమ్టేకాన్ = (1000 / టైమ్టేకెన్) * 60; rpm pevtime = మిల్లీస్ () లెక్కించడానికి // సూత్రాలు ; భ్రమణం = 0; } }
ప్రధాన అనంతమైన లూప్ ఫంక్షన్ లోపల మేము జాయ్ స్టిక్ నుండి X మరియు Y విలువలను పర్యవేక్షిస్తాము. జాయ్ స్టిక్ కదిలితే విలువ ఆధారంగా మేము బాట్ ను తదనుగుణంగా నియంత్రిస్తాము. బోట్ యొక్క వేగం జాయ్ స్టిక్ ఎంత దూరం నెట్టబడుతుందో దానిపై ఆధారపడి ఉంటుంది.
int xValue = అనలాగ్ రీడ్ (జాయ్ఎక్స్); int yValue = అనలాగ్ రీడ్ (joyY); పూర్ణాంక త్వరణం = పటం (xValue, 500, 0, 0, 200); if (xValue <500) { అనలాగ్రైట్ (LM_pos, త్వరణం); అనలాగ్రైట్ (RM_pos, త్వరణం); } else { అనలాగ్రైట్ (LM_pos, 0); అనలాగ్రైట్ (RM_pos, 0); } if (yValue> 550) అనలాగ్రైట్ (RM_pos, 80); if (yValue <500) అనలాగ్రైట్ (LM_pos, 100);
ఇది వినియోగదారుని బోట్ను తరలించడానికి మరియు పొందిన విలువలు.హించినట్లుగా ఉన్నాయో లేదో తనిఖీ చేయడానికి సహాయపడుతుంది. చివరగా మనం పై లాజిక్లను ఉపయోగించి బోట్ యొక్క వేగం, దూరం మరియు కోణాన్ని లెక్కించవచ్చు మరియు ఈ క్రింది కోడ్ను ఉపయోగించి ఎల్సిడిలో ప్రదర్శించవచ్చు.
v = వ్యాసార్థం_ఆఫ్_వీల్ * rpm * 0.104; //0.033 మీటర్ దూరంలోని చక్రం యొక్క వ్యాసార్థం = (2 * 3.141 * వ్యాసార్థం_ఆఫ్_వీల్) * (ఎడమ_ఇంటర్ / 40); int angle_left = (left_intr% 360) * (90/80); int angle_right = (right_intr% 360) * (90/80); angle = angle_right - angle_left; lcd.setCursor (3, 0); lcd.print (""); lcd.setCursor (3, 0); lcd.print (left_intr); lcd.setCursor (11, 0); lcd.print (""); lcd.setCursor (11, 0); lcd.print (right_intr); lcd.setCursor (2, 1); lcd.print (""); lcd.setCursor (2, 1); lcd.print (v); lcd.setCursor (9, 1); lcd.print (""); lcd.setCursor (9, 1); lcd.print (దూరం); lcd.setCursor (13, 1); lcd.print (""); lcd.setCursor (13, 1); lcd.print (కోణం);
దూరం, వేగం మరియు కోణాన్ని కొలవడానికి ఆర్డునో రోబోట్ను పరీక్షించడం
మీ హార్డ్వేర్ సిద్ధమైన తర్వాత కోడ్ను మీ ఆర్డునోలోకి అప్లోడ్ చేయండి మరియు మీ బోట్ను తరలించడానికి జాయ్స్టిక్ని ఉపయోగించండి. బోట్ యొక్క వేగం, దాని ద్వారా కప్పబడిన దూరం మరియు కోణం క్రింద చూపిన విధంగా LCD లో ప్రదర్శించబడతాయి.
LCD లో Lt మరియు Rt అనే పదం వరుసగా ఎడమ అంతరాయ గణన మరియు కుడి అంతరాయ గణనను సూచిస్తుంది. సెన్సార్ ద్వారా గుర్తించబడిన ప్రతి గ్యాప్ కోసం ఈ విలువలు పెరుగుతున్నట్లు మీరు కనుగొనవచ్చు. టెమ్ ఎస్ బోట్ యొక్క వేగాన్ని m / sec లో సూచిస్తుంది మరియు D అనే పదం మీటర్లలో కప్పబడిన దూరాన్ని సూచిస్తుంది. బోట్ యొక్క కోణం చివరలో 0 ° నిటారుగా ఉంటుంది మరియు ఇది సవ్యదిశలో తిరగడానికి ప్రతికూలంగా ఉంటుంది మరియు సవ్యదిశలో భ్రమణానికి అనుకూలంగా ఉంటుంది.
బోట్ ఎలా పనిచేస్తుందో అర్థం చేసుకోవడానికి మీరు ఈ పేజీ చివరిలో వీడియోను కూడా చూడవచ్చు. మీరు ప్రాజెక్ట్ను అర్థం చేసుకున్నారని మరియు దానిని నిర్మించడం ఆనందించారని ఆశిస్తున్నాము. మీకు ఏవైనా సమస్యలు ఉంటే వాటిని వ్యాఖ్య విభాగంలో ఉంచండి మరియు తిరిగి స్పందించడంలో నేను ఉత్తమంగా ప్రయత్నిస్తాను. శీఘ్ర సాంకేతిక సహాయం కోసం మీరు ఫోరమ్లను కూడా ఉపయోగించవచ్చు.