Ebben az oktatóanyagban egy Arduino Uno alapú robotkarot tervezünk néhány kartonból és szervomotorból. A kivitelezés teljes folyamatát az alábbiakban részletesen ismertetjük. Ebben a projektben az Arduino Uno programozva van a szervomotorok vezérlésére, amelyek a robotkar ízületei. Ez a beállítás úgy is néz ki, mint egy robotdaru, vagy átalakíthatjuk daruvá egy egyszerű apró változtatással. Ez a projekt hasznos lehet azoknak a kezdőknek, akik szeretnének megtanulni egy egyszerű robot kifejlesztését olcsón, vagy csak meg akarják tanulni az Arduino és a szervomotorokkal való munkát.
Ez az Arduino robotkar négy hozzá csatlakoztatott potenciométerrel vezérelhető, mindegyik potenciométert az egyes szervók vezérlésére használják. Ezeket a szervókat úgy mozgathatja, hogy az edényeket elforgatja, hogy kiválasszon valamilyen tárgyat. Bizonyos gyakorlatokkal könnyen kiválaszthatja és áthelyezheti az objektumot egyik helyről a másikra. Alacsony nyomatékú szervókat használtunk itt, de erősebb szervókat használhat nehéz tárgyak szedésére. Az egész folyamatot jól bemutatta a videó végén. Itt tekintheti meg a többi robotikai projektünket is.
Szükséges alkatrészek
- Arduino Uno
- 1000uF kondenzátor (4 db)
- 100nF kondenzátor (4 db)
- Szervomotor (SG 90 - négy darab)
- 10K pot - változó ellenállás (4 db)
- Tápegység (5v- lehetőleg kettő)
Szervómotor
Először beszélünk egy kicsit a Servo Motors-ról. A szervomotorokat főleg akkor használják, ha pontos tengelymozgásra vagy helyzetre van szükség. Ezeket nem javasoljuk nagy sebességű alkalmazásokhoz. A szervomotorokat alacsony fordulatszámú, közepes nyomatékú és pontos helyzetmeghatározásra javasoljuk. Tehát ezek a motorok a legjobbak robotkar tervezéséhez.
A szervomotorok különböző formában és méretben kaphatók. Kis szervomotorokat fogunk használni, itt négy SG90 szervót használunk. A szervomotor főként vezetékekkel rendelkezik, az egyik a pozitív feszültségre vonatkozik, a másik a földre, az utolsó pedig a helyzet beállítására. A RED vezeték csatlakozik az áramhoz, a fekete vezeték a földhöz és a SÁRGA vezeték csatlakozik a jelhez. Nézze át ezt a bemutatót a Szervomotor vezérléséről az Arduino használatával, hogy többet megtudjon róla. Az Arduino-ban előre definiált könyvtárak vannak a szervo vezérléséhez, így nagyon egyszerű a szervo vezérlése, amelyet a bemutatóval együtt megtanul.
Robotkar építése
Vegyen sík és stabil felületet, például asztalt vagy kemény kartonlapot. Ezután helyezzen egy szervomotort a közepére, és ragassza a helyére. Ellenőrizze, hogy a forgás mértéke az ábrán bemutatott területen van-e. Ez a szervo kar alapként működik.
Helyezzen egy kis darab kartont az első szervó tetejére, majd helyezze a második szervót erre a deszkadarabra, és ragassza a helyére. A szervo forgatásának meg kell egyeznie az ábrával.
Vegyünk néhány kartont, és vágjuk őket 3 cm x 11 cm-es darabokra. Ügyeljen arra, hogy a darab ne legyen megpuhult. Vágjon egy téglalap alakú lyukat az egyik végén (hagyjon alulról 0,8 cm-t), csak annyira, hogy elférjen egy másik szervó, a másik végén pedig szorosan illessze a szervo-felszerelést csavarokkal vagy ragasztóval. Ezután illessze be a harmadik szervót az első lyukba.
Most vágjon le egy újabb karton darabot, amelynek hossza az alábbi ábrán látható, és ragasszon egy másik fogaskereket a darab aljára.
Most ragassza be a negyedik és egyben utolsó szervót a második darab szélére az ábra szerint.
Ezzel két darab együtt néz ki.
Amikor ezt a beállítást az alaphoz csatoljuk, annak kinéznie kell,
Majdnem kész. Csak meg kell tennünk a horgot, hogy megragadjuk és kiválasszuk az objektumot, mint egy robot kéz. A horoghoz vágjon még két darab 1cmx7cm és 4cmx5cm hosszú kartonlapot. Ragaszd össze őket az ábra szerint, és ragaszd a végső fogaskereket a széléhez.
Szerelje fel ezt a darabot a tetejére, és ezzel megépítettük a robotkarunkat.
Ezzel elkészült az alapvető robotkar tervezésünk, és így építettük meg olcsó robotkarunkat. Most csatlakoztassa az áramkört a kenyérlapon a kapcsolási rajz szerint.
Áramkör és működési magyarázat:
Az Arduino Uno robotkar áramköri csatlakozása az alábbiakban látható.
A változó ellenállások feszültsége nem teljesen lineáris; zajos lesz. Tehát ennek a zajnak a kiszűrésére kondenzátorokat helyeznek el az egyes ellenállásokon, az ábra szerint.
Ezeknek a változó ellenállásoknak a feszültségét (a helyzetszabályozást képviselő feszültséget) az Arduino ADC csatornáiba tápláljuk. Ehhez az UNO négy ADC csatornáját fogjuk használni A0-tól A3-ig. Az ADC inicializálása után digitális értéke lesz a fazekaknak, amelyek a felhasználó számára szükséges pozíciót képviselik. Ezt az értéket felvesszük és a szervo pozícióval egyeztetjük.
Az Arduino-nak hat ADC csatornája van. Négyet használtunk a robotkarunkhoz. Az UNO ADC 10 bites felbontású, tehát az egész értékek 0-1023 (2 ^ 10 = 1024 értékek) között mozognak. Ez azt jelenti, hogy a 0 és 5 volt közötti bemeneti feszültségeket 0 és 1023 közötti egész értékekre fogja feltérképezni. Tehát egységenként (5/1024 = 4,9 mV). Itt többet megtudhat a feszültségszintek feltérképezéséről az ADC csatornák segítségével Arduino-ban.
Ahhoz, hogy az UNO analóg jelet digitális jellé alakítson, az Arduino Uno ADC csatornáját kell használnunk az alábbi funkciók segítségével:
1. analógRead (tű); 2. analóg hivatkozás (); 3. analogReadResolution (bit);
Arduino ADC csatorna van alapértelmezett referenciaértéket 5V. Ez azt jelenti, hogy bármilyen bemeneti csatornán maximális 5 V bemeneti feszültséget adhatunk az ADC konverzióhoz. Mivel egyes szenzorok 0-2,5 V feszültséget szolgáltatnak, így 5 V referencia esetén kisebb pontosságot kapunk, így van egy utasításunk, amely lehetővé teszi számunkra a referenciaérték megváltoztatását. Tehát a referenciaérték megváltoztatásához az „analogReference ();”
Alapértelmezés szerint a kártya maximális 10 bites felbontását kapjuk meg, ez a felbontás az utasítás használatával megváltoztatható („analogReadResolution (bit);”).
Robotkézi áramkörünkben ezt a referenciafeszültséget alapértelmezésre hagytuk, így az ADC csatorna értékét kiolvashatjuk az „analogRead (pin);” függvény közvetlen meghívásával , itt a „pin” azt a csapot jelenti, ahová az analóg jelet csatlakoztattuk, mondjuk „A0” -t akarunk olvasni. Az ADC-ből származó érték egész számba tárolható int SENSORVALUE0 = analogRead (A0); .
Most beszéljünk a SERVO-ról, az Arduino Uno rendelkezik egy olyan funkcióval, amely lehetővé teszi számunkra, hogy a fokérték megadásával szabályozzuk a szervo helyzetét. Mondjuk, ha azt akarjuk, hogy a szervo 30 legyen, akkor közvetlenül képviselhetjük az értéket a programban. A SERVO fejléc ( Servo.h ) fájl belsőleg gondoskodik az összes vámarány- számításról.
#include
Itt az első utasítás a SERVO MOTOR vezérlésének fejlécfájlját ábrázolja. A második állítás a szervo megnevezése; szervo0- ként hagyjuk, mivel négyet fogunk használni. A harmadik utasítás megadja, hogy a szervo jel csapja hol van csatlakoztatva; ennek PWM tűnek kell lennie. Itt a PIN3-at használjuk az első szervóhoz. A negyedik utasítás parancsokat ad a szervomotor fokban való pozícionálására. Ha 30-at kap, a szervomotor 30 fokkal forog.
Az SG90 szervo pozíciónk 0 és 180 között van, az ADC értékek pedig 0-1023. Egy olyan speciális funkciót fogunk használni, amely automatikusan illeszkedik mindkét értékhez.
szenzorérték0 = térkép (szenzorérték0, 0, 1023, 0, 180);
Ez az utasítás automatikusan feltérképezi az értékeket, és az eredményt a „servovalue0” egész számba tárolja.
Így irányítottuk a szervókat Robot Arm projektünkben az Arduino segítségével. Ellenőrizze az alábbi teljes kódot.
A robotkar működtetése:
Négy edény áll a felhasználó rendelkezésére. Ennek a négy fazéknak a forgatásával változó feszültséget biztosítunk az UNO ADC csatornáin. Az Arduino digitális értékeit tehát a felhasználó ellenőrzi. Ezek a digitális értékek a szervomotor helyzetének beállításához vannak feltérképezve, így a szervo pozíciója irányítja a felhasználót, és ezeknek a Pot-oknak a forgatásával a felhasználó mozgathatja a robotkar ízületeit, és bármely tárgyat fel tudja venni vagy megragadhatja.