- భాగాలు అవసరం
- 3D ప్రింటెడ్ రోబోటిక్ ARM ను సిద్ధం చేస్తోంది
- సర్క్యూట్ రేఖాచిత్రం
- రోబోటిక్ ఆర్మ్ కోసం ప్రోగ్రామింగ్ LPC2148 లో పాల్గొన్న దశలు
- కోడింగ్ వివరణ
- పుష్ బటన్లను ఉపయోగించి తిప్పడానికి సర్వో మోటారును ఎంచుకోవడం
- పిక్ అండ్ ప్లేస్ రోబోటిక్ ఆర్మ్ యొక్క పని
రోబోటిక్ ఆర్మ్స్, మనోహరమైన ఇంజనీరింగ్ సృష్టిలలో ఒకటి మరియు మానవ చేయి వలె సంక్లిష్టమైన పనులను చేయటానికి ఈ విషయాలు వంపు మరియు పాన్ చూడటం ఎల్లప్పుడూ మనోహరంగా ఉంటుంది. ఈ రోబోటిక్ ఆయుధాలను సాధారణంగా అసెంబ్లీ లైన్లోని పరిశ్రమలలో వెల్డింగ్, డ్రిల్లింగ్, పెయింటింగ్ మొదలైన తీవ్రమైన యాంత్రిక పనులను చూడవచ్చు, సంక్లిష్ట శస్త్రచికిత్సా ఆపరేషన్లు చేయడానికి ఇటీవల అధిక ఖచ్చితత్వంతో అధునాతన రోబోటిక్ ఆయుధాలను కూడా అభివృద్ధి చేస్తున్నారు. కాబట్టి ఈ ట్యుటోరియల్లో ARM7-LPC2148 మైక్రోకంట్రోలర్ను ఉపయోగించి ఒక సాధారణ రోబోటిక్ ఆర్మ్ను నిర్మించుకుందాం, కొన్ని పొటెన్షియోమీటర్లను మాన్యువల్గా నియంత్రించడం ద్వారా ఒక వస్తువును ఎంచుకోవడం మరియు ఉంచడం.
ఈ ట్యుటోరియల్లో మేము 3 డి ప్రింటెడ్ రోబోటిక్ ARM ను ఉపయోగిస్తాము, ఇది థింగ్వర్స్లో విధానాన్ని అనుసరించడం ద్వారా నిర్మించబడింది. రోబోటిక్ ARM కదలిక కోసం ARM 4 సర్వో మోటారును ఉపయోగిస్తుంది. మీకు ప్రింటర్ లేకపోతే, మా ఆర్డునో రోబోటిక్ ఆర్మ్ ప్రాజెక్ట్ కోసం మేము నిర్మించినట్లుగా సాధారణ కార్డ్బోర్డ్లతో మీ చేతిని కూడా నిర్మించవచ్చు. ప్రేరణ కోసం మీరు ఆర్డునో ఉపయోగించి మేము ఇంతకు ముందు నిర్మించిన రికార్డ్ మరియు ప్లే రోబోటిక్ ఆర్మ్ను కూడా చూడవచ్చు.
కాబట్టి ఇప్పుడు మన ప్రాజెక్ట్ కోసం విషయాలు సిద్ధం చేద్దాం
భాగాలు అవసరం
- 3D ప్రింటర్ రోబోటిక్ ARM
- ARM7-LPC2148
- ఎస్జీ -90 సర్వో మోటార్ (4)
- 10 కె పొటెన్టోమీటర్ (4)
- పుష్ బటన్ (4)
- LED (4)
- 5 వి (1 ఎ) డిసి పవర్ అడాప్టర్
- రెసిస్టర్లు (10 కె (4), 2.2 కె (4 శాతం)
- బ్రెడ్బోర్డ్
- వైర్లను కనెక్ట్ చేస్తోంది
3D ప్రింటెడ్ రోబోటిక్ ARM ను సిద్ధం చేస్తోంది
ఈ ట్యుటోరియల్లో ఉపయోగించిన 3 డి ప్రింటెడ్ రోబోటిక్ ఆర్మ్ థింగివర్స్లో లభించే EEZYbotARM ఇచ్చిన డిజైన్ను అనుసరించి తయారు చేయబడింది. 3 డి ప్రింటెడ్ రోబోటిక్ ఆర్మ్ను తయారుచేసే పూర్తి విధానం మరియు వీడియోతో సమీకరించే వివరాలు థింగైవర్స్ లింక్లో ఉన్నాయి, ఇది పైన ఉన్న వాటా.
4 సర్వో మోటార్స్తో సమావేశమైన తర్వాత నా 3 డి ప్రింటెడ్ రోబోటిక్ ఆర్మ్ యొక్క చిత్రం ఇది.
సర్క్యూట్ రేఖాచిత్రం
కింది చిత్రం ARM ఆధారిత రోబోటిక్ ఆర్మ్ యొక్క సర్క్యూట్ కనెక్షన్లను చూపుతుంది .
ప్రాజెక్ట్ కోసం సర్క్యూట్ కనెక్షన్లు సులభం. ప్రత్యేకమైన 5 వి డిసి పవర్ అడాప్టర్తో సర్వో మోటార్స్కు శక్తినిచ్చేలా చూసుకోండి. పొటెన్షియోమీటర్లు మరియు పుష్ బటన్ల కోసం మేము LPC2148 మైక్రోకంట్రోలర్ నుండి లభించే 3.3V ని ఉపయోగించవచ్చు.
ఇక్కడ మేము 4 పొటెన్షియోమీటర్లతో LPC2148 యొక్క 4 ADC పిన్లను ఉపయోగిస్తున్నాము. మరియు LPC2148 యొక్క 4 PWM పిన్స్ సర్వో మోటారు యొక్క PWM పిన్లతో అనుసంధానించబడి ఉన్నాయి. ఏ మోటారును ఆపరేట్ చేయాలో ఎంచుకోవడానికి మేము 4 పుష్ బటన్లను కూడా కనెక్ట్ చేసాము. కాబట్టి, బటన్ను నొక్కిన తరువాత సర్వో మోటర్ యొక్క స్థానాన్ని మార్చడానికి గౌరవనీయమైన పొటెన్టోమీటర్ వైవిధ్యంగా ఉంటుంది.
LPC2148 యొక్క GPIO తో అనుసంధానించబడిన పుష్ బటన్లు 10k యొక్క రెసిస్టర్ ద్వారా పుల్-డౌన్ మరియు మరొక చివర 3.3V తో అనుసంధానించబడి ఉన్నాయి. స్థానం మార్చడానికి ఏ సర్వో మోటారును ఎంచుకున్నారో సూచించడానికి 4 LED లు అనుసంధానించబడి ఉన్నాయి.
4 సర్వో మోటార్ & LPC2148 మధ్య సర్క్యూట్ కనెక్షన్లు:
LPC2148 | సర్వో మోటార్ |
పి.0.1 | SERVO1 (PWM- ఆరెంజ్) |
పి.0.7 | SERVO2 (PWM- ఆరెంజ్) |
పి.0.8 | SERVO3 (PWM- ఆరెంజ్) |
పి.0.21 | SERVO4 (PWM- ఆరెంజ్) |
4 పొటెన్టోమీటర్ & LPC2148 మధ్య సర్క్యూట్ కనెక్షన్లు:
LPC2148 | పొటెన్టోమీటర్ సెంటర్ పిన్ లెఫ్ట్ పిన్ - LPC2148 యొక్క 0V GND కుడి పిన్ - LPC2148 యొక్క 3.3V |
పి.0.25 | పొటెన్టోమీటర్ 1 |
పి.0.28 | పొటెన్టోమీటర్ 2 |
పి.0.29 | పొటెన్టోమీటర్ 3 |
పి.0.30 | పొటెన్టోమీటర్ 4 |
LPC2148 తో 4 LED ల యొక్క సర్క్యూట్ కనెక్షన్లు:
LPC2148 | LED యానోడ్ (అన్ని LED ల యొక్క కాథోడ్ GND) |
పి 1.28 | LED1 (యానోడ్) |
పి 1.29 | LED2 (యానోడ్) |
పి 1.30 | LED3 (యానోడ్) |
పి 1.31 | LED4 (యానోడ్) |
LPC2148 తో 4 పుష్ బటన్ల సర్క్యూట్ కనెక్షన్లు:
LPC2148 | పుష్ బటన్ (పుల్-డౌన్ రెసిస్టర్ 10 కె తో) |
పి 1.17 | పుష్బటన్ 1 |
పి 1.18 | పుష్బటన్ 2 |
పి 1.19 | పుష్బటన్ 3 |
పి 1.20 | పుష్బటన్ 4 |
రోబోటిక్ ఆర్మ్ కోసం ప్రోగ్రామింగ్ LPC2148 లో పాల్గొన్న దశలు
ఈ రోబోటిక్ ఆర్మ్ కోసం ప్రోగ్రామింగ్ చేయడానికి ముందు, LPC2148 లో PWM ను ఉత్పత్తి చేయడం మరియు ARM7-LPC2148 లో ADC ని ఉపయోగించడం గురించి తెలుసుకోవాలి. దాని కోసం, LPC2148 తో ఇంటర్ఫేసింగ్ సర్వో మోటారుపై మా మునుపటి ప్రాజెక్ట్లను చూడండి మరియు LPC2148 లో ADC ని ఎలా ఉపయోగించాలో చూడండి.
LPC2148 ఉపయోగించి ADC మార్పిడి
సర్వో మోటార్ స్థానాన్ని నియంత్రించడానికి PWM అవుట్పుట్ను ఉత్పత్తి చేయడానికి డ్యూటీ సైకిల్ విలువను సెట్ చేయడానికి మేము ADC విలువలను అందించాల్సిన అవసరం ఉంది. మేము పొటెన్షియోమీటర్ యొక్క ADC విలువలను కనుగొనాలి. నాలుగు సర్వో మోటారును నియంత్రించడానికి మాకు నాలుగు పొటెన్షియోమీటర్లు ఉన్నందున, మాకు LPC2148 యొక్క 4 ADC ఛానల్ అవసరం. ఇక్కడ ఈ ట్యుటోరియల్లో LPC2148 లో ఉన్న 4,1,2,3 వరుసగా ADC ఛానెల్ల యొక్క ADC పిన్లను (P0.25, P0.28, P0.29, P0.30) ఉపయోగిస్తున్నాము.
LPC2148 ఉపయోగించి సర్వో మోటార్ కోసం PWM సిగ్నల్స్ ఉత్పత్తి
సర్వో మోటార్ స్థానాన్ని నియంత్రించడానికి మేము పిడబ్ల్యుఎం సిగ్నల్స్ ఉత్పత్తి చేయాలి. మేము PWM యొక్క విధి చక్రం సెట్ చేయాలి. మాకు రోబోటిక్ ఆర్మ్తో అనుసంధానించబడిన నాలుగు సర్వో మోటార్లు ఉన్నాయి, కాబట్టి మాకు LPC2148 యొక్క 4 PWM ఛానల్ అవసరం. ఇక్కడ ఈ ట్యుటోరియల్లో LPC2148 లో ఉన్న 3,2,4,5 వరుసగా PWM ఛానెల్ల యొక్క PWM పిన్లను (P0.1, P0.7, P0.8, P0.21) ఉపయోగిస్తున్నాము.
ప్రోగ్రామింగ్ మరియు ఫ్లాషింగ్ హెక్స్ ఫైల్ LPC2148 కు
ప్రోగ్రామ్ ARM7-LPC2148 కి మనకు కైల్ యువిజన్ అవసరం & HEX కోడ్ను LPC2148 కు ఫ్లాష్ చేయడానికి ఫ్లాష్ మ్యాజిక్ సాధనం అవసరం. మైక్రో USB పోర్ట్ ద్వారా ARM7 స్టిక్ ప్రోగ్రామ్ చేయడానికి USB కేబుల్ ఇక్కడ ఉపయోగించబడుతుంది. మేము కైల్ ఉపయోగించి కోడ్ వ్రాసి హెక్స్ ఫైల్ను క్రియేట్ చేస్తాము, ఆపై HEX ఫైల్ ఫ్లాష్ మ్యాజిక్ ఉపయోగించి ARM7 స్టిక్ కు ఫ్లాష్ అవుతుంది. కైల్ యువిజన్ మరియు ఫ్లాష్ మ్యాజిక్ను ఇన్స్టాల్ చేయడం గురించి మరియు వాటిని ఎలా ఉపయోగించాలో గురించి మరింత తెలుసుకోవడానికి లింక్ను అనుసరించండి ARM7 LPC2148 మైక్రోకంట్రోలర్తో ప్రారంభించండి మరియు కైల్ యువిజన్ ఉపయోగించి ప్రోగ్రామ్ చేయండి.
కోడింగ్ వివరణ
ఈ రోబోటిక్ ఆర్మ్ ప్రాజెక్ట్ కోసం పూర్తి ప్రోగ్రామ్ ట్యుటోరియల్ చివరిలో ఇవ్వబడింది. ఇప్పుడు ప్రోగ్రామింగ్ గురించి వివరంగా చూద్దాం.
GPIO, PWM మరియు ADC ని ఉపయోగించడానికి LPC2148 యొక్క PORT ను కాన్ఫిగర్ చేస్తోంది:
పిన్ల కోసం పిఎన్సెల్ 1 రిజిస్టర్ను ఉపయోగించడం- పిసిల కోసం పిడిఎస్ పిడి 25, పి 0.28, పి 0.29, పి 0.30 కోసం ADC0.4, ADC0.1, ADC0.2, ADC0.3. మరియు, పిన్ P0.21 (1 << 10) కోసం PWM5 కోసం.
# AD04 (1 << 18) // P0.25 కొరకు AD0.4 ఫంక్షన్ను ఎంచుకోండి # AD01 ని నిర్వచించండి (1 << 24) // P0.28 కొరకు AD0.1 ఫంక్షన్ను ఎంచుకోండి # AD02 ని నిర్వచించండి (1 << 26) / / P0.29 కోసం AD0.2 ఫంక్షన్ను ఎంచుకోండి # AD03 ను నిర్వచించండి (1 << 28) // P0.30 PINSEL1 కోసం AD0.3 ఫంక్షన్ను ఎంచుకోండి - = AD04 - AD01 - AD02 - AD03 - (1 << 10);
LPC2148 యొక్క PW1, P0.7, P0.8 పిన్స్ కోసం PWM ఛానెల్స్ PWM3, PWM2, PWM4 ను ప్రారంభించడానికి PINSEL0 రిజిస్టర్ను ఉపయోగించడం.
PINSEL0 = 0x000A800A;
LED మరియు పుష్బటన్ కనెక్షన్ కోసం ఉపయోగించే PORT1 లోని అన్ని పిన్ల కోసం GPIO పిన్ ఫంక్షన్ను ప్రారంభించడానికి PINSEL2 రిజిస్టర్ను ఉపయోగించడం.
పిన్సెల్ 2 = 0x00000000;
LED పిన్లను అవుట్పుట్గా మరియు పుష్బటన్ పిన్లను ఇన్పుట్గా చేయడానికి IODIR1 రిజిస్టర్ ఉపయోగించబడుతుంది. (INPUT కోసం 0 & OUTPUT కోసం 1)
IODIR1 = ((0 << 17) - (0 << 18) - (0 << 19) - (0 << 20) - (1 << 28) - (1 << 29) - (1 << 30) - (1 << 31%);
పిన్ సంఖ్యలు నిర్వచించబడ్డాయి
# SwitchPinNumber1 17 // (P1.17 తో కనెక్ట్ చేయబడింది) # SwitchPinNumber2 18 // (P1.18 తో కనెక్ట్ చేయబడింది) # SwitchPinNumber3 19 // ను నిర్వచించండి (P1.19 తో కనెక్ట్ చేయబడింది) # SwitchPinNumber4 20 // (P1 తో కనెక్ట్ చేయబడింది). 20) # LedPinNumber1 28 // (P1.28 తో కనెక్ట్ చేయబడింది) # LedPinNumber2 29 // (P1.29 తో కనెక్ట్ చేయబడింది) # LedPinNumber3 30 // ని నిర్వచించండి (P1.30 తో కనెక్ట్ చేయబడింది) # LedPinNumber4 31 // (కనెక్ట్ చేయబడింది పి 1.31)
ADC మార్పిడి సెట్టింగ్ను కాన్ఫిగర్ చేస్తోంది
తరువాత ADC మార్పిడి మోడ్ మరియు ADC కోసం గడియారం AD0CR_setup రిజిస్టర్ ఉపయోగించి సెట్ చేయబడింది.
సంతకం చేయని దీర్ఘ AD0CR_setup = (CLKDIV << 8) - BURST_MODE_OFF - PowerUP; // ADC మోడ్ను ఏర్పాటు చేస్తోంది
CLCKDIV, బర్స్ట్ మోడ్ మరియు PowerUP గా నిర్వచించబడ్డాయి
# CLKDIV ని నిర్వచించండి (15-1) # BURST_MODE_OFF (0 << 16) // 1 ను ఆన్ మరియు 0 ఆఫ్ # # పవర్అప్ నిర్వచించండి (1 << 21)
ADC మార్పిడి (CLKDIV) కోసం గడియారాన్ని సెట్ చేస్తోంది
ADC కోసం గడియారాన్ని ఉత్పత్తి చేయడానికి ఇది ఉపయోగించబడుతుంది. 4Mhz ADC గడియారం (ADC_CLOCK = PCLK / CLKDIV) ఇక్కడ "CLKDIV-1" వాస్తవానికి ఉపయోగించబడుతుంది, మా విషయంలో PCLK = 60mhz
బర్స్ట్ మోడ్ (బిట్ -16): ఈ బిట్ BURST మార్పిడి కోసం ఉపయోగించబడుతుంది. ఈ బిట్ సెట్ చేయబడితే, ADC మాడ్యూల్ SEL బిట్స్లో ఎంచుకున్న (SET) అన్ని ఛానెల్ల కోసం మార్పిడి చేస్తుంది. ఈ బిట్లో 0 ని సెట్ చేస్తే BURST మార్పిడిని నిలిపివేస్తుంది.
పవర్ డౌన్ మోడ్ (బిట్ -21): ఇది ADC ఆన్ లేదా ఆఫ్ చేయడానికి ఉపయోగించబడుతుంది. ఈ బిట్లో (1) సెట్టింగ్ ADC ని పవర్ డౌన్ మోడ్ నుండి బయటకు తెస్తుంది మరియు దానిని అమలు చేస్తుంది. ఈ బిట్ను క్లియర్ చేస్తే ADC ని శక్తివంతం చేస్తుంది.
PWM మార్పిడి సెట్టింగ్ను కాన్ఫిగర్ చేస్తోంది
మొదట PWMTCR రిజిస్టర్ ఉపయోగించి PWM కోసం కౌంటర్ను రీసెట్ చేయండి మరియు నిలిపివేయండి మరియు ప్రీస్కాలర్ విలువతో PWM టైమర్ ప్రెస్కేల్ రిజిస్టర్ను సెటప్ చేయండి.
పిడబ్ల్యుఎమ్టిసిఆర్ = 0x02; PWMPR = 0x1D;
తరువాత ఒక చక్రంలో గరిష్ట గణనలను సెట్ చేయండి. ఇది మ్యాచ్ రిజిస్టర్ 0 (PWMMR0) లో జరుగుతుంది. మనకు 20000 ఉన్నందున ఇది 20msecs యొక్క PWM వేవ్
పిడబ్ల్యుఎంఎంఆర్ 0 = 20000;
మ్యాచ్ రిజిస్టర్లలో డ్యూటీ సైకిల్ కోసం విలువను సెట్ చేసిన తరువాత, మేము PWMMR4, PWMMR2, PWMMR3, PWMMR5 ని ఉపయోగిస్తున్నాము. ఇక్కడ మనం 0 msec (టోఫ్) యొక్క ప్రారంభ విలువలను సెట్ చేస్తున్నాము
పిడబ్ల్యుఎంఎంఆర్ 4 = 0; పిడబ్ల్యుఎంఎంఆర్ 2 = 0; పిడబ్ల్యుఎంఎంఆర్ 3 = 0; పిడబ్ల్యుఎంఎంఆర్ 5 = 0;
ఆ తరువాత మ్యాచ్ రిజిస్టర్ సంభవించినప్పుడు కౌంటర్ రీసెట్ చేయడానికి PWM మ్యాచ్ కంట్రోల్ రిజిస్టర్ సెట్ చేయండి.
పిడబ్ల్యుఎంఎంసిఆర్ = 0x00000002; // MR0 మ్యాచ్లో రీసెట్ చేయండి
ఆ తరువాత, మ్యాచ్ విలువ (PWMLER) వాడకాన్ని ప్రారంభించడానికి PWM గొళ్ళెం ఎనేబుల్ రిజిస్టర్
PWMLER = 0x7C; // PWM2, PWM4, PWM4 మరియు PWM5 కోసం లాచ్ ఎనేబుల్
పిడబ్ల్యుఎం టైమర్ కంట్రోల్ రిజిస్టర్ (పిడబ్ల్యుఎమ్టిసిఆర్) లో బిట్ ఉపయోగించి టైమర్ కౌంటర్ను రీసెట్ చేయండి మరియు ఇది పిడబ్ల్యుఎంను కూడా ప్రారంభిస్తుంది.
పిడబ్ల్యుఎమ్టిసిఆర్ = 0x09; // PWM మరియు కౌంటర్ను ప్రారంభించండి
తరువాత PWM అవుట్పుట్లను ప్రారంభించి, PWM కంట్రోల్ రిజిస్టర్ (PWMPCR) లో PWM ను సింగిల్ ఎడ్జ్-కంట్రోల్డ్ మోడ్లో సెట్ చేయండి.
PWMPCR = 0x7C00; // PWM2, PWM4, PWM4 మరియు PWM5, సింగిల్ ఎడ్జ్ నియంత్రిత PWM ని ప్రారంభించండి
పుష్ బటన్లను ఉపయోగించి తిప్పడానికి సర్వో మోటారును ఎంచుకోవడం
మాకు నాలుగు పుష్ బటన్లు ఉన్నాయి, ఇవి నాలుగు వేర్వేరు సర్వో మోటార్లు తిప్పడానికి ఉపయోగించబడతాయి. ఒక పుష్ బటన్ను ఎంచుకుని, సంబంధిత పొటెన్షియోమీటర్ను మార్చడం ద్వారా, ADC విలువ విధి చక్రంను సెట్ చేస్తుంది మరియు సంబంధిత సర్వో మోటార్ దాని స్థానాన్ని మారుస్తుంది. పుష్ బటన్ స్విచ్ యొక్క స్థితిని పొందడానికి
switchStatus1 = (IOPIN1 >> SwitchPinNumber1) & 0x01;
కాబట్టి, ఏ స్విచ్ విలువ అధికంగా ఉందో బట్టి ADC మార్పిడి స్థలాలను తీసుకుంటుంది మరియు తరువాత ADC (0 నుండి 1023) విలువను విజయవంతంగా మార్చిన తరువాత, అది (0 నుండి 2045 వరకు) పరంగా మ్యాప్ చేయబడుతుంది మరియు తరువాత విధి చక్రం విలువ వ్రాయబడుతుంది (PWMMRx) PWM పిన్ సర్వో మోటారుకు కనెక్ట్ చేయబడింది. మరియు, ఏ స్విచ్ నొక్కినట్లు సూచించడానికి ఒక LED అధికంగా మారుతుంది. మొదటి పుష్ బటన్ కోసం కిందిది ఒక ఉదాహరణ
if (switchStatus1 == 1) { IOPIN1 = (1 <
పిక్ అండ్ ప్లేస్ రోబోటిక్ ఆర్మ్ యొక్క పని
LPC2148 కు కోడ్ను అప్లోడ్ చేసిన తరువాత, ఏదైనా స్విచ్ నొక్కండి మరియు రోబోటిక్ ఆర్మ్ యొక్క స్థానాన్ని మార్చడానికి సంబంధిత పొటెన్టోమీటర్ను మార్చండి.
ప్రతి స్విచ్ మరియు పొటెన్టోమీటర్ ప్రతి సర్వోమోటర్ కదలికను బేస్ ఎడమ లేదా కుడి కదలిక, పైకి లేదా క్రిందికి కదలిక, ముందుకు లేదా వెనుకకు నియంత్రిస్తాయి, ఆపై కదలికను పట్టుకుని విడుదల చేయడానికి గ్రిప్పర్. వివరణాత్మక పని వీడియోతో పూర్తి కోడ్ క్రింద ఇవ్వబడింది.