Robotik kol manipülatörü. Servolar veya tersine mühendislik uArm üzerinde pleksiglastan yapılmış kendin yap masa üstü robotik kol. Malzemeler ve araçlar

Merhaba!

Universal Robots'un işbirlikçi robotik manipülatör serisinden bahsediyoruz.

Aslen Danimarka kökenli olan Universal Robots şirketi, döngüsel işlemleri otomatikleştirmek için işbirlikçi robotik manipülatörler üretiyor. üretim süreçleri. Bu yazıda bunların ana özelliklerini sunuyoruz. özellikler ve uygulama alanlarını göz önünde bulundurun.

Bu nedir?

Şirketin ürünleri, açık kinematik zincire sahip üç hafif endüstriyel taşıma cihazından oluşan bir seri ile temsil edilmektedir:
UR3, UR5, UR10.
Tüm modellerde 6 hareket kabiliyeti vardır: 3'ü taşınabilir ve 3'ü yönlendirme. Universal Robots'un cihazları yalnızca açısal hareketler üretir.
Robotik manipülatörler, izin verilen maksimum yüke bağlı olarak sınıflara ayrılır. Diğer farklar şunlardır: yarıçap çalışma alanı, ağırlık ve taban çapı.
Tüm UR manipülatörleri, harici cihazlar ve ekipmanlarla entegrasyonu kolaylaştıran yüksek hassasiyetli mutlak konum sensörleriyle donatılmıştır. Kompakt tasarımları sayesinde UR manipülatörleri fazla yer kaplamaz ve geleneksel robotların sığamadığı çalışma bölümlerine veya üretim hatlarına kurulabilir. Özellikler:
Neden ilginçler?Programlama kolaylığı

Özel olarak geliştirilmiş ve patentli programlama teknolojisi, vasıfsız operatörlerin sezgisel 3D görselleştirme teknolojisini kullanarak UR robotik kollarını hızlı bir şekilde yapılandırmasına ve kontrol etmesine olanak tanır. Programlama, manipülatörün çalışma gövdesinin gerekli pozisyonlara bir dizi basit hareketiyle veya oklara basılmasıyla gerçekleşir. özel program tablette.UR3:UR5:UR10: Hızlı ayar

İlk başlatma operatörünün ilk basit işlemi paketinden çıkarmak, kurmak ve programlamak için bir saatten az bir süreye ihtiyacı olacaktır. UR3: UR5: UR10: İşbirliği ve güvenlik

UR manipülatörleri, tehlikeli ve kirli ortamlarda rutin görevleri yerine getiren operatörlerin yerini alabilir. Kontrol sistemi, çalışma sırasında robot manipülatörüne uygulanan dış rahatsız edici etkileri dikkate alır. Bu sayede UR taşıma sistemleri, personel iş istasyonlarının yakınında koruyucu bariyerler olmadan çalıştırılabilir. Robot güvenlik sistemleri Alman Teknik Denetleme Kurumu TÜV tarafından onaylanmış ve sertifikalandırılmıştır.
UR3: UR5: UR10: Çeşitli çalışma organları

Sonunda endüstriyel manipülatörler UR, özel çalışma parçalarının montajı için standartlaştırılmış bir montaj parçası sağlar. Çalışan gövde ile manipülatörün son bağlantısı arasına ek kuvvet-tork sensörleri veya kamera modülleri takılabilir. Olası uygulamalar

Endüstriyel robotik manipülatörler UR, neredeyse tüm döngüsel rutin süreçlerin otomatikleştirilmesi olasılığının önünü açıyor. Universal Robots cihazları çeşitli uygulama alanlarında kendilerini kanıtlamıştır.

Tercüme

UR manipülatörlerinin aktarım ve paketleme alanlarına kurulması doğruluğu artırır ve çekmeyi azaltır. Çoğu transfer işlemi gözetimsiz gerçekleştirilebilir. Parlatma, tamponlama, taşlama

Yerleşik sensör sistemi, kavisli ve düz olmayan yüzeylerde uygulanan kuvvetin doğruluğunu ve tekdüzeliğini kontrol etmenizi sağlar.

Enjeksiyon kalıplama

Tekrarlanan hareketlerin yüksek hassasiyeti, UR robotlarının polimer işleme ve enjeksiyonlu kalıplama görevlerinde kullanılmasına olanak tanır.
CNC makinelerinin bakımı

Kabuğun koruma sınıfı, CNC makineleriyle işbirliği için taşıma sistemlerinin kurulabilmesini sağlar. Paketleme ve istifleme

Geleneksel otomasyon teknolojileri hantal ve pahalıdır. Kolayca özelleştirilebilen UR robotları, çalışanların çevresinde koruyucu kalkanlarla veya koruyucu kalkanlar olmadan günün 24 saati çalışabilme kapasitesine sahiptir. yüksek doğruluk ve üretkenlik. Kalite kontrol

Video kameralı bir robot manipülatör, ürünlerin kalitesinin ek bir garantisi olan üç boyutlu ölçümler için uygundur. Toplantı

Basit bir bağlantı cihazı, UR robotlarının ahşap, plastik, metal ve diğer malzemelerden yapılmış parçaların montajı için gerekli uygun yardımcı mekanizmalarla donatılmasına olanak tanır. Makyaj yapmak

Kontrol sistemi, aşırı sıkmayı önlemek ve gerekli gerginliği sağlamak için geliştirilen torku kontrol etmenize olanak tanır. Yapıştırma ve kaynak

Çalışma elemanının yüksek konumlandırma doğruluğu, yapıştırma işlemleri gerçekleştirirken veya madde uygularken atık miktarını azaltmanıza olanak tanır.
UR endüstriyel robotik kolları gerçekleştirebilir Çeşitli türler kaynak: ark, nokta, ultrasonik ve plazma. Toplam:

Universal Robots'un endüstriyel manipülatörleri kompakt, hafiftir ve öğrenilmesi ve kullanılması kolaydır. UR robotları çok çeşitli görevler için esnek bir çözümdür. Manipülatörler, insan elinin hareketlerine özgü herhangi bir eylemi gerçekleştirecek şekilde programlanabilir ve dönme hareketlerinde çok daha iyidirler. Manipülatörler yorgunluğa veya yaralanma korkusuna yatkın değildir; molalara veya hafta sonlarına ihtiyaçları yoktur.
Universal Robots'un çözümleri, her türlü rutin süreci otomatikleştirmenize olanak tanıyarak üretimin hızını ve kalitesini artırır.

Universal Robots manipülatörlerini kullanarak üretim süreçlerinizin otomasyonunu resmi bir satıcıyla tartışın -

Uzaklık ölçer kullanarak ve arkadan aydınlatma uygulayan robotik bir manipülatör yaratıyoruz.

Tabanı akrilikten keseceğiz. Motor olarak servo sürücüleri kullanıyoruz.

Robotik manipülatör projesinin genel açıklaması

Projede 6 adet servo motor kullanılıyor. Mekanik kısım için 2 mm kalınlığında akrilik kullanılmıştır. Disko topunun tabanı bir tripod olarak kullanışlı oldu (motorlardan biri içeriye monte edilmiştir). Ultrasonik mesafe sensörü ve 10 mm LED de kullanılmaktadır.

Robotu kontrol etmek için Arduino güç kartı kullanıldı. Güç kaynağının kendisi bilgisayarın güç kaynağıdır.

Proje, robotik bir kolun geliştirilmesine yönelik kapsamlı açıklamalar sunuyor. Geliştirilen tasarımın güç kaynağı konuları ayrı ayrı ele alınmaktadır.

Manipülatör projesinin ana bileşenleri

Geliştirmeye başlayalım. İhtiyacın olacak:

  • 6 servo motor (2 model mg946, 2 mg995, 2 futuba s3003 kullandım (mg995/mg946, futuba s3003'ten daha iyi özelliklere sahiptir, ancak ikincisi çok daha ucuzdur);
  • 2 milimetre kalınlığında akrilik (ve 4 mm kalınlığında küçük bir parça);
  • ultrasonik mesafe sensörü hc-sr04;
  • LED'ler 10 mm (renk - sizin takdirinize bağlı olarak);
  • tripod (taban olarak kullanılır);
  • alüminyum kavrama (yaklaşık 10-15 dolara mal olur).

Sürüş için:

  • Arduino Uno kartı (proje, Arduino'ya tamamen benzeyen ev yapımı bir kart kullanıyor);
  • elektrik panosu (bunu kendiniz yapmanız gerekecek, bu konuya daha sonra döneceğiz, özel dikkat gerektirir);
  • güç kaynağı (içinde bu durumda bilgisayar güç kaynağı kullanıldığında);
  • manipülatörünüzü programlamak için bir bilgisayar (programlama için Arduino kullanıyorsanız, ardından Arduino IDE)

Elbette kablolara ve tornavida ve benzeri bazı temel aletlere ihtiyacınız olacak. Artık tasarıma geçebiliriz.

Mekanik montaj

Manipülatörün mekanik kısmını geliştirmeye başlamadan önce çizimlerimin olmadığını belirtmekte fayda var. Tüm düğümler “diz üzerinde” yapıldı. Ancak prensip çok basittir. Aralarına servo motor takmanız gereken iki akrilik bağlantınız var. Ve diğer iki bağlantı. Ayrıca motorların kurulumu için. Peki, kapmanın kendisi. Böyle bir kavrama satın almanın en kolay yolu internettir. Hemen hemen her şey vidalar kullanılarak kurulur.

İlk kısmın uzunluğu yaklaşık 19 cm'dir; ikincisi - yaklaşık 17,5; Ön bağlantı uzunluğu yaklaşık 5,5 cm'dir, kalan ölçüleri projenizin ölçülerine göre seçiniz. Prensip olarak geri kalan düğümlerin boyutları o kadar önemli değildir.

Mekanik kol tabanda 180 derecelik bir dönüş açısı sağlamalıdır. Bu yüzden alt tarafa bir servo motor takmamız gerekiyor. Bu durumda aynı disko topuna kurulur. Sizin durumunuzda bu herhangi bir uygun kutu olabilir. Robot bu servo motor üzerine monte edilmiştir. Şekilde gösterildiği gibi ek bir metal flanş halkası takabilirsiniz. Onsuz da yapabilirsin.

Kurulum için ultrasonik sensör 2 mm kalınlığında akrilik kullanılmaktadır. Hemen altına bir LED takabilirsiniz.

Böyle bir manipülatörün nasıl inşa edileceğini tam olarak ayrıntılı olarak açıklamak zordur. Çoğu, stokta bulunan veya satın aldığınız bileşenlere ve parçalara bağlıdır. Örneğin servolarınızın boyutları farklı ise akrilik armatür bağlantıları da değişecektir. Boyutlar değişirse manipülatörün kalibrasyonu da farklı olacaktır.

Manipülatörün mekanik kısmının geliştirilmesini tamamladıktan sonra mutlaka servo motor kablolarını uzatmanız gerekecektir. Bu amaçlar için, bu proje bir İnternet kablosundan gelen kabloları kullandı. Tüm bunların böyle görünmesi için tembel olmayın ve Arduino kartınızın, blendajınızın veya güç kaynağınızın çıkışlarına bağlı olarak uzatılmış kabloların (dişi veya erkek) serbest uçlarına adaptörler takın.

Mekanik kısmı monte ettikten sonra manipülatörümüzün “beynine” geçebiliriz.

Manipülatör kavraması

Tutamağı takmak için bir servo motora ve bazı vidalara ihtiyacınız olacaktır.

Peki tam olarak ne yapılması gerekiyor.

Külbütörü servodan alın ve kavramanıza uyacak şekilde kısaltın. Bundan sonra iki küçük vidayı sıkın.

Servoyu taktıktan sonra en sol konuma çevirin ve tutucu çeneleri sıkın.

Artık servoyu 4 cıvatayla monte edebilirsiniz. Aynı zamanda motorun hala en sol konumda olduğundan ve tutucu çenelerin kapalı olduğundan emin olun.

Servo sürücüyü Arduino kartına bağlayabilir ve tutucunun işlevselliğini kontrol edebilirsiniz.

Cıvataların/vidaların aşırı sıkılması durumunda tutucu çalışma sorunlarının oluşabileceğini lütfen unutmayın.

İşaretçiye aydınlatma ekleme

Projenize aydınlatma ekleyerek aydınlatabilirsiniz. Bunun için LED'ler kullanıldı. Yapması kolay ve karanlıkta çok etkileyici görünüyor.

LED'lerin takılacağı yerler yaratıcılığınıza ve hayal gücünüze bağlıdır.

Elektrik şeması

Parlaklığı manuel olarak ayarlamak için R1 direnci yerine 100 kOhm'luk bir potansiyometre kullanabilirsiniz. R2 direnci olarak 118 Ohm dirençler kullanıldı.

Kullanılan ana bileşenlerin listesi:

  • R1 - 100 kOhm direnç
  • R2 - 118 Ohm direnç
  • Transistör bc547
  • Fotodirenç
  • 7 LED
  • Anahtar
  • Arduino kartına bağlantı

Mikrodenetleyici olarak Arduino kartı kullanıldı. Kullanılan güç kaynağı, kişisel bilgisayar. Multimetreyi kırmızı ve siyah kablolara bağladığınızda 5 volt göreceksiniz (bu da servo motorlar ve ultrasonik mesafe sensörü için kullanılır). Sarı ve siyah size 12 volt verecektir (Arduino için). Servo motorlar için 5 adet konnektör yapıyoruz, paralel olarak pozitif olanları 5 V'a, negatif olanları ise toprağa bağlıyoruz. Mesafe sensörüyle aynı.

Bundan sonra kalan konnektörleri (her servodan bir tane ve telemetreden iki tane) lehimlediğimiz karta ve Arduino'ya bağlayın. Aynı zamanda ileride programda kullandığınız pinleri doğru bir şekilde belirtmeyi unutmayın.

Ayrıca güç kartına bir güç LED göstergesi takıldı. Bunun uygulanması kolaydır. Ayrıca 5V ile toprak arasında 100 ohm'luk bir direnç kullanıldı.

Robotun üzerindeki 10mm LED de Arduino’ya bağlanıyor. 100 ohm'luk bir direnç pin 13'ten LED'in pozitif bacağına gider. Negatif - yere. Programdan devre dışı bırakabilirsiniz.

Aşağıdaki 2 servo motor aynı kontrol sinyalini kullandığından 6 servo motor için 6 konnektör kullanılır. İlgili iletkenler bir pime bağlanır ve bağlanır.

Kişisel bilgisayardaki güç kaynağının güç kaynağı olarak kullanıldığını tekrar ediyorum. Veya elbette ayrı bir güç kaynağı satın alabilirsiniz. Ancak her biri yaklaşık 2 A tüketebilen 6 sürücümüz olduğu göz önüne alındığında, bu kadar güçlü bir güç kaynağı ucuz olmayacaktır.

Servolardan gelen konektörlerin Arduino'nun PWM çıkışlarına bağlı olduğunu lütfen unutmayın. Tahtadaki bu tür pinlerin her birinin yanında sembol~. 6, 7 numaralı pinlere ultrasonik mesafe sensörü bağlanabilir. 13 numaralı pin ve toprağa bir LED bağlanabilir. İhtiyacımız olan tüm pinler bunlar.

Artık Arduino programlamaya geçebiliriz.

Kartı USB yoluyla bilgisayarınıza bağlamadan önce gücü kapattığınızdan emin olun. Programı test ederken robot kolunuza giden gücü de kapatın. Eğer güç kapatılmazsa Arduino usb'den 5 volt, güç kaynağından ise 12 volt alacaktır. Buna göre usb'den gelen güç, güç kaynağına aktarılacak ve bir miktar "sarkacaktır".

Bağlantı şeması servoları kontrol etmek için potansiyometrelerin eklendiğini göstermektedir. Potansiyometreler isteğe bağlıdır ancak yukarıdaki kod onlar olmadan çalışmayacaktır. Potansiyometreler 0,1,2,3 ve 4 numaralı pinlere bağlanabilir.

Programlama ve ilk başlatma

Kontrol için 5 potansiyometre kullanılır (bunu tamamen 1 potansiyometre ve iki joystick ile değiştirebilirsiniz). Potansiyometrelerle bağlantı şeması önceki bölümde gösterilmiştir. Arduino taslağı burada.

Aşağıda robotik kolun çalışmasını gösteren birkaç video bulunmaktadır. Umarım eğlenirsiniz.

Yukarıdaki video silahlanmadaki en son değişiklikleri göstermektedir. Tasarımı biraz değiştirmek ve birkaç parçayı değiştirmek zorunda kaldım. Futuba s3003 servolarının oldukça zayıf olduğu ortaya çıktı. Yalnızca eli kavramak veya döndürmek için kullanıldıkları ortaya çıktı. Böylece mg995'i kurdular. Peki, mg946 genellikle mükemmel bir seçenek olacaktır.

Kontrol programı ve bununla ilgili açıklamalar

// sürücüler değişken dirençler - potansiyometreler kullanılarak kontrol edilir.

int potpin = 0; // potansiyometreyi bağlamak için analog pin

int değer; // analog pinden veri okumaya yarayan değişken

myservo1.attach(3);

myservo2.attach(5);

myservo3.attach(9);

myservo4.attach(10);

myservo5.attach(11);

pinMode(led, ÇIKIŞ);

( //servo 1 analog pin 0

val = analogRead(potpin); // potansiyometre değerini okur (0 ile 1023 arasındaki değer)

// elde edilen değeri servolarla kullanmak üzere ölçeklendirir (0 ila 180 aralığında bir değer alır)

myservo1.write(val); //servoyu hesaplanan değere uygun pozisyona getiriyoruz

gecikme(15); // servo motorun belirtilen konuma ulaşmasını bekler

val = analogRead(potpin1); // analog pin 1'de servo 2

val = harita(val, 0, 1023, 0, 179);

myservo2.write(val);

val = analogRead(potpin2); // analog pin 2'de servo 3

val = harita(val, 0, 1023, 0, 179);

myservo3.write(val);

val = analogRead(potpin3); // analog pin 3'te servo 4

val = harita(val, 0, 1023, 0, 179);

myservo4.write(val);

val = analogRead(potpin4); //analog pin 4'te servo 5

val = harita(val, 0, 1023, 0, 179);

myservo5.write(val);

Ultrasonik mesafe sensörü kullanarak çizim yapın

Bu muhtemelen projenin en etkileyici kısımlarından biri. Manipülatöre, etrafındaki engellere tepki veren bir mesafe sensörü takılmıştır.

Kodun temel açıklamaları aşağıda sunulmuştur

#define trigPin 7

Aşağıdaki kod parçası:

5 sinyalin tamamına adlar atadık (6 sürücü için) (herhangi bir şey olabilir)

Takip etme:

Seri.begin(9600);

pinMode(trigPin, OUTPUT);

pinMode(echoPin, INPUT);

pinMode(led, ÇIKIŞ);

myservo1.attach(3);

myservo2.attach(5);

myservo3.attach(9);

myservo4.attach(10);

myservo5.attach(11);

Arduino kartına LED'lerin, servo motorların ve mesafe sensörünün hangi pinlere bağlı olduğunu söylüyoruz. Burada hiçbir şeyi değiştirmeye gerek yok.

geçersiz konum1())(

digitalWrite(led, YÜKSEK);

myservo2.writeMicroseconds(1300);

myservo4.writeMicroseconds(800);

myservo5.writeMicroseconds(1000);

Burada değiştirebileceğiniz bazı şeyler var. Bir pozisyon belirledim ve buna pozisyon1 adını verdim. Gelecek programda kullanılacaktır. Farklı hareket sağlamak istiyorsanız parantez içindeki değerleri 0'dan 3000'e değiştirin.

Daha sonrasında:

geçersiz konum2())(

digitalWrite(led, DÜŞÜK);

myservo2.writeMicroseconds(1200);

myservo3.writeMicroseconds(1300);

myservo4.writeMicroseconds(1400);

myservo5.writeMicroseconds(2200);

Önceki parçaya benzer şekilde, yalnızca bu durumda konum2'dir. Aynı prensibi kullanarak hareket için yeni konumlar ekleyebilirsiniz.

uzun süre, mesafe;

digitalWrite(trigPin, DÜŞÜK);

gecikmeMicroseconds(2);

digitalWrite(trigPin, YÜKSEK);

gecikmeMicroseconds(10);

digitalWrite(trigPin, DÜŞÜK);

süre = darbeIn(echoPin, YÜKSEK);

mesafe = (süre/2) / 29,1;

Artık programın ana kodu çalışmaya başlıyor. Değiştirmemelisin. Yukarıdaki satırların asıl görevi mesafe sensörünü yapılandırmaktır.

Daha sonrasında:

eğer (mesafe<= 30) {

eğer (mesafe< 10) {

myservo5.writeMicroseconds(2200); //tutucuyu aç

myservo5.writeMicroseconds(1000); //tutucuyu kapat

Artık ultrasonik sensörün ölçtüğü mesafeye göre yeni hareketler ekleyebilirsiniz.

eğer(mesafe<=30){ // данная строка обеспечивает переход в position1, если расстояние меньше 30 см.

konum1(); //aslında kol, parantezlerin ( ) arasında belirttiğiniz her şeyi yerine getirecektir.

else( // mesafe 30 cm'den büyükse konum2'ye gidin

konum()2 // önceki satıra benzer

Koddaki mesafeyi değiştirip dilediğinizi yapabilirsiniz.

Kodun son satırları

if (mesafe > 30 || mesafe<= 0){

Serial.println("Aralık dışında"); //seri monitöre belirtilen aralığın dışına çıktığımızı belirten bir mesaj çıktısı veriyoruz

Seri.print(mesafe);

Seri.println("cm"); //santimetre cinsinden mesafe

gecikme(500); //0,5 saniye gecikme

Elbette buradaki her şeyi milimetreye, metreye dönüştürebilir, görüntülenen mesajı vb. değiştirebilirsiniz. Gecikmeyle biraz oynayabilirsiniz.

Bu kadar. Keyfini çıkarın, kendi manipülatörlerinizi yükseltin, fikirlerinizi ve sonuçlarınızı paylaşın!

Merhaba Giktimes!

uFactory'nin uArm projesi iki yıldan fazla bir süre önce Kickstarter'da fon topladı. En başından beri bunun açık bir proje olacağını söylediler ancak şirketin bitiminden hemen sonra kaynak kodunu yayınlamak için acele etmediler. Pleksiglas'ı sadece çizimlerine göre kesmek istedim ve bu kadar, ancak kaynak malzeme olmadığından ve yakın gelecekte buna dair bir işaret olmadığından tasarımı fotoğraflardan tekrarlamaya başladım.

Artık robot kolum şuna benziyor:

İki yıl içinde yavaş yavaş çalışarak dört versiyonunu yapmayı başardım ve oldukça fazla deneyim kazandım. Projenin açıklamasını, geçmişini ve tüm proje dosyalarını kesim altında bulabilirsiniz.

Deneme ve hata

Çizimler üzerinde çalışmaya başladığımda sadece uArm'ı tekrarlamak değil, onu geliştirmek istedim. Bana öyle geliyordu ki benim koşullarımda dayanaksız yapmak oldukça mümkündü. Ayrıca elektroniğin manipülatörün tamamıyla birlikte dönmesi hoşuma gitmedi ve menteşenin alt kısmının tasarımını basitleştirmek istedim. Ayrıca onu hemen biraz daha küçük çizmeye başladım.

Bu giriş parametreleriyle ilk versiyonu çizdim. Maalesef manipülatörün (sarı renkte yapılmış) bu versiyonunun fotoğrafı yok. Buradaki hatalar epikti. İlk olarak, montajı neredeyse imkansızdı. Kural olarak manipülatörden önce çizdiğim mekanikler oldukça basitti ve montaj sürecini düşünmeme gerek kalmıyordu. Ama yine de onu monte ettim ve çalıştırmayı denedim ve elim neredeyse hiç hareket etmedi! Tüm parçalar vidaların etrafında dönüyordu ve daha az boşluk olacak şekilde onları sıktığımda hareket edemiyordu. Hareket edebilmesi için gevşetirsem inanılmaz bir oyun ortaya çıktı. Sonuç olarak konsept üç gün bile ayakta kalamadı. Ve manipülatörün ikinci versiyonu üzerinde çalışmaya başladı.

Kırmızı zaten iş için oldukça uygundu. Normal bir şekilde monte edildi ve yağlamayla hareket edebiliyordu. Üzerindeki yazılımı test edebildim ama yine de yatakların olmayışı ve farklı itme kuvvetlerinde büyük kayıplar onu çok zayıf kılıyordu.

Daha sonra proje üzerinde çalışmayı bir süreliğine bıraktım ama kısa süre sonra projeyi hayata geçirmeye karar verdim. Daha güçlü ve popüler servolar kullanmaya, boyutları büyütmeye ve rulmanlar eklemeye karar verdim. Üstelik her şeyi aynı anda mükemmel yapmaya çalışmayacağıma karar verdim. Çizimlerin taslağını güzel bağlantılar çizmeden aceleyle çizdim ve şeffaf pleksiglastan kesme emri verdim. Ortaya çıkan manipülatörü kullanarak montaj sürecindeki hataları ayıklayabildim, ilave güçlendirme gerektiren alanları belirledim ve rulmanların nasıl kullanılacağını öğrendim.

Şeffaf manipülatörle çok eğlendikten sonra son beyaz versiyonu çizmeye başladım. Yani artık tüm mekaniklerin hataları tamamen ayıklandı, bana uyuyorlar ve bu tasarımda başka hiçbir şeyi değiştirmek istemediğimi söylemeye hazırım:

uArm projesine temelde yeni bir şey getirememek beni üzüyor. Son versiyonu çizmeye başladığımda, 3D modelleri zaten GrabCad'de kullanıma sunmuşlardı. Sonuç olarak pençeyi biraz basitleştirdim, dosyaları uygun formatta hazırladım ve çok basit ve standart bileşenler kullandım.

Manipülatörün özellikleri

uArm'ın ortaya çıkışından önce, bu sınıfın masaüstü manipülatörleri oldukça sıkıcı görünüyordu. Ya hiç elektronikleri yoktu ya da dirençlerle bir tür kontrolleri vardı ya da kendi özel yazılımları vardı. İkincisi, genellikle paralel menteşelerden oluşan bir sisteme sahip değillerdi ve çalışma sırasında tutacağın kendisi konumunu değiştirdi. Manipülatörümün tüm avantajlarını toplarsanız oldukça uzun bir liste elde edersiniz:
  1. Güçlü ve ağır motorların manipülatörün tabanına yerleştirilmesine ve tutucunun tabana paralel veya dik tutulmasına olanak tanıyan bir çubuk sistemi
  2. Pleksiglastan satın alınması veya kesilmesi kolay basit bir bileşen seti
  3. Manipülatörün neredeyse tüm bileşenlerindeki rulmanlar
  4. Montajı kolaydır. Bunun gerçekten zor bir görev olduğu ortaya çıktı. Tabanın montajı sürecini düşünmek özellikle zordu
  5. Kavrama konumu 90 derece değiştirilebilir
  6. Açık kaynak ve belgeler. Her şey erişilebilir formatlarda hazırlanmıştır. 3D modeller, kesim dosyaları, malzeme listesi, elektronik ve yazılım için indirme bağlantıları sağlayacağım
  7. Arduino uyumludur. Arduino'yu eleştiren birçok kişi var ama bunun kitleyi genişletmek için bir fırsat olduğuna inanıyorum. Profesyoneller yazılımlarını kolayca C dilinde yazabilirler - bu, Atmel'in sıradan bir denetleyicisidir!

Mekanik

Montaj için 5 mm kalınlığındaki pleksiglastan parçaları kesmeniz gerekir:

Bütün bu parçaları kesmem için benden yaklaşık 10 dolar ücret aldılar.

Taban büyük bir yatağın üzerine monte edilmiştir:

Montaj süreci açısından temel olarak düşünmek özellikle zordu, ancak uArm'daki mühendislere göz kulak oldum. Külbütörler 6 mm çapında bir pimin üzerine oturur. Dirsek çekişimin U şeklinde bir tutucu üzerinde tutulduğu, uFactory'nin ise L şeklinde bir tutucu üzerinde tutulduğu unutulmamalıdır. Farkın ne olduğunu açıklamak zor ama sanırım daha iyisini yaptım.

Kavrama ayrı olarak monte edilir. Kendi ekseni etrafında dönebilmektedir. Pençenin kendisi doğrudan motor miline oturur:

Makalenin sonunda fotoğraflarda süper ayrıntılı montaj talimatlarına bir bağlantı vereceğim. İhtiyacınız olan her şey elinizin altındaysa, birkaç saat içinde hepsini güvenle bir araya getirebilirsiniz. Ayrıca ücretsiz SketchUp programında 3 boyutlu model hazırladım. İndirebilir, oynayabilir ve neyin ve nasıl birleştirildiğini görebilirsiniz.

Elektronik

El işini yapmak için tek yapmanız gereken beş servoyu Arduino'ya bağlamak ve onlara iyi bir kaynaktan güç sağlamaktır. uArm bir çeşit geri besleme motoru kullanır. Tutucuyu kontrol etmek için üç normal MG995 motor ve iki küçük metal dişli motor kurdum.

Burada anlatımım önceki projelerle yakından iç içe geçmiş durumda. Bir süre önce Arduino programlamayı öğretmeye başladım ve hatta bu amaçlar için kendi Arduino uyumlu kartımı bile hazırladım. Öte yandan bir gün ucuza pano yapma fırsatı buldum (bunun hakkında da yazdım). Sonunda her şey benim kendi Arduino uyumlu kartımı ve manipülatörü kontrol etmek için özel bir kalkan kullanmamla sona erdi.

Bu kalkan aslında çok basittir. Dört değişken direnci, iki butonu, beş servo konnektörü ve bir güç konnektörü vardır. Bu, hata ayıklama açısından çok uygundur. Bir test taslağı yükleyebilir ve kontrol için bazı makrolar veya buna benzer şeyler kaydedebilirsiniz. Yazının sonunda board dosyasını indirmeniz için link de vereceğim fakat metalize delikli imalata uygun olduğundan ev üretimi için pek kullanışlı değildir.

Programlama

En ilginç şey manipülatörü bir bilgisayardan kontrol etmektir. uArm, manipülatörü kontrol etmek için kullanışlı bir uygulamaya ve onunla çalışmak için bir protokole sahiptir. Bilgisayar COM bağlantı noktasına 11 bayt gönderir. Birincisi her zaman 0xFF, ikincisi 0xAA ve geri kalanlardan bazıları servolara yönelik sinyallerdir. Daha sonra bu veriler normalleştirilir ve işlenmek üzere motorlara gönderilir. Servolarım 9-12 numaralı dijital giriş/çıkışlara bağlı, ancak bu kolayca değiştirilebilir.

uArm'ın terminal programı, fareyi kontrol ederken beş parametreyi değiştirmenize olanak sağlar. Fare yüzey boyunca hareket ettikçe manipülatörün XY düzlemindeki konumu değişir. Tekerleğin döndürülmesi yüksekliği değiştirir. LMB/RMB - pençeyi sıkıştırın/sıkıştırmayı açın. RMB + tekerlek - kolu döndürün. Aslında çok uygun. Dilerseniz manipülatör ile aynı protokolü kullanarak haberleşecek herhangi bir terminal yazılımını da yazabilirsiniz.

Burada eskizler vermeyeceğim - bunları makalenin sonunda indirebilirsiniz.

Çalışma videosu

Ve son olarak manipülatörün videosu. Bir farenin, dirençlerin ve önceden kaydedilmiş bir programın nasıl kontrol edileceğini gösterir.

Bağlantılar

Pleksiglas kesim dosyaları, 3 boyutlu modeller, satın alma listesi, pano çizimleri ve yazılımlar çalışmamın sonunda indirilebilir.


Bağlantı:

Manipülatörün parçalarını talimatlara uygun olarak monte ettiyseniz elektronik devrenin montajına başlayabilirsiniz. Manipülatör servolarını Trerma-Power Shield aracılığıyla Arduino UNO'ya bağlamanızı ve servoları Trema potansiyometreleri kullanarak kontrol etmenizi öneririz.

  • İlk Trema potansiyometresinin düğmesinin çevrilmesi tabanı döndürecektir.
  • İkinci Trema potansiyometresinin düğmesinin çevrilmesi sol kolu döndürecektir.
  • Üçüncü Trema potansiyometre düğmesinin çevrilmesi sağ kolu döndürecektir.
  • Dördüncü Trema potansiyometre düğmesinin çevrilmesi tutucuyu hareket ettirecektir.

Program kodu (çizim), servolar için koruma sağlar; bu, dönüş aralığının serbest oyun aralığı (iki açı) ile sınırlı olmasından oluşur. Minimum ve maksimum dönüş açıları, her servo için map() fonksiyonunun son iki argümanı olarak belirtilir. Manipülatör ile çalışmaya başlamadan önce yapılması gereken kalibrasyon işlemi sırasında bu açıların değeri belirlenir.

Program kodu:

Kalibrasyondan önce güç uygularsanız manipülatör uygunsuz şekilde hareket etmeye başlayabilir! Önce tüm kalibrasyon adımlarını tamamlayın.

#katmak // Servo servo1 ile çalışmak için Servo kitaplığını bağlayın; //Temel servo sürücü Servo servo2 ile çalışacak bir servo1 nesnesi tanımlayın; //Sol omuz servosu Servo servo3 ile çalışacak bir servo2 nesnesi tanımlayın; //Sağ kol servo Servo servo4 ile çalışacak bir servo3 nesnesi tanımlayın; //Yakalama servosu ile çalışacak bir servo4 nesnesi bildirin int valR1, valR2, valR3, valR4; // Potansiyometre değerlerini saklamak için değişkenleri tanımlayın // Pinleri atayın: const uint8_t pinR1 = A2; // Kontrol potansiyometresinin çıkış numarasından sabiti belirleyin. temel yapı uint8_t pinR2 = A3; // Kontrol potansiyometresinin çıkış numarasından sabiti belirleyin. sol omuz const uint8_t pinR3 = A4; // Kontrol potansiyometresinin çıkış numarasından sabiti belirleyin. sağ omuz const uint8_t pinR4 = A5; // Kontrol potansiyometresinin çıkış numarasından sabiti belirleyin. yakalama const uint8_t pinS1 = 10; // Sabiti temel servo sürücünün pin numarasıyla tanımlayın const uint8_t pinS2 = 9; // Sol kol servo sürücünün pin numarası ile sabiti tanımlayın const uint8_t pinS3 = 8; // Sağ koldaki servo sürücünün pin numarası ile sabiti tanımlayın const uint8_t pinS4 = 7; // Yakalama servo sürücüsünün pin numarasıyla bir sabit tanımlayın void setup())( // Kurulum fonksiyon kodu bir kez yürütülür: Serial.begin(9600); // Seri port monitör servo1.attach'a veri aktarımını başlatın (pinS1); // Servo1'i servo sürücü 1'in nesne kontrolüne atayın servo2.attach(pinS2); // Servo sürücü 2'nin nesne servo2 kontrolüne atayın servo3.attach(pinS3); // Servo'nun nesne servo3 kontrolüne atayın sürücü 3 servo4.attach(pinS4); // Servo sürücü 4'ün nesne servo4 kontrolüne atayın ) void loop())( // Döngü fonksiyon kodu sürekli olarak yürütülür: valR1=map(analogRead(pinR1), 0, 1024, 10, 170); servo1.write(valR1); // Tabanla döndür Bu satırda belirtilen açılar: 10 ve 170'in değiştirilmesi (kalibre edilmesi) gerekebilir valR2=map(analogRead(pinR2), 0, 1024, 80 , 170); servo2.write(valR2); // Sol omuzu kontrol edin Bu satırda belirtilen açılar: 80 ve 170 değiştirilmesi gerekebilir (kalibre edilir) valR3=map(analogRead(pinR3), 0, 1024, 60, 170);servo3.write(valR3); // Sağ omuzu kontrol edin Bu satırda belirtilen açılar: 60 ve 170'in değiştirilmesi (kalibre edilmesi) gerekebilir valR4=map(analogRead(pinR4), 0, 1024, 40, 70); servo4.write(valR4); // Yakalamayı kontrol edin Bu satırda belirtilen açıların: 40 ve 70 olarak değiştirilmesi (kalibre edilmesi) gerekebilir Serial.println((String) "A1 = "+valR1+",\t A2 = "+valR2+",\t A3 = "+valR3+ ", \t A4 = "+valR4); // Köşeleri monitörde göster)

Kalibrasyon:

Manipülatörle çalışmaya başlamadan önce onu kalibre etmeniz gerekir!

    Kalibrasyon, parçaların hareketlerine müdahale etmemesi için her bir servo için dönüş açısının uç değerlerinin belirtilmesinden oluşur.
  • Trema-Power Shield'dan tüm servoların bağlantısını kesin, taslağı yükleyin ve gücü bağlayın.
  • Seri port monitörünü açın.
  • Monitör her servonun dönüş açısını (derece cinsinden) gösterecektir.
  • İlk servoyu (tabanın dönüşünü kontrol eden) D10 pinine bağlayın.
  • İlk Trema potansiyometresinin (pim A2) düğmesinin çevrilmesi ilk servoyu (pim D10) döndürecek ve monitör bu servonun mevcut açısını değiştirecektir (değer: A1 = ...). İlk servonun uç konumları 10 ila 170 derece aralığında olacaktır (döngü kodunun ilk satırında yazıldığı gibi). Bu aralık, döngü kodunun ilk satırındaki map() fonksiyonuna ait son iki argümanın değerleri yenileriyle değiştirilerek değiştirilebilir. Örneğin, 170'in 180 ile değiştirilmesi, servonun belirli bir yöndeki en uç konumunu artıracaktır. Ve 10'u 20 ile değiştirerek aynı servonun diğer uç konumunu azaltacaksınız.
  • Değerleri değiştirdiyseniz çizimi yeniden yüklemeniz gerekir. Artık servo sizin tarafınızdan belirlenen yeni limitler dahilinde dönecektir.
  • İkinci servoyu (sol kolun dönüşünü kontrol eden) D9 pinine bağlayın.
  • İkinci Trema potansiyometresinin (pim A3) düğmesinin çevrilmesi ikinci servonun (pim D9) dönmesine yol açacaktır ve monitör bu servonun mevcut açısının değerini değiştirecektir (değer: A2 = ...). İkinci servonun uç konumları 80 ila 170 derece aralığında olacaktır (döngü taslağının ikinci satırında yazıldığı gibi). Bu aralık ilk servoyla aynı şekilde değişir.
  • Değerleri değiştirdiyseniz çizimi yeniden yüklemeniz gerekir.
  • Üçüncü servoyu (sağ kolun dönüşünü kontrol eden) D8 pinine bağlayın. ve aynı şekilde kalibre edin.
  • Dördüncü servoyu (tutucuyu kontrol eden) D7 pinine bağlayın. ve aynı şekilde kalibre edin.

Manipülatörün montajından sonra kalibrasyonun bir kez yapılması yeterlidir. Yaptığınız değişiklikler (sınır açıların değerleri) çizim dosyasına kaydedilecektir.

İnsansı robot RKP-RH101-3D'nin avuç içi iç görünümü. İnsansı robotun avuç içi %50 oranında sıkıştırılmıştır. (bkz. Şekil 2).

Bu durumda insansı bir robotun elinin karmaşık hareketleri mümkündür ancak programlama daha karmaşık, ilginç ve heyecan verici hale gelir. Aynı zamanda, insansı bir robotun elinin her bir parmağına, çeşitli süreçleri kontrol eden ek çeşitli sensörler ve sensörler kurmak mümkündür.

Bu, genel anlamda RKP-RH101-3D manipülatörünün tasarımıdır. Ellerini değiştiren çeşitli manipülatörlerle donatılmış belirli bir robotun çözebileceği görevlerin karmaşıklığına gelince, bunlar büyük ölçüde kontrol cihazının karmaşıklığına ve mükemmelliğine bağlıdır.
Üç nesil robottan bahsetmek yaygındır: endüstriyel, uyarlanabilir ve yapay zeka robotları. Ancak ne tür bir robot tasarlanmış olursa olsun, çeşitli görevleri yerine getirecek manipülatör eller olmadan yapamaz. Manipülatör bağlantıları birbirine göre hareket edebilir ve dönme ve öteleme hareketleri gerçekleştirebilir. Bazen, endüstriyel robotlardan bir nesneyi basitçe kapmak yerine, manipülatörün (eli) son halkası bir tür çalışma aracıdır; örneğin bir matkap, bir anahtar, bir boya püskürtücü veya bir kaynak hamlacı. İnsansı robotlar, el şeklindeki manipülatörlerinin parmak uçlarında, örneğin delme, gravür veya çizim için çeşitli ek minyatür cihazlara da sahip olabilir.

RKP-RH101-3D elleriyle servolar üzerindeki insansı savaş robotunun genel görünümü (bkz. Şekil 3).

Paylaşmak