- Szükséges alkatrészek
- A 3D nyomtatott robot ARM előkészítése
- Kördiagramm
- Az LPC2148 robotkar programozásának lépései
- Kódolás Magyarázat
- A forgató szervomotor kiválasztása a nyomógombokkal
- A Pick and Place robotkar működése
A Robotfegyverek az egyik lenyűgöző mérnöki alkotás, és mindig lenyűgöző nézni, ahogy ezek a dolgok megdőlnek és pásztáznak, hogy összetett dolgokat végezzenek, akárcsak az emberi kar. Ezeket a robotkarokat általában a futószalag iparban találják meg, amelyek intenzív mechanikai munkát végeznek, például hegesztést, fúrást, festést stb., A közelmúltban fejlett, nagy pontosságú robotkarokat is fejlesztik a komplex műtéti műveletek végrehajtására. Tehát ebben az oktatóanyagban építsünk egy egyszerű robotkarot az ARM7-LPC2148 mikrovezérlő használatával egy objektum kiválasztásához és elhelyezéséhez néhány potenciométer kézi vezérlésével.
Ebben az oktatóanyagban egy 3D nyomtatott robot ARM-et fogunk használni, amelyet a thingiverse eljárásának követésével készítettünk. Az ARM 4 szervomotort használ a robot ARM mozgatásához. Ha még nincs nyomtatója, akkor egyszerű kartonokkal is felépítheti a karját, amilyeneket Arduino robotkar projektünkhöz építettünk. Inspirációért tekintse meg a Record and Play robot karot is, amelyet korábban Arduino segítségével építettünk.
Tehát most készítsük elő a dolgokat a projektünkhöz
Szükséges alkatrészek
- 3D nyomtató robot ARM
- ARM7-LPC2148
- SG-90 szervomotor (4)
- 10k potenciométer (4)
- Nyomógomb (4)
- LED (4)
- 5V (1A) DC tápegység
- Ellenállások (10k (4), 2.2k (4))
- Kenyérlemez
- Vezetékek csatlakoztatása
A 3D nyomtatott robot ARM előkészítése
Az oktatóanyagban használt 3D nyomtatott robotkar az EEZYbotARM által a Thingiverse-ben elérhető terv alapján készült. A 3D nyomtatott robotkar elkészítésének teljes eljárása és a videóval történő összeszerelési részletek megtalálhatók a fent említett megosztott linkben.
Ez a 3D nyomtatott robotkarom képe, miután összeszereltem 4 szervomotorral.
Kördiagramm
A következő kép az ARM alapú robotkar áramköri kapcsolatait mutatja .
A projekt áramköri csatlakozásai egyszerűek. Ügyeljen arra, hogy a szervomotorokat külön 5 V DC tápegységgel táplálja. A potenciométerekhez és a nyomógombokhoz az LPC2148 mikrovezérlőtől kapható 3,3 V-ot használhatjuk.
Itt az LPC2148 4 ADC érintkezőjét használjuk 4 potenciométerrel. És még az LPC2148 4 PWM csapja, amelyek a szervomotor PWM csapjaival vannak összekötve. 4 nyomógombot is csatlakoztattunk az üzemeltetendő motor kiválasztásához. Tehát a gomb megnyomása után a tisztelt potenciométer megváltoztatható a szervomotor helyzetének megváltoztatásához.
Az LPC2148 GPIO-jához csatlakoztatott nyomógombok 10k-os ellenálláson keresztül lehúzhatók, másik végük pedig 3.3V-os csatlakozóval. Szintén 4 LED van csatlakoztatva annak jelzésére, hogy melyik szervomotort választották a helyzet megváltoztatásához.
Áramköri kapcsolatok 4 szervomotor és LPC2148 között:
LPC2148 | Szervómotor |
P0.1 | SERVO1 (PWM-narancs) |
P0.7 | SERVO2 (PWM-narancs) |
P0.8 | SERVO3 (PWM-narancs) |
P0.21 | SERVO4 (PWM-narancs) |
Áramköri kapcsolatok 4 potenciométer és LPC2148 között:
LPC2148 | Potenciométer középső csap bal csap - 0 V GND az LPC2148-ból jobb csap - 3,3 V az LPC2148-ból |
P0.25 | Potenciométer1 |
P0.28 | Potenciométer2 |
P0.29 | Potenciométer3 |
P0.30 | Potenciométer4 |
4 LED áramkörcsatlakozása LPC2148-mal:
LPC2148 | LED anód (az összes LED katódja GND) |
P1.28 | LED1 (anód) |
P1.29 | LED2 (anód) |
P1.30 | LED3 (anód) |
P1.31 | LED4 (anód) |
4 nyomógomb áramköri csatlakozása LPC2148-mal:
LPC2148 | Nyomógomb (10k lehúzható ellenállással) |
P1.17 | Nyomógomb1 |
P1.18 | Nyomógomb2 |
P1.19 | Nyomógomb3 |
P1.20 | Nyomógomb4 |
Az LPC2148 robotkar programozásának lépései
A robotkar programozása előtt tudnunk kell a PWM előállításáról az LPC2148-ban és az ADC használatáról az ARM7-LPC2148-ban. Ehhez olvassa el korábbi projektjeinket az Interfacing Servo motor with LPC2148 és az ADC használatáról az LPC2148-ban.
ADC átalakítás LPC2148 használatával
Mivel meg kell adnunk ADC értékeket a munkaciklus értékének beállításához a PWM kimenet generálásához a szervomotor helyzetének szabályozásához. Meg kell találnunk a potenciométer ADC értékeit. Mivel négy potenciométerünk van négy szervomotor vezérléséhez, szükségünk van az ADC2148 4 ADC csatornájára. Ebben az oktatóanyagban az LPC2148-ban jelen lévő 4,1,2,3 ADC-csatornák ADC-csapjait (P0.25, P0.28, P0.29, P0.30) használjuk.
PWM jelek generálása a szervomotorhoz az LPC2148 segítségével
Mivel PWM jeleket kell generálnunk a szervomotor helyzetének szabályozásához. Be kell állítanunk a PWM munkaciklusát. Négy szervomotor van csatlakoztatva a robotkarhoz, ezért szükségünk van az LPC2148 4 PWM csatornájára. Ebben az oktatóanyagban itt használjuk az LPC2148-ban jelen lévő 3,2,4,5 PWM-csatornák PWM-csapjait (P0.1, P0.7, P0.8, P0.21).
Hex fájl programozása és villogása az LPC2148 fájlba
Az ARM7-LPC2148 programozásához szükségünk van a Keil uVision-re és a HEX-kód villantására az LPC2148-hoz. Itt egy USB kábelt használnak az ARM7 Stick micro USB porton keresztüli programozásához. Kódot írunk a Keil segítségével, és létrehozunk egy hex fájlt, majd a HEX fájlt a Flash Magic segítségével az ARM7 pálcára villantjuk. Ha többet szeretne megtudni a keil uVision és a Flash Magic telepítéséről és használatáról, kövesse az Első lépések az ARM7 LPC2148 mikrovezérlővel linket és programozza be a Keil uVision használatával.
Kódolás Magyarázat
Teljes program erre Robotic Arm Project kap a végén a bemutató. Most nézzük meg részletesen a programozást.
Az LPC2148 PORT konfigurálása GPIO, PWM és ADC használatához:
A PINSEL1 regisztráció használata az ADC csatornák engedélyezéséhez - ADC0.4, ADC0.1, ADC0.2, ADC0.3 a P0.25, P0.28, P0.29, P0.30 csapokhoz. És a PWM5 esetében a P0.21 (1 << 10) csaphoz is.
#define AD04 (1 << 18) // Válassza ki az AD0.4 függvényt a P0.25 értékhez #define AD01 (1 << 24) // Válassza ki az AD0.1 függvényt a P0.28- hoz / Válassza az AD0.2 függvényt a P0.29 számára #define AD03 (1 << 28) // Válassza az AD0.3 funkciót a P0.30 PINSEL1 - = AD04 - AD01 - AD02 - AD03 - (1 << 10) számára;
A PINSEL0 regisztráció használata a PWM3, PWM2, PWM4 csatornák engedélyezéséhez az LPC2148 P0.1, P0.7, P0.8 érintkezõihez.
PINSEL0 = 0x000A800A;
A PINSEL2 regisztráció használata a GPIO pin funkció engedélyezéséhez a PORT1 összes érintkezőjéhez, amelyet a LED és a nyomógomb csatlakoztatásához használnak.
PINSEL2 = 0x00000000;
A LED csapok kimenetként és nyomógomb csapok bemenetként való létrehozásához az IODIR1 regisztert használjuk. (0 INPUT és 1 OUTPUT esetén)
IODIR1 = ((0 << 17) - (0 << 18) - (0 << 19) - (0 << 20) - (1 << 28) - (1 << 29) - (1 << 30) - (1 << 31));
Míg a PIN-kódok a következők
#define SwitchPinNumber1 17 // (a P1.17-hez csatlakozik) #define SwitchPinNumber2 18 // (a P1.18-hoz csatlakozik) #define SwitchPinNumber3 19 // (a P1.19-hez csatlakozik) #define SwitchPinNumber4 20 // (P1-hez csatlakozik). 20) #define LedPinNumber1 28 // (kapcsolódva a P1.28-hoz) #define LedPinNumber2 29 // (kapcsolódva a P1.29-hez) #define LedPinNumber3 30 // (összekapcsolva a P1.30-hoz) #define LedPinNumber4 31 // (csatlakozik P1.31)
Az ADC konverzió beállításának konfigurálása
Ezután az ADC konverziós módot és az ADC óráját az AD0CR_setup regiszter segítségével állítja be.
aláíratlan hosszú AD0CR_setup = (CLKDIV << 8) - BURST_MODE_OFF - PowerUP; // ADC mód beállítása
Míg a CLCKDIV, a Burst mód és a PowerUP a
#define CLKDIV (15-1) #define BURST_MODE_OFF (0 << 16) // 1 be és 0 ki kikapcsolva #define PowerUP (1 << 21)
Az óra beállítása az ADC konverzióhoz (CLKDIV)
Ezt használják az óra előállítására az ADC számára. 4Mhz ADC óra (ADC_CLOCK = PCLK / CLKDIV) ahol a "CLKDIV-1" -t ténylegesen használják, esetünkben PCLK = 60mhz
Burst mód (16-os bit): Ezt a bitet a BURST konverzióhoz használják. Ha ez a bit be van állítva, akkor az ADC modul elvégzi az átalakítást az összes kiválasztott csatornára (SET) SEL bitben. A 0 beállítása ebben a bitben letiltja a BURST konverziót.
Kikapcsolási mód (Bit-21): Ez az ADC be- vagy kikapcsolására szolgál. Az (1) beállítás ebben a bitben kikapcsolja az ADC-t kikapcsolt üzemmódból és működőképessé teszi. Ennek a bitnek a törlése kikapcsolja az ADC-t.
A PWM konverzió beállításának konfigurálása
Először állítsa alaphelyzetbe és tiltsa le a PWM számlálóját a PWMTCR regiszter használatával, és állítsa be a PWM Timer Prescale Regisztert az előmérő értékével.
PWMTCR = 0x02; PWMPR = 0x1D;
Ezután állítsa be a számlálások maximális számát egy ciklusban. Ez a 0. meccsregiszterben (PWMMR0) történik. Mivel van 20000, mivel ez egy 20 ms-os PWM hullám
PWMMR0 = 20000;
Ezt követően állítsa be a munkaciklus értékét a meccsregiszterekben, a PWMMR4, PWMMR2, PWMMR3, PWMMR5 paramétereket használjuk. Itt 0 msec kezdeti értékeket állítunk be (Toff)
PWMMR4 = 0; PWMMR2 = 0; PWMMR3 = 0; PWMMR5 = 0;
Ezt követően állítsa be a PWM egyeztetés-regisztert, hogy számláló nullázódjon, amikor a meccs regiszter megtörténik.
PWMMCR = 0x00000002; // Reset on MR0 match
Ezt követően a PWM reteszelje a Regisztráció engedélyezését az egyezési érték (PWMLER) használatának engedélyezéséhez
PWMLER = 0x7C; // Retesz engedélyezése a PWM2, PWM4, PWM4 és PWM5 esetén
Állítsa alaphelyzetbe az időzítő számlálóját a PWM időzítő vezérlő regiszter (PWMTCR) egy bitjével, és ez lehetővé teszi a PWM használatát is.
PWMTCR = 0x09; // PWM és számláló engedélyezése
Ezután engedélyezze a PWM kimeneteket, és állítsa a PWM-et egy él vezérelt üzemmódba a PWM vezérlő regiszterben (PWMPCR).
PWMPCR = 0x7C00; // PWM2, PWM4, PWM4 és PWM5 engedélyezése, egy élű vezérelt PWM
A forgató szervomotor kiválasztása a nyomógombokkal
Négy nyomógombunk van, amelyek négy különböző szervomotor forgatására szolgálnak. Egy nyomógomb kiválasztásával és a megfelelő potenciométer változtatásával az ADC érték beállítja az üzemi ciklust, és a megfelelő szervomotor megváltoztatja a helyzetét. A nyomógombos kapcsoló állapotának megismerése
switchStatus1 = (IOPIN1 >> SwitchPinNumber1) & 0x01;
Tehát attól függően, hogy melyik kapcsoló értéke NAGY, az ADC konverzióra kerül sor, majd az ADC (0-tól 1023-ig) érték sikeres átalakítása után a (0-tól 2045-ig) függvényben térképezzük fel, majd a munkaciklus értékét a következőre írjuk: a (PWMMRx) PWM csap a szervomotorhoz van csatlakoztatva. Ezenkívül egy LED-et HIGH-ra kapcsolják, hogy jelezze, melyik kapcsolót nyomják meg. A következő példa az első nyomógombra
if (switchStatus1 == 1) { IOPIN1 = (1 <
A Pick and Place robotkar működése
Miután feltöltötte a kódot az LPC2148-ba, nyomja meg bármelyik kapcsolót, és változtassa meg a megfelelő potenciométert a robotkar helyzetének megváltoztatásához.
Minden kapcsoló és potenciométer vezérli a szervomotor minden mozgását, amely a bal vagy a jobb alsó, a felfelé vagy lefelé irányuló mozgás, előre vagy hátra, majd a markoló a mozgás megtartásához és elengedéséhez. A teljes kódot egy részletes működő videóval az alábbiakban adjuk meg.