- Komponente potrebne
- Priprema 3D otisnutog robotskog ARM-a
- Kružni dijagram
- Koraci uključeni u programiranje LPC2148 za robotsku ruku
- Objašnjenje kodiranja
- Odabir servo motora za rotiranje pomoću gumba
- Rad robotske ruke za odabir i postavljanje
Robotsko oružje jedna je od fascinantnih inženjerskih tvorevina i uvijek je fascinantno gledati kako se te stvari naginju i pomiču kako bi se složene stvari učinile baš kao što bi to učinila ljudska ruka. Ove robotske ruke mogu se često naći u industriji na montažnoj liniji, izvodeći intenzivne mehaničke radove poput zavarivanja, bušenja, bojanja itd. Nedavno se također razvijaju napredne robotske ruke s velikom preciznošću za izvođenje složenih kirurških operacija. Dakle, u ovom uputstvu napravimo jednostavnu robotsku ruku pomoću mikrokontrolera ARM7-LPC2148 za odabir i postavljanje predmeta ručnim upravljanjem nekoliko potenciometara.
U ovom uputstvu koristit ćemo 3D tiskani robotski ARM koji je izrađen slijedeći postupak u stvarnosti. ARM koristi 4 servo motora za robotizirano ARM kretanje. Ako nemate pisač, ruku možete izraditi i jednostavnim kartonima kakve smo izradili za naš Arduino Robotic Arm Project. Kao inspiraciju možete se pozvati i na Record and Play Robotic Arm koji smo ranije napravili pomoću Arduina.
Dakle, pripremimo stvari za naš projekt
Komponente potrebne
- 3D pisač Robotski ARM
- ARM7-LPC2148
- Servo motor SG-90 (4)
- 10k potenciometar (4)
- Gumb (4)
- LED (4)
- 5V (1A) DC adapter za napajanje
- Otpornici (10k (4), 2.2k (4))
- Breadboard
- Spajanje žica
Priprema 3D otisnutog robotskog ARM-a
3D tiskana robotska ruka korištena u ovom vodiču izrađena je slijedeći dizajn koji je dao EEZYbotARM koji je dostupan u Thingiverse. Cjelovit postupak izrade 3D otisnute robotske ruke i detalje o sastavljanju s videozapisom prisutni su na stvarnoj vezi koja je gore navedena.

Ovo je slika moje 3D tiskane robotske ruke nakon sklapanja s 4 servo motora.
Kružni dijagram
Sljedeća slika prikazuje veze kruga robotske ruke temeljene na ARM-u.

Kružne veze za projekt su jednostavne. Obavezno napajajte servo motore odvojenim ispravljačem istosmjerne struje od 5V. Za potenciometre i tipke možemo koristiti 3.3V dostupne iz mikrokontrolera LPC2148.
Ovdje koristimo 4 ADC pinova LPC2148 s 4 potenciometra. I također 4 PWM pinova LPC2148 spojena s PWM pinovima servo motora. Također smo povezali 4 tipke za odabir motora kojim ćemo upravljati. Dakle, nakon pritiska tipke uvaženi potenciometar mijenja se da bi se promijenio položaj servo motora.
Gumbi s jednog kraja koji je povezan s GPIO iz LPC2148 spuštaju se preko otpora od 10 k, a drugi kraj s 3.3 V. Također su priključene 4 LED diode koje pokazuju koji je servo motor odabran za promjenu položaja.

Kružne veze između 4 servo motora i LPC2148:
| LPC2148 | Servo motor |
| P0.1 | SERVO1 (PWM-narančasta) |
| P0.7 | SERVO2 (PWM-narančasta) |
| P0.8 | SERVO3 (PWM-narančasta) |
| P0.21 | SERVO4 (PWM-narančasta) |
Spojevi kruga između 4 potenciometra i LPC2148:
| LPC2148 | Lijevi zatik središnjeg pina potenciometra - 0V GND LPC2148 Desni zatik - 3,3V LPC2148 |
| P0.25 | Potenciometar1 |
| P0.28 | Potenciometar2 |
| P0.29 | Potenciometar3 |
| P0,30 | Potenciometar4 |
Spojevi kruga 4 LED-a s LPC2148:
| LPC2148 | LED anoda (katoda svih LED je GND) |
| P1.28 | LED1 (anoda) |
| P1.29 | LED2 (anoda) |
| P1.30 | LED3 (anoda) |
| P1.31 | LED4 (anoda) |
Spojevi kruga 4 tipke s LPC2148:
| LPC2148 | Gumb (s vučnim otpornikom 10 k) |
| P1.17 | Tipkalo1 |
| P1.18 | Tipkalo2 |
| P1.19 | Tipkalo3 |
| P1.20 | Tipkalo4 |
Koraci uključeni u programiranje LPC2148 za robotsku ruku
Prije programiranja za ovu robotsku ruku, moramo znati o generiranju PWM-a u LPC2148 i korištenju ADC-a u ARM7-LPC2148. Za to pogledajte naše prethodne projekte o povezivanju servo motora s LPC2148 i kako koristiti ADC u LPC2148.
ADC pretvorba pomoću LPC2148
Kao što trebamo osigurati ADC vrijednosti za podešavanje vrijednosti radnog ciklusa za generiranje PWM izlaza za kontrolu položaja servo motora. Moramo pronaći ADC vrijednosti potenciometra. Kako imamo četiri potenciometra za upravljanje sa četiri servo motora, trebaju nam 4 ADC kanala LPC2148. Ovdje u ovom vodiču koristimo ADC pinove (P0.25, P0.28, P0.29, P0.30) ADC kanala od 4,1,2,3, prisutnih u LPC2148.
Generiranje PWM signala za servo motor pomoću LPC2148
Kako trebamo generirati PWM signale za kontrolu položaja servo motora. Moramo postaviti radni ciklus PWM. Imamo četiri servo motora spojena na robotsku ruku pa nam trebaju 4 PWM kanala LPC2148. Ovdje u ovom vodiču koristimo PWM pinove (P0.1, P0.7, P0.8, P0.21) PWM kanala od 3,2,4,5, prisutnih u LPC2148.
Programiranje i bljeskanje hex datoteke na LPC2148
Za programiranje ARM7-LPC2148 potreban nam je keil uVision i potreban je flash HEX kôd na LPC2148 Flash Magic alat. Ovdje se za programiranje ARM7 Stick putem mikro USB priključka koristi USB kabel. Napisujemo kod pomoću Keila i stvaramo hex datoteku, a zatim se HEX datoteka bljesne na ARM7 stick pomoću Flash Magic. Da biste saznali više o instaliranju keil uVisiona i Flash Magic-a i kako ih koristiti, slijedite vezu Početak rada s mikrokontrolerom ARM7 LPC2148 i programirajte ga pomoću Keil uVision.
Objašnjenje kodiranja
Kompletni program za ovaj projekt robotske ruke dat je na kraju vodiča. Pogledajmo sada detaljno programiranje.
Konfiguriranje PORT-a LPC2148 za upotrebu GPIO-a, PWM-a i ADC-a:
Upotreba registra PINSEL1 za omogućavanje ADC kanala - ADC0.4, ADC0.1, ADC0.2, ADC0.3 za pinove P0.25, P0.28, P0.29, P0.30. Također, za PWM5 za zatik P0.21 (1 << 10).
#define AD04 (1 << 18) // Odaberite funkciju AD0.4 za P0.25 #define AD01 (1 << 24) // Odaberite funkciju AD0.1 za P0.28 #define AD02 (1 << 26) / / Odaberite funkciju AD0.2 za P0.29 #define AD03 (1 << 28) // Odaberite funkciju AD0.3 za P0.30 PINSEL1 - = AD04 - AD01 - AD02 - AD03 - (1 << 10);
Upotreba registra PINSEL0 za omogućavanje PWM kanala PWM3, PWM2, PWM4 za pinove P0.1, P0.7, P0.8 od LPC2148.
PINSEL0 = 0x000A800A;
Upotreba registra PINSEL2 za omogućavanje funkcije GPIO pina za sve pinove u PORT1 koji se koriste za spajanje LED-a i tipke.
PINSEL2 = 0x00000000;
Za izradu LED pinova kao izlaznih i igla s tipkama kao ulaza koristi se IODIR1 registar. (0 za ULAZ & 1 za IZLAZ)
IODIR1 = ((0 << 17) - (0 << 18) - (0 << 19) - (0 << 20) - (1 << 28) - (1 << 29) - (1 << 30) - (1 << 31));
Iako su brojevi pinova definirani kao
#define SwitchPinNumber1 17 // (povezano s P1.17) #define SwitchPinNumber2 18 // (povezano s P1.18) #define SwitchPinNumber3 19 // (povezano s P1.19) #define SwitchPinNumber4 20 // (povezano s P1. 20) #define LedPinNumber1 28 // (povezano s P1.28) #define LedPinNumber2 29 // (povezano s P1.29) #define LedPinNumber3 30 // (povezano s P1.30) #define LedPinNumber4 31 // (povezano s P1.31)
Konfiguriranje postavke ADC pretvorbe
Sljedeći način rada ADC pretvorbe i sat za ADC postavljaju se pomoću registra AD0CR_setup.
nepotpisano dugo AD0CR_setup = (CLKDIV << 8) - BURST_MODE_OFF - PowerUP; // Postavljanje načina ADC
Dok su CLCKDIV, način praska i PowerUP definirani kao
#define CLKDIV (15-1) #define BURST_MODE_OFF (0 << 16) // 1 za uključeno i 0 za isključeno #define PowerUP (1 << 21)
Postavljanje sata za ADC konverziju (CLKDIV)
To se koristi za proizvodnju sata za ADC. ADC sat od 4 MHz (ADC_CLOCK = PCLK / CLKDIV) gdje se zapravo koristi "CLKDIV-1", u našem slučaju PCLK = 60 MHz
Rafalni način (Bit-16): Ovaj se bit koristi za BURST pretvorbu. Ako je ovaj bit postavljen, ADC modul će izvršiti pretvorbu za sve kanale koji su odabrani (SET) u SEL bitovima. Postavljanje 0 u ovom bitu onemogućit će BURST pretvorbu.
Način isključivanja (Bit-21): Koristi se za uključivanje ili isključivanje ADC-a. Postavka (1) u ovom bitu izvodi ADC iz načina isključenja i čini ga operativnim. Brisanjem ovog bita isključit će se ADC.
Konfiguriranje postavke pretvorbe PWM-a
Prvo resetirajte i onemogućite brojač za PWM koristeći PWMTCR registar i postavite PWM timer Prescale Register s vrijednošću pretkaldera.
PWMTCR = 0x02; PWMPR = 0x1D;
Dalje postavite maksimalni broj brojanja u jednom ciklusu. To se radi u Registru utakmica 0 (PWMMR0). Kako imamo 20000, to je PWM val od 20 ms
PWMMR0 = 20000;
Nakon toga postavimo vrijednost za radni ciklus u registrima utakmica, koristimo PWMMR4, PWMMR2, PWMMR3, PWMMR5. Ovdje postavljamo početne vrijednosti od 0 ms (Toff)
PWMMR4 = 0; PWMMR2 = 0; PWMMR3 = 0; PWMMR5 = 0;
Nakon toga postavite PWM Match Control Register da izazove resetiranje brojača kada se dogodi match match.
PWMMCR = 0x00000002; // Resetiranje na podudaranju MR0
Nakon toga, PWM zasun Omogući registar da omogući upotrebu vrijednosti podudaranja (PWMLER)
PWMLER = 0x7C; // Omogućavanje zasuna za PWM2, PWM4, PWM4 i PWM5
Resetirajte brojač odbrojavanja pomoću bita u PWM registru vremena (PWMTCR), a također omogućuje i PWM.
PWMTCR = 0x09; // Omogući PWM i brojač
Sljedeće omogućite PWM izlaze i postavite PWM u način upravljanja jednim rubom u PWM upravljačkom registru (PWMPCR).
PWMPCR = 0x7C00; // Omogući PWM2, PWM4, PWM4 i PWM5, PWM s jednim rubom
Odabir servo motora za rotiranje pomoću gumba
Imamo četiri tipke koje se koriste za okretanje četiri različita servo motora. Odabirom jednog gumba i mijenjanjem odgovarajućeg potenciometra, vrijednost ADC postavlja radni ciklus i odgovarajući servo motor mijenja svoj položaj. Da biste dobili status prekidača s tipkom
switchStatus1 = (IOPIN1 >> SwitchPinNumber1) & 0x01;
Dakle, ovisno o tome koja je vrijednost preklopnika VISA, vrši se pretvorba ADC, a zatim se nakon uspješne pretvorbe vrijednosti ADC (0 do 1023) preslikava u izračun (0 do 2045) i tada se vrijednost radnog ciklusa zapisuje (PWMMRx) PWM iglica spojena na servo motor. A također, LED se okreće VISOKO za pokazivanje pritiska prekidača. Slijedi primjer za prvi gumb
if (switchStatus1 == 1) { IOPIN1 = (1 <
Rad robotske ruke za odabir i postavljanje
Nakon učitavanja koda na LPC2148, pritisnite bilo koji prekidač i mijenjajte odgovarajući potenciometar da biste promijenili položaj robotske ruke.

Svaka sklopka i potenciometar kontroliraju svako kretanje servomotora koje je osnovno kretanje lijevo ili desno, kretanje gore ili dolje, naprijed ili nazad, a zatim hvataljka za zadržavanje i otpuštanje pokreta. Kompletni kod s detaljnim radnim video zapisom dan je u nastavku.
