Mundarija:

Arduino boshqariladigan robotli qo'l W/ 6 darajali erkinlik: 5 qadam (rasmlar bilan)
Arduino boshqariladigan robotli qo'l W/ 6 darajali erkinlik: 5 qadam (rasmlar bilan)

Video: Arduino boshqariladigan robotli qo'l W/ 6 darajali erkinlik: 5 qadam (rasmlar bilan)

Video: Arduino boshqariladigan robotli qo'l W/ 6 darajali erkinlik: 5 qadam (rasmlar bilan)
Video: DUNYODAGI ENG AQILLIY TOP 6 TA ROBOT 2024, Iyul
Anonim
Arduino boshqariladigan robotli qo'l W/ 6 darajali erkinlik
Arduino boshqariladigan robotli qo'l W/ 6 darajali erkinlik
Arduino boshqariladigan robotli qo'l W/ 6 darajali erkinlik
Arduino boshqariladigan robotli qo'l W/ 6 darajali erkinlik
Arduino boshqariladigan robotli qo'l W/ 6 darajali erkinlik
Arduino boshqariladigan robotli qo'l W/ 6 darajali erkinlik

Men robototexnika guruhining a'zosiman va har yili bizning guruh har yili o'tkaziladigan Mini Maker yarmarkasida qatnashadi. 2014 yildan boshlab men har yili o'tkaziladigan tadbir uchun yangi loyiha qurishga qaror qildim. O'sha paytda, voqeadan bir oy oldin menda nimadir yig'ish kerak edi va men nima qilishni xohlayotganimni bilmasdim.

A'zolarimdan biri "ochiq manbali robotli qo'l qurilishi" havolasini joylashtirdi, bu mening qiziqishimni oshirdi. Rejalar faqat qo'li yoki boshqaruvchisi bo'lmagan qo'l edi. Vaqt cheklanishimni hisobga oladigan bo'lsak, bu juda yaxshi boshlanish nuqtasi bo'lib tuyuldi. Yagona muammo shundaki, menda boshlash uchun hech qanday vosita yo'q edi.

Guruh a'zolarining yordami bilan men akril qismlarini kesib, menga yuborishga muvaffaq bo'ldim, shuningdek ikkita 3D bosilgan qismlar quyida ko'rsatilgan. Bir necha kecha -kunduzgi apparat buyurtmalari va mahalliy apparat do'koniga bir nechta sayohatlar bilan birlashib, voqeadan bir kun oldin men ishchi loyihani yakunladim!

Odatdagidek, quyida ko'rib turganingizdek, qurilishda hikoya va bir nechta mujassamliklar bor. Agar sizda hikoya qiziqtirsa, ko'proq ma'lumotni bu erda topishingiz mumkin:

1 -qadam: Sizga kerak bo'lgan narsa - Uskuna va elektronika

Sizga nima kerak - apparat va elektronika
Sizga nima kerak - apparat va elektronika
Sizga nima kerak - apparat va elektronika
Sizga nima kerak - apparat va elektronika

Dastlabki loyiha ishlab chiqaruvchisi Evropada yashagan va keyinchalik metrik o'lchovlar va u erda keng tarqalgan materiallardan foydalangan. Masalan, uning tanasi uchun ishlatilgan press-taxtaning qalinligi 5 mm. AQShda shunga o'xshash materialning qalinligi taxminan 3,7 mm bo'lgan 1/8 dyuymni tashkil etadi. Bu teshiklarni bo'sh joy qoldirdi. Chizilgan rasmlarni to'g'rilashning o'rniga, bu bo'g'inlarni mahkamlash uchun Gorilla elimdan foydalanganman.

U, shuningdek, AQShdagi mahalliy apparat do'konida standart bo'lmagan M3 tishli yong'oq va murvatlardan foydalangan. Ularni mahalliy variantlarga aylantirish o'rniga, men quyida keltirilgan qismlarimda ko'rsatilgandek, uskunani onlayn buyurtma qildim.

  • 22 - M3 x 0,5 x 23 mm
  • 15 - M3 x 15 mm bo'shliqlar
  • 40 - M3 vintlardek
  • M3 olti burchakli yong'oqlar
  • M3 25 mm vintlardek
  • 1 - bahor
  • 3/4 "Ikki tomonlama o'rnatish lentasi
  • 5 - SG 5010 TowerPro Servo
  • 1 - SG92R TowerPro mini servo
  • 1 - SG90 TowerPro mini servo
  • 2,54 mm bitta qatorli tekis pinli sarlavha
  • 1 - yarim o'lchamli non paneli
  • 1 - Ayol/Erkak "Kengaytma" o'tish simlari - 40 x 6"
  • 1 - 12 "x 24" ko'k akril varaq yoki sizning sevimli xizmat ko'rsatuvchi provayderingizning lazerli kesilgan qismlari
  • 2 - 3 mm x 20 mm + 4 mm x 5 mm bo'g'inli yotqizgichlar 3D bosilgan (pastga qarang)
  • 1 - Boshqarish paneli *Elektr simlari bo'limidagi Izohga qarang
  • 1 - tarqalgan RGB (uch rangli) 10 mm LED
  • 1 - Arduino Uno
  • 1 - standart 16x2 LCD + qo'shimchalar - ko'kda oq
  • 1 - i2c / SPI xarakterli LCD ryukzak
  • 1-Adafruit 16-kanalli 12-bitli PWM/Servo drayveri
  • 1 - MCP3008 - SPI interfeysi bilan 8 kanalli 10 bitli ADC
  • 3 - JoyStick Breakout Module Sensor *Simlar bo'limidagi izohga qarang
  • DC Barrel Jek
  • AC to DC adapteri
  • Servo uzatma kabellari - har xil uzunliklar

Bu qo'lning deyarli barcha qismlari 1/8 dyuymli akrildan kesilgan. Biroq, ikkita bo'g'inli yotqizgichni bosib chiqarish kerak. Bundan tashqari, ishlab chiqilgan asl nusxada ikkita bo'g'inli tayanchni rulman miliga 7 mm balandlikda bo'lish talab qilingan. Men yuqori qo'lni yig'ishni boshlaganimda, TowerPro servolari balandligi tufayli ular juda baland ekanligi aniq bo'ldi. Men balandligi atigi 3 mm bo'lgan taglikdan yasalgan yangi bo'g'inlarga ega bo'lishim kerak edi. Siz servolaringizning nisbiy balandligiga e'tibor qaratishni va ikkita pastki qo'l orasidagi masofani hisobga olishni xohlaysiz:

Servo balandligi + servo shox + qo'shma rulman + ikki tomonlama lenta = 47 mm +/- 3 mm.

2 -qadam: qo'llarni yig'ish

Qo'llar yig'ilishi
Qo'llar yig'ilishi
Qo'llar yig'ilishi
Qo'llar yig'ilishi
Qo'llar yig'ilishi
Qo'llar yig'ilishi
Qo'llar yig'ilishi
Qo'llar yig'ilishi

Ishni boshlashdan oldin, barcha servolarni markazlashtirganingizga ishonch hosil qiling! Agar qurilish paytida istalgan vaqtda, agar siz servo holatini qo'lda siljitsangiz, uni ramkaga mahkamlashdan oldin uni yaqinlashtirishingiz kerak bo'ladi. Bu, ayniqsa, har doim hamjihatlikda harakatlanishi kerak bo'lgan yelka servolari uchun juda muhimdir.

  1. Asosiy servoni M3 25 mm vintlardek va olti burchakli yong'oq yordamida yuqori taglik plastinkasiga ulang. QAYD: Ish paytida yong'oqning gevşemesini kamaytirish uchun iplarga mahkam bog'lab qo'yishni xohlashingiz mumkin.
  2. Agar siz yuqorida aytib o'tilgan qismlar ro'yxatidan foydalansangiz, siz M3 x 0,5 x 23 mm o'lchamdagi har bir bo'lakni 2 tadan bog'lab, so'ngra oltita yong'oq bilan yuqori taglik plastinkasiga biriktirib, 5 taglik ajratgichni yig'ishni xohlaysiz.
  3. Pastki taglik plitasini 5 M3 vint bilan mahkamlang.
  4. Akril yopishtiruvchi yopishtiruvchi yordamida elkama -plastinani ikkita servo o'rnatish plitasiga mahkamlang. Men bu erda Gorilla elim ishlatardim. QAYD: Ikkita servo plastinkaning orqa tomonida teshik bor, bu ularni birlashtiruvchi armaturani o'rnatishga imkon beradi. Teshiklar bir -biriga mos kelishiga ishonch hosil qiling!* Yelim qo'lingizda bo'lsa -da, bilagini o'rnatish plastinkasini tutqichning asosiy plastinkasi bilan birlashtiring.* Ixtiyoriy ravishda, bilak servo plastinasini bilak qo'shma ikkita plastinkasiga yopishtirishingiz mumkin. Men bu tanlovni quyida ta'riflanganidek, qarshiliklar bilan birlashtirish uchun qilmadim.

  5. Endi quritilgan elkali birikmani tayanch servoga ulang. Men servo bilan jihozlangan eng keng shoxdan foydalanardim, bu oltita ildizli o'rnatish shoxi edi.
  6. Pastki qo'l ramkasini yelka servosiga qo'shish qiyin bo'lishi mumkin. Ishni davom ettirishdan oldin, shoxlarni pastki qo'l ramkalariga mahkamlashni taklif qilaman. ESLATMA: Elkama -elka yig'ish uchun servolarni ramkaga ulashdan oldin markazlashtirilganligiga ishonch hosil qiling. Bu ikkita servo bir ovozdan harakatlanishi kerak, agar ular noto'g'ri joylashtirilsa, servo chayqalish paydo bo'ladi va etarlicha noto'g'ri joylashtirilsa, ramka yoki servolarga zarar etkazishi mumkin. * Elkama -servolarning har biri o'z qavslari bilan plastinkalardan o'tib ketmasdan, o'rnatish plitalarining orqa tomoniga o'rnatiladi - bu sizga shoxni servo miliga burchak bilan surish va vintni mahkamlash imkonini beradi. Servo o'rnatish plitasiga hali mahkamlamang. * Keyin, ichki servo qo'shing va qo'lni o'rnating
  7. Servolarni qo'ltiq ichidagi bo'shliqlar orasidan itarib, so'ngra ikkala qo'ltiq ustki qismlari orasidagi bo'shliqlarni joylashtirib, M3 vintlari bilan mahkamlang.

  8. Tirsak bo'g'imining orqa qismiga ikki tomonlama yopishqoq lenta qo'shing va ortiqcha qismini kesib oling.
  9. Tirsakni harakatlantiruvchi vazifasini bajaradigan masofani ajratgichni servoning pastki qismiga ulang.
  10. Yuqori bilaguzukni pastki bilaguzuk ramkasiga o'tkazing va servo shoxli vintlarni mahkamlang.
  11. Qo'l ostidagi ikkita plastinka orasiga mustahkamlovchi chiziqlar qo'shing. Og'irlikni pasaytirish uchun to'rttasi o'rniga ikkitasini qo'lladim.
  12. Bilakning yuqori qismining orqa qismiga ikki tomonlama yopishqoq lenta qo'shing va ortiqcha qismini kesib oling.
  13. Bilagini harakatlantiruvchi vazifasini bajaradigan servo tagiga ajratgichni ulang.
  14. Tashqi bilak plastinkasini bilak servo shoxiga mahkamlang va vint bilan mahkamlang.
  15. Bilak servo plastinkasini ikkita bilak qo'shma plastinkasi va to'xtash joylari bilan yig'ing.
  16. Bilak servosini servo plastinkada servo qisqich plitasi bilan mahkamlang.
  17. Shox vintining tiqilib qolishi tufayli ushlagichni ushlagichga ulashdan oldin bilak shoxini servoga mahkamlashingiz kerak bo'ladi.
  18. Tutqichning servo shoxini servoga ulashdan oldin, ushlagich qismlarini mahkam o'rnating. Bu sizga oldingi bosqichda shoxni burish uchun joy beradi.
  19. Tutqich shoxini servoga mahkamlang va tutqichning bo'g'inlarini ushlab turgan vintlarni mahkamlang. QAYD: bu yong'oq va murvatlarni to'liq mahkamlamang, chunki ushlagich harakatlanishi uchun bo'shashishi kerak.

3 -qadam: simlar va boshqaruv paneli

Simlar va boshqaruv paneli
Simlar va boshqaruv paneli
Simlar va boshqaruv paneli
Simlar va boshqaruv paneli
Simlar va boshqaruv paneli
Simlar va boshqaruv paneli

Men bu loyihani keyingi ta'lim loyihasi uchun ba'zi g'oyalarimni ishlab chiqish platformasi sifatida qurdim. Shunday qilib, mening ulanishlarimning ko'pchiligi oddiy dupontli ulagichlar. Men qilgan yagona lehim MCP3008 uchun edi. Agar siz ushbu komponent uchun uzilish taxtasini topa olsangiz, unda siz qo'lni lehimsiz yasashingiz kerak.

Komponentlarning 3 guruhi mavjud:

  1. Kirish - bu elementlar foydalanuvchidan ma'lumot oladi va joystiklar va mcp3008 ADCdan iborat.
  2. Chiqish - bu ma'lumotlar foydalanuvchilarga holatni ko'rsatish yoki servolarni joylashuv ma'lumotlari bilan yangilash orqali ma'lumotlarni dunyoga etkazadi. Bu LCD displey, LCD ryukzak, RGB LED, Servo haydovchi platasi va oxirgi navbatda servolar.
  3. Qayta ishlash - Arduino kirish ma'lumotlarini qabul qiladigan oxirgi guruhni yig'adi va kod ko'rsatmalariga muvofiq ma'lumotlarni chiqishga chiqaradi.

Yuqoridagi Fritzing sxemasida barcha komponentlar uchun pinli ulanishlar batafsil ko'rsatilgan.

Kirishlar

Biz kirishlar bilan boshlaymiz. Joystiklar analog qurilmalardir, ya'ni ular Arduino -ga kirish sifatida o'zgaruvchan kuchlanishni taqdim etadi. Uchta joystikning har birida X va Y uchun ikkita analog chiqish (yuqoriga, pastga, chapga) Arduino -ga jami 6 ta kirish mavjud. Arduino Uno -da 6 ta analog kirish mavjud bo'lsa -da, biz I2C -ning ekran va servo -kontroller bilan aloqasi uchun ikkita pinni ishlatishimiz kerak.

Shu sababli, men MCP3008 analogini raqamli konvertorga (ADC) qo'shdim. Bu chip 8 tagacha analogli kirishni qabul qiladi va ularni Arduino SPI aloqa pimlari orqali raqamli signalga quyidagicha o'zgartiradi:

  • MCP pinlari 1-6> Bosh barmog'i joystiklarining o'zgaruvchan chiqishi
  • MCP 7 va 8 -pinlari> Ulanish yo'q
  • MCP PIN 9 (DGND)> Topraklama
  • MCP Pin 10 (CS/SHDN)> Uno PIN 12
  • MCP Pin 11 (DIN)> 11 -raqamli ulanish
  • MCP PIN 12 (DOUT)> Uno PIN 10
  • MCP Pin 13 (CLK)> Uno PIN 9
  • MCP PIN 14 (AGND)> Topraklama
  • MCP pin 15 va 16> +5V

Sxemada joystik ulanishlari faqat misol uchun ko'rsatilgan. Qaysi joystiklar sotib olinishiga va qanday o'rnatilishiga qarab, sizning ulanishlaringiz menikidan farq qilishi mumkin. Joystikning turli markalari boshqa pinoutga ega bo'lishi mumkin, shuningdek X va Y ni boshqacha yo'naltirishi mumkin. Eng muhimi, ADCdagi har bir kirish nimani anglatishini tushunishdir. Har bir pin mening kodimdagi quyidagi munosabatlarni ifodalaydi:

  • 1 -pin - Base - Bu pindagi analog ma'lumotlar robotning eng past servosini aylantiradi
  • 2 -pin - Yelka - Analog ma'lumotlari bu pimdagi asosiy servo ustidagi ikkita servolarni aylantiradi
  • 3 -pin - tirsak - Analog ma'lumotlari bu pimdagi navbatdagi servoni yelka servosidan yuqoriga buradi
  • 4 -pin - UP/DN Bilagi - bu pimdagi analog ma'lumotlar bilak servosini aylantirib, ushlagichni ko'taradi va tushiradi.
  • 5 -pin - Gripper - bu pindagi analog ma'lumotlar ushlagichni ochadi va yopadi
  • 6 -pin - Bilakni aylantirish - bu pimdagi analog ma'lumotlar ushlagichni aylantiradi

QAYD: Qismlar ro'yxatida ko'rsatilgan bosh barmog'i joystiklarini sotib olish va o'rnatish paytida, modullarning yo'nalishi meniki bilan farq qilishi mumkinligini unutmang, ADC ga to'g'ri ulanish uchun x va y chiqishlarini tekshiring. Bundan tashqari, agar siz 3D bosilgan boshqaruv panelidan foydalansangiz, o'rnatish teshiklari menikidan farq qilishi mumkin.

Chiqish

Adafruit PWM/Servo Controller bu loyihani juda oddiy qiladi. Servolarni servo sarlavhalariga ulang va barcha quvvat va signal ulanishlari boshqariladi. Agar siz qo'shimcha uzun simli servolarni topmasangiz, siz servo kabellarning har xil uzunlikdagi boshqaruv kengashiga etib borishi uchun turli uzunlikdagi servo kabel kengaytmalarini olishni xohlaysiz.

Servolar quyidagicha ulangan:

  • Vazifa 0 - asosiy servo
  • 1 -pozitsiya - elkama servo (Servo Y kabeli)
  • 2 -pozitsiya - tirsakli servo
  • 3 -pozitsiya - Bilak 1 Servo
  • 4 -pozitsiya - Gripper Servo
  • 5 -pozitsiya - Bilak 2 Servo

Bundan tashqari, VCC va V + ikkalasi ham +5 voltga, GND esa erga ulangan.

QAYD 1: Bu erda bitta katta eslatma: butun loyiha uchun besleme zo'riqishi Servo boshqaruv platasidagi quvvat terminal bloki orqali keladi. Servo boshqaruvchisidagi V+ pin, aslida, terminal blokidan kontaktlarning qolgan qismiga quvvat beradi. Agar siz Uno -ni dasturlashingiz kerak bo'lsa, men Uno -ni kompyuterga ulashdan oldin V+ pinini uzib qo'yishni tavsiya qilaman, chunki servolardan hozirgi tortishish USB portingizga zarar etkazishi mumkin.

QAYD 2: Men loyihani quvvatlantirish uchun 6V AC to DC devor adapteridan foydalanayapman. Men kamida 4A oqim bilan ta'minlaydigan adapterni tavsiya qilaman, shunda bir yoki bir nechta servo ulanganda, tokning to'satdan ko'tarilishi tizimni qizarib ketmaydi va Arduino-ni qayta o'rnatmaydi.

16X2 LCD displeyi Adafruit LCD ryukzakka ulangan bo'lib, Servo Controller tomonidan ishlatilayotgan I2C interfeysidan foydalanish uchun. Servo boshqaruvchisidagi SCL va xalta ustidagi CLK ikkalasi ham Uno pinidagi A5 piniga ulanadi. Xuddi shunday, Servo boshqaruvchisidagi SDA va ryukzakdagi DAT ikkalasi ham UNO A4 piniga ulanadi. Bundan tashqari, 5V +5 voltga, GND esa erga ulangan. Ryukzakdagi LAT hech narsaga ulanmagan.

Va nihoyat, RGB LED Uno -dagi 7 (RED), 6 (Green) va 5 (Blue) pinlariga ulanadi. LEDning er oyog'i 330 ohmli rezistor orqali erga ulangan.

Qayta ishlanmoqda

Oxir -oqibat, yuqorida sanab o'tilmagan Arduino ulanishlarining qolgan qismi quyidagicha: 5V -pin +5 voltga, GND esa erga ulangan.

O'rnatish paytida men barcha taxtaning yon panjaralarini ishlatib, barcha quvvat va topraklama liniyalarini, shuningdek barcha qurilmalar uchun I2C pinlarini bog'ladim.

4 -qadam: kod

Kod
Kod

Yuqorida aytib o'tganimdek, men dastlab bu loyihani mahalliy Maker Faire uchun namoyish sifatida qurganman. Men buni stendimizda bolalar va kattalar o'ynashi kerak edi. Ma'lum bo'lishicha, bu men tasavvur qilganimdan ham mashhurroq edi, shuning uchun bolalar bu borada jang qilishardi. Shunday qilib, qayta yozish vaqti kelganida, men "Demo rejimi" ni kiritdim, u vaqt chegarasini amalga oshiradi.

Qo'l o'sha erda o'tirib, kimdir joystikni qimirlatishini kutadi va 60 soniya taymer boshlanadi. 60 soniya oxirida foydalanuvchidan kirishni to'xtatadi va 15 soniya davomida "Dam oladi". Qisqa e'tibor ular nima bo'lishidan qat'i nazar, bu dam olish vaqti tayoq vaqtidagi tortishuvni ancha kamaytirdi.

Asosiy operatsiya

Malumot bo'limida keltirilgan kod juda oddiy. Massiv 6 ta bo'g'inni min, maksimal chegaralar, uy holati va joriy holatini kuzatib boradi. Quvvat yoqilganda, ishga tushirish funktsiyasi MCP3008, LCD ryukzak (va keyinchalik ekran) bilan gaplashish uchun zarur bo'lgan kutubxonalarni va LED pinlarini aniqlaydi. U erdan u asosiy tizimlarni tekshiradi va qo'lni uyga o'tkazadi. Uy vazifasi tutqichdan boshlanadi va bazaga tushadi, shunda u normal sharoitda bog'lanish imkoniyatini kamaytiradi. Agar qo'l to'liq cho'zilgan bo'lsa, uni yoqishdan oldin qo'lni uyga qo'yish yaxshidir. Umumiy servolar o'z pozitsiyasi haqida fikr bildirmaganligi sababli, biz ularning har birini oldindan belgilangan nuqtaga joylashtirishimiz va har birining qancha harakatlanganligini kuzatib borishimiz kerak.

Asosiy tsikl birinchi navbatda kutish rejimida boshlanadi - joystiklarni markaziy holatidan uzoqlashish uchun qidiradi. Bu sodir bo'lgandan so'ng, asosiy tsikl holatlarni sanash holatiga o'zgartiradi. Foydalanuvchi har bir joystikni siljitganda, joystikning o'rtadagi nisbiy pozitsiyasi ma'lum bo'lgan pozitsiyani qo'shadi yoki olib tashlaydi va tegishli servoni yangilaydi. Bir yo'nalishda servo belgilangan chegaraga yetgach, joystik to'xtaydi. Foydalanuvchi joystikni boshqa joyga siljitish uchun uni boshqa tomonga siljitishi kerak bo'ladi. Bu dasturiy ta'minot cheklovlari, ularning apparat to'xtashidan qat'i nazar, servolarga qo'yiladi. Bu xususiyat, agar kerak bo'lsa, qo'l harakatlarini belgilangan operatsion maydonda ushlab turish imkonini beradi. Agar joystik markazga qo'yilsa, harakat to'xtaydi.

Bu kod faqat umumiy boshlang'ich nuqtadir. Siz xohlaganingizcha o'z rejimlaringizni qo'shishingiz mumkin. Bir misol, taymersiz uzluksiz ishlash rejimi bo'lishi mumkin yoki joystik tugmalarini kiritish sifatida qo'shib, yozish/ijro etish rejimini yozishi mumkin.

5 -qadam: Havolalar va manbalar

Qo'llar haqida ma'lumot

  • Ushbu loyihaga ilhom bergan post
  • Original dizaynerlar blogidagi xabarlar Mening shaxsiy robotli qo'llarim
  • Qo'rqinchli qo'l
  • Thingiverse Mini Servo Gripper

Dastur kutubxonalari

  • Adafruit PWM/Servo Controller Resurslari
  • MCP3008 kutubxonasi
  • MCP3008 ma'lumotlar jadvali

Boshqarish paneli va kod

  • Men qilgan panelning Tinkercad chizilgan
  • Joriy kod ombori

Tavsiya: