İçindekiler:

Tel Kontrollü Robot Kolu: 31 Adım
Tel Kontrollü Robot Kolu: 31 Adım

Video: Tel Kontrollü Robot Kolu: 31 Adım

Video: Tel Kontrollü Robot Kolu: 31 Adım
Video: İNSANLIK İÇİN ÇALIŞAN ROBOTLAR ! DETROIT BECOME HUMAN (1.BÖLÜM) 2024, Kasım
Anonim
Tel Kontrollü Robot Kolu
Tel Kontrollü Robot Kolu

Bu, kablolarla kontrol edilen bir robot kolunun nasıl yapılacağına dair bir eğitim. Tel kullanmanın avantajı, kolunuzun daha hafif olması ve tüm motorlarınızı kolunuzun alt kısmında tutabilmeniz, yapım ve bakımı kolaylaştırmasıdır. İşte kolun hareket halindeki bir videosu. Gelecekte bir pençe eklemeyi planlıyorum, böylece bir şeyleri toplayabilir ve sadece onları itmekle kalmaz.

3D Yazdırılabilirler:

Burada ve Burada

Gereçler

6 Servo Motor (MG995)

Arduino Uno'su

Yaklaşık 6 metre plastik kaplı çelik tel (0,5 mm)

Kutu 23x33x10 (daha dar olabilir kesinlikle daha kısa olmamalı)

Tahta tahta 33x10

Somun ve Cıvata

14 cm boru (ipleri yönlendirmek için bu gereklidir)

4 L-Braket

5 voltluk adaptör

2 adet 7 yollu klemens

Breadboard teller

3D Basılı Bileşenler (Tarafımca tasarlanmamıştır, açıklamadaki öğelere bağlantılar):

3 "Cıvata"

2 "Öğe 1"

1 "Öğe 2"

2 "Element 3"

1 Taban Konektörü

Adım 1: Tüm 3B Bileşenleri Yazdırın

Cıvata delikleri ve kemerler için desteğe ihtiyacınız olabilir ancak bileşenlerinizin gövdesine destek eklemediğinizden emin olun; bu küçük tel deliklerini kapatacak ve yeni delikler açmanız gerekecek

2. Adım: (İsteğe bağlı) Güçlendirmek için Kutunuzun Altına Bir Tahta Tahta Yapın

Benim kutum oldukça zayıftı, seninki olmayabilir

Adım 3: Kutuya Sığdırmak İçin Bir Tahta Kalasını Ölçün ve Kesin

Adım 4: Motorların Konumlarını İşaretleyin

kolların hiçbirinin birbirine değmediğinden emin olun

Adım 5: Braketlerin ve Borunun Konumlarını işaretleyin

Braketlerin ve Borunun Konumlarını işaretleyin
Braketlerin ve Borunun Konumlarını işaretleyin

Boru, deliğin önüne yaklaşık bir santimetre yerleştirilmelidir.

Adım 6: Kutunuzdan Çıkan Kablolar İçin Bir Delik Açın (USB ve Güç)

Kutunuzdan Çıkan Kablolar İçin Bir Delik Açın (USB ve Güç)
Kutunuzdan Çıkan Kablolar İçin Bir Delik Açın (USB ve Güç)

Adım 7: Tüm İşaretli Delikleri Delin ve Test Edin

Tüm İşaretli Delikleri Delin ve Test Edin
Tüm İşaretli Delikleri Delin ve Test Edin

Adım 8: Motorları ve Boruyu Tahtaya Takın

Adım 9: Kalas'ı L-Braketlerle Kutuya Takın

Adım 10: Klemenslerinizi Alın ve Kabloları Birlikte Lehimleyin

Klemenslerinizi Alın ve Kabloları Birlikte Lehimleyin
Klemenslerinizi Alın ve Kabloları Birlikte Lehimleyin

Adım 11: Adaptör Güç Kablosunun Ucunu Kesin ve Kabloları Soyun

Adım 12: Artı ve Eksi Kabloları Belirleyin ve İşaretleyin

Adım 13: Kabloları Tüm + Servo Kabloları ve Güç Kablosundan Gelen + Kabloyu Bağlanacak Şekilde Klemenslere Takın, - Kablolar İçin Aynı Şey Geçerlidir

Tüm + Servo Kabloları ve Güç Kablosundan Gelen + Kablonun Bağlanabilmesi için Kabloları Klemenslere Takın, - Kablolar İçin Aynısı Geçerlidir
Tüm + Servo Kabloları ve Güç Kablosundan Gelen + Kablonun Bağlanabilmesi için Kabloları Klemenslere Takın, - Kablolar İçin Aynısı Geçerlidir

Adım 14: Bir Breadboard Telinin Başını Kesin

Bir Breadboard Telinden Kafayı Kesin
Bir Breadboard Telinden Kafayı Kesin

Breadboard kablosunun soyulmuş ucunu eksi terminal bloğuna ve pim ucunu arduino'nuzdaki topraklama pimine takın. Bunu yapmazsanız, motorlar herhangi bir girdi olmadan düzensiz hareket edecektir.

Adım 15: Kolunuzdan Çıkan Teller İçin Kutunun Altına Üç Delik Açın

Delikler, taban konektöründeki deliklerle eşleşmelidir.

Adım 16: Taban Konektörünü Kutuya Takın

Taban Konektörünü Kutuya Takın
Taban Konektörünü Kutuya Takın

Adım 17: Tel Oluklarını Daha Derin Hale Getirmek için Bıçak veya Çivi Dosyası Kullanın

Tel Kanallarını Derinleştirmek için Bıçak veya Çivi Dosyası Kullanın
Tel Kanallarını Derinleştirmek için Bıçak veya Çivi Dosyası Kullanın

Eleman 2 ve 3 için tel olukları çok sığ.

Adım 18: Kolu Oluşturun

Kol Yapın
Kol Yapın

Kolu buradaki talimatlara göre oluşturun, parçaları sığacak şekilde dosyalamanız gerekebilir.

Adım 19: İşleme ve Arduino'yu Kurun

İşleme ve Arduino

Adım 20: Kod Programlarını Yapıştırın

Kod bu sayfanın altındadır

Adım 21: Servo Kontrol Pinlerini Arduino'ya Bağlayın

Servo Kontrol Pinlerini Arduino'ya Bağlayın
Servo Kontrol Pinlerini Arduino'ya Bağlayın

Birinci motoru üçüncü dijital pine, ikinci motoru dördüncü dijital pine vb. bağladım. Topraklama piminin hala - terminal bloğuna bağlı olduğundan emin olun.

Adım 22: İşleme Sırasında Sıfırlama Düğmesine Basın, Bu, Tüm Kolları 90 Dereceye Ayarlayacaktır

Adım 23: Servo Kolları Motora Yatay Olarak Sabitleyin

Adım 24: Gevşeklik Olmaması İçin Telleri Kollardan Geçirin

Teli mümkün olduğu kadar çok delikten geçirdiğinizden emin olun, bu onu geçici olarak tutacak ve çıkarması kolay olacaktır.

Adım 25: Kolu Test Edin ve Gerektiğinde Telleri Sıkın veya Gevşetin

Adım 26: Kalıcı hale getirmek için Telleri Servo Kollara Sıcak Yapıştırın

27. Adım: Notlar

Notlar
Notlar

0,5 mm mücevher teli kullandım ama 0,4 mm iyi olmalı. Orijinal tasarım PVC tel kullanıyordu, ancak bu çok kolay kırıldı ve çalışmak zordu.

Kolu bir arabada veya bisiklette hareket ettirecekseniz, dışarı çıkmadıklarından emin olmak için kol eklemlerini bantla sarın. Bu özellikle 1. öğe için önemlidir.

Bu projeye başladığımda, neden kablolarla kontrol edilen bir kolun nasıl yapılacağına dair sadece bir öğretici bulabildiğimi merak ediyordum. Şimdi bunun neden bir hobi robot kolu yapmanın en yaygın yolu olmadığını anlıyorum. Teller bazen yuvalarından düşüyor ve her şey biraz dayanıksız. Sorunlar fazla tecrübem olmadığı için mi yoksa tüm fikir sorunlu mu bilmiyorum ama ne yaptığımı bilsem daha sağlam olacağına eminim.

28. Adım: Sorun Giderme

3D baskılı elemanlarda tel delikleri kapatılmıştır:

Sadece cıvata delikleri yerine tüm eleman için destek eklediniz. Ya elemanı yeniden yazdırın ya da gerçekten sıcak bir iğne ile delikleri açın.

COM bağlantı noktası kapalı, arduino ile iletişim kuramazsınız:

Arduino'nuz USB 3 bağlantı noktalarını kabul etmeyebilir (benimki kabul etmedi), bir USB 2 uzatma kablosu satın alabilir veya USB 2 bağlantı noktalarına sahip bir bilgisayar kullanabilirsiniz.

Kod çalışmıyor:

Bu öğreticiyi izleyin ve kendi kodunuzu yapmak için değiştirin

Kolun bir kısmı hareket etmiyor:

Kablolar birbirine dolanmış olabilir, bunu kontrol etmek için servo kolunu servodan çıkarın ve kabloları elle çekmeyi deneyin. Kabloları çözün ve kabloları çekmek hala zorsa, hareketi kolaylaştırmak için biraz WD-40 veya bir yağlayıcı kullanmayı deneyin.

29. Adım: Bağlantılar

Robotik Olmayan Kol:

Arm 3D Printables:

Kolum 3D Yazdırılabilir:

Arduino ve İşleme:

Adım 30: Kodlama

Bu koddan değiştirildi

Arduino Kodu:

#include // Motorları bildir Servo myservo1; Servo myservo2; Servo myservo3; Servo myservo4; Servo myservo5; Servo myservo6; //Tüm motorlar varsayılan olarak 90 dereceye ayarlanmıştır int current1 = 90; int akım2 = 90; int akım3 = 90; int akım4 = 90; int akım5 = 90; int akım6 = 90; //Motorların ulaşabileceği Minimum ve Maksimum Dereceler int mini1 = 0; 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; //Mevcut konumdan eklenecek veya çıkarılacak dereceler int dereceİleri = 5; //İki fonksiyonun yanlış sırada olmaması için gecikme int delayBetweenSteps = 100; void setup() { //Her motor için kontrol pinlerini ayarlayın myservo1.attach(3); myservo2.attach(4); myservo3.attach(5); myservo4.attach(6); myservo5.attach(7); myservo6.attach(8); //Tüm motorları varsayılan ayara ayarlayın myservo1.write(current1); myservo2.write(geçerli2); myservo3.write(geçerli3); myservo4.write(mevcut4); myservo5.write(geçerli5); myservo6.write(geçerli6); //seri iletişimi başlat @9600 bps Serial.begin(9600); } void loop(){ if(Serial.available()){ //okunacak veri varsa char val = Serial.read(); //bu karaktere koy //Motor Kontrolleri if(val == 'a' && current1 + DegreeFoward mini1){ myservo1.write(current1 - degreeFoward); akım1 = akım1 - dereceİleri; gecikme(delayBetweenSteps); } if(val == 'c' && current2 mini2){ myservo2.write(current2 - DegreeFoward); akım2 = akım2 - dereceİleri; gecikme(delayBetweenSteps); } if(val == 'e' && current3 mini3){ myservo3.write(current3 - DegreeFoward); akım3 = akım3 - dereceİleri; gecikme(delayBetweenSteps); } if(val == 'g' && current4 mini4){ myservo4.write(current4 - DegreeFoward); akım4 = akım4 - dereceİleri; gecikme(delayBetweenSteps); } if(val == 'i' && akım5 mini5){ myservo5.write(geçerli5 - dereceFoward); akım5 = akım5 - dereceİleri; gecikme(delayBetweenSteps); } if(val == 'k' && current6 mini6){ myservo6.write(current6 - DegreeFoward); akım6 = akım6 - dereceİleri; gecikme(delayBetweenSteps); } //Hız Kontrolleri if(val == 'w'){ //Hız 1 düğmesine basıldığında dereceİleri = 1; gecikme(delayBetweenSteps); } if(val == 'x'){ //Hız 5 düğmesine basıldığında dereceİleri = 5; gecikme(delayBetweenSteps); } if(val == 'y'){ //Hız 10 düğmesine basıldığında dereceİleri = 10; gecikme(delayBetweenSteps); } if(val == 'z'){ //Hız 20 düğmesine basıldığında dereceİleri = 20; gecikme(delayBetweenSteps); } if(val == 'r'){ //Hız 20 butonuna basıldığında myservo1.write(90); akım1 = 90; myservo2.write(90); akım2 = 90; myservo3.write(90); akım3 = 90; myservo4.write(90); akım4 = 90; myservo5.write(90); akım5 = 90; myservo6.write(90); akım6 = 90; gecikme(delayBetweenSteps); } } }

İşleme Kodu:

işleme.serisini içe aktar.*; ithalat kontrolüP5.*; //ControlP5 kitaplığını içe aktar Seri bağlantı noktası; KontrolP5 cp5; //ControlP5 nesnesi PFont yazı tipi oluştur; void setup(){ //arduino program boyutuyla aynı(300, 700); //pencere boyutu, (genişlik, yükseklik) printArray(Serial.list()); //kullanılabilir tüm seri portları yazdırır //Eğer bir problem yaşıyorsanız muhtemelen buradan kaynaklanmaktadır String portName = Serial.list()[0]; bağlantı noktası = yeni Seri(bu, bağlantı noktasıAdı, 9600); //arduino'yu com3'e bağladım, linux ve mac os'ta farklı olurdu //boş pencereye buton ekleyelim cp5 = new ControlP5(this); yazı tipi = createFont("Arial", 13); // düğmeler ve başlık için özel yazı tipleri // Hız Kontrol Düğmeleri cp5.addButton("One") //"One", düğmenin adıdır.setPosition(50, 50) //düğmenin sol üst köşesinin x ve y koordinatları.setSize(55, 25) //(genişlik, yükseklik).setFont(font); cp5.addButton("Beş").setPosition(110, 50).setSize(55, 25).setFont(font); cp5.addButton("On").setPosition(170, 50).setSize(55, 25).setFont(font); cp5.addButton("Yirmi").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 Kontrol Düğmeleri 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) //(genişlik, yükseklik).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) //(genişlik, yükseklik).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 arka planındaki döngü ile aynı(192, 215, 249); // pencerenin arka plan rengi (r, g, b) veya (0 ila 255) //Hız kontrolünün hız kontrolü olduğunu söyleyen metin ekleyin fill(0, 10, 25); //metin rengi (r, g, b) textFont(font); text("Hız Kontrolü", 50, 40); // ("metin", x koordinat, y koordinatı) } //butonlarımıza bazı fonksiyonlar ekleyelim //böylece herhangi bir tuşa bastığınızda seri port üzerinden belirli bir karakter gönderir //Eminim string göndermek mümkün karakter yerine, daha mantıklı olur ama nasıl yapacağımı bilmiyorum //Hız Kontrol Komutları void One(){ port.write('w'); } void Five(){ port.write('x'); } void Ten(){ port.write('y'); } void Twenty(){ port.write('z'); } //Motor Kontrol Komutları void Servo_1_Foward(){ port.write('a'); } void Servo_1_Back(){ port.write('b'); } void Servo_2_Foward(){ port.write('c'); } void Servo_2_Back(){ port.write('d'); } void Servo_3_Foward(){ port.write('e'); } void Servo_3_Back(){ port.write('f'); } void Servo_4_Foward(){ port.write('g'); } void Servo_4_Back(){ port.write('h'); } void Servo_5_Foward(){ port.write('i'); } void Servo_5_Back(){ port.write('j'); } void Servo_6_Foward(){ port.write('k'); } void Servo_6_Back(){ port.write('l'); } void Reset(){ port.write('r'); }

31. Adım: Daha Fazla Resim

Önerilen: