Mündəricat:

Tel Nəzarətli Robot Kol: 31 addım
Tel Nəzarətli Robot Kol: 31 addım

Video: Tel Nəzarətli Robot Kol: 31 addım

Video: Tel Nəzarətli Robot Kol: 31 addım
Video: 10 САМЫХ СТРАННЫХ обычаев Древнего ЕГИПТА 2025, Yanvar
Anonim
Tel Nəzarətli Robot Kolu
Tel Nəzarətli Robot Kolu

Bu, tellərdən idarə olunan bir robot qolunun necə hazırlanacağına dair bir dərsdir. Tel istifadə etmənin üstünlüyü, qolunuzun daha yüngül olması və bütün motorlarınızı qolunuzun altına yerləşdirərək tikinti və təmir işlərini asanlaşdırmaqdır. İşdə qolun bir videosu. Gələcəkdə bir şey götürmək və ətrafa itələmək üçün bir pençe əlavə etməyi planlaşdırıram.

3D çap məhsulları:

Burada və Burada

Təchizat

6 Servo Motor (MG995)

Arduino Uno

Təxminən 6 metr plastik örtüklü polad tel (0,5 mm)

Qutu 23x33x10 (daha dar ola bilər, qısaldılmamalıdır)

Taxta taxta 33x10

Fındıq və Boltlar

Boru 14 sm (ipləri istiqamətləndirmək üçün lazımdır)

4 L-Mötərizədə

5 voltluq adapter

2 7 tərəfli terminal bloku

Çörək taxtası telləri

3D Çaplı Komponentlər (Tərtib etməmişəm, təsvirdəki elementlərə bağlantılar):

3 "boltlar"

2 "Element 1"

1 "Element 2"

2 "Element 3"

1 Baza Konnektoru

Addım 1: Bütün 3D komponentlərini çap edin

Bolt delikləri və tağları üçün dəstəyə ehtiyacınız ola bilər, ancaq komponentlərinizin gövdəsinə dəstək əlavə etməməyinizə əmin olun; bu kiçik tel çuxurlarını bağlayacaq və yeni deliklər açmalı olacaqsınız

Addım 2: (İsteğe bağlı) Gücləndirmək üçün qutunuzun altına taxta taxta yapışdırın

Qutum olduqca zəif idi, bəlkə də səninki yoxdu

Addım 3: Qutuya uyğun bir taxta ölçün və kəsin

Addım 4: Motorların mövqelərini qeyd edin

qolların heç birinin bir -birinə toxunmadığından əmin olun

Addım 5: Mötərizənin və Borunun mövqelərini qeyd edin

Mötərizənin və Borunun mövqelərini işarələyin
Mötərizənin və Borunun mövqelərini işarələyin

Boru çuxurun qarşısında təxminən bir santimetr məsafədə yerləşdirilməlidir

Addım 6: Qutunuzdan çıxan kabellər üçün bir delik açın (USB və Güc)

Qutunuzdan çıxan kabellər üçün bir delik açın (USB və Güc)
Qutunuzdan çıxan kabellər üçün bir delik açın (USB və Güc)

Addım 7: Bütün İşarələnmiş Delikləri Qazın və Görün

Bütün İşarələnmiş Delikləri Qazın və Görün
Bütün İşarələnmiş Delikləri Qazın və Görün

Addım 8: Motorları və Borunu Plankaya bağlayın

Addım 9: Plankanı L-Mötərizəli Qutuya Bərkidin

Addım 10: Terminal bloklarınızı götürün və telləri birlikdə lehimləyin

Terminal bloklarınızı götürün və telləri birlikdə lehimləyin
Terminal bloklarınızı götürün və telləri birlikdə lehimləyin

Addım 11: Adapterin Elektrik Kabelinin ucunu kəsin və Telləri soyun

Addım 12: Artı və Eksi Telləri müəyyənləşdirin və işarələyin

Addım 13: Telləri Terminal Bloklarına Bağlayın ki, Bütün + Servo Telləri və Elektrik Kablosundan + Tel Bağlansın, Tellər üçün də eyni keçər

Telləri Terminal Bloklarına Bağlayın ki, Bütün + Servo Telləri və Güc Kablosundan + Tel Bağlansın - Tellər üçün Eyni Etər
Telləri Terminal Bloklarına Bağlayın ki, Bütün + Servo Telləri və Güc Kablosundan + Tel Bağlansın - Tellər üçün Eyni Etər

Addım 14: Başını bir taxta telindən kəsin

Başını bir taxta telindən kəsin
Başını bir taxta telindən kəsin

Çörək taxtası telinin soyulmuş ucunu eksi terminal blokuna və pin ucunu arduino'nuzdakı torpaq pininə bağlayın. Bunu etməsəniz, motorlar heç bir giriş olmadan nizamsız hərəkət edəcək.

Addım 15: Qolunuzdan çıxan tellər üçün Qutunun Dibində Üç Delik Qazın

Deliklər baza bağlayıcısındakı deliklərə uyğun olmalıdır.

Addım 16: Baza Konnektorunu Qutuya bağlayın

Baza Konnektorunu Qutuya bağlayın
Baza Konnektorunu Qutuya bağlayın

Addım 17: Tel yivlərini daha da dərinləşdirmək üçün bir bıçaq və ya dırnaq faylı istifadə edin

Tel yivləri daha da dərinləşdirmək üçün bir bıçaq və ya dırnaq faylı istifadə edin
Tel yivləri daha da dərinləşdirmək üçün bir bıçaq və ya dırnaq faylı istifadə edin

2 və 3 -cü elementlər üçün tel yivləri çox dayazdır.

Addım 18: Qol qurun

Qol qurmaq
Qol qurmaq

Kolu buradakı təlimatlara uyğun olaraq qurun, hissələri uyğunlaşması üçün sənədləşdirməyiniz lazım ola bilər

Addım 19: Qenerasiya və Arduino qurun

Qenerasiya və Arduino

Addım 20: Kod Proqramlarını yapışdırın

Kod bu səhifənin altındadır

Addım 21: Servo İdarəetmə Pimlərini Arduinoya bağlayın

Servo Nəzarət Pimlərini Arduino -ya qoşun
Servo Nəzarət Pimlərini Arduino -ya qoşun

Birinci motoru üçüncü rəqəmsal pinə, ikinci motoru dördüncü rəqəmsal pinə bağladım və s. Topraklama pininin hələ də - terminal blokuna bağlı olduğundan əmin olun.

Addım 22: İşlənərkən Sıfırlama Düyməsini basın, bu, bütün qolları 90 dərəcəyə qoyacaq

Addım 23: Servo qollarını mühərrikə üfüqi şəkildə bağlayın

Addım 24: Telləri qollardan keçirin ki, boşluq olmasın

Mümkün olduğu qədər çox delik açdığınızdan əmin olun, bu onu müvəqqəti saxlayacaq və çıxarmaq asan olacaq.

Addım 25: Qolunuzu sınayın və telləri lazım olduğu qədər sıxın və ya gevşetin

Addım 26: Telləri Servo Kollara Qalıcı Yapışdırın

Addım 27: Qeydlər

Qeydlər
Qeydlər

0,5 mm zərgərlik teli istifadə etdim, amma 0,4 mm yaxşı olmalıdır. Orijinal dizayn PVC teldən istifadə edirdi, amma çox asanlıqla qırıldı və işləmək çətindi.

Qolunuzu avtomobildə və ya velosipeddə hərəkət etdirmək istəsəniz, çıxmadığından əmin olmaq üçün qol oynaqlarını bantla sarın. Bu xüsusilə element 1 üçün vacibdir.

Bu proyektə başlayanda niyə tellərlə idarə olunan qolu necə düzəltmək barədə yalnız bir dərs tapa biləcəyimi düşünürdüm. İndi başa düşürəm ki, niyə bu hobbi robot qolu düzəltməyin ən ümumi yolu deyil. Tellər bəzən yivlərindən düşür və hər şey bir qədər çürükdür. Problemlərin çox təcrübəm olmadığı üçün olub -olmadığını və ya bütün ideyanın problemli olduğunu bilmirəm, amma nə etdiyimi bilsəm daha möhkəm olacağına əminəm.

Addım 28: Problemlərin aradan qaldırılması

3D çap elementlərində tel çuxurları bağlanır:

Yalnız bolt delikləri yerinə bütün elementə dəstək əlavə etdiniz. Ya elementi yenidən çap edin və ya dəlikləri həqiqətən isti bir iynə ilə açın.

COM portu bağlıdır, arduino ilə əlaqə qura bilməzsiniz:

Arduino USB 3 portunu qəbul edə bilməz (mənimki yoxdu), ya USB 2 uzatma kabeli ala bilərsiniz, ya da USB 2 portu olan bir kompüterdən istifadə edə bilərsiniz.

Kod işləmir:

Bu təlimatı izləyin və öz kodunuzu yaratmaq üçün dəyişdirin

Qolun bir hissəsi hərəkət etmir:

Teller qarışıq ola bilərdi, bunu yoxlamaq üçün servo qolunu servodan çıxarın və telləri əlinizlə çəkməyə çalışın. Telləri açın və telləri çəkmək hələ də çətindirsə, hərəkəti asanlaşdırmaq üçün WD-40 və ya sürtkü yağından istifadə edin.

Addım 29: Bağlantılar

Robotik Olmayan Qol:

Kol 3D Çap Edilə bilənlər:

Qolum 3D Yazdırıla bilər:

Arduino və İşləmə:

Addım 30: Kod

Bu koddan dəyişdirildi

Arduino Kodu:

#include // Motorları Servo myservo1 elan edin; Servo myservo2; Servo myservo3; Servo myservo4; Servo myservo5; Servo myservo6; // Bütün mühərriklər standart olaraq 90 dərəcə int int1 = 90; int cari2 = 90; int cari3 = 90; int cari4 = 90; int cari5 = 90; int cari6 = 90; // Motorların int mini1 = 0 -a çata biləcəyi Minimum və Maksimum Dərəcələr; 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; // İndiki mövqedən int dərəcəFoward = 5 əlavə və ya çıxılacaq dərəcələr; // Gecikdirin ki, iki funksiya səhv qaydada baş verməsin int delayBetweenSteps = 100; void setup () {// Hər bir motor üçün idarəetmə pinlərini təyin edin myservo1.attach (3); myservo2.attach (4); myservo3.attach (5); myservo4.attach (6); myservo5.attach (7); myservo6.attach (8); // Bütün mühərrikləri myservo1.write (cari1) parametrinə təyin edin; myservo2.write (cari2); myservo3.write (current3); myservo4.write (current4); myservo5.write (current5); myservo6.write (current6); // serial ünsiyyətə başlayın @9600 bps Serial.begin (9600); } void loop () {if (Serial.available ()) {// data char val = Serial.read () oxumaq üçün əlçatandırsa; // bu simvola qoyun // Motor İdarələri əgər (val == 'a' && current1 + dərəcə mini1) {myservo1.write (current1 - dərəcəFoward); cari1 = cari1 - dərəcəFərd; gecikmə (gecikmə arasında addımlar); } if (val == 'c' && current2 mini2) {myservo2.write (current2 - dərəcəFoward); cari2 = cərəyan2 - dərəcəYaxın; gecikmə (gecikmə arasında addımlar); } if (val == 'e' && current3 mini3) {myservo3.write (current3 - dərəcəFoward); cari3 = cari3 - dərəcəYaxın; gecikmə (gecikmə arasında addımlar); } if (val == 'g' && current4 mini4) {myservo4.write (current4 - dərəcəFoward); cari4 = cari4 - dərəcəYaxın; gecikmə (gecikmə arasında addımlar); } if (val == 'i' && current5 mini5) {myservo5.write (current5 - dərəcəFoward); cari5 = cari5 - dərəcəYaxın; gecikmə (gecikmə arasında addımlar); } if (val == 'k' && current6 mini6) {myservo6.write (current6 - dərəcəFoward); cari6 = cərəyan6 - dərəcəYaxın; gecikmə (gecikmə arasında addımlar); } // Sürət Nəzarət edirsə (val == 'w') {// Sürət 1 düyməsinə dərəcəFoward = 1; gecikmə (gecikmə arasında addımlar); } if (val == 'x') {// Sürət 5 düyməsinə dərəcəFoward = 5; gecikmə (gecikmə arasında addımlar); } if (val == 'y') {// Sürət 10 düyməsinə dərəcəFoward = 10; gecikmə (gecikmə arasında addımlar); } if (val == 'z') {// Sürət 20 düyməsinə dərəcəFoward = 20; gecikmə (gecikmə arasında addımlar); } if (val == 'r') {// Sürət 20 düyməsinə basılırsa myservo1.write (90); cari1 = 90; myservo2.write (90); cari2 = 90; myservo3.write (90); cari3 = 90; myservo4.write (90); cari4 = 90; myservo5.write (90); cari5 = 90; myservo6.write (90); cərəyan 6 = 90; gecikmə (gecikmə arasında addımlar); }}}

İşləmə Kodu:

idxal emalı.serial.*; idxal idarəsiP5.*; // idxal ControlP5 kitabxana Serial port; ControlP5 cp5; // ControlP5 obyekti PFont şriftini yaratmaq; void setup () {// arduino proqram ölçüsü ilə eyni (300, 700); // pəncərə ölçüsü, (en, hündürlük) printArray (Serial.list ()); // bütün mövcud serial portlarını yazdırır // Bir probleminiz varsa, yəqin ki, buradan gəlir String portName = Serial.list () [0]; port = yeni Serial (bu, portName, 9600); // arduino'yu com3 -ə bağladım, linux və mac os -da fərqli olardı // boş pəncərəyə buton əlavə edək cp5 = yeni ControlP5 (bu); font = createFont ("Arial", 13); // düymələr və başlıq üçün xüsusi şriftlər // Sürət Nəzarət Düymələri cp5.addButton ("Bir") // "Bir" düymənin adıdır.setPosition (50, 50) // düymənin sol üst küncünün x və y koordinatları..setSize (55, 25) // (eni, hündürlüyü).setFont (şrift); cp5.addButton ("Beş").setPosition (110, 50).setSize (55, 25).setFont (font); cp5.addButton ("On").setPosition (170, 50).setSize (55, 25).setFont (font); cp5.addButton ("Twenty").setPosition (230, 50).setSize (55, 25).setFont (font); cp5.addButton ("Sıfırla").setPosition (110, 2).setSize (55, 25).setFont (font); cp5.addButton ("Servo_1_Foward").setPosition (50, 90).setSize (190, 40).setFont (font); // Motor Nəzarət Düymələri cp5.addButton ("Servo_1_Back").setPosition (50, 140).setSize (190, 40).setFont (font); cp5.addButton ("Servo_2_Foward").setPosition (50, 190).setSize (190, 40).setFont (font); cp5.addButton ("Servo_2_Back").setPosition (50, 240).setSize (190, 40).setFont (font); cp5.addButton ("Servo_3_Foward").setPosition (50, 290).setSize (190, 40).setFont (font); cp5.addButton ("Servo_3_Back").setPosition (50, 340).setSize (190, 40) // (en, hündürlük).setFont (font); cp5.addButton ("Servo_4_Foward").setPosition (50, 390).setSize (190, 40).setFont (font); cp5.addButton ("Servo_4_Back").setPosition (50, 440).setSize (190, 40) // (en, hündürlük).setFont (font); cp5.addButton ("Servo_5_Foward").setPosition (50, 490).setSize (190, 40).setFont (font); cp5.addButton ("Servo_5_Back").setPosition (50, 540).setSize (190, 40).setFont (font); cp5.addButton ("Servo_6_Foward").setPosition (50, 590).setSize (190, 40).setFont (font); cp5.addButton ("Servo_6_Back").setPosition (50, 640).setSize (190, 40).setFont (font); } void draw () {// arduino fonunda döngə ilə eynidir (192, 215, 249); // pəncərənin arxa plan rəngi (r, g, b) və ya (0 -dan 255 -ə qədər) // Sürət nəzarətinin sürət tənzimləyici doldurulması olduğunu söyləyən mətn əlavə edin (0, 10, 25); // mətn rəngi (r, g, b) textFont (font); mətn ("Sürət Nəzarəti", 50, 40); // ("mətn", x koordinat, y koordinat)} // düymələrimizə bəzi funksiyalar əlavə etməyə imkan verir // buna görə də hər hansı bir düyməyə basdığınızda serial portu üzərindən xüsusi simvol göndərir // Əminəm ki, sətirlər göndərmək mümkündür simvol əvəzinə və daha məntiqli olardı amma bunu necə edəcəyimi bilmirəm // Speed Control Commands void One () {port.write ('w'); } void Five () {port.write ('x'); } void Ten () {port.write ('y'); } boş Twenty () {port.write ('z'); } // Motor İdarəetmə Komandaları Servo_1_Foward () {port.write ('a'); } etibarsız Servo_1_Back () {port.write ('b'); } etibarsız Servo_2_Foward () {port.write ('c'); } etibarsız Servo_2_Back () {port.write ('d'); } etibarsız Servo_3_Foward () {port.write ('e'); } etibarsız Servo_3_Back () {port.write ('f'); } etibarsız Servo_4_Foward () {port.write ('g'); } etibarsız Servo_4_Back () {port.write ('h'); } etibarsız Servo_5_Foward () {port.write ('i'); } etibarsız Servo_5_Back () {port.write ('j'); } etibarsız Servo_6_Foward () {port.write ('k'); } etibarsız Servo_6_Back () {port.write ('l'); } void Reset () {port.write ('r'); }

Addım 31: Daha çox şəkil