Mundarija:

Sim bilan boshqariladigan robot qo'l: 31 qadam
Sim bilan boshqariladigan robot qo'l: 31 qadam

Video: Sim bilan boshqariladigan robot qo'l: 31 qadam

Video: Sim bilan boshqariladigan robot qo'l: 31 qadam
Video: Davlat raqam belgisini o‘zgacha usulda yashirgan haydovchi qo‘lga tushdi 2024, Noyabr
Anonim
Sim bilan boshqariladigan robot qo'l
Sim bilan boshqariladigan robot qo'l

Bu simlar yordamida boshqariladigan robot qo'lini yasash bo'yicha qo'llanma. Simlardan foydalanishning afzalligi shundaki, sizning qo'lingiz engilroq va siz barcha dvigatellarni qo'lingizning tagiga qo'yib, qurilish va texnik xizmat ko'rsatishni osonlashtirasiz. Bu erda qo'lning harakatdagi videosi. Men kelajakda panjani qo'shishni rejalashtirmoqdaman, shunda u narsalarni tortib olmasligi mumkin.

3D bosma nashrlar:

Bu erda va bu erda

Ta'minotlar

6 Servo motor (MG995)

Arduino Uno

Taxminan 6 metr plastik qoplamali po'lat sim (0,5 mm)

23x33x10 quti (torroq bo'lishi mumkin, aniqrog'i qisqa bo'lmasligi kerak)

Yog'ochdan yasalgan taxta 33x10

Yong'oqlar va murvat

Quvur 14 sm (bu iplarni yo'naltirish uchun kerak)

4 ta L-qavs

5 voltli adapter

2 ta 7 tomonlama terminal bloklari

Non paneli simlari

3D bosma komponentlar (men ishlab chiqmaganman, tavsifdagi elementlarga havolalar):

3 "murvat"

2 "Element 1"

1 "2 -element"

2 "3 -element"

1 Asosiy ulagich

1 -qadam: Barcha 3D komponentlarini chop eting

Siz murvat teshiklari va kamarlarini qo'llab -quvvatlashga muhtoj bo'lishingiz mumkin, lekin uning qismlariga korpus qo'shilmasligiga ishonch hosil qiling; bu kichik sim teshiklarini yopadi va siz yangi teshiklarni ochishingiz kerak bo'ladi

2 -qadam: (Majburiy emas) Uni mustahkamlash uchun qutining pastki qismiga yog'och taxta yopishtiring

Mening qutim juda zaif edi, sizniki bo'lmasligi mumkin

3 -qadam: qutiga mos keladigan yog'och taxtani o'lchab, kesib oling

4 -qadam: Dvigatellarning pozitsiyalarini belgilang

qo'llarning hech biri bir -biriga tegmasligiga ishonch hosil qiling

5 -qadam: Qavslar va quvurlarning joylashishini belgilang

Qavslar va quvurlarning joylashishini belgilang
Qavslar va quvurlarning joylashishini belgilang

Quvurni teshik oldida taxminan bir santimetrga qo'yish kerak

6 -qadam: Sizning qutingizdan chiqadigan kabellar uchun teshik qiling (USB va quvvat)

Qutingizdan chiqadigan kabellar uchun teshik qiling (USB va quvvat)
Qutingizdan chiqadigan kabellar uchun teshik qiling (USB va quvvat)

7 -qadam: Barcha belgilangan teshiklarni burg'ulash va arralash

Matkap va barcha belgilangan teshiklarni ko'rdi
Matkap va barcha belgilangan teshiklarni ko'rdi

8 -qadam: Dvigatellar va quvurlarni taxtaga ulang

9-qadam: Plankani L-qavs bilan qutiga mahkamlang

10 -qadam: Terminal bloklarini oling va simlarni lehimlang

Terminal bloklarini oling va simlarni lehimlang
Terminal bloklarini oling va simlarni lehimlang

11 -qadam: Adapter quvvat simining uchini kesib oling va simlarni uzing

12 -qadam: Plus va minus simlarini aniqlang va belgilang

13 -qadam: Simlarni terminal bloklariga ulang, shunda barcha + servo simlar va elektr simidan + simlar ulanadi, simlar uchun ham xuddi shunday

Simlarni terminal bloklariga ulang, shunda barcha + servo simlar va elektr simidan + simlar ulanadi, simlar uchun ham xuddi shunday
Simlarni terminal bloklariga ulang, shunda barcha + servo simlar va elektr simidan + simlar ulanadi, simlar uchun ham xuddi shunday

14 -qadam: Boshini non panelidan kesib oling

Boshini bir Breadboard Wire CUT
Boshini bir Breadboard Wire CUT

Tarmoq simining yirtilgan uchini minus terminal blokiga va pin uchini arduino -dagi er uchiga ulang. Agar buni qilmasangiz, dvigatellar hech qanday kirishlarsiz tartibsiz harakat qiladi.

15 -qadam: Qo'lingizdan chiqadigan simlar uchun qutining pastki qismida uchta teshik oching

Teshiklar taglik ulagichidagi teshiklarga to'g'ri kelishi kerak.

16 -qadam: Asosiy ulagichni qutiga ulang

Box uchun Base Connector biriktiring
Box uchun Base Connector biriktiring

17 -qadam: simli yivlarni chuqurroq qilish uchun pichoq yoki tirnoq faylidan foydalaning

Pichoq yoki tirnoq faylidan foydalanib, simli yivlarni chuqurroq qiling
Pichoq yoki tirnoq faylidan foydalanib, simli yivlarni chuqurroq qiling

2 va 3 -elementlar uchun simli oluklar juda sayoz.

18 -qadam: qo'lni qurish

Qo'lni qurish
Qo'lni qurish

Qo'lni bu erdagi ko'rsatmalarga binoan tuzing, siz qismlarni mos keladigan tarzda joylashtirishingiz kerak bo'lishi mumkin

19 -qadam: Processing va Arduino -ni o'rnating

Qayta ishlash va Arduino

20 -qadam: Kod dasturlarini joylashtiring

Kod sahifaning pastki qismida joylashgan

21 -qadam: Servo boshqaruv pimlarini Arduino -ga ulang

Arduino uchun Servo nazorat Pins ulang
Arduino uchun Servo nazorat Pins ulang

Men birinchi dvigatelni uchinchi raqamli pin, ikkinchi motorni to'rtinchi raqamli pin va boshqalarga uladim. Topraklama pimi haligacha terminal blokiga ulanganligiga ishonch hosil qiling.

22 -qadam: Qayta tiklash tugmachasini bosing, bu barcha qo'llarni 90 darajaga o'rnatadi

23 -qadam: Servo qo'llarini motorga gorizontal ravishda mahkamlang

24 -qadam: Simlar bo'shashmasligi uchun ularni qo'llar orasidan o'tkazing

Iloji boricha ko'proq teshikdan o'tkazganingizga ishonch hosil qiling, bu uni vaqtincha ushlab turadi va olib tashlash oson bo'ladi.

25 -qadam: Qo'lni sinab ko'ring va simlarni kerak bo'lganda torting yoki bo'shating

26 -qadam: Servo qo'llarini simlarni doimiy yopishtirish uchun issiq yopishtiring

27 -qadam: Eslatmalar

Eslatmalar
Eslatmalar

Men 0,5 mm zargarlik simini ishlatardim, lekin 0,4 mm yaxshi bo'lishi kerak. Original dizaynda PVX sim ishlatilgan, lekin u juda oson uzilib ketgan va u bilan ishlash qiyin bo'lgan.

Agar siz qo'lni mashinada yoki velosipedda harakatlantirmoqchi bo'lsangiz, qo'llar bo'g'inlari chiqib ketmasligiga ishonch hosil qiling. Bu, ayniqsa, 1 -element uchun juda muhimdir.

Men bu loyihani boshlaganimda, men nima uchun faqat simlar yordamida boshqariladigan qo'lni yasash bo'yicha bitta qo'llanma topa olaman deb o'ylardim. Endi men nima uchun bu sevimli mashg'ulotlardan robot qo'lini yasashning eng keng tarqalgan usuli emasligini tushunaman. Ba'zida simlar yivlaridan tushadi va hamma narsa qandaydir zaif. Bilmadim, muammolar menda katta tajribaga ega emasmi yoki butun fikr muammolimi, lekin men nima qilayotganimni bilsam, bu yanada mustahkamroq bo'lishiga aminman.

28 -qadam: Muammolarni bartaraf etish

Simli teshiklar 3D bosilgan elementlarda yopiladi:

Siz murvat teshiklari o'rniga butun elementni qo'llab -quvvatladingiz. Yoki elementni qayta chop eting yoki teshiklarni chindan ham issiq igna bilan oching.

COM porti yopiq, siz arduino bilan bog'lana olmaysiz:

Sizning arduino USB 3 portini qabul qilmasligi mumkin (meniki emas), siz USB 2 uzatma kabelini sotib olishingiz yoki USB 2 portli kompyuterdan foydalanishingiz mumkin.

Kod ishlamayapti:

O'zingizning kodingizni yaratish uchun ushbu qo'llanmani bajaring va o'zgartiring

Qo'lning bir qismi qimirlamaydi:

Simlar chalkashib ketgan bo'lishi mumkin, buni tekshirish uchun servo qo'lni servodan chiqarib oling va simlarni qo'l bilan tortib ko'ring. Simlarni echib oling va simlarni tortish hali ham qiyin bo'lsa, harakatni engillashtirish uchun WD-40 yoki moylash vositasidan foydalaning.

29 -qadam: havolalar

Robotik bo'lmagan qo'l:

3D bosma qo'llar:

Mening qo'limni 3D bosib chiqarish:

Arduino va ishlov berish:

30 -qadam: kod

Ushbu koddan o'zgartirilgan

Arduino kodi:

#include // Dvigatellarni Servo myservo1 deb e'lon qiling; Servo myservo2; Xizmat ko'rsatish myservo3; Servo myservo4; Servo myservo5; Servo myservo6; // Barcha motorlar sukut bo'yicha 90 darajaga o'rnatiladi int current1 = 90; int joriy2 = 90; int joriy3 = 90; int joriy4 = 90; int joriy5 = 90; int joriy 6 = 90; // Dvigatellar int mini1 = 0 ga yetishi mumkin bo'lgan minimal va maksimal darajalar; 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; // joriy darajadan qo'shiladigan yoki olib tashlanadigan darajalar int darajalariFoward = 5; // Kechiktirish, shuning uchun ikkita funktsiya noto'g'ri tartibda sodir bo'lmaydi int delayBetweenSteps = 100; void setup () {// myservo1.attach (3) har bir dvigatel uchun boshqaruv pinlarini o'rnating; myservo2.attach (4); myservo3.attach (5); myservo4.attach (6); myservo5.attach (7); myservo6.attach (8); // Barcha motorlarni myservo1.write (current1) standart sozlamasiga o'rnating; myservo2.write (joriy2); myservo3.write (current3); myservo4.write (current4); myservo5.write (joriy5); myservo6.write (current6); // ketma -ket aloqani boshlash @9600 bps Serial.begin (9600); } void loop () {if (Serial.available ()) {// agar o'qish uchun ma'lumotlar mavjud bo'lsa val val = Serial.read (); // uni bu belgiga qo'ying // Dvigatel boshqaruvlari agar (val == 'a' && current1 + darajaFoward mini1) {myservo1.write (current1 - darajaFoward); joriy1 = joriy1 - darajaHarakat; kechikish (delayBetweenSteps); } if (val == 'c' && current2 mini2) {myservo2.write (current2 - dərəcəFoward); joriy2 = joriy2 - darajaFor; kechikish (delayBetweenSteps); } if (val == 'e' && current3 mini3) {myservo3.write (current3 - darajaFoward); joriy3 = joriy3 - darajaHarakat; kechikish (delayBetweenSteps); } if (val == 'g' && current4 mini4) {myservo4.write (current4 - darajaFoward); joriy4 = joriy4 - darajaFor; kechikish (delayBetweenSteps); } if (val == 'i' && current5 mini5) {myservo5.write (current5 - darajaFoward); joriy5 = oqim5 - darajaFor; kechikish (delayBetweenSteps); } if (val == 'k' && current6 mini6) {myservo6.write (current6 - darajaFoward); joriy6 = oqim6 - darajaHarakat; kechikish (delayBetweenSteps); } // Tezlikni boshqarish agar (val == 'w') {// Agar tezlik 1 tugmasi daraja bosilsaFoward = 1; kechikish (delayBetweenSteps); } if (val == 'x') {// Agar tezlik 5 tugmasi daraja bosilsaFoward = 5; kechikish (delayBetweenSteps); } if (val == 'y') {// Agar tezlik 10 tugmasi daraja bosilsaFoward = 10; kechikish (delayBetweenSteps); } if (val == 'z') {// Agar tezlik 20 tugmasi daraja bosilsaFoward = 20; kechikish (delayBetweenSteps); } if (val == 'r') {// Agar tezlik 20 tugmasi bosilsa myservo1.write (90); joriy1 = 90; myservo2.write (90); joriy2 = 90; myservo3.write (90); joriy3 = 90; myservo4.write (90); joriy4 = 90; myservo5.write (90); oqim5 = 90; myservo6.write (90); joriy6 = 90; kechikish (delayBetweenSteps); }}}

Kodni qayta ishlash:

importni qayta ishlash.serial.*; import nazoratiP5.*; // Import ControlP5 kutubxonasi ketma -ket port; ControlP5 cp5; // ControlP5 obyekti PFont shriftini yaratish; void setup () {// arduino dasturining o'lchami bilan bir xil (300, 700); // oyna o'lchami, (kenglik, balandlik) printArray (Serial.list ()); // barcha mavjud ketma -ket portlarni chop etadi // Agar muammoga duch kelsangiz, ehtimol bu yerdan keladi String portName = Serial.list () [0]; port = yangi Serial (bu, portName, 9600); // men arduino -ni com3 -ga uladim, bu Linux va mac os -da boshqacha bo'ladi // bo'sh oynaga buton qo'shish imkonini beradi cp5 = yangi ControlP5 (bu); shrift = createFont ("Arial", 13); // tugmalar va sarlavhalar uchun maxsus shriftlar // Tezlikni boshqarish tugmalari cp5.addButton ("Bir") // "Bir" - tugma nomi.setPosition (50, 50) // tugmachaning yuqori chap burchagining x va y koordinatalari..setSize (55, 25) // (kenglik, balandlik).setFont (shrift); cp5.addButton ("Besh").setPosition (110, 50).setSize (55, 25).setFont (shrift); cp5.addButton ("O'n").setPosition (170, 50).setSize (55, 25).setFont (shrift); cp5.addButton ("Yigirma").setPosition (230, 50).setSize (55, 25).setFont (shrift); cp5.addButton ("Qayta o'rnatish").setPosition (110, 2).setSize (55, 25).setFont (shrift); cp5.addButton ("Servo_1_Foward").setPosition (50, 90).setSize (190, 40).setFont (shrift); // Dvigatelni boshqarish tugmalari cp5.addButton ("Servo_1_Back").setPosition (50, 140).setSize (190, 40).setFont (shrift); cp5.addButton ("Servo_2_Foward").setPosition (50, 190).setSize (190, 40).setFont (shrift); cp5.addButton ("Servo_2_Back").setPosition (50, 240).setSize (190, 40).setFont (shrift); cp5.addButton ("Servo_3_Foward").setPosition (50, 290).setSize (190, 40).setFont (shrift); cp5.addButton ("Servo_3_Back").setPosition (50, 340).setSize (190, 40) // (kenglik, balandlik).setFont (shrift); cp5.addButton ("Servo_4_Foward").setPosition (50, 390).setSize (190, 40).setFont (shrift); cp5.addButton ("Servo_4_Back").setPosition (50, 440).setSize (190, 40) // (kenglik, balandlik).setFont (shrift); cp5.addButton ("Servo_5_Foward").setPosition (50, 490).setSize (190, 40).setFont (shrift); cp5.addButton ("Servo_5_Back").setPosition (50, 540).setSize (190, 40).setFont (shrift); cp5.addButton ("Servo_6_Foward").setPosition (50, 590).setSize (190, 40).setFont (shrift); cp5.addButton ("Servo_6_Back").setPosition (50, 640).setSize (190, 40).setFont (shrift); } void draw () {// arduino fonidagi pastadir bilan bir xil (192, 215, 249); // oynaning fon rangi (r, g, b) yoki (0 dan 255 gacha) // Tezlikni boshqarish tezlikni boshqarish (0, 10, 25) degan matnni qo'shing; // matn rangi (r, g, b) textFont (shrift); matn ("Tezlikni boshqarish", 50, 40); // ("matn", x koordinatasi, y koordinatasi)} // tugmalarimizga ba'zi funktsiyalarni qo'shish imkonini beradi // shuning uchun biron bir tugmani bosganingizda u ketma -ket port orqali ma'lum bir char yuboradi // Ishonchim komilki, satrlarni yuborish mumkin. belgilar o'rniga, va bu mantiqan to'g'ri bo'lardi, lekin men buni qanday qilishni bilmayman // Tezlikni boshqarish buyruqlari void One () {port.write ('w'); } void Five () {port.write ('x'); } void Ten () {port.write ('y'); } bo'sh Twenty () {port.write ('z'); } // Dvigatelni boshqarish buyruqlari bekor Servo_1_Foward () {port.write ('a'); } bekor Servo_1_Back () {port.write ('b'); } void Servo_2_Foward () {port.write ('c'); } bekor Servo_2_Back () {port.write ('d'); } bekor Servo_3_Foward () {port.write ('e'); } bekor Servo_3_Back () {port.write ('f'); } bekor Servo_4_Foward () {port.write ('g'); } bekor Servo_4_Back () {port.write ('h'); } bekor Servo_5_Foward () {port.write ('i'); } bekor Servo_5_Back () {port.write ('j'); } bekor Servo_6_Foward () {port.write ('k'); } bekor Servo_6_Back () {port.write ('l'); } void Reset () {port.write ('r'); }

31 -qadam: Qo'shimcha rasmlar

Tavsiya: