Tartalomjegyzék:

Huzalvezérelt robotkar: 31 lépés
Huzalvezérelt robotkar: 31 lépés

Videó: Huzalvezérelt robotkar: 31 lépés

Videó: Huzalvezérelt robotkar: 31 lépés
Videó: Mainan Tobot X Y Z K Smartkey VS Legend Hero Changer Robot Toys 2024, November
Anonim
Drótvezérelt robotkar
Drótvezérelt robotkar

Ez egy oktatóanyag arról, hogyan lehet robotkarot vezetékek segítségével vezérelni. A vezetékek használatának előnye, hogy a kar könnyebb, és minden motorja a kar alján lehet, megkönnyítve az építést és a karbantartást. Itt egy videó a kar működéséről. Azt tervezem, hogy a jövőben hozzáadok egy karmot, hogy felvehesse a dolgokat, és ne csak tolja őket.

3D nyomtatható nyomtatók:

Itt és itt

Kellékek

6 szervomotor (MG995)

Arduino Uno

Körülbelül 6 méter műanyag bevonatú acélhuzal (0,5 mm)

23x33x10. Doboz (keskenyebb lehet, biztosan nem lehet rövidebb)

Fa deszka 33x10

Csavarok és anyák

Cső 14 cm (ez szükséges a húrok vezetéséhez)

4 L-konzol

5 voltos adapter

2 7-utas sorkapocs

Kenyeretábla vezetékek

3D nyomtatott alkatrészek (nem én terveztem, linkek a leírás elemeire):

3 „csavar”

2 „1. elem”

1 „2. elem”

2 „3. elem”

1 Báziscsatlakozó

1. lépés: Nyomtassa ki az összes 3D -összetevőt

Szükség lehet a csavarfuratok és ívek támogatására, de ügyeljen arra, hogy ne tegyen támaszt az alkatrészek testére; ez bezárja a kis huzallyukakat, és új lyukakat kell készítenie

2. lépés: (opcionális) Csatlakoztasson egy deszkát a doboz aljához, hogy megerősítse azt

A dobozom elég gyenge volt, a tied lehet, hogy nem

3. lépés: Mérjen meg és vágjon le egy deszkát a dobozhoz

4. lépés: Jelölje meg a motorok helyzetét

ügyeljen arra, hogy egyik kar sem érjen egymáshoz

5. lépés: Jelölje meg a konzolok és a cső helyzetét

Jelölje meg a konzolok és a cső helyzetét
Jelölje meg a konzolok és a cső helyzetét

A csövet körülbelül egy centiméterrel a lyuk elé kell helyezni

6. lépés: Fúrjon lyukat a dobozból kikerülő kábelekhez (USB és tápellátás)

Fúrjon lyukat a dobozból kikerülő kábelekhez (USB és tápellátás)
Fúrjon lyukat a dobozból kikerülő kábelekhez (USB és tápellátás)

7. lépés: Fúrjon és fűrészeljen minden jelzett lyukat

Fúrjon és fűrészeljen minden jelzett lyukat
Fúrjon és fűrészeljen minden jelzett lyukat

8. lépés: Rögzítse a motorokat és a csöveket a deszkához

9. lépés: Rögzítse a deszkát a dobozhoz az L-konzolokkal

10. lépés: Vegye le a terminálblokkokat és forrasztja össze a vezetékeket

Vegye fel a terminálblokkokat és forrasztja össze a vezetékeket
Vegye fel a terminálblokkokat és forrasztja össze a vezetékeket

11. lépés: Vágja el az adapter tápkábelének végét, és távolítsa el a vezetékeket

12. lépés: Azonosítsa és jelölje meg a plusz és mínusz vezetékeket

13. lépés: Csatlakoztassa a vezetékeket a sorkapcsokhoz, hogy az összes + szervo vezeték és a + vezeték a tápkábelről össze legyen kötve, ugyanez vonatkozik a - vezetékekre is

Csatlakoztassa a vezetékeket a sorkapocshoz, hogy az összes + szervohuzal és a tápkábel + vezetéke össze legyen kötve, ugyanez vonatkozik a vezetékekre is
Csatlakoztassa a vezetékeket a sorkapocshoz, hogy az összes + szervohuzal és a tápkábel + vezetéke össze legyen kötve, ugyanez vonatkozik a vezetékekre is

14. lépés: Vágja le a fejet a kenyérsütő drótról

Vágja le a fejét a kenyérpálca drótjáról
Vágja le a fejét a kenyérpálca drótjáról

Csatlakoztassa a kenyeretábla vezetékének lecsupaszított végét a mínusz sorkapocshoz, a csap végét pedig az arduino földelő csapjához. Ha ezt nem teszi meg, a motorok szabálytalanul mozognak minden bemenet nélkül.

15. lépés: Fúrjon három lyukat a doboz aljába a karjából kijövő vezetékekhez

A lyukaknak meg kell egyezniük az alapcsatlakozó lyukaival.

16. lépés: Csatlakoztassa az alapcsatlakozót a dobozhoz

Csatlakoztassa az alapcsatlakozót a dobozhoz
Csatlakoztassa az alapcsatlakozót a dobozhoz

17. lépés: Kés vagy körömreszelő segítségével mélyítse el a huzalhornyokat

Kés vagy körömreszelő segítségével mélyítse el a huzalhornyokat
Kés vagy körömreszelő segítségével mélyítse el a huzalhornyokat

A 2. és 3. elem huzalhornyai túl sekélyek.

18. lépés: A kar felépítése

Konstruálja meg a kart
Konstruálja meg a kart

Készítse el a kart az itt leírtak szerint, szükség lehet arra, hogy az alkatrészeket illessze, hogy illeszkedjenek

19. lépés: A Processing és az Arduino telepítése

Feldolgozás és Arduino

20. lépés: Illessze be a kódprogramokat

A kód az oldal alján található

21. lépés: Csatlakoztassa a szervo vezérlőcsapokat az Arduino -hoz

Csatlakoztassa a szervo vezérlőcsapokat az Arduino -hoz
Csatlakoztassa a szervo vezérlőcsapokat az Arduino -hoz

Az első motort a harmadik digitális csaphoz kötöttem, a második motort a negyedik digitális tüskéhez és így tovább. Győződjön meg arról, hogy a földelőcsap még mindig a - sorkapocshoz van csatlakoztatva.

22. lépés: Nyomja meg a Reset gombot a feldolgozás során, ez 90 fokosra állítja az összes karot

23. lépés: Rögzítse a szervókarokat vízszintesen a motorhoz

24. lépés: Húzza át a vezetékeket a karokon, hogy ne legyen laza

Győződjön meg arról, hogy a huzalt a lehető legtöbb lyukon átfűzte, ez ideiglenesen megtartja és könnyen eltávolítható.

25. lépés: Próbálja ki a kart, és szükség szerint húzza meg vagy lazítsa meg a vezetékeket

26. lépés: Ragasztja a vezetékeket a szervo karokhoz, hogy tartós legyen

27. lépés: Megjegyzések

Megjegyzések
Megjegyzések

0,5 mm -es ékszerdrótot használtam, de 0,4 mm -nek jónak kell lennie. Az eredeti kialakítás PVC huzalt használt, de túl könnyen eltört, és nehéz volt vele dolgozni.

Ha autóban vagy kerékpárban fogja mozgatni a karját, tekerje szalagba a karcsuklókat, hogy megbizonyosodjon arról, hogy nem pattannak ki. Ez különösen fontos az 1. elem esetében.

Amikor elkezdtem ezt a projektet, azon tűnődtem, vajon miért nem találok csak egy oktatóanyagot arról, hogyan lehet karokat vezetékek segítségével vezérelni. Most már értem, hogy miért nem ez a leggyakoribb hobbi robotkar készítési módja. A vezetékek néha kiesnek a barázdáikból, és az egész valahogy gyenge. Nem tudom, hogy a problémák azért vannak -e, mert nincs sok tapasztalatom, vagy az egész ötlet problémás, bár biztos vagyok benne, hogy szilárdabb lenne, ha tudnám, mit csinálok.

28. lépés: Hibaelhárítás

A huzallyukak le vannak zárva a 3D nyomtatott elemekben:

Támogatást adott hozzá az egész elemhez, nem csak a csavarfuratokhoz. Vagy nyomtassa ki újra az elemet, vagy nyissa ki a lyukakat egy igazán forró tűvel.

A COM port zárva van, nem tud kommunikálni az arduino -val:

Előfordulhat, hogy az arduino nem fogadja el az USB 3 portokat (az enyém nem), vagy vásárolhat USB 2 hosszabbító kábelt, vagy használhat egy számítógépet, amely rendelkezik USB 2 portokkal

A kód nem működik:

Kövesse ezt az oktatóanyagot, és módosítsa azt, hogy saját kódot készítsen

A kar egy része nem mozog:

Lehet, hogy a vezetékek összegabalyodtak, ennek ellenőrzéséhez vegye le a szervokart a szervóról, és próbálja kézzel húzni a vezetékeket. Bontsa szét a vezetékeket, és ha még mindig nehéz meghúzni a vezetékeket, próbáljon WD-40-et vagy kenőanyagot használni, hogy megkönnyítse a mozgást

29. lépés: Linkek

Nem robotkar:

3D nyomtatható nyomtatók élesítése:

Az én karom 3D nyomtatható:

Arduino és feldolgozás:

30. lépés: Kód

Ebből a kódból módosítva

Arduino kód:

#include // A motorok deklarálása Servo myservo1; Szervo myservo2; Szervo myservo3; Szervo myservo4; Szervo myservo5; Szervo myservo6; // Alapértelmezés szerint minden motor 90 fokosra van állítva int current1 = 90; int áram2 = 90; int áram3 = 90; int áram4 = 90; int áram5 = 90; int áram6 = 90; // Minimális és maximális fokok, amelyeket a motorok elérhetnek int mini1 = 0; int maxi1 = 180; int mini2 = 0; int maxi2 = 180; int mini3 = 0; int maxi3 = 180; int mini4 = 0; int maxi4 = 180; int mini5 = 0; int maxi5 = 180; int mini6 = 0; int maxi6 = 180; // Az aktuális pozícióhoz hozzáadandó vagy kivonandó fokok int fokFoward = 5; // Késleltetés, így két függvény nem történik rossz sorrendben int delayBetweenSteps = 100; void setup () {// Állítsa be a vezérlőcsapokat minden motorhoz myservo1.attach (3); myservo2.attach (4); myservo3.attach (5); myservo4.attach (6); myservo5.attach (7); myservo6.attach (8); // Állítsa be az összes motort az alapértelmezett beállításra myservo1.write (current1); myservo2.write (aktuális2); myservo3.write (aktuális3); myservo4.write (aktuális4); myservo5.write (jelenlegi5); myservo6.write (aktuális6); // soros kommunikáció indítása @9600 bps Serial.begin (9600); } void loop () {if (Serial.available ()) {// ha rendelkezésre állnak adatok olvasásra char val = Serial.read (); // tegye bele ebbe a karakterbe // Motor Controls if (val == 'a' && current1 + fokFoward mini1) {myservo1.write (current1 - fokFoward); áram1 = áram1 - fokFoward; delay (delayBetweenSteps); } if (val == 'c' && jelenlegi2 mini2) {myservo2.write (jelenlegi2 - fokFoward); áram2 = áram2 - fokFoward; delay (delayBetweenSteps); } if (val == 'e' && current3 mini3) {myservo3.write (jelenlegi3 - fokFoward); áram3 = áram3 - fokFoward; delay (delayBetweenSteps); } if (val == 'g' && current4 mini4) {myservo4.write (jelenlegi4 - fokFoward); áram4 = áram4 - fokFoward; delay (delayBetweenSteps); } if (val == 'i' && current5 mini5) {myservo5.write (jelenlegi5 - fokFoward); áram5 = áram5 - fokFoward; delay (delayBetweenSteps); } if (val == 'k' && current6 mini6) {myservo6.write (jelenlegi6 - fokFoward); áram6 = áram6 - fokFoward; delay (delayBetweenSteps); } // Sebesség Szabályozza, hogy (val == 'w') {// Ha az 1 -es sebesség gomb megnyomása fokFoward = 1; delay (delayBetweenSteps); } if (val == 'x') {// Ha az 5 -ös sebesség gomb megnyomása fokFoward = 5; delay (delayBetweenSteps); } if (val == 'y') {// Ha a 10 -es sebesség gomb megnyomása fokFoward = 10; delay (delayBetweenSteps); } if (val == 'z') {// Ha a 20 -as sebesség gomb megnyomása fokFoward = 20; delay (delayBetweenSteps); } if (val == 'r') {// Ha a 20. sebesség gomb megnyomása myservo1.write (90); áram1 = 90; myservo2.write (90); áram2 = 90; myservo3.write (90); áram3 = 90; myservo4.write (90); áram4 = 90; myservo5.write (90); áram5 = 90; myservo6.write (90); áram6 = 90; delay (delayBetweenSteps); }}}

Feldolgozási kód:

import feldolgozás.sorozat.*; importellenőrzésP5.*; // ControlP5 könyvtár importálása Soros port; ControlP5 cp5; // ControlP5 objektum létrehozása PFont betűtípus; void setup () {// ugyanaz, mint az arduino program mérete (300, 700); // ablak mérete, (szélesség, magasság) printArray (Serial.list ()); // kinyomtatja az összes elérhető soros portot // Ha problémája van, valószínűleg innen származik. String portName = Serial.list () [0]; port = új soros (ez, portName, 9600); // az arduino -t a com3 -hoz kapcsoltam, más lenne a Linux és a mac os rendszerben // adjunk hozzá butont az üres ablakhoz cp5 = new ControlP5 (this); font = createFont ("Arial", 13); // egyéni betűtípusok a gombokhoz és a címekhez // Sebességszabályozó gombok cp5.addButton ("One") // "One" a.setPosition (50, 50) // gomb bal felső sarkának x és y koordinátái.setSize (55, 25) // (szélesség, magasság).setFont (betűtípus); cp5.addButton ("Öt").setPosition (110, 50).setSize (55, 25).setFont (betűtípus); cp5.addButton ("Tíz").setPosition (170, 50).setSize (55, 25).setFont (betűtípus); cp5.addButton ("Húsz").setPosition (230, 50).setSize (55, 25).setFont (betűtípus); cp5.addButton ("Reset").setPosition (110, 2).setSize (55, 25).setFont (betűtípus); cp5.addButton ("Servo_1_Foward").setPosition (50, 90).setSize (190, 40).setFont (betűtípus); // Motorvezérlő gombok cp5.addButton ("Servo_1_Back").setPosition (50, 140).setSize (190, 40).setFont (betűtípus); cp5.addButton ("Servo_2_Foward").setPosition (50, 190).setSize (190, 40).setFont (betűtípus); cp5.addButton ("Servo_2_Back").setPosition (50, 240).setSize (190, 40).setFont (betűtípus); cp5.addButton ("Servo_3_Foward").setPosition (50, 290).setSize (190, 40).setFont (betűtípus); cp5.addButton ("Servo_3_Back").setPosition (50, 340).setSize (190, 40) // (szélesség, magasság).setFont (betűtípus); cp5.addButton ("Servo_4_Foward").setPosition (50, 390).setSize (190, 40).setFont (betűtípus); cp5.addButton ("Servo_4_Back").setPosition (50, 440).setSize (190, 40) // (szélesség, magasság).setFont (betűtípus); cp5.addButton ("Servo_5_Foward").setPosition (50, 490).setSize (190, 40).setFont (betűtípus); cp5.addButton ("Servo_5_Back").setPosition (50, 540).setSize (190, 40).setFont (betűtípus); cp5.addButton ("Servo_6_Foward").setPosition (50, 590).setSize (190, 40).setFont (betűtípus); cp5.addButton ("Servo_6_Back").setPosition (50, 640).setSize (190, 40).setFont (betűtípus); } void draw () {// ugyanaz, mint a hurok arduino háttérben (192, 215, 249); // az ablak háttérszíne (r, g, b) vagy (0 - 255) // Szöveg hozzáadása, amely azt mondja, hogy a sebességszabályozás sebességszabályozó kitöltés (0, 10, 25); // szöveg színe (r, g, b) textFont (betűtípus); szöveg ("Sebességszabályozás", 50, 40); // ("szöveg", x koordináta, y koordináta)} // néhány funkciót adhat hozzá a gombjainkhoz // így bármelyik gomb megnyomásakor az adott karaktert a soros porton keresztül küldi // Biztos vagyok benne, hogy lehetséges karakterláncok küldése karakterek helyett, és több értelme lenne, de nem tudom, hogyan tegyem // Sebességszabályozó parancsok void One () {port.write ('w'); } void Five () {port.write ('x'); } void Ten () {port.write ('y'); } void Húsz () {port.write ('z'); } // Motorvezérlő parancsok void Servo_1_Foward () {port.write ('a'); } void Servo_1_Back () {port.write ('b'); } void Servo_2_Foward () {port.write ('c'); } void Servo_2_Back () {port.write ('d'); } void Servo_3_Foward () {port.write ('e'); } void Servo_3_Back () {port.write ('f'); } void Servo_4_Foward () {port.write ('g'); } void Servo_4_Back () {port.write ('h'); } void Servo_5_Foward () {port.write ('i'); } void Servo_5_Back () {port.write ('j'); } void Servo_6_Foward () {port.write ('k'); } void Servo_6_Back () {port.write ('l'); } void Reset () {port.write ('r'); }

31. lépés: További képek

Ajánlott: