- Nepieciešamās sastāvdaļas
- Tiek gatavota 3D drukātā robotizētā arma
- Ķēdes shēma
- Darbības, kas saistītas ar robotizētās rokas LPC2148 programmēšanu
- Kodēšana Paskaidrojums
- Servomotora izvēle pagriešanai, izmantojot spiedpogas
- Pick and Place robotizētās rokas darbs
Robotu ieroči ir viens no aizraujošākajiem inženiertehniskajiem izstrādājumiem, un vienmēr ir aizraujoši skatīties, kā šīs lietas sasveras un kustas, lai sarežģītas lietas paveiktu tāpat kā cilvēka roka. Šīs robotizētās rokas parasti var atrast rūpnīcās pie konveijera, kas veic intensīvu mehānisku darbu, piemēram, metināšanu, urbšanu, krāsošanu utt. Nesen uzlabotas robotizētas rokas ar augstu precizitāti tiek izstrādātas arī sarežģītu ķirurģisku operāciju veikšanai. Tāpēc šajā apmācībā izveidosim vienkāršu robotu roku, izmantojot ARM7-LPC2148 mikrokontrolleru objekta atlasīšanai un ievietošanai, manuāli vadot dažus potenciometrus.
Šajā apmācībā mēs izmantosim 3D drukātu robotizētu ARM, kas tika uzbūvēts, ievērojot lietu. ARM robotizētai kustībai izmanto 4 servomotorus. Ja jums nav printera, varat arī uzbūvēt roku ar vienkāršiem kartoniem, kādus mēs esam izveidojuši mūsu Arduino robotu roku projektam. Lai iegūtu iedvesmu, varat atsaukties arī uz ierakstu un spēļu robotu roku, kuru mēs iepriekš izveidojām, izmantojot Arduino.
Tāpēc tagad sagatavosim lietas savam projektam
Nepieciešamās sastāvdaļas
- 3D printera robotu ARM
- ARM7-LPC2148
- Servomotors SG-90 (4)
- 10k potenciometrs (4)
- Spiedpoga (4)
- LED (4)
- 5V (1A) līdzstrāvas adapteris
- Rezistori (10k (4), 2.2k (4))
- Maizes dēlis
- Vadu savienošana
Tiek gatavota 3D drukātā robotizētā arma
Šajā apmācībā izmantotā 3D drukātā robotizētā roka tika izgatavota, ievērojot EEZYbotARM piedāvāto dizainu, kas ir pieejams Thingiverse. Pilna 3D drukātās robotizētās rokas izgatavošanas procedūra un montāžas detaļas ar video ir redzamas saitei, kas ir kopīga iepriekš.
Šis ir manas 3D drukātās robotizētās rokas attēls pēc montāžas ar 4 Servo Motors.
Ķēdes shēma
Šajā attēlā parādīti ARM balstītas robotizētās rokas ķēdes savienojumi .
Ķēdes savienojumi projektam ir vienkārši. Pārliecinieties, ka Servo Motors darbojas ar atsevišķu 5 V līdzstrāvas adapteri. Potenciometriem un spiedpogām mēs varam izmantot 3,3 V, kas pieejams no mikrokontrollera LPC2148.
Šeit mēs izmantojam LPC2148 4 ADC tapas ar 4 potenciometriem. Un arī 4 PWM tapas no LPC2148, kas savienotas ar servomotora PWM tapām. Mēs esam pievienojuši arī 4 spiedpogas, lai izvēlētos, kuru motoru darbināt. Tātad, pēc pogas nospiešanas mainās potenciometrs, lai mainītu servomotora stāvokli.
Spiedpogas, kuras viens gals ir savienots ar LPC2148 GPIO, tiek nolaižamas caur 10k rezistoru, bet otrs gals ir savienots ar 3.3V. Ir pievienoti arī 4 gaismas diodes, lai norādītu, kurš servomotors ir izvēlēts, lai mainītu pozīciju.
Ķēdes savienojumi starp 4 servomotoriem un LPC2148:
LPC2148 | Servo motors |
P0.1 | SERVO1 (PWM-oranžs) |
P0.7 | SERVO2 (PWM-oranža) |
P0.8 | SERVO3 (PWM-oranžs) |
P0.21 | SERVO4 (PWM-oranža) |
Ķēdes savienojumi starp 4 potenciometru un LPC2148:
LPC2148 | Potenciometra centrālās tapas kreisā tapa - 0 V GND no LPC2148 labās tapas - 3,3 V no LPC2148 |
P0.25 | Potenciometrs |
P0.28 | Potenciometrs2 |
P0.29 | Potenciometrs3 |
P0.30 | Potenciometrs4 |
4 gaismas diožu ķēdes savienojumi ar LPC2148:
LPC2148 | LED anods (visu LED katodi ir GND) |
P1.28 | LED1 (anods) |
P1.29 | LED2 (anods) |
P1.30 | LED3 (anods) |
P1.31 | LED4 (anods) |
4 spiedpogu ar LPC2148 ķēdes savienojumi:
LPC2148 | Spiedpoga (ar nolaižamu rezistoru 10k) |
P1.17 | Spiedpoga1 |
P1.18 | Spiedpoga2 |
P1.19 | Spiedpoga3 |
P1.20 | Spiedpoga4 |
Darbības, kas saistītas ar robotizētās rokas LPC2148 programmēšanu
Pirms programmēšanas šai robotizētajai rokai mums jāzina par PWM ģenerēšanu LPC2148 un ADC izmantošanu ARM7-LPC2148. Lai to izdarītu, skatiet mūsu iepriekšējos projektus par servomotora saskarni ar LPC2148 un kā izmantot ADC LPC2148.
ADC pārveidošana, izmantojot LPC2148
Tā kā mums ir jānorāda ADC vērtības, lai iestatītu darba cikla vērtību PWM izejas ģenerēšanai servo motora pozīcijas kontrolei. Mums jāatrod potenciometra ADC vērtības. Tā kā mums ir četri potenciometri četru servomotoru kontrolei, mums ir nepieciešams 4 ADC kanāls LPC2148. Šeit šajā apmācībā mēs izmantojam ADC tapas (P0.25, P0.28, P0.29, P0.30) no ADC kanāliem ar 4,1,2,3 attiecīgi LPC2148.
PWM signālu ģenerēšana servomotoram, izmantojot LPC2148
Tā kā mums ir nepieciešams ģenerēt PWM signālus servomotora stāvokļa kontrolei. Mums jānosaka PWM darba cikls. Mums ir četri servomotori, kas savienoti ar robotu roku, tāpēc mums ir nepieciešams 4 PWM kanāls LPC2148. Šeit, šajā apmācība mēs izmantojam PWM piespraudes (P0.1, P0.7, P0.8, P0.21) no PWM kanālu no 3,2,4,5 attiecīgi sastopami LPC2148.
Hex faila programmēšana un mirgošana uz LPC2148
Lai ieprogrammētu ARM7-LPC2148, mums ir nepieciešams keil uVision un HEX koda mirgošana uz LPC2148 Flash Magic rīku. Lai programmētu ARM7 Stick, izmantojot mikro USB portu, šeit tiek izmantots USB kabelis. Mēs rakstām kodu, izmantojot Keil, un izveidojam hex failu, un pēc tam HEX fails tiek flashed uz ARM7 stick, izmantojot Flash Magic. Lai uzzinātu vairāk par keil uVision un Flash Magic instalēšanu un to izmantošanu, sekojiet saitei Darba sākšana ar ARM7 LPC2148 mikrokontrolleru un ieprogrammējiet to, izmantojot Keil uVision.
Kodēšana Paskaidrojums
Pamācības beigās ir norādīta šī Robotisko roku projekta pilnīga programma. Tagad apskatīsim programmēšanu detalizēti.
LPC2148 PORT konfigurēšana GPIO, PWM un ADC izmantošanai:
Izmantojot PINSEL1 reģistru, lai iespējotu ADC kanālus - ADC0.4, ADC0.1, ADC0.2, ADC0.3 tapām P0.25, P0.28, P0.29, P0.30. Un arī attiecībā uz PWM5 tapai P0.21 (1 << 10).
#define AD04 (1 << 18) // P0.25 atlasiet funkciju AD0.4 #define AD01 (1 << 24) // P0.28 atlasiet funkciju AD0.1 #define AD02 (1 << 26) / / P0.29 atlasiet funkciju AD0.2 #define AD03 (1 << 28) // P0.30 izvēlieties funkciju AD0.3 PINSEL1 - = AD04 - AD01 - AD02 - AD03 - (1 << 10);
PINSEL0 reģistra izmantošana, lai iespējotu PWM kanālus PWM3, PWM2, PWM4 LPC2148 tapām P0.1, P0.7, P0.8.
PINSEL0 = 0x000A800A;
PINSEL2 reģistra izmantošana, lai iespējotu GPIO pin funkciju visām PORT1 tapām, ko izmanto LED un spiedpogas savienošanai.
PINSEL2 = 0x00000000;
Lai LED tapas padarītu par Izeju un Spiežamās pogas kā Ieeju, tiek izmantots IODIR1 reģistrs. (0 - INPUT un 1 - OUTPUT)
IODIR1 = ((0 << 17) - (0 << 18) - (0 << 19) - (0 << 20) - (1 << 28) - (1 << 29) - (1 << 30) - (1 << 31));
Kamēr piespraudes numuri ir definēti kā
#define SwitchPinNumber1 17 // (savienots ar P1.17) #define SwitchPinNumber2 18 // (savienots ar P1.18) #define SwitchPinNumber3 19 // (savienots ar P1.19) #define SwitchPinNumber4 20 // (savienots ar P1. 20) #define LedPinNumber1 28 // (Savienots ar P1.28) #define LedPinNumber2 29 // (Savienots ar P1.29) #define LedPinNumber3 30 // (Savienots ar P1.30) #define LedPinNumber4 31 // (Savienots ar P1.31)
ADC konvertēšanas iestatījuma konfigurēšana
Pēc tam ADC pārveidošanas režīms un ADC pulkstenis tiek iestatīts, izmantojot reģistru AD0CR_setup.
neparakstīts garš AD0CR_setup = (CLKDIV << 8) - BURST_MODE_OFF - PowerUP; // ADC režīma iestatīšana
Kamēr CLCKDIV, Burst Mode un PowerUP ir definēti kā
#define CLKDIV (15-1) #define BURST_MODE_OFF (0 << 16) // 1 ieslēgtam un 0 izslēgtam #define PowerUP (1 << 21)
Pulksteņa iestatīšana ADC reklāmguvumam (CLKDIV)
To izmanto ADC pulksteņa ražošanai. 4Mhz ADC pulkstenis (ADC_CLOCK = PCLK / CLKDIV), kur faktiski tiek izmantots "CLKDIV-1", mūsu gadījumā PCLK = 60mhz
Burst režīms (Bit-16): Šis bits tiek izmantots BURST pārveidošanai. Ja šis bits ir iestatīts, ADC modulis veiks konvertēšanu visiem kanāliem, kas ir atlasīti (SET) SEL bitos. Iestatot 0 šajā bitā, BURST pārveidošana tiks atspējota.
Izslēgšanas režīms (Bit-21): to izmanto ADC ieslēgšanai vai izslēgšanai. Šajā bitā iestatot (1), ADC tiek izslēgts no izslēgšanas režīma un tas darbojas. Notīrot šo bitu, tiks izslēgta ADC darbība.
PWM konvertēšanas iestatījuma konfigurēšana
Vispirms atiestatiet un atspējojiet PWM skaitītāju, izmantojot PWMTCR reģistru, un iestatiet PWM Timer Prescale reģistru ar prescaler vērtību.
PWMTCR = 0x02; PWMPR = 0x1D;
Pēc tam iestatiet maksimālo skaitu vienā ciklā. Tas tiek darīts 0 spēļu reģistrā (PWMMR0). Tā kā mums ir 20000, jo tas ir PWM vilnis 20msek
PWMMR0 = 20000;
Pēc tam iestatiet darba cikla vērtību spēles reģistros, mēs izmantojam PWMMR4, PWMMR2, PWMMR3, PWMMR5. Šeit mēs iestatām sākotnējās vērtības 0 ms (Toff)
PWMMR4 = 0; PWMMR2 = 0; PWMMR3 = 0; PWMMR5 = 0;
Pēc tam iestatiet PWM atbilstības kontroles reģistru, lai izraisītu skaitītāja atiestatīšanu, kad notiek spēļu reģistrs.
PWMMCR = 0x00000002; // Atiestatīt uz MR0 spēles
Pēc tam PWM fiksators Iespējot reģistru, lai iespējotu atbilstības vērtības (PWMLER) izmantošanu
PWMLER = 0x7C; // Fiksatora iespējošana ierīcēm PWM2, PWM4, PWM4 un PWM5
Atiestatiet taimera skaitītāju, izmantojot mazliet PWM taimera vadības reģistrā (PWMTCR), un tas arī ļauj PWM.
PWMTCR = 0x09; // Iespējot PWM un skaitītāju
Pēc tam iespējojiet PWM izejas un iestatiet PWM vienā malā kontrolētā režīmā PWM vadības reģistrā (PWMPCR).
PWMPCR = 0x7C00; // Iespējot PWM2, PWM4, PWM4 un PWM5, ar vienu malu kontrolētu PWM
Servomotora izvēle pagriešanai, izmantojot spiedpogas
Mums ir četras spiedpogas, kuras tiek izmantotas četru dažādu servomotoru pagriešanai. Izvēloties vienu spiedpogu un mainot atbilstošo potenciometru, ADC vērtība nosaka darba ciklu un atbilstošais servomotors maina savu pozīciju. Lai iegūtu spiedpogas slēdža statusu
switchStatus1 = (IOPIN1 >> SwitchPinNumber1) & 0x01;
Tātad, atkarībā no tā, kura slēdža vērtība ir AUGSTA, notiek ADC konvertēšana un pēc tam, kad ADC (0 līdz 1023) vērtība ir veiksmīgi konvertēta, tā tiek kartēta izteiksmē (0 līdz 2045) un pēc tam darba cikla vērtība tiek ierakstīta (PWMMRx) PWM tapa, kas savienota ar servomotoru. Turklāt gaismas diode tiek pagriezta HIGH, lai norādītu, kurš slēdzis ir nospiests. Šis ir piemērs pirmajai spiedpogai
ja (switchStatus1 == 1) { IOPIN1 = (1 <
Pick and Place robotizētās rokas darbs
Pēc koda augšupielādes LPC2148 nospiediet jebkuru slēdzi un mainiet atbilstošo potenciometru, lai mainītu robotizētās rokas pozīciju.
Katrs slēdzis un potenciometrs kontrolē katru servomotora kustību, kas ir kustība pa kreisi vai pa labi, augšup vai lejup, uz priekšu vai atpakaļ, un pēc tam satvērējs, lai turētu un atbrīvotu kustību. Pilns kods ar detalizētu darba video ir norādīts zemāk.