İçindekiler:

Arduino ve PC Tarafından Kontrol Edilen Robotik Kol: 10 Adım
Arduino ve PC Tarafından Kontrol Edilen Robotik Kol: 10 Adım

Video: Arduino ve PC Tarafından Kontrol Edilen Robotik Kol: 10 Adım

Video: Arduino ve PC Tarafından Kontrol Edilen Robotik Kol: 10 Adım
Video: EEZYbotARM Robot Kol Projesi ve Arduino ile Hafızalı Hareket Kontrolü 2024, Temmuz
Anonim
Image
Image
Projenin Arkasındaki Teori
Projenin Arkasındaki Teori

Robotik kollar endüstride yaygın olarak kullanılmaktadır. İster montaj işlemleri için olsun, kaynak veya hatta bir tanesi ISS'ye (Uluslararası Uzay İstasyonu) yanaşmak için kullanılır, insanlara işlerinde yardımcı olurlar veya tamamen insanın yerini alırlar. Yaptığım kol, hareketli nesneler için kullanılması gereken robotik kolun daha küçük bir temsilidir. Servoları kontrol etmek için zaten yerleşik bir kütüphaneye sahip olan arduino pro mini tarafından kontrol edilir. Servolar, programlaması zor olmayan PWM (Pulse Width Modulation) ile kontrol edilir, ancak bu kütüphane bunu kolaylaştırır. Kullanıcı, servo motorları kontrol etmek için 4 kaydırıcı kullanan PC'deki programdan veya voltaj bölücü olarak işlev görecek şekilde tasarlanmış potansiyometreler ile bu servoları kontrol edebilir.

Bu proje için özel PCB'mi tasarlamam ve yapmam, 3D kol modelleri oluşturmam ve hepsini kontrol eden kod yazmam gerekiyordu. Bunun üzerine python'da, arduino'ya sinyaller gönderen, bu sinyali çözmeyi ve servoları o kullanıcının ayarladığı konuma taşımayı başaran ek bir program kodladım.

Adım 1: Projenin Arkasındaki Teori

Projenin Arkasındaki Teori
Projenin Arkasındaki Teori

Arduino, çalışmak için ücretsiz kütüphane sunması açısından harika. Bu proje için servoları kontrol etmeyi çok daha kolay hale getiren Servo.h kütüphanesini kullandım.

Servo motor, PWM -Pulse Width Modulation- ile kontrol edilir, yani servoyu kontrol etmek için kısa voltaj darbeleri yapmanız gerekir. Servo bu sinyalin uzunluğunu çözebilir ve verilen konuma dönebilir. Ve burası daha önce bahsettiğim kütüphaneyi kullandığım yer. Sinyalin uzunluğunu kendim hesaplamak zorunda kalmadım ama sadece derece cinsinden parametre ilettiğim kütüphanenin fonksiyonlarını kullandım ve sinyal veriyor.

Servoları kontrol etmek için voltaj bölücü görevi gören potansiyometreler kullandım. Arduino kartlarında proje için kullandığım birkaç analog/dijital dönüştürücü var. Temel olarak arduino, potansiyometre üzerinde orta pindeki voltajı izliyor ve bir tarafa dönüyorsa voltaj 0 Volt (değer = 0) ve diğer tarafta 5 Volt (değer = 1023). Bu değer daha sonra 0 - 1023 aralığından 0 - 180'e ölçeklendirilir ve daha sonra daha önce bahsedilen fonksiyona geçirilir.

Bir diğer konu ise kısaca değineceğim arduino ile seri iletişim. Temel olarak PC'de yazılan program, kullanıcı tarafından seçilen değeri gönderir, arduino bunu çözebilir ve servoyu verilen pozisyona hareket ettirebilir.

Adım 2: PCB Tasarlama

PCB tasarlama
PCB tasarlama
PCB tasarlama
PCB tasarlama
PCB tasarlama
PCB tasarlama

2 adet PCB tasarladım - biri ana kontrol için, burada arduino ve servolar için pinler, ikincisi ise potansiyometreler. 2 adet PCB kullanmamın sebebi robotik kolu güvenli bir mesafeden kontrol etmek istememdir. Her iki devre de belirli uzunlukta bir kablo ile bağlanır - benim durumumda 80 cm.

Güç kaynağı için harici adaptörü seçtim çünkü kullandığım servolar arduino'nun sağlayabileceğinden çok daha fazla güç tüketiyor. Gördüğünüz gibi henüz bahsetmediğim bazı kapasitörler var. Filtrasyon için kullanılan kapasitörlerdir. Bildiğiniz gibi servo motor kısa darbelerle kontrol edilir. Bu darbeler, besleme voltajı düşüşlerini ve daha önce 0-5 volt aralığında olan potansiyometrelerin artık daha küçük aralığa sahip olmasını sağlayabilir. Yani orta pin üzerindeki voltaj değişir ve arduino bu değeri alır ve servo motorun bulunduğu konumu değiştirir. Bu sonsuza kadar devam edebilir ve beslemeye paralel bazı kapasitörler tarafından giderilebilecek istenmeyen salınımlara neden olur.

Adım 3: PCB Yapımı

PCB yapmak
PCB yapmak
PCB yapmak
PCB yapmak
PCB yapmak
PCB yapmak

PCB yapmak için bunu okumanızı öneririm.

Demir on Parlak kağıt yöntemini kullandım ve harika sonuç verdi.

Sonra PCB'deki parçaları lehimledim. İleride ihtiyaç duyarsam diye arduino soketi kullandığımı görebilirsiniz.

Adım 4: Kolun Tasarlanması

Kol Tasarlamak
Kol Tasarlamak
Kol Tasarlamak
Kol Tasarlamak
Kol Tasarlamak
Kol Tasarlamak

Bu projeyi yapmanın en zor kısmı bu değildi.

Tüm kurulum, 4'ü hareketli olmayan parçalar - potansiyometreler için kutu ve arduino'nun bulunduğu taban - ve diğer dördü kolun kendisi olmak üzere 8 parçadan yapılmıştır. Tasarımın oldukça sezgisel ve bir şekilde basit olması dışında fazla ayrıntıya girmeyeceğim. Parça listesine ekleyeceğim özel PCB ve servolarıma uyacak şekilde tasarlanmıştır.

Adım 5: Parçaları Yazdırma

Parçaları Yazdırma
Parçaları Yazdırma
Parçaları Yazdırma
Parçaları Yazdırma
Parçaları Yazdırma
Parçaları Yazdırma

Parçalar Prusa yazıcıda basıldı. Bazı yüzlerin biraz taşlanması ve çukurların delinmesi gerekiyordu. Ayrıca destek direklerinin de çıkarılması gerekiyordu.

Adım 6: Hepsini Bir Araya Getirmek

Hepsini bir araya koy
Hepsini bir araya koy
Hepsini bir araya koy
Hepsini bir araya koy
Hepsini bir araya koy
Hepsini bir araya koy
Hepsini bir araya koy
Hepsini bir araya koy

Bu adımda başlığın dediği gibi hepsini bir araya getirdim.

İlk önce potansiyometre üzerindeki telleri ve ardından PCB üzerindeki telleri lehimledim. Potansiyometreler deliklere güzel bir şekilde uyuyor ve PCB'yi kutunun altına basılmış sütunlara sıcak yapıştırdım. Tahtaya ve kutuya delikler açabilirsiniz ama yapıştırmanın fazlasıyla yeterli olduğunu öğrendim. Daha sonra kutunun her iki parçasını da kapatarak tasarladığım deliklere 4 adet vida ile sabitledim.

Bir sonraki adım olarak, her iki kartı birbirine bağlamak için düz şerit kablo yaptım.

Ana kutuda kabloları VCC konnektör pininden switch'e ve ardından Vcc kartına ve kartın GND'sinden konnektörün GND'sine lehimledim. Sonra konektörü yerine sıcak yapıştırdım ve sütunlara tahta geçirdim. Konektör, deliğe tam oturur, böylece sıcak tutkal gerekmez.

Ardından vidaları kullanarak alttaki servoyu kutunun altına tutturdum.

Daha sonra kutunun üst kısmını alt kısma yerleştirdim ve potansiyometre kutusunda olduğu gibi 4 adet vida ile sabitledim.

Sonraki kısım biraz zor oldu ama kolun geri kalanını çeşitli somun ve pedlerle birleştirmeyi başardım ve beklediğim kadar sıkı değildi çünkü parçalar arasında bazı toleranslar tasarladım, bu yüzden onlarla çalışmak daha kolay.

Ve son adım olarak kutuların altına biraz bant koydum çünkü aksi halde kayarlardı.

Adım 7: Arduino'yu Programlama

Arduino'yu Programlama
Arduino'yu Programlama
Arduino'yu Programlama
Arduino'yu Programlama
Arduino'yu Programlama
Arduino'yu Programlama

Programın teoride projenin arkasında nasıl çalıştığından zaten bahsetmiştim, ama onu daha da parçalayacağım.

Bu yüzden başlangıçta bazı değişkenleri tanımlamamız gerekiyor. Çoğunlukla 4 kez kopyalanıyor çünkü 4 servomuz var ve bence programı biraz daha kısaltmak için daha karmaşık mantık yapmak gereksiz.

Ardından, servo pinlerinin tanımlandığı boşluk kurulumu var.

Sonra void döngüsü var - programın sonsuz döngüye giren kısmı. Bu parçada program potansiyometreden aldığı değeri ölçekler ve çıkışa koyar. Ancak potansiyometreden gelen değerin biraz sıçraması gibi bir sorun var, bu yüzden son 5 değerin ortalamasını yapan ve ardından çıktıyı veren filtre eklemem gerekiyordu. Bu istenmeyen yalpalamayı önler.

Programın son kısmı seri porttan veri okur ve gönderilen veriye göre ne yapılacağına karar verir.

Kodu tam olarak anlamak için resmi arduino web sitelerini ziyaret etmenizi öneririm.

Adım 8: Python'da Programlama

Python'da Programlama
Python'da Programlama
Python'da Programlama
Python'da Programlama
Python'da Programlama
Python'da Programlama

Bu projenin bu kısmı gerekli değil ama bence sadece bu projeye daha fazla değer veriyor.

Python, kullanımı ücretsiz tonlarca kitaplık sunuyor ama bu projede sadece tkinter ve serial kullanıyorum. Tkinter, GUI (Grafik Kullanıcı Arayüzü) için kullanılır ve seri, adından da anlaşılacağı gibi seri iletişim için kullanılır.

Bu kod, minimum 0 ve maksimum 180 değerinde 4 kaydırıcılı GUI oluşturur. Derece cinsinden olduğu ve her kaydırıcının bir servoyu kontrol etmek için programlandığı size bir ipucu olabilir. Bu program oldukça basittir - değeri alır ve arduino'ya gönderir. Ama gönderme şekli ilginç. İlk servonun değerini 123 dereceye değiştirmeyi seçerseniz arduino değeri 1123'e gönderir. Gönderilen her sayının ilk sayısı hangi servonun kontrol edilmek üzere olduğunu söyler. Arduino, bunu çözebilen ve doğru servoyu hareket ettirebilen bir koda sahiptir.

9. Adım: Parça Listesi

Parça Listesi
Parça Listesi
  • Arduino Pro Mini 1 adet
  • Servo FS5106B 1 adet
  • Servo Futaba S3003 2 adet
  • Pin başlığı 2x5 1 adet
  • Pin başlığı 1x3 6 adet
  • Kapasitör 220uF 3 adet
  • Mikro Servo FS90 1 adet
  • Konnektör AWP-10 2 adet
  • Konektör FC681492 1 adet
  • Anahtar P-B100G1 1 adet
  • Soket 2x14 1 adet
  • TTL-232R-5v - dönüştürücü 1 adet
  • Potansiyometre B200K 4 adet
  • ve daha birçok vida, ped ve somun

Adım 10: Son Düşünceler

Bunu okuduğunuz için teşekkür ederim ve umarım en azından sizi motive etmişimdir. Bu, internetten bir şeyler kopyalamadan ve ilk talimatlar gönderisinden tamamen kendi başıma yaptığım ilk büyük projem. Kolun yükseltilebileceğini biliyorum ama şimdilik memnunum. Tüm parçalar ve kaynak kodları ücretsizdir, dilediğiniz gibi kullanabilir ve değiştirebilirsiniz. Herhangi bir sorunuz varsa, yorum bölümünde onlara sormaktan çekinmeyin. Videolara da bakabilirsin, çok kaliteli değiller ama projenin işlevselliğini gösteriyorlar.

Önerilen: