Mündəricat:

Arduino İdarə Edilən Robotik Qol 6/ Azadlıq dərəcəsi: 5 addım (şəkillərlə)
Arduino İdarə Edilən Robotik Qol 6/ Azadlıq dərəcəsi: 5 addım (şəkillərlə)

Video: Arduino İdarə Edilən Robotik Qol 6/ Azadlıq dərəcəsi: 5 addım (şəkillərlə)

Video: Arduino İdarə Edilən Robotik Qol 6/ Azadlıq dərəcəsi: 5 addım (şəkillərlə)
Video: Arduino ilə robot qol hazırladım. 2024, Iyul
Anonim
Arduino İdarə Edilən Robotik Qol 6/ Azadlıq dərəcəsi
Arduino İdarə Edilən Robotik Qol 6/ Azadlıq dərəcəsi
Arduino İdarə Edilən Robotik Qol 6/ Azadlıq dərəcəsi
Arduino İdarə Edilən Robotik Qol 6/ Azadlıq dərəcəsi
Arduino İdarə Edilən Robotik Qol 6/ Azadlıq dərəcəsi
Arduino İdarə Edilən Robotik Qol 6/ Azadlıq dərəcəsi

Mən robototexnika qrupunun üzvüyəm və hər il qrupumuz hər il keçirilən Mini Maker Fuarında iştirak edir. 2014 -cü ildən başlayaraq hər ilki tədbir üçün yeni bir layihə qurmağa qərar verdim. O vaxt, tədbirdən təxminən bir ay əvvəl bir şeylər toplamalıydım və nə etmək istədiyimi bilmirdim.

Bir üzv yoldaşım, marağımın ən yüksək həddinə çatan "maraqlı açıq mənbə robotlaşdırılmış qol quruluşu" na bir keçid göndərdi. Planlar sadəcə idarəedici və ya nəzarətçi olmayan bir qol idi. Vaxt məhdudiyyətlərimi nəzərə alsaq, həqiqətən yaxşı bir başlanğıc nöqtəsi kimi görünürdü. Yeganə problem, işə başlamaq üçün həqiqətən heç bir vasitəm olmaması idi.

Qrup üzvlərindən bəzilərinin köməyi ilə akril hissələri kəsib mənə göndərə bildim və aşağıda göstərilən 3D çaplı iki hissəni də əldə etdim. Bir neçə gecəlik hardware sifarişləri və yerli hardware mağazasına bir neçə səfərlə birlikdə, hadisədən bir gecə əvvəl bir iş layihəsini tamamladım!

Adətən olduğu kimi, aşağıda gördüklərinizə uyğunlaşdırılmış quruluşun hekayəsi və bir neçə təcəssümü var. Arxa hekayə ilə maraqlanırsınızsa, daha çoxunu burada tapa bilərsiniz:

Addım 1: Ehtiyacınız olan - Avadanlıq və Elektronika

Lazım olan - Avadanlıq və Elektronika
Lazım olan - Avadanlıq və Elektronika
Lazım olan - Avadanlıq və Elektronika
Lazım olan - Avadanlıq və Elektronika

Orijinal layihə dizayneri Avropada yaşadı və sonradan metrik ölçüləri və orada yayılmış materialları istifadə etdi. Məsələn, bədən üçün istifadə etdiyi pres lövhəsi 5 mm qalınlığında bir standart idi. ABŞ -da oxşar material təxminən 3,7 mm qalınlığında olan 1/8 düymdür. Bu, əvvəlcə preslə təchiz olunmaq üçün hazırlanmış boşluqlarda bir boşluq buraxdı. Rəsmləri düzəltmək əvəzinə bu birləşmələri təmin etmək üçün Gorilla Glue istifadə etdim.

ABŞ -dakı yerli hardware mağazanızda standart olmayan M3 yivli qoz -fındıq və boltlardan da istifadə etdi. Bunları yerli mövcud variantlara çevirmək əvəzinə, aşağıda hissələrimdə göstərildiyi kimi aparatı onlayn sifariş etdim.

  • 22 - M3 x 0,5 x 23 mm
  • 15 - M3 x 15 mm aralıqlar
  • 40 - M3 Vintlər
  • M3 Hex Fındıq
  • M3 25 mm vintlər
  • 1 - Bahar
  • 3/4 "İkitərəfli Bant
  • 5 - SG 5010 TowerPro Servo
  • 1 - SG92R TowerPro mini servo
  • 1 - SG90 TowerPro mini servo
  • 2.54 mm Tək Sıralı Düz Pim Başlığı
  • 1 - Yarım ölçülü Breadboard
  • 1 - Qadın/Kişi 'Uzantı' Jumper Telləri - 40 x 6"
  • 1 - 12 "x 24" Mavi Akrilik Levha və ya sevdiyiniz xidmət təminatçınızdan lazerlə kəsilmiş parçalar
  • 2 - 3 mm x 20 mm + 4 mm x 5 mm oynaq yatağı aralıqları 3D Çaplı (aşağıya baxın)
  • 1 - İdarəetmə paneli *Kablolama Bölməsindəki Qeydə baxın
  • 1 - yayılmış RGB (üç rəngli) 10 mm LED
  • 1 - Arduino Uno
  • 1 - Standart LCD 16x2 + əlavələr - mavi rəngdə ağ
  • 1 - i2c / SPI xarakterli LCD sırt çantası
  • 1-Adafruit 16 Kanal 12-bit PWM/Servo Sürücü
  • 1 - MCP3008 - SPI Arayüzü ilə 8 Kanallı 10 Bitlik ADC
  • 3 - JoyStick Breakout Modulu Sensoru *Kablolama Bölməsindəki Qeydə baxın
  • DC Barel Jack
  • AC -dən DC -ə adapter
  • Servo Uzatma kabelləri - müxtəlif uzunluqlarda

Bu qolun demək olar ki, bütün hissələri 1/8 düymlük akrildən kəsilmişdi. Ayrıca, orijinal dizayn, iki oynaq ayırıcı bazanın rulman milinə 7 mm hündürlüyündə olmasını tələb etdi. Üst qolu yığmağa başlayanda TowerPro servolarının hündürlüyünə görə bunların çox hündür olduğu aydın oldu. Cəmi 3 mm hündürlüyündə bir baza ilə hazırlanan, bu arada hələ də bir qədər hündür, lakin idarə oluna bilən yeni rulmanlara sahib olmalı idim. Servolarınızın nisbi hündürlüyünü qeyd etmək və iki alt qol arasındakı məsafəni hesablamaq istəyəcəksiniz:

Servo hündürlüyü + servo buynuzu + oynaq yatağı + iki tərəfli lent = 47mm +/- 3mm.

Addım 2: Kol Montajı

Qol Məclisi
Qol Məclisi
Qol Məclisi
Qol Məclisi
Qol Məclisi
Qol Məclisi
Qol Məclisi
Qol Məclisi

Başlamadan əvvəl, bütün servolarınızı mərkəzləşdirdiyinizə əmin olun! Tikinti zamanı hər hansı bir zamanda, servonun mövqeyini əl ilə hərəkət etdirsəniz, çərçivəyə yapışdırmadan əvvəl onu daha yaxınlaşdırmalısınız. Bu, həmişə bir yerdə hərəkət etməli olan çiyin servoları üçün xüsusilə vacibdir.

  1. M3 25 mm vintlər və altıbucaqlı qoz -fındıqdan istifadə edərək, əsas servonu üst lövhəyə yapışdırın. DİQQƏT: İstifadə zamanı qoz-fındıqların gevşəməsini minimuma endirmək üçün iplərə möhkəm bağlamaq istəyə bilərsiniz.

  2. Yuxarıda göstərdiyim hissələr siyahısını istifadə edirsinizsə, bundan sonra M3 x 0.5 x 23mm dayaqlardan hər birini 2 ədəd yivlə bağlayaraq və sonra altıbucaqlı qoz -fındıq ilə üst lövhəyə bərkidərək 5 əsas ayırıcıyı yığmaq istəyəcəksiniz.
  3. Alt baza plitəsini 5 M3 Vida ilə dayaqlara bağlayın.
  4. Çiyin boşqabını akril təhlükəsiz yapışqan istifadə edərək iki servo montaj lövhəsinə yapışdırın. Burada Gorilla Glue istifadə etdim. DİQQƏT: Hər iki servo lövhənin arxa tərəfində onları birləşdirən möhkəmləndirici arakəsmənin daxil edilməsinə imkan verən bir çuxur var. Deliklərin bir -birinə uyğun olduğundan əmin olun!* Əlinizdə yapışqan varsa, davam edin və bilək montaj lövhəsini tutacağın əsas lövhəsi ilə birləşdirin.* İsteğe bağlı olaraq, bilək servo boşqabını iki bilək birləşmə lövhəsinə də yapışdıra bilərsiniz. Aşağıda təsvir edildiyi kimi, bunları qarşıdurmalarla birləşdirmək üçün bunu etmədim.
  5. İndi müalicə olunan çiyin qurğusunu əsas servoya bağlayın. Altı kök montaj buynuzu olan servoya daxil olan ən geniş buynuzu istifadə etdim.

  6. Çiyin servosuna alt qol çərçivəsini əlavə etmək çətin ola bilər. Davam etmədən əvvəl buynuzları alt qol çərçivələrinə bağlamağı təklif edirəm. DİQQƏT: Çərçivəyə yapışdırmadan əvvəl servolarınızı çiyin montajı üçün mərkəzləşdirdiyinizə əmin olun. Bu iki servo bir yerdə hərəkət etməlidirlər və səhv hizalanmışlarsa, minimumda servo sarsıntıya səbəb olacaq və kifayət qədər düzgün hizalanmadıqda çərçivəyə və ya servolara zərər verə bilər. * Çiyin servolarının hər biri, mötərizələri servoları lövhələrdən keçmək əvəzinə montaj lövhələrinin arxa tərəfinə quraşdırılmışdır - bu buynuzu servo şaftına bir açı ilə itələməyə və vidayı bağlamağa imkan verəcəkdir. Servanı hələ də montaj lövhəsinə bağlamayın. * Sonra daxili servo əlavə edin və qolu quraşdırın
  7. Servoları qollardakı boşluqlardan itələyərək yuxarı qol çərçivəsini və servoları bir araya gətirin və aralıqları hər iki üst qol plitələri arasına qoyun və M3 vintləri ilə bərkidin.
  8. Dirsək birləşməsinin arxasına iki tərəfli yapışan bant əlavə edin və artıqlığı kəsin.
  9. Dirsək aktuatoru rolunu oynayacaq arakəsməni servonun altına bağlayın.
  10. Üst qol dəstini alt qol montaj çərçivəsinə sürüşdürün və servo buynuz vintlərini bərkidin.
  11. İki alt qol plitəsi arasında möhkəmləndirici dayaqlar əlavə edin. Ağırlığı azaltmaq üçün dörd əvəzinə ikisini istifadə etdim.
  12. Üst bilək oynaq boşluğunun arxasına iki tərəfli yapışan bant əlavə edin və artıqlığı kəsin.
  13. Aralıq ayırıcıyı bilək aktuatoru rolunu oynayacaq servonun altına bağlayın.
  14. Xarici bilək plakasını bilək servo buynuzuna bağlayın və buynuz vidası ilə bərkidin.
  15. Bilək servo boşqabını iki bilək birləşmə plitəsi və dayaqları ilə yığın.
  16. Bilək servosunu servo lövhədə servo sıxac lövhəsi ilə bərkidin.
  17. Buynuz vidasının tıxanması səbəbindən tutucu qurğunu buynuza bağlamadan əvvəl bilək buynuzunu servoya bağlamalısınız.
  18. Tutucunun servo buynuzunu servoya bağlamadan əvvəl, tutacaq hissələrini rahat şəkildə yığın. Bu, əvvəlki addımda buynuzu yıxmağa imkan verəcəkdir.
  19. Tutucu buynuzu servoya bağlayın və tutucu birləşmələrini tutan vintləri daha da sıxın. DİQQƏT: bu qoz -fındıqları və cıvataları tam sıxmayın, çünki tutucunun hərəkət etməsinə imkan vermək üçün boş olmalıdır.

Addım 3: Kablolama və İdarəetmə Paneli

Kablolama və İdarəetmə Paneli
Kablolama və İdarəetmə Paneli
Kablolama və İdarəetmə Paneli
Kablolama və İdarəetmə Paneli
Kablolama və İdarəetmə Paneli
Kablolama və İdarəetmə Paneli

Bu layihəni sonrakı təhsil layihəsi üçün əldə etdiyim bəzi fikirlər üçün bir inkişaf platforması olaraq qurdum. Beləliklə, əlaqələrimin çoxu sadə dupont bağlayıcılardır. Etdiyim yeganə lehimləmə MCP3008 idi. Bu komponent üçün bir qırılma taxtası tapa bilsəniz, bu qolu lehimsiz qura bilməlisiniz.

3 qrup komponent var:

  1. Girişlər - Bu maddələr istifadəçidən məlumat alır və joysticklərdən və mcp3008 ADC -dən ibarətdir.
  2. Çıxışlar - Bu maddələr ya istifadəçiyə status göstərərək və ya mövqe məlumatları ilə servoları yeniləyərək məlumatları dünyaya çatdırır. Bunlar LCD Ekran, LCD Sırt Çantası, RGB LED, Servo sürücü lövhəsi və son olaraq servolardır.
  3. İşləmə - Arduino, giriş təlimatlarına uyğun olaraq məlumatları daxil edən və məlumatları çıxışlara ötürən son qrupu tamamlayır.

Yuxarıdakı Fritzing sxemində bütün komponentlər üçün pin əlaqələri ətraflı təsvir edilmişdir.

Girişlər

Girişlərdən başlayacağıq. Joysticklər analoq qurğulardır - yəni Arduino -ya giriş olaraq dəyişən bir gərginlik təqdim edirlər. Üç joystickin hər birinin X və Y (yuxarı, aşağı, sol sağ) üçün iki analog çıxışı var və Arduino -ya cəmi 6 giriş edir. Arduino Uno -nun 6 analoq girişi olsa da, ekrana və servo nəzarətçi ilə I2C əlaqəsi üçün bu pinlərdən ikisini istifadə etməliyik.

Buna görə MCP3008 analoqunu rəqəmsal çeviriciyə (ADC) daxil etdim. Bu çip 8 -ə qədər analoq girişi qəbul edir və bunları Arduinonun SPI rabitə pinləri üzərindən rəqəmsal bir siqnala çevirir:

  • MCP Sancaqlar 1-6> Başparmak joystiklərinin dəyişkən çıxışları
  • MCP Pins 7 və 8> Bağlantı yoxdur
  • MCP Pin 9 (DGND)> Zəmin
  • MCP Pin 10 (CS/SHDN)> Uno Pin 12
  • MCP Pin 11 (DIN)> Uno Pin 11
  • MCP Pin 12 (DOUT)> Uno Pin 10
  • MCP Pin 13 (CLK)> Uno Pin 9
  • MCP Pin 14 (AGND)> Zəmin
  • MCP Pin 15 və 16> +5V

Sxemdəki joystick əlaqələri yalnız bir nümunə üçün göstərilmişdir. Hansı joysticklərin alınmasından və necə quraşdırıldığından asılı olaraq əlaqələriniz mənimkindən fərqli ola bilər. Joystickin fərqli markaları fərqli bir pinouta sahib ola bilər və X və Y -ni fərqli istiqamətə yönəldə bilər. Əhəmiyyətli olan, ADC üzərindəki hər bir girişin nəyi təmsil etdiyini başa düşməkdir. Hər pin kodumdakı aşağıdakı əlaqələri təmsil edir:

  • Pin 1 - Base - Bu pindəki analoq məlumatlar robotun ən aşağı servosunu döndərəcək
  • Pin 2 - Çiyin - Bu pindəki analoq məlumatlar, iki servo əsas servonun üstünə dönəcək
  • Pin 3 - Dirsək - Bu pindəki analoq məlumatlar, növbəti servoyu çiyin servolarından yuxarıya döndərəcək
  • Pin 4 - YUKARI/DN Bilək - Bu pindəki analoq məlumatlar bilək servosunu döndərəcək, tutacaq qurğusunu qaldırıb endirəcək
  • Pin 5 - Tutucu - Bu pindəki analoq məlumatlar tutucunu açacaq və bağlayacaq
  • Pin 6 - Biləyi Döndür - Bu pindəki analoji məlumatlar tutucunu döndərəcək

QEYD: Parça siyahısında göstərilən baş barmaq joystiklərini alarkən və quraşdırarkən, modulların oriyentasiyasının mənimkindən fərqli ola biləcəyini unutmayın, ADC ilə düzgün əlaqə qurmaq üçün x və y çıxışlarını sınayın. Ayrıca, 3D çaplı idarəetmə panelimdən istifadə edirsinizsə, montaj delikləri mənimki ilə əvəzlənə bilər.

Çıxışlar

Adafruit PWM/Servo Controller bu layihəni çox sadə edir. Servoları servo başlıqlarına bağlayın və bütün güc və siqnal əlaqələri idarə olunur. Əlavə uzun telləri olan servolar tapmadığınız təqdirdə, bütün servo kabellərinizin idarəetmə lövhəsinə çatması üçün müxtəlif uzunluqlarda bir sıra servo kabel uzantıları almaq istəyəcəksiniz.

Servolar aşağıdakı kimi bağlanır:

  • Vəzifə 0 - Əsas servo
  • Vəzifə 1 - Çiyin servo (Servo Y Kabeli)
  • Vəzifə 2 - Dirsək Servo
  • Vəzifə 3 - Bilək 1 Servo
  • Vəzifə 4 - Tutucu Servo
  • Vəzifə 5 - Bilək 2 Servo

Əlavə olaraq, VCC və V + hər ikisi +5 Volta, GND isə Toprağa bağlıdır.

QEYD 1: Burada BÖYÜK bir qeyd: Bütün layihə üçün təchizat gərginliyi Servo İdarəetmə Lövhəsindəki güc terminal blokundan gəlir. Servo Controller üzərindəki V+ pin əslində terminal blokundan dövrənin qalan hissəsinə enerji verir. Uno -nu proqramlaşdırmaq lazımdırsa, Uno -nu kompüterinizə bağlamadan əvvəl V+ pinini kəsməyi məsləhət görürəm, çünki servolardan cari çəkiliş USB portunuza zərər verə bilər.

Qeyd 2: Layihəni gücləndirmək üçün 6V AC -DC DC divar adapterindən istifadə edirəm. Ən azı 4A cərəyan verə bilən bir adapter təklif edirəm ki, bir və ya daha çox servo bağlandıqda, cərəyandakı ani artım sisteminizi qəhvəyi vəziyyətə gətirməsin və Arduino'nuzu sıfırlayasınız.

16X2 LCD ekran, Servo Controller tərəfindən artıq istifadə edilən I2C interfeysindən istifadə etmək üçün Adafruit LCD Sırt Çantasına qoşulur. Servo Denetleyicisindeki SCL və Sırt Çantasındakı CLK, Uno üzərindəki A5 Pininə bağlanır. Eyni şəkildə, Servo Controllerdəki SDA və Sırt Çantasındakı DAT, Uno üzərindəki Pin A4 -ə bağlanır. Əlavə olaraq, 5V +5 Volt, GND isə Toprağa bağlıdır. Sırt çantasındakı LAT heç bir şeyə bağlı deyil.

Nəhayət, RGB LED, Uno üzərindəki 7 (QIRMIZI), 6 (Yaşıl) və 5 (Mavi) pinlərə qoşulur. LED -in torpaq ayağı 330 Ohm rezistor vasitəsilə Ground -a qoşulur.

İşlənilir

Nəhayət, yuxarıda sadalanmayan Arduino əlaqələrinin qalan hissəsi aşağıdakı kimidir: Pin 5V +5 Volta, GND isə Toprağa bağlıdır.

Quruluşumda, bütün güc və torpaq xətlərini bir araya gətirmək üçün çörək taxtasının yan raylarından istifadə etdim və bütün cihazlar üçün I2C pinlərini istifadə etdim.

Addım 4: Kod

Kod
Kod

Daha əvvəl qeyd edildiyi kimi, bu layihəni əvvəlcə yerli Maker Faire üçün bir nümayiş olaraq qururam. Uşaqlar və böyüklər üçün köşkümüzdə oynayacaq bir şey olmasını istədim. Göründüyü kimi, düşündüyümdən daha çox populyar idi - o qədər ki, uşaqlar bunun üçün mübarizə aparırdılar. Yenidən yazma vaxtı gəldikdə, vaxt məhdudiyyətini tətbiq edən "Demo Modu" daxil etdim.

Qol orda oturur ki, kimsə joystick hərəkət etsin və hərəkət edəndə 60 saniyəlik bir taymer başlayır. 60 saniyənin sonunda istifadəçidən giriş almağı dayandırır və 15 saniyə "İstirahət" edir. Qısa diqqət, nə olduqlarını nəzərə alaraq, bu istirahət dövrü çubuq vaxtı üçün mübahisəni xeyli azaldıb.

Əsas Əməliyyat

Aşağıdakı istinad hissəsində göstərilən kod olduqca sadədir. Bir sıra, minimum, maksimum ölçülər, ev mövqeyi və cari mövqe ilə 6 birləşməni izləyir. Qol işə salındıqda, başlanğıc funksiyası MCP3008, LCD Sırt Çantası (və sonradan ekran) ilə danışmaq üçün lazım olan kitabxanaları və LED sancaqlarını təyin edir. Oradan əsas sistemləri yoxlayır və qolun evinə davam edir. Ev funksiyası tutucudan başlayır və normal şəraitdə bağlanma şansını minimuma endirmək üçün bazaya doğru gedir. Qol tamamilə uzadılırsa, qolu işə salmadan əvvəl onu əllə evə qoymaq daha yaxşı olar. Ümumi servolar mövqeyi ilə bağlı rəy vermədikləri üçün hər birini əvvəlcədən təyin edilmiş bir nöqtəyə yerləşdirməliyik və hər birinin nə qədər hərəkət etdiyini izləməliyik.

Əsas döngə əvvəlcə gözləmə rejimində başlayır - mərkəz mövqelərindən uzaqlaşmaq üçün joystickləri axtarır. Bu baş verdikdə, əsas döngə vəziyyətləri geri sayma vəziyyətinə dəyişir. İstifadəçi hər bir joysticki hərəkət etdirdikcə, joystickin mərkəzdən nisbi mövqeyi cari məlum mövqeyi əlavə edəcək və ya çıxacaq və müvafiq servo yeniləyir. Bir servo müəyyən bir həddə çatdıqda, joystick dayanır. İstifadəçinin joystick'i başqa istiqamətə daşıması lazımdır. Bu, hardware dayanmalarından asılı olmayaraq servolara tətbiq edilə bilən bir proqram limitidir. Bu xüsusiyyət, zəruri hallarda qol hərəkətlərini müəyyən bir əməliyyat sahəsi daxilində saxlamağa imkan verir. Joystick mərkəzə buraxılsa, hərəkət dayanacaq.

Bu kod yalnız ümumi bir başlanğıc nöqtəsidir. İstədiyiniz kimi öz rejimlərinizi əlavə edə bilərsiniz. Bir nümunə, taymersiz davamlı iş rejimi ola bilər və ya joystick düymələrini giriş olaraq əlavə edə və qeyd/oxutma rejimi yaza bilər.

Addım 5: Bağlantılar və Resurslar

Qol İstinadları

  • Bu layihəyə ilham verən yazı
  • Original Dizaynerlər blog yazıları Öz robot kolum Mini servo tutacaqlarım və tamamlanmış robot qolum Robot qolu və elektronikanı çoxaldın.
  • Boğazlı Qol
  • Thingiverse Mini Servo Tutucu

Proqram Kitabxanaları

  • Adafruit PWM/Servo Nəzarətçi Resursları
  • MCP3008 Kitabxanası
  • MCP3008 məlumat cədvəli

İdarəetmə Paneli və Kod

  • Panelin Tinkercad rəsmini hazırladım
  • Mövcud kod anbarı

Tövsiyə: