İçindekiler:

Arduino Kontrollü Robotik Kol W/6 Serbestlik: 5 Adım (Resimli)
Arduino Kontrollü Robotik Kol W/6 Serbestlik: 5 Adım (Resimli)

Video: Arduino Kontrollü Robotik Kol W/6 Serbestlik: 5 Adım (Resimli)

Video: Arduino Kontrollü Robotik Kol W/6 Serbestlik: 5 Adım (Resimli)
Video: Arduino ile Robotik Kol | Robot Kol Yapımı Detaylı Anlatım | (Kod+Şema) 2024, Temmuz
Anonim
Arduino Kontrollü Robotik Kol W/6 Serbestlik Derecesi
Arduino Kontrollü Robotik Kol W/6 Serbestlik Derecesi
Arduino Kontrollü Robotik Kol W/6 Serbestlik Derecesi
Arduino Kontrollü Robotik Kol W/6 Serbestlik Derecesi
Arduino Kontrollü Robotik Kol W/6 Serbestlik Derecesi
Arduino Kontrollü Robotik Kol W/6 Serbestlik Derecesi

Ben bir robotik grubunun üyesiyim ve her yıl grubumuz her yıl düzenlenen Mini Maker Faire'e katılıyor. 2014'ten başlayarak, her yılki etkinlik için yeni bir proje oluşturmaya karar verdim. O zamanlar, etkinlikten bir şeyler hazırlamak için yaklaşık bir ay önceydim ve ne yapmak istediğim hakkında hiçbir fikrim yoktu.

Bir üye, ilgimi çeken "ilginç bir açık kaynaklı robotik kol yapısı" bağlantısı yayınladı. Planlar, kontrolleri veya kontrolörleri olmayan bir koldan ibaretti. Zaman kısıtlamalarım göz önüne alındığında, gerçekten iyi bir başlangıç noktası gibi görünüyordu. Tek sorun, başlamak için gerçekten hiçbir aracım olmamasıydı.

Grup üyelerinden bazılarının yardımıyla, aşağıda gösterilen iki adet 3D baskılı parçanın yanı sıra akrilik parçaları kesip bana gönderdim. Bazı gecelik donanım siparişleri ve yerel donanım mağazasına yapılan birkaç gezi ile birlikte, etkinlikten önceki gece çalışan bir projeyi tamamladım!

Genelde olduğu gibi, hikayede daha fazlası ve aşağıda gördüklerinize yoğunlaşmış yapının birkaç enkarnasyonu var. Arka hikayeyle ilgileniyorsanız, daha fazlasını burada bulabilirsiniz:

Adım 1: İhtiyacınız Olan Şey - Donanım ve Elektronik

İhtiyacınız Olan - Donanım ve Elektronik
İhtiyacınız Olan - Donanım ve Elektronik
İhtiyacınız Olan - Donanım ve Elektronik
İhtiyacınız Olan - Donanım ve Elektronik

Orijinal proje tasarımcısı Avrupa'da yaşadı ve daha sonra orada yaygın olan metrik ölçümleri ve malzemeleri kullandı. Örneğin gövde için kullandığı pres tahtası 5 mm kalınlığında standarttı. Burada ABD'deki benzer malzeme 1/8 ve yaklaşık 3,7 mm kalınlığındadır. Bu, orijinal olarak presle takılmak üzere tasarlanmış olan açıklıklarda bir boşluk bıraktı. Çizimleri düzeltmek yerine, bu bağlantıları sabitlemek için Gorilla Glue kullandım.

Ayrıca ABD'deki yerel donanım mağazanızda standart olmayan M3 dişli somun ve cıvataları da kullandı. Bunları yerel olarak mevcut seçeneklere dönüştürmek yerine, donanımı aşağıdaki parça listemde gösterildiği gibi çevrimiçi sipariş ettim.

  • 22 - M3 x 0,5 x 23 mm Ayrılıklar
  • 15 - M3 x 15mm Ara Parçalar
  • 40 - M3 Vidalar
  • M3 Altıgen Somunlar
  • M3 25mm Vidalar
  • 1 - Bahar
  • 3/4" Çift Taraflı Montaj Bandı
  • 5 - SG 5010 TowerPro Servo
  • 1 - SG92R TowerPro mini servo
  • 1 - SG90 TowerPro mini servo
  • 2.54 mm Tek Sıra Düz Pim Başlığı
  • 1 - Yarım Boy Breadboard
  • 1 - Dişi/Erkek 'Uzatma' Jumper Kabloları - 40 x 6"
  • 1 - 12" x 24" Mavi Akrilik Levha veya favori servis sağlayıcınızdan lazerle kesilmiş parçalar
  • 2 - 3 mm x 20 mm + 4 mm x 5 mm mafsallı yatak ara parçaları 3D Baskılı (aşağıya bakın)
  • 1 - Kontrol paneli *Bakınız Kablolama Bölümündeki Not
  • 1 - Dağınık RGB (üç renkli) 10 mm LED
  • 1 - Arduino Uno
  • 1 - Standart LCD 16x2 + ekstralar - mavi üzerine beyaz
  • 1 - i2c / SPI karakter LCD sırt çantası
  • 1 - Adafruit 16-Kanal 12-bit PWM/Servo Sürücüsü
  • 1 - MCP3008 - SPI Arayüzü ile 8 Kanallı 10-Bit ADC
  • 3 - JoyStick Koparma Modülü Sensörü *Bakınız Kablolama Bölümündeki Not
  • DC Varil Kriko
  • AC'den DC'ye Adaptör
  • Servo Uzatma kabloları - çeşitli uzunluklarda

Bu kolun neredeyse tüm parçaları 1/8 inç akrilikten kesilmiştir. Bununla birlikte, iki mafsallı yatak ara parçasının yazdırılması gerekir. Ayrıca, orijinal tasarım, iki ortak ara parçası tabanının yatak miline göre 7 mm boyunda olmasını gerektiriyordu. Üst kolun montajına başladığımda, TowerPro servolarının yüksekliğinden dolayı bunların çok uzun olduğu hemen anlaşıldı. Bu arada, hala biraz fazla uzun ama idare edilebilir olan, sadece 3 mm yüksekliğinde bir tabanla yapılmış yeni mafsallı yataklara sahip olmam gerekiyordu. Servolarınızın göreceli yüksekliğini not almak ve iki alt kol arasındaki mesafeyi hesaba katmak isteyeceksiniz:

Servo yüksekliği + servo korna + mafsal yatağı + çift taraflı bant = 47mm +/- 3mm.

Adım 2: Kol Montajı

Kol Montajı
Kol Montajı
Kol Montajı
Kol Montajı
Kol Montajı
Kol Montajı
Kol Montajı
Kol Montajı

Başlamadan önce, tüm servolarınızı ortaladığınızdan emin olun! İnşaat sırasında herhangi bir zamanda servonun konumunu manuel olarak hareket ettirirseniz, çerçeveye sabitlemeden önce servoyu yeniden konumlandırmanız gerekecektir. Bu, her zaman uyum içinde hareket etmesi gereken omuz servolarında özellikle önemlidir.

  1. M3 25 mm vidaları ve altıgen somunları kullanarak taban servosunu üst taban plakasına takın. Aşırı sıkmayın!NOT: Kullanım sırasında somunların gevşemesini en aza indirmek için dişlere sıkı sıkı uygulamak isteyebilirsiniz.

  2. Yukarıda sahip olduğum parça listesini kullanıyorsanız, daha sonra M3 x 0,5 x 23 mm Ayraçların 2'sini birbirine geçirerek ve daha sonra bunları altıgen somunlarla üst taban plakasına takarak 5 taban ara parçasını monte etmek isteyeceksiniz.
  3. Alt taban plakasını 5 M3 Vida ile ayırıcılara takın.
  4. Akrilik güvenli yapıştırıcı kullanarak omuz plakasını iki servo montaj plakasına takın. Burada Gorilla Glue kullandım. NOT: İki servo plakanın her birinin arkasında, bunları birbirine bağlayan bir takviye ara parçasının takılmasına izin veren bir delik vardır. Deliklerin hizalandığından emin olun!* Elinizde yapıştırıcı varken, devam edin ve bilek montaj plakasını tutucu ana plaka ile birleştirin.* İsteğe bağlı olarak, bilek servo plakasını iki bilek bağlantı plakasına da yapıştırabilirsiniz. Bunları aşağıda açıklandığı gibi zıtlıklarla birlikte cıvatalamak yerine bu seçimi yapmadım.
  5. Artık sertleştirilmiş omuz tertibatını temel servoya takın. Altı gövde montaj kornası olan servo ile birlikte verilen en geniş kornayı kullandım.

  6. Alt kol çerçevesini omuz servolarına eklemek zor olabilir. Devam etmeden önce kornaları alt kol çerçevelerine sabitlemenizi öneririm. NOT: Çerçeveye takmadan ÖNCE servolarınızı omuz tertibatı için ortaladığınızdan emin olun. Bu iki servo birlikte hareket etmelidir ve yanlış hizalanırlarsa minimumda servo titremesine neden olur ve yeterince yanlış hizalanırsa çerçeveye veya servolara zarar verebilir. * Omuz servolarının her biri, servoları plakalardan geçirmek yerine montaj plakalarının arkasına braketleri ile monte edilmiştir - bu, kornayı servo miline açılı olarak itmenizi ve vidayı sabitlemenizi sağlayacaktır. Servoyu henüz montaj plakasına sabitlemeyin. * Ardından, iç servoyu ekleyin ve kolu monte edin
  7. Servoları kollardaki boşluklardan iterek ve ardından ara parçalarını her iki üst kol plakası arasına yerleştirerek üst kol çerçevesini ve servoları birleştirin ve M3 vidalarla sabitleyin.
  8. Dirsek eklemi ara parçasının arkasına çift taraflı yapışkan bant ekleyin ve fazlalığı düzeltin.
  9. Ara parçayı, dirsek aktüatörü görevi görecek servonun altına takın.
  10. Üst kol tertibatını alt kol tertibatı çerçevesine kaydırın ve servo korna vidalarını sabitleyin.
  11. İki alt kol plakası arasına takviye boşlukları ekleyin. Ağırlığı azaltmak için dört yerine iki tane kullandım.
  12. Üst bilek eklemi ara parçasının arkasına çift taraflı yapışkan bant ekleyin ve fazlalığı düzeltin.
  13. Ara parçayı, bilek aktüatörü görevi görecek servonun altına takın.
  14. Dış bilek plakasını bilek servo kornasına takın ve korna vidasıyla sabitleyin.
  15. Bilek servo plakasını iki bilek eklem plakası ve ayırıcılarla birleştirin.
  16. Bilek servosunu servo kelepçe plakasıyla servo plakasına sabitleyin.
  17. Korna vidasının açıklığının bloke olması nedeniyle tutucu tertibatını bu kornaya takmadan önce bilek kornasını servoya sabitlemeniz gerekecektir.
  18. Kıskaç servo kornasını servoya takmadan önce kıskaç parçalarını gevşek bir şekilde monte edin. Bu, önceki adımda kornayı vidalamak için alan sağlar.
  19. Kıskaç boynuzunu servosuna takın ve kavrayıcı eklemleri tutan vidaları daha da sıkın. NOT: Tutucunun hareket etmesine izin vermek için gevşek olmaları gerektiğinden bu somunları ve cıvataları tam olarak sıkmayın.

Adım 3: Kablolama ve Kontrol Paneli

Kablolama ve Kontrol Paneli
Kablolama ve Kontrol Paneli
Kablolama ve Kontrol Paneli
Kablolama ve Kontrol Paneli
Kablolama ve Kontrol Paneli
Kablolama ve Kontrol Paneli

Bu projeyi daha sonraki bir eğitim projesi için sahip olduğum bazı fikirler için bir geliştirme platformu olarak kurdum. Bu yüzden bağlantılarımın çoğu basit dupont konektörler. Yaptığım tek lehimleme MCP3008 içindi. Bu bileşen için bir koparma panosu bulabilirseniz, bu kolu lehimsiz olarak oluşturabilmelisiniz.

3 grup bileşen vardır:

  1. Girdiler - Bu öğeler, kullanıcıdan bilgi alır ve joysticklerden ve mcp3008 ADC'den oluşur.
  2. Çıktılar - Bu öğeler, kullanıcıya durum göstererek veya servoları konum verileriyle güncelleyerek verileri dünyaya iletir. Bu öğeler LCD Ekran, LCD Sırt Çantası, RGB LED, Servo sürücü kartı ve son olarak servolardır.
  3. İşleme - Arduino, girişlerden verileri alan ve kod talimatlarına göre verileri çıkışlara iten son grubu tamamlar.

Yukarıdaki Fritzing şeması, tüm bileşenlerin pin bağlantılarını detaylandırmaktadır.

Girişler

Girişlerle başlayacağız. Joystick'ler analog cihazlardır - yani Arduino'ya giriş olarak değişken bir voltaj sundukları anlamına gelir. Üç joystick'in her biri, Arduino'ya toplam 6 giriş yapan X ve Y (yukarı, aşağı, sol sağ) için iki analog çıkışa sahiptir. Arduino Uno'nun 6 adet analog girişi mevcutken, ekrana ve servo kontrolöre I2C iletişimi için bu pinlerden ikisini kullanmamız gerekiyor.

Bu nedenle, MCP3008 analogdan dijitale dönüştürücüyü (ADC) dahil ettim. Bu çip, 8 adede kadar analog girişi alır ve bunları Arduino'nun SPI iletişim pinleri üzerinden dijital bir sinyale dönüştürür:

  • MCP Pinleri 1-6 > Başparmak joysticklerinin değişken çıkışları
  • MCP Pinleri 7&8 > Bağlantı yok
  • MCP Pin 9 (DGND) > Toprak
  • 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) > Toprak
  • MCP Pin 15 & 16 > +5V

Şematikteki joystick bağlantıları sadece bir örnek olarak gösterilmiştir. Hangi joysticklerin satın alındığına ve nasıl monte edildiğine bağlı olarak, bağlantılarınız benimkinden farklı olabilir. Joystick'in farklı markaları farklı bir pin çıkışına sahip olabilir ve ayrıca X ve Y'yi farklı şekilde yönlendirebilir. Önemli olan, ADC üzerindeki her bir girdinin neyi temsil ettiğini anlamaktır. Her pin kodumda aşağıdaki ilişkileri temsil eder:

  • Pin 1 - Bu pindeki Temel - Analog veriler robot üzerindeki en düşük servoyu döndürecektir.
  • Pin 2 - Omuz - Bu pin üzerindeki analog veriler, iki servoyu temel servonun üzerinde döndürecektir.
  • Pin 3 - Dirsek - Bu pin üzerindeki Analog veri, bir sonraki servoyu omuz servolarından yukarı döndürecektir.
  • Pim 4 - YUKARI/DN Bilek - Bu pim üzerindeki analog veriler, bilek servosunu döndürerek tutucu tertibatını yükseltip alçaltır
  • Pin 5 - The Gripper - Bu pin üzerindeki analog veriler kıskacı açıp kapatacaktır.
  • Pim 6 - Bileği Döndür - Bu pimdeki analog veriler tutucuyu döndürecektir

NOT: Parça listesinde atıfta bulunulan başparmak joysticklerini satın alırken ve monte ederken, modüllerin yönünün benimkinden farklı olabileceğini unutmayın, bu nedenle ADC'ye doğru bağlantı için x ve y çıkışlarını test edin. Ayrıca, benim 3D baskılı kontrol panelimi kullanıyorsanız, montaj delikleri benimkinden kaymış olabilir.

çıktılar

Adafruit PWM/Servo Controller, bu projeyi çok basit hale getiriyor. Sadece Servoları servo başlıklarına bağlayın ve tüm güç ve sinyal bağlantıları halledilir. Ekstra uzun uçlu servolar bulamazsanız, tüm servo kablolarınızın kontrol kartınıza ulaşması için çeşitli uzunluklarda bir dizi servo kablo uzatması almak isteyeceksiniz.

Servolar aşağıdaki gibi bağlanır:

  • Konum 0 - Temel servo
  • Konum 1 - Omuz servosu (Servo Y Kablosu)
  • Konum 2 - Dirsek Servosu
  • Konum 3 - Bilek 1 Servo
  • Konum 4 - Tutucu Servo
  • Konum 5 - Bilek 2 Servo

Ek olarak, VCC ve V+ +5 Volt'a ve GND, Toprak'a bağlıdır.

NOT 1: Burada BÜYÜK bir not: Tüm proje için besleme gerilimi, Servo Kontrol Panosundaki güç terminal bloğundan geliyor. Servo Denetleyicideki V+ pimi aslında terminal bloğundan devrenin geri kalanına güç sağlıyor. Uno'nuzu programlamanız gerekiyorsa, servolardan gelen akım çekişi USB bağlantı noktanıza zarar verebileceğinden Uno'yu PC'nize bağlamadan önce V+ pininin bağlantısını kesmenizi şiddetle tavsiye ederim.

NOT 2: Projeye güç sağlamak için 6V AC - DC duvar adaptörü kullanıyorum. En az 4A akım sağlayabilen bir adaptör öneririm, böylece bir veya daha fazla servo bağlandığında, akımdaki ani yükselme sisteminizi karartmaz ve Arduino'nuzu sıfırlamaz.

16X2 LCD ekran, Servo Kontrolör tarafından halihazırda kullanılmakta olan I2C arayüzünden yararlanmak için Adafruit LCD Sırt Çantasına bağlanmıştır. Servo Denetleyici üzerindeki SCL ve Sırt Çantası üzerindeki CLK, Uno üzerindeki Pin A5'e bağlanır. Aynı şekilde, Servo Denetleyici üzerindeki SDA ve Sırt Çantası üzerindeki DAT, Uno üzerindeki Pin A4'e bağlanır. Ayrıca 5V +5 Volta, GND ise Toprağa bağlıdır. Sırt Çantasındaki LAT hiçbir şeye bağlı değildir.

Son olarak, RGB LED, Uno üzerindeki 7 (KIRMIZI), 6 (Yeşil) ve 5 (Mavi) pinlerine bağlanır. LED'in topraklama ayağı, 330Ohm'luk bir direnç aracılığıyla Toprağa bağlanır.

İşleme

Son olarak, yukarıda listelenmeyen Arduino bağlantılarının geri kalanı aşağıdaki gibidir: Pin 5V +5 Volt'a ve GND Toprak'a bağlıdır.

Kurulumumda, tüm güç ve toprak hatlarını ve ayrıca tüm cihazlar için I2C pinlerini birbirine bağlamak için breadboard'un yan raylarını kullandım.

4. Adım: Kod

kod
kod

Daha önce de belirtildiği gibi, bu projeyi aslında yerel Maker Faire'ım için bir gösteri olarak inşa ediyorum. Standımızda çocukların ve yetişkinlerin oynayabileceği bir şey olmasını amaçladım. Görünüşe göre, hayal ettiğimden çok daha popülerdi - o kadar ki, çocuklar bunun için kavga ediyorlardı. Bu nedenle, yeniden yazma zamanı geldiğinde, bir zaman sınırı uygulayan bir "Demo Modu" ekledim.

Kol orada oturuyor ve birinin joystick'i hareket ettirmesini bekliyor ve bunu yaptıklarında 60 saniyelik bir zamanlayıcı başlıyor. 60 saniyenin sonunda kullanıcıdan girdi almayı durdurur ve 15 saniye "Dinlenir". Kısa dikkat süreleri oldukları gibi, bu dinlenme süresi, sopa zamanı çekişmesini büyük ölçüde azalttı.

Temel operasyon

Aşağıdaki referans bölümünde listelenen kod oldukça basittir. Bir dizi, 6 eklemi minimum, maksimum uzantılar, bir ana konum ve mevcut konum ile takip eder. Kol çalıştırıldığında, başlatma işlevi MCP3008, LCD Sırt Çantası (ve ardından ekran) ile konuşmak için gereken kitaplıkları tanımlar ve LED pinlerini tanımlar. Oradan temel bir sistem kontrolü yapar ve kolun yuvasına doğru ilerler. Ev işlevi, kıskaçla başlar ve normal koşullar altında bağlanma olasılığını en aza indirecek şekilde tabana kadar iner. Kol tamamen uzatılmışsa, çalıştırmadan önce kolu manuel olarak yerleştirmek en iyisi olabilir. Jenerik servolar konumu hakkında geri bildirim sağlamadığından, her birini önceden tanımlanmış bir noktaya yerleştirmemiz ve her birinin ne kadar hareket ettiğini takip etmemiz gerekir.

Ana döngü önce bekleme modunda başlar - joysticklerin merkez konumlarından uzaklaşmasını arar. Bu gerçekleştiğinde, ana döngü durumları geri sayım durumuna değiştirir. Kullanıcı her bir joystick'i hareket ettirdikçe, joystick'in merkezden göreli konumu, mevcut bilinen konuma eklenecek veya bundan çıkarılacak ve uygun servoyu güncelleyecektir. Bir servo bir yönde tanımlanan limitine ulaştığında joystick durur. Kullanıcının tekrar hareket ettirmek için joystick'i diğer yönde hareket ettirmesi gerekecektir. Bu, donanım duruşlarından bağımsız olarak servolara uygulanan bir yazılım sınırıdır. Bu özellik, gerektiğinde kol hareketlerini belirli bir operasyon alanı içinde tutmanıza olanak tanır. Joystick merkeze bırakılırsa hareket duracaktır.

Bu kod sadece genel bir başlangıç noktasıdır. Kendi modlarınızı dilediğiniz gibi ekleyebilirsiniz. Bir örnek, zamanlayıcısız bir sürekli çalışma modu olabilir veya joystick basma düğmelerini girdi olarak ekleyebilir ve bir kayıt/oynatma modu yazabilir.

Adım 5: Bağlantılar ve Kaynaklar

Kol Referansları

  • Bu projeye ilham veren gönderi
  • Orijinal Tasarımcılar blog gönderileriKendi Robotik kolum Mini servo tutucularım ve tamamlanmış robot kolum Robotik kolu ve elektroniği çarpın
  • Thingiverse Kol
  • Thingiverse Mini Servo Tutucu

Yazılım Kitaplıkları

  • Adafruit PWM/Servo Kontrolör Kaynakları
  • MCP3008 Kitaplığı
  • MCP3008 Veri Sayfası

Kontrol Paneli ve Kod

  • Yaptığım Panelin Tinkercad çizimi
  • Geçerli kod deposu

Önerilen: