İçindekiler:
- Adım 1: Ne Yapmayı Planladık
- Adım 2: Prototip İçerik Listesi
- 3. Adım: [Prototip] Kollarımızın ve Arabanın İç Kısmının Ağaç İşlenmesi
- Adım 4: [Prototip] Arabamızı Yapmak
- Adım 5: [Prototip] Hepsini Bir Araya Getirmek
- Adım 6: [Prototip] Tamamlandı ve Taşınıyor
- Adım 7: Modelimizi Biten Tasarımımıza Çevirmek
- Adım 8: Kodlama
- Adım 9: Elektrik
- Adım 10: Mekanik
- Adım 11: Yansımalar
Video: [WIP] Myo Kol Bandı Tarafından Kontrol Edilen Bir Drawbot Oluşturma: 11 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:19
Hepinize merhaba!
Birkaç ay önce, onu kontrol etmek için yalnızca bir Myo bandı kullanan açık çerçeveli bir çekme robotu yapma fikrini denemeye karar verdik. Projeye ilk başladığımızda, bunun birkaç farklı aşamaya bölünmesi gerektiğini biliyorduk. İlk ana aşamamız, beraberlik botumuz için açık çerçeveli bir tasarımın etrafını sarmaya çalışmaktı. Bu standart olmayan bir kurulum ve bu tasarımın faydalarının ne olduğunu görmek istedik.
İkincisi, bu prototipi inşa etmenin sadece kendimiz için faydalı olacağını biliyorduk. Tasarımımız ve planımız, son çerçevemizi metale taşımak ve bir arduino kullanarak konumumuzu Myo bandına yerleştirilmiş ivmeölçer ve jiroskoptan almaktı. Bu bilgi daha sonra motorlara gönderilecek ve kullanıcının hareketini kopyalayacaktır. Bunun ikinci aşamamızı üç ana konuya ayıracağını biliyorduk:
- Arduino aracılığıyla Myo'dan motorlara programlama
- verilerimizi harekete dönüştürmek için elektrik tasarımı
- Hareketimizi kolaylaştıracak makul boyutta bir çerçeve oluşturmak için mekanik tasarım
Ekibimizdeki her üye, tasarım sürecimizin benzersiz bir parçası ile kendini en rahat hissetti, bu nedenle çalışmalarımızı her bir kişi arasında bölmeye karar verdik. Ayrıca, daha küresel bir görünüm yerine günlük düşüncemizi takip etmek için tüm tasarım sürecimiz boyunca bir blog tuttuk.
Adım 1: Ne Yapmayı Planladık
Amacımız bu iki ürünü daha önce hiç kullanmadığımız şekilde bir araya getirmekti. Myo kol bandımız ile Evil Mad Scientist'in AxiDraw'ından ilham alan bir tasarımın kendi versiyonumuz arasında canlı bir geçiş yapmak için yola çıktık.
Adım 2: Prototip İçerik Listesi
2 2 x 4 ahşap levhalar 1 Kayış veya zincir ölçüsü >= 65” 4 Ahşap çiviler 3 Kayış veya zincire uyan dişli dişliler 4 3 x 8 vex delikli plakalar 30 ⅜” Kauçuk ara parçalar 8 1” çapında pullar 1 1” çapında ahşap dübel 1' uzunluğunda 8 Vex vida 1”8 ½” Vex vidalar 8 2” Vex vidalar 8 ¼” Lastik ara parçalar 48 Vex somunlar 1 Küçük fermuar
3. Adım: [Prototip] Kollarımızın ve Arabanın İç Kısmının Ağaç İşlenmesi
İki adet 2x4 aldık ve eşit uzunluklarda (33 ¼”) kestik
Bir masa testeresi kullanarak, tahtaların orta kısmında ¼” derinliğinde ve ⅛” genişliğindeki dar kısmı boyunca bir çentik açtık.
Dübeli 4 2” parçaya kesin ve bir matkap presi kullanarak dübelin ortasına yaklaşık ¼” çapında bir delik açın.
Adım 4: [Prototip] Arabamızı Yapmak
İdeal olarak, iki adet 7x7 adet vex delikli çelik kullanırdık, ancak elimizdeki tek şey 2x7 şeritlerdi, bu yüzden onları "X" konfigürasyonunda birbirine cıvataladık.
⅜” lastik ara parçalardan 5 tanesini istifleyin ve vex plakaların köşelerini birbirine sabitleyin
Tahta dübelleri şekil 1'de gösterildiği gibi gevşek bir şekilde sabitleyin, böylece aralarında yaklaşık 2 inç boşluk kalacak şekilde serbestçe dönecekler, bu noktada dişlilerin nereye yerleştirilmesi gerektiğini görmek için resmi kullanın bu noktada pullar kullandık ancak daha sonra küçük plastik vex dişlilerin daha iyi çalıştığını gördük.
½ “vex vidalar, ¼” lastik ara parçalar ve 1” çaplı rondelalar kullanarak rondelaları şekil 1'de gösterildiği gibi yüksek bir konumda sabitleyin (doğru rondelaları bulamadığımız için yeşil plastik dişliler kullandık) rondelaların sağlam olduğundan emin olun. kolayca döndürmek ve tahtanın çentiklerine sığdırmak için.
Adım 5: [Prototip] Hepsini Bir Araya Getirmek
Bir yüzeye bir tahta yerleştirin ve rondelaların arabayı tahtanın üzerinde tutması için arabayı ortasına kaydırın ve tahtanın her iki tarafında serbestçe dönmeleri için dişlileri aşağı indirin. Ortalandığından emin olarak ikinci panonun bir ucuna bir dişli çivi çakın ve ilk panoya dik olarak taşıyıcının üzerine kaydırın.
Şimdi kayış sistemden gösterildiği gibi geçirilmelidir, kayışın dış kısmındaki kavelaların nasıl olduğuna ve şasinin ortasında kayışı hareket halindeyken engelleyebilecek hiçbir şeyin olmadığına dikkat edin.
Şimdi kayışın tahtanın dişli olmayan tarafına bağlanması gerekiyor. Kendimizi sabitlemek için fazladan bir çivi ve fermuar kullandık. Ancak kemer o noktaya sabitlendiği sürece kullanılan yöntemin bir önemi yoktur.
Adım 6: [Prototip] Tamamlandı ve Taşınıyor
Olması gereken bu, kemeri farklı kombinasyonlarda çekin ve koldaki farklı etkilerini görün!
Adım 7: Modelimizi Biten Tasarımımıza Çevirmek
Prototipimizi tamamladığımızda çok mutlu olduk. Montajdan önce hiçbirimiz sistemin nasıl çalıştığından emin değildik. Ancak, parçalarımız bir araya geldiğinde neleri beğendiğimizi ve nihai tasarımı oluştururken nasıl geliştireceğimizi çabucak keşfettik. Çözümlenecek sistemle ilgili başlıca şikayetlerimiz şunlardı:
-
Ölçek
- Prototipimiz devasa ve hantaldı, bu da onu kollarımızın kenarında devrilmeye meyilli hale getirdi.
- Taşıyıcı gereğinden çok daha büyüktü ve çok fazla boş alan vardı
- Kemerimiz (vex tank sırtı) gerekenden çok daha büyüktü, bu da kollar arasında fazla boşluk oluşmasına neden oldu.
-
Sürtünme
- Vex basamaklarımız her noktada ahşap dübel merdanelerin üzerinden kolay geçmedi.
- Ahşap üzerine plastik, çoğu durumda arabayı hareket etmeye isteksiz hale getirdi
-
motorize
Sistemi güçlü hale getirmemiz gerekiyordu
Bunları göz önünde bulundurarak, nihai tasarım için planlarımızı çizdik. Çekme robotunun bir arduino üzerinden Myo ile kontrol edilmesini istedik ve çerçeveyi alüminyum ve daha küçük yapmak istedik.
Bunu yapmak için orijinal prototipimizin bir yüzdesini aldık ve o boyuttan çalışmaya başladık. Korumalı bir yatağın geçmesi için yeterince geniş kanallara sahip olacak şekilde işlenecek sac metal kullanarak, daha yüksek kullanım toleransına sahip hafif ama sağlam bir tasarıma sahip olacağız.
Prototipimiz ayrıca sadece birkaç dakika içinde motor dönüşünün çeki robotumuzun başını nasıl etkilediğini belirlememize izin verdi. Bu, kontrol tasarımımızın beklediğimizden daha basit olacağını anlamamıza yol açtı. Daha yakından inceledikten sonra, motorun hareketinin ilave olduğunu anladık! Bu, her motorun hareketimiz üzerinde bağımsız bir istenen etkiye sahip olduğu, ancak onları bir araya getirdiğimizde iptal etmeye başladıkları anlamına gelir.
Örneğin, bir koordinat düzlemi gibi düşünülürse, negatif x ucundaki motor, çekmecemizi her zaman ikinci ve dördüncü çeyreğe çekme eğiliminde olacaktır. Tersine, pozitif x uç üzerinde duran motor, çekmeceyi her zaman birinci ve üçüncü çeyreğe yönlendirecektir. Motorlarımızın hareketini birleştirirsek, bu çatışmayı yönlendirme kısımlarını iptal edecek ve uyumlu kısımları çoğaltacaktır.
Adım 8: Kodlama
Birkaç yıl önce C'de oldukça yoğun bir şekilde çalışırken, lua veya C++ ile hiçbir deneyimim yoktu ve bu, belgelere bakmak için kayda değer miktarda zaman harcamam gerektiği anlamına geliyordu. Yapmaya çalışacağım genel görevin, kullanıcının konumunu zaman aralıklarında almak ve ardından motorlara aktarmak olduğunu biliyordum. İhtiyacım olan kısımları daha iyi sindirmek için görevi kendim için bölmeye karar verdim.
1. Myo'dan Veri Alın (lua)
Myo'dan bilgi toplamanın bir yolunu bulmam gerektiğini biliyordum. Bu, yaklaşmak istediğim zorluğun ilk kısmıydı. Bunu yapmak için, çizime başlamadan önce kullanıcının tuval boyutunu kalibre etmesini istedim. Bu, çalışmak için bir sınıra sahip olmamı sağlar. Daha sonra, veri noktalarımın geçmesi için maksimum tuvalin bir yüzdesini alarak programı farklı kullanıcılar arasında normalleştirebilirim. Her yarım saniyede bir getOrientation kontrolü yapacak komut dosyasına sahip bir olaya sahip olmaya karar verdim, çünkü bu, kontrollerin asla tahmin etmeniz gereken vahşi bir sıçrama yapmamasını sağlar (örneğin, kullanıcı çılgınca geriye doğru sallanıyorsa ve ileri).
Bu, çarptığım ilk barikatı oluşturdu. Çok büyük bir lua sınırlaması keşfettim ve senaryoya devam etmeden önce beklememe izin vermiyordu. Bu eylemi gerçekleştirmenin tek yolu, CPU'yu duraklatmak (bu, onu küresel olarak duraklatacak, hatta sistem saatini tutacak) veya işletim sistemine özel komutları kullanmaktı. Örnek kodumda, yaptığım orijinal işletim sistemi kontrolünde bıraktım (yorum yaptım). Bu, lua'nın belgelerinde büyük miktarda araştırma yaptıktan sonraydı ve sistem yolu biçimlendirmesini kontrol ederek yapıldı. Bu, daha önce yayınlanmış projelerin belgelerine bakmam gerektiğine karar verdiğim zamandı. Ne kadar zaman kaybettiğimi hemen anladım ve hemen platform değişkenine yönlendirildim. Bununla birlikte, önceki çözümümü bir araya getirmem için harcadığım günlerin aksine, işletim sistemine özel bekleme komutlarını neredeyse anında uygulayabildim.
Elektrik yönü üzerinde çalışma bu tasarım zamanlarında başladı ve ben kodun bu yönü üzerinde çalışmayı askıya aldım. Amaç, motorlarımızın arduino ile nasıl arayüz oluşturduğunu öğrenmek.
2. Arduino Çevresinde Çalışmak (C++)
Breadboard'umuzla çalışmak giderek daha karmaşık hale geldikçe, arduino'nun çoklu iş parçacığını kullanamadığını öğrendim. Bu, orijinal kod tasarımımda büyük bir anahtardı ve denetleyicimizle sunulan sınırlamalar hakkında daha fazla okuduktan sonra, arduino'nun ikisi arasında nasıl geçiş yapacağını programlamam gerektiğini öğrendim. Son teslim tarihimiz yaklaştıkça çabalarımın odak noktası bu oldu. Orijinal komut dosyamın büyük bölümlerini, motor denetleyicisinin dosyayı okumasıyla eşzamanlı olarak bir dosyaya veri yazmak üzere tasarlandıkları için ıskartaya çıkarmak zorunda kaldım. Bu, kullanıcı çekmecemizin önünde olsa bile projeyi mahvetmeyeceğinden emin olmak için bir kuyruğa alma işlevine izin vermek içindi.
Daha önce olduğu gibi uygulanmadıysa, kuyruğa alma işlevinin kaydedilmesi gerektiğine karar verdim. Bunu yapmak için bir dizi vektörü oluşturdum. Bu, sadece önceki tasarımımın ruhunu nispeten sağlam tutmama izin vermekle kalmadı, aynı zamanda okuma veya yazma için dosyadaki yerimi takip etmem gerekmediği anlamına da geliyordu. Bunun yerine, şimdi tek yapmam gereken, kullanıcı hareket ediyorsa vektörüme yeni bir değer eklemekti (ön test, son kaydedilen konumdan hem x hem de y'deki tuval boyutu farkının %1'inden azdı, veri kaydı yapılmadı). Daha sonra vektörümdeki en eski değeri alabilir ve bir çırpıda motor kontrolüne gönderebilir, dosyamıza yazabilir ve ardından vektörümden çıkarabilirim. Bu, sürekli bir IO akışının çalışmasıyla ilgili endişelerimin çoğunu temizledi.
Adım 9: Elektrik
Geçmişte bir elektronik dersi almış ve arduinolarla adil bir miktar çalışmış olsam da. Arduino'nun bir dış kaynaktan (myo) bilgi almasını sağlamak için asla derine dalmadım, yalnızca arduino aracılığıyla bilgi çıktısı alma deneyimim var. Ancak, çekme robotumuzdaki motorları kablolamaya ve myo koduyla çalışabilmeleri için kod üzerinde çalışmaya başladım.
Kullandığım malzemeler:
2 x Step motorlar
1 x Ekmek Tahtası
1 x Arduino (Uno)
2 x Sürücü IC L293DE
40 x Atlama teli
2 x Hayranlar
1. Step Motorları ve Fanı Breadboard'a Bağlama
Devre şemasını takip ederek, breadboard üzerindeki sürücüye bir adet step motor bağlayabiliriz. Ardından, aynı şemayı takip ederek ikinci sürücü ve motora uygulayın, ancak atlama kablolarının arduinodaki farklı bir pin setine takılması gerekecektir (birinci motor diğer 4'ünün alanını kapladığı için).
Uyarı/İpucu:
Sürücüler çok küçük ve pimler birbirine çok yakın. Kabloların karışmaması için iki sürücü arasında boşluk bırakmak akıllıca olacaktır.
Sonraki, fanları kablolamak. Bu oldukça basit, sahip olduğum fanlar, pozitif ve zemine sahip temel bilgisayar işlemci fanlarıydı. Bu ikisini devre tahtasındaki ilgili +/- pinlerine takın ve her birini her bir sürücüye doğru eğin. (Adım motorların uzun bir süre boyunca bilgi ve komut patlamaları aldığından, sürücülerin aşırı ısınmaya ve kokuya eğilimli olduğunu gördük. Soğutmak için bir fan eklemek bu sorunu çözdü).
2. Arduino Kodu
Bu kolay kısım!
Arduino IDE'yi açın, “Dosya” sekmesine gidin, ardından daha da aşağıya inecek ve size bir “adım” sekmesi gösterecek olan “örnek” sekmesine bırakın Ardından “Stepper_OneStepAtATime” ı açmak istiyorsunuz.
Bu, arduino/motor kablolarına neredeyse tak ve çalıştır olan bir örnek kodu önceden yükleyecektir. Aşağıda göstereceğim iki motoru çalıştıracağımız için küçük ayarlamalar yapmamız gerekecek. Arduino IDE varsayılan olarak 8-11 pinlerine ayarlandığından, hangi pinleri kullanmaya karar verdiğinize bağlı olarak küçük ayarlamalar yapmanız gerekebilir.
İki motoru “senkron” olarak hareket ettirmek için kullandığım kod aşağıdadır:
//#Dahil etmek
const int stepPerRevolution = 200;
Stepper myStepper1(stepsPerRevolution, 9, 10, 11, 12);
Stepper myStepper2(stepsPerRevolution, 4, 5, 6, 7);
int stepCount = 0;
void setup() { // seri bağlantı noktasını başlat: Serial.begin(9600); }
boşluk döngüsü () {
myStepper1.step(1);
Serial.print("adımlar:");
Serial.println(stepCount);
stepCount++;
gecikme(0.5);
myStepper2.step(1); gecikme(0.5); }
3. Olası Sorunlar
Bu işlem sırasında karşılaştığım sorunlar doğru kod örneğini kullanmamak, hatalı bir atlama kablosu kullanmak, yanlış sürücü IC'sini kullanmaktı.
Kullanmakta olduğunuz sürücünüzün bir motoru kontrol edebildiğinden emin olun
Seri numarasını kontrol edin ve özelliklerini kontrol edin
Motorlarımın garip bir şekilde dönmesine neden olan ölü bir atlama teli sorunuyla karşılaştım
Her kabloyu kontrol etmek için bir multimetre kullanmak zorunda kaldım
Ve her zaman kodunuzu “;” sonunu kaçırmak gibi küçük hatalar için iki kez kontrol edin. emretmek
Adım 10: Mekanik
1. Malzeme
Kolların tam üretim modeli için güçlü ancak hafif malzemeden yapılması önerilir, alüminyumun mükemmel bir uyum olduğunu hissettik.
9.125" x 17.5" boyutunda kesilmiş 032 gauge alüminyum levhalar kullandık ve önceki adımda gösterilen çizimdeki deseni izledik.
2. Üretim
Kenar kenarını (mavi makine) kullanarak, parça kırılıp katlandığında iki kenar birbirine kenetlenerek tek bir tam parça oluşturacak şekilde zıt yönlere bakan kenarlar ekledik.
Büyük virajlar için yüksek hassasiyeti nedeniyle tenisçi kullandık.
Şimdi daha küçük virajlar için, daha küçük ayaklı bir makine kullanmak isteyeceksiniz, işte burada roto-kalıp gibi bir makine devreye giriyor. Daha küçük ayağı nedeniyle, ne yazık ki daha küçük kırılmaların yapılmasına izin veriyor., elimizdeki roto-kalıp hala rayımız için çok büyüktü ve deforme oldu.
**Alternatif olarak, uygun ekipmana veya araçlara erişiminiz yoksa, bir ikame yapılabilir.**
Bizim durumumuzda, alüminyum güneş paneli raylarından kollarımızı bir plazma kesici kullanarak kestik ve uçlarını pürüzsüz hale getirdikten sonra çift taraflı bir ray sistemi yapmak için arka arkaya cıvataladık. İdeal olarak, rayları birbirine kaynaklamak isterdik, ancak bir kaynak istasyonuna erişimimiz olmadan bunun yerine rayları birbirine kenetledik ve delinerek birbirine cıvataladık. Ancak bu yol izlenirse, parçanın mümkün olduğunca az esnemesini sağlamak için bir kontra somun ve rondela kullanmaya özellikle dikkat edilmelidir.
3. Kemer
Kayışlar için kurtarabildiğimiz bazı eski 3D yazıcı kayışlarını kullandık.
Kayışlar başlangıçta yeterince uzun değildi, bu yüzden bir miktar ısıyla daralan makaron kullanarak, yeterince uzun olacak bir tane yapmak için iki parçayı birleştirdik.
Yeşil dişliler ve ahşap dübeller, kayışın yerinden kaymasını önlemek için kullanılan ekstra geniş pullara sahip disk yatakları ile değiştirildi.
4. Taşıma
Ve son olarak, taşıyıcı, ilgili vidaların ve rondelaların gitmesi gereken yerlerde matkapla preslenmiş deliklerle birlikte, 5" x 5" boyutunda 032 alüminyum levhadan yapılmıştır. Mesafe, rayınızın ne kadar geniş olduğuna ve yıkayıcılarınızda ne kadar boşluk olduğuna bağlı olarak değişecektir.
Adım 11: Yansımalar
Ne yazık ki, projemizin her tarafı zamanın büyük barikatıyla karşılaştı ve tasarımımızı hedeflenen tarihe kadar tamamlayamadık. Ekibimizin her bir üyesi, tasarımımızın diğer tüm yönlerinde en azından bir dereceye kadar işbirliği yaptı ve bu da bazı öğrenme eğrisi zaman havuzlarına yol açtı. Bu, mümkün olduğu kadar az dış kaynağa sahip bir ürün tasarlama isteğiyle birleştiğinde (hepimiz kendi parçalarımızı sıfırdan oluşturmak istedik), büyük miktarda yeniden icat edilen tekerleklere yol açtı.
Projede çalışan herkes projenin diğer yönleri hakkında daha fazla şey öğrendi. Yazılımın belirli bir eylemi gerçekleştirmesini sağlamak başka, yazılımın donanımla birlikte çalışmasını sağlamak başka bir şeydir. Bu projenin kodlama yönü üzerinde çalışan herkesin proje kodlayıcımız kadar aşina olmasının önemli olduğunu söyleyebilirim.
Genel olarak, tam olarak istediğimizi elde edemedik. Ancak doğru yolda olduğumuzu hissediyorum ve hepimiz gelecekteki projelere uygulayabileceğimiz yeni kavramlar keşfettik ve öğrendik.
Önerilen:
Süper Stok (Barkod Okuyucu Tarafından Kontrol Edilen Stok): 5 Adım
Superstock (Barkod Tarayıcı Tarafından Kontrol Edilen Stok): Bu kılavuzda Howest'te 1MCT için okul projem Superstock'un nasıl oluşturulacağını anlatacağım. Konsept, stokta bulunanların sayısını tutmak için bir web sitesi aracılığıyla erişebileceğiniz kullanıcı dostu bir veritabanı yapmaktır (benim durumumda benim için kıyafet
Kendin yap - Arduino Tarafından Kontrol Edilen RGB LED Gölgeler: 5 Adım (Resimli)
Kendin yap | Arduino Tarafından Kontrol Edilen RGB LED Gölgeler: Bugün size kendi RGB LED Gözlüklerinizi nasıl çok kolay ve ucuza yapabileceğinizi öğreteceğim. bu proje. Onlar bir PCB üreticisidir,
Uygulama Tarafından Kontrol Edilen NodeMCU ile Akıllı Pot Nasıl Yapılır: 8 Adım
NodeMCU Uygulama Tarafından Kontrol Edilen Akıllı Pot Nasıl Yapılır: Bu kılavuzda, bir ESP32 tarafından kontrol edilen bir Akıllı Pot ve akıllı telefon (iOS ve Android) için bir Uygulama oluşturacağız. Bağlantı ve Blynk Kitaplığı için NodeMCU (ESP32) kullanacağız. bulut IoT ve akıllı telefondaki Uygulama için.Son olarak biz
Arduino ve PC Tarafından Kontrol Edilen Robotik Kol: 10 Adım
Arduino ve PC Tarafından Kontrol Edilen Robotik Kol: Robotik kollar endüstride yaygın olarak kullanılmaktadır. İster montaj işlemleri için, ister kaynak için, hatta biri ISS'ye (Uluslararası Uzay İstasyonu) yerleştirmek için kullanılıyor olsun, insanlara işlerinde yardımcı oluyorlar veya tamamen insanın yerini alıyorlar. Yaptığım kol daha küçük
Arduino Tarafından Kontrol Edilen 4 DOF Mekanik Kol Robotu: 6 Adım
Arduino Tarafından Kontrol Edilen 4 DOF Mekanik Kol Robotu: Geçenlerde bu seti aliexpress'ten aldım ama bu modele uygun bir talimat bulamadım. Böylece, neredeyse iki kez inşa etmek ve doğru servo montaj açılarını bulmak için birçok deney yapmakla sonuçlanır. Makul bir belgeleme o