Mündəricat:

Arduino Robotik Qol: 5 addım
Arduino Robotik Qol: 5 addım

Video: Arduino Robotik Qol: 5 addım

Video: Arduino Robotik Qol: 5 addım
Video: Control 32 Servo over Wi-Fi using ESP32 and PCA9685 via desktop or mobile phone V5 2024, Noyabr
Anonim
Image
Image
Arduino robot qolu
Arduino robot qolu
Arduino robot qolu
Arduino robot qolu

Arduino başlanğıc dəstimin 15 dərsindən sonra ilk layihəm olduğundan, əsl məqsədi məndən çox bilən hər kəsdən bəzi tənqidçilər, məsləhətlər, təkliflər, fikirlər əldə etməkdir.

Bu layihə, 4 dofs və bir tutma ilə robot bir qol haqqında. Layiqli aşağı büdcə ilə: quruluş bir dost tərəfindən kəsildi, 4 servo 30 €, 2 joystick 4 €, boltlar vida və s. 10 € -dan aşağı, qalanları (Arduino, tellər, tutacaq servo və s.) artıq başlanğıc dəstimə daxil edilmişdir. Təxminən 45-50 ABŞ dolları olan cəmi 40-45 avroya (bir qolbaq dəstinin eyni qiyməti, amma hey, özüm tikməyim əyləncəli idi (və arada bir şeyi qarışdırmaq) və maşın kimi təlimatlara əməl etməmək).

Bu, ilk layihəm və Təlimatlandırıcı olduğum üçün '' İlk dəfə Müəllif '' ə və bir neçə başqa yarışmaya qatıldım, bəyənsəniz səs verin:)

Addım 1: TASARIM VƏ MONTAJ:

Əvvəlcə bir quruluşa ehtiyacım var idi: Bu, şübhəsiz ki, ən uzun hissədir. Layihəni başqasından kopyalayıb yapışdırmaq istəmədiyim üçün bir layihəni istinad olaraq götürdüm və mən (və məni xilas edən bir neçə daha bacarıqlı sinif yoldaşım) ehtiyaclarımıza uyğun olaraq dəyişdirməyə başladı (fərqli tork, çəki və ölçülərə malik fərqli servolar və s.). Bir neçə dəfə qurmalı oldum, hər birində səhv bir şey tapdım və bəzi parçaları götürüb yenidən sınamalı olduq. İstifadə etmək istəsəniz.dxf faylını əlavə etdim. Sonra elektronika almalı oldum.: Parçaların çoxu standart idi, çətin hissəsi servoları seçmək idi. Lazım olan fırlanma anını baş qaydası ilə hesabladım, daha sonra daha dəqiq bir hesablamaya çalışdım və bir az aşa biləcəyimi bildim. Görünür, 2-ci servo üçün 6 kq/sm kifayət olardı (bazadan) və mənimki 9-11 kq/sm. Yaxşı, bu mənə bir az təhlükəsizlik və 2 kq -a qədər yükləmə şansı verir (bu mümkün deyil, amma texniki cəhətdən edə biləcəyimi sevirəm). Bazadan uzaqlaşarkən fırlanma anını azaltmaqla fərqli servolar da ala bilərdim, amma eyni satıcıdan eyni servoları almaq çox ucuz variant idi. 350mA və microservo 9g 100mA çəkir, cəmi 350*4 +100 = 1500mA. Bir şarj cihazını (6V 1.5A) xilas etdim və ona iki keçid telini lehimlədim. bələdçi) Materialların siyahısı:- Quruluş- M5x7cm vida x5, m5 boltlar x15 (əsas)- M3x16mm vida x18*- M3x20mm vida x13*- M3 boltlar x40*- M3x8cm vida x3- Kelepçe (əks halda düşəcək)- 3 dübel- Arduino (və ya onu idarə etmək üçün başqa bir şey, ən azı 5 PWM olmalıdır)- 5-6V və ən azı 1.5A- 3x ps2 kimi joystickləri təmin edəcək bir şey- 4x TowerPro mg995 servo- 1x TowerPro 9g microservo (tutuş üçün)) - Çox keçid telləri - Çörək taxtası*(Sürətlə yığmaq və sökmək üçün bolt və vintlərdən istifadə etdim, əks halda demək olar ki, hamısını ağac emalı vintləri ilə əvəz edə bilərsiniz)

Addım 2: KOD:

Fikir, hər servoyu ps2 kimi bir joystickin iki oxundan biri ilə idarə etməkdir. Hər bir joystickin y və x oxları üçün fərqli "istirahət dəyərləri" (hələ də 0-1023 arasındakı dəyər) olduğu görünürdü. bir problem idi, çünki fərq çox kiçik idi (birində sıfır 623-də sıfır idi) və 0-1023-dən dərəcəyə çevirmək üçün xəritə funksiyasından istifadə etmək istədim. Ancaq xəritə funksiyası qalan dəyərin 1023/2 olduğunu düşünür. Arduino'yu açan kimi hərəkət edən hər bir servoya gətirdi, yaxşı deyil. Oxuma dəyəri ilə hər bir fərqli istirahət dəyəri arasındakı fərqi (hər joystick üçün ayrıca hesabladığım) əl ilə taparaq bu problemi həll edə bildim. kodu daha qısa və daha ağıllı hala gətirin, onu quraşdırma funksiyasında qalan dəyərləri oxumağa və bəzi dəyişənlərdə saxlamağa vadar etdim. Yeni alqoritm artımın dərəcələrə çevrilməsinə əsaslanır, amma artım üçün çox aşağı dərəcə istədim. Sabit olaraq bölmək məcburiyyətində qaldım: son 200 -ü tapana qədər bir çox dəyərləri sınadım (bu dəyəri istədiyiniz dəyərə əl ilə dəyişdirmək üçün bir potansiyometr əlavə edə bilərəm). Kodun qalan hissəsi olduqca standartdır. artım hesablamasını ayrı bir funksiyaya daxil etmək daha zərif ola bilər.

Addım 3: ELEKTRONİK:

ELEKTRONİK
ELEKTRONİK

Kablolama, şəkildəki və ya qarmaqarışıq fayldakı kimi eynidır: pinlərə servo siqnalı: 5-6-9-10-11 və analog pinlərə joystick oxu: A0-A1-A2-A3-A4 joysticklərin servo üçün istifadə etdiyim şarj cihazı ilə deyil, Arduino tərəfindən verilməsi lazım idi. Əks təqdirdə, servo təsadüfi olaraq irəli -geri hərəkət edərək dəli olardı. Düşünürəm ki, buna səbəb ola bilər ki, əgər mən onları şarj cihazı ilə təchiz etsəm, Arduino onları hərəkət etdirəndə potensial fərqi dəqiq deyə bilməyəcək, amma sonra: Elektronika ilə çox yeniyəm, buna görə də bir ehtimal var. Arduino zəmini və şarj cihazını çörək lövhəsi ilə birləşdirmək, güman ki, joystick təchizatının bənzər bir səbəbindən təsadüfi və gözlənilməz hərəkətlərin qarşısını almağa kömək etdi.

Addım 4: Hal -hazırda təkmilləşdirməyə davam edirik:

Hal -hazırda təkmilləşdirilməsi davam edir
Hal -hazırda təkmilləşdirilməsi davam edir

Hər bir joystick 2 servo idarə edə bildiyindən (hər bir ox üçün 1), bütün qolu idarə etmək üçün 3 servoya ehtiyacım var, amma xoşbəxtlikdən yalnız 2 baş barmağım var, buna görə də hər servoya nəzarət etmək əvəzinə, yalnız xyz mövqeyini idarə edə biləcəyimi düşündüm. tutun və tutun və açın-bağlayın, cəmi 4 ox, 2 joystick və 2 baş barmaq! Bu problemin Ters Kinematik kimi yaxşı tanındığını öyrəndim, hər şeyin asan olduğunu da öyrəndim. Fikir yazmaqdır (son mövqe verilən hər bir effektorun vəziyyətini (servoların açıları) tapmaq üçün qeyri-xətti) tənliklər. Tənlikləri olan bir əlyazma kağız yüklədim və hazırda istifadə etmək üçün yeni bir kod üzərində işləyirəm. Çox çətin olmamalıdır, mən əsasən joystickləri oxumalı, tutuşun xyz koordinatlarını dəyişdirmək üçün oxunuşlarını istifadə etməli və sonra onları tənliklərimə verməli, servo açılarını hesablamalı və yazmalıyam.

Addım 5: GƏLƏCƏK TƏKMİLLƏR:

Beləliklə, nəticəsindən olduqca razıyam və elektronikada tamamilə yeni olduğumu və ya özümü partlatmadığımı nəzərə alsaq, artıq böyük bir qələbə olduğunu söyləmişəm. hardware, xoş deyil! İndiyə qədər düşündüm: 1. Joysticklərin "həssaslığını" dəyişdirmək üçün potensiometr.2. Bəzi hərəkətləri "qeyd etməsini" və yenidən etməsini təmin etmək üçün yeni kod (bəlkə də insan girişindən daha sürətli və qısa) 3. Bir növ vizual/məsafə/səs girişi və joysticklərdən istifadə etmədən kimsə olmadan obyekt əldə edə bilmək4. Həndəsi fiqurlar çəkməyi bacarırsınızmı? Zəhmət olmasa hər hansı bir təklifiniz varsa şərh yazın. Təşəkkür edirəm

Tövsiyə: