İçindekiler:
- Adım 1: Nasıl Çalışır?
- Adım 2: Malzeme Listesi (BOM)
- Adım 3: Mekanik Tasarım
- Adım 4: Elektronik (Bileşen Seçenekleri)
- Adım 5: Elektronik (Bağlantılar)
- Adım 6: Programlama
- 7. Adım: Olası İyileştirmeler
- Adım 8: Sınırlayıcı Faktörler
- 9. Adım: Krediler
Video: Sıralayıcı Kutusu - Çöpünüzü Algılayın ve Sıralayın: 9 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:19
Hiç geri dönüşüm yapmayan veya bunu kötü bir şekilde yapan birini gördünüz mü?
Hiç sizin için geri dönüşüm yapacak bir makine istediniz mi?
Projemizi okumaya devam edin, pişman olmayacaksınız!
Sorter bin, dünyada geri dönüşüme yardımcı olma konusunda net bir motivasyona sahip bir projedir. İyi bilindiği gibi, geri dönüşüm eksikliği, diğerlerinin yanı sıra hammaddelerin yok olması ve deniz kirliliği gibi gezegenimizde ciddi sorunlara neden oluyor.
Bu nedenle, ekibimiz küçük ölçekli bir proje geliştirmeye karar verdi: malzemenin metal veya metal olmayan olmasına bağlı olarak çöpleri farklı alıcılara ayırabilen bir ayırma kutusu. Gelecekteki versiyonlarda, bu tasnif kutusu büyük bir ölçekte tahmin edilebilir ve çöpün tüm farklı malzeme türlerine (ahşap, plastik, metal, organik…) bölünmesine izin verebilir.
Ana amaç metal veya metal olmayanı ayırt etmek olduğundan, ayırma kutusu endüktif sensörlerle donatılacak, ayrıca kutuda bir şey olup olmadığını algılamak için ultrasonik sensörlerle de donatılacak. Ayrıca, çöpü iki kutuya taşımak için çöp kutusunun doğrusal bir harekete ihtiyacı olacaktır, bu nedenle bir step motor seçilmiştir.
Sonraki bölümlerde bu proje adım adım anlatılacaktır.
Adım 1: Nasıl Çalışır?
Ayıklayıcı çöp kutusu, işi kullanıcı için nispeten kolay hale getirmek için tasarlanmıştır: çöp, üst plakaya yerleştirilen delikten sokulmalı, sarı düğmeye basılmalı ve süreç, çöpün tek bir kutuda bitmesiyle başlamaktadır. alıcılardan. Ama şimdi soru şu… bu süreç dahili olarak nasıl çalışıyor?
İşlem başladıktan sonra yeşil LED yanıyor. Daha sonra bir destek vasıtasıyla üst plakaya takılan ultrasonik sensörler, kutunun içinde bir nesne olup olmadığını belirlemek için çalışmalarına başlar.
Kutunun içinde herhangi bir nesne yoksa kırmızı LED yanar ve yeşil olan söner. Aksine bir cisim varsa cismin metal mi yoksa metal dışı mı olduğunu algılamak için endüktif sensörler devreye girecektir. Malzeme cinsi belirlendikten sonra, kırmızı ve sarı LED'ler yanacak ve kutu, step motor tarafından tahrik edilen malzeme tipine göre bir yöne veya zıt yöne doğru hareket edecektir.
Kutu vuruşun sonuna geldiğinde ve nesne doğru alıcıya düştüğünde kutu ilk konumuna geri döner. Son olarak, kutu başlangıç konumundayken sarı LED sönecektir. Sıralayıcı aynı prosedürle yeniden başlamaya hazır olacaktır. Son paragraflarda açıklanan bu işlem, Adım 6:Programlama'da ekli iş akışı şemasının resminde de gösterilmektedir.
Adım 2: Malzeme Listesi (BOM)
Mekanik parçalar:
-
Alt yapı için satın alınan parçalar
- Metalik yapı [Link]
- Gri kutu [Bağlantı]
-
3 boyutlu yazıcı
Tüm basılı parçalar için PLA (ABS gibi diğer malzemeler de kullanılabilir)
-
Lazer kesme makinesi
- MDF 3mm
- pleksiglas 4mm
- Lineer Rulman Seti [Link]
- Lineer Rulman [Link]
- Şaft [Bağlantı]
- Mil tutucu (x2) [Bağlantı]
Elektronik parçalar:
-
Motor
Lineer Step Motor Nema 17 [Link]
-
pil
12 v Pil [Bağlantı]
-
Sensörler
- 2 Ultrasonik sensör HC-SR04 [Link]
- 2 Endüktif sensör LJ30A3-15 [Link]
-
mikrodenetleyici
1 arduino UNO kartı
-
Ek bileşenler
- DRV8825 Sürücü
- 3 LED: kırmızı, yeşil ve turuncu
- 1 düğme
- Bazı atlama telleri, teller ve lehim plakaları
- ekmek tahtası
- USB kablosu (Arduino-PC bağlantısı)
- Kapasitör: 100uF
Adım 3: Mekanik Tasarım
Önceki resimlerde montajın tüm parçaları gösterilmiştir.
Mekanik tasarım için CAD programı olarak SolidWorks kullanılmıştır. Montajın farklı parçaları, üretilecekleri imalat yöntemi dikkate alınarak tasarlanmıştır.
Lazer kesim parçalar:
-
MDF 3mm
- sütunlar
- Üst plaka
- Ultrasonik sensör desteği
- Endüktif sensörler desteği
- çöp kutusu
- Pil desteği
- Breadboard ve Arduino desteği
-
pleksiglas 4mm
Platformu
3D baskılı parçalar:
- Sütunların tabanı
- Step motordan lineer hareket iletim elemanı
- Step motor ve yatak destekleri
- Çöp kutusu için duvar sabitleme parçaları
Bu parçaların her birinin üretimi için. STEP dosyaları, bu amaçla kullanılacak makineye bağlı olarak doğru formatta içe aktarılmalıdır. Bu durumda lazer kesim makinesi için.dxf dosyaları ve 3D yazıcı (Ultimaker 2) için.gcode dosyaları kullanılmıştır.
Bu projenin mekanik montajı bu bölümde ekli. STEP dosyasında bulunabilir.
Adım 4: Elektronik (Bileşen Seçenekleri)
Bu bölümde kullanılan elektronik bileşenlerin kısa bir açıklaması ve bileşen seçimlerinin açıklaması yapılacaktır.
Arduino UNO kartı (mikrodenetleyici olarak):
Açık kaynaklı donanım ve yazılım. Ucuz, kolay erişilebilir, kodlanması kolay. Bu pano, kullandığımız tüm bileşenlerle uyumludur ve sorunları öğrenmek ve çözmek için çok yararlı birçok öğreticiyi ve forumu kolayca bulabilirsiniz.
Motor (Lineer Step Motor Nema 17):
Bir tam dönüşü belirli sayıda adıma bölen bir tür step motordur. Sonuç olarak, belirli sayıda adım verilerek kontrol edilir. Sağlam ve hassastır ve gerçek konumunu kontrol etmek için herhangi bir sensöre ihtiyaç duymaz. Motorun görevi, atılan cismi içeren kutunun hareketini kontrol etmek ve sağdaki çöp kutusuna bırakmaktır.
Modeli seçmek için, bir güvenlik faktörü ekleyerek gereken maksimum torkun bazı hesaplamalarını yaptınız. Sonuçlara gelince, hesaplanan değeri büyük ölçüde karşılayan modeli satın aldık.
DRV8825 Sürücü:
Bu kart bipolar step motoru kontrol etmek için kullanılır. Bir potansiyometre ile maksimum akım çıkışını ayarlamanıza izin veren ayarlanabilir bir akım kontrolüne ve altı farklı adım çözünürlüğüne sahiptir: tam adım, yarım adım, 1/4 adım, 1/8 adım, 1/16- adım ve 1/32 adım (mikro adımlamaya gerek duymadığımız için nihayet tam adım kullandık, ancak yine de hareketin kalitesini artırmak için kullanılabilir).
Ultrasonik sensörler:
Bunlar, bir elektrik sinyalini ultrasona ve tam tersine dönüştüren bir tür akustik sensördür. Bir nesneye olan mesafeyi hesaplamak için ilk önce yayılan akustik bir sinyalin yankı yanıtını kullandılar. Kutuda bir nesne olup olmadığını tespit etmek için onları kullandık. Kullanımı kolaydır ve doğru bir ölçüm sağlarlar.
Bu sensörün çıktısı bir değer (mesafe) olsa da, bir cismin var olup olmadığını belirlemek için bir eşik kurarak dönüştürüyoruz.
Endüktif sensörler:
Faraday yasasına göre temassız elektronik yakınlık sensörü kategorisine girer. Bunları hareketli kutunun alt kısmına, cismi destekleyen pleksiglas platformun altına yerleştirdik. Amaçları, dijital bir çıktı (0/1) veren metal ve metal olmayan nesne arasında ayrım yapmaktır.
LED'ler (yeşil, sarı, kırmızı):
Görevleri kullanıcı ile iletişim kurmaktır:
-Yeşil LED yanıyor: robot bir nesne bekliyor.
-Kırmızı LED yanıyor: makine çalışıyor, herhangi bir nesne atamazsınız.
-Sarı LED yanıyor: bir nesne algılandı.
12V Pil veya 12V güç kaynağı + 5V USB gücü:
Sensörlere ve step motora güç sağlamak için bir voltaj kaynağı gereklidir. Arduino'ya güç sağlamak için 5V'luk bir güç kaynağı gereklidir. Bu, 12V pil ile yapılabilir, ancak Arduino için ayrı bir 5V güç kaynağına sahip olmak en iyisidir (örneğin, bir güç kaynağına veya bilgisayara bağlı bir USB kablosu ve telefon adaptörü ile).
Bulduğumuz sorunlar:
-
Endüktif sensör algılama, bazen kötü konumlandırılmış metalik bir nesne algılanmadığı için istenen doğruluğu alamadık. Bunun nedeni 2 sınırlamadır:
- Kare platform içindeki sensörler tarafından kapsanan alan, bunun %50'sinden daha azını temsil eder (bu nedenle küçük nesneler algılanamaz). Bunu çözmek için, alanın %70'inden fazlasının kapsandığından emin olmak için 3 veya 4 endüktif sensör kullanmanızı öneririz.
- Sensörlerin algılama mesafesi 15 mm ile sınırlıdır, bu nedenle kendimizi ince bir pleksiglas platform kullanmak zorunda bulduk. Bu aynı zamanda garip bir şekle sahip nesneleri tespit etmek için başka bir sınırlama olabilir.
- Ultrasonik algılama: Yine karmaşık bir şekilde şekillendirilen nesneler, sensörlerin yaydığı sinyal kötü yansıtıldığından ve sensöre olması gerekenden daha geç geri geldiğinden sorun çıkarır.
- Batarya: Batarya tarafından verilen akımı kontrol etmede bazı sorunlarımız var ve bunu çözmek için sonunda bir güç kaynağı kullandık. Ancak diyot kullanmak gibi başka çözümler de yapılabilir.
Adım 5: Elektronik (Bağlantılar)
Bu bölüm, bir araya getirilen farklı bileşenlerin kablolarını gösterir. Ayrıca her bir bileşenin Arduino üzerindeki hangi pine bağlı olduğunu gösterir.
Adım 6: Programlama
Bu bölüm, Bin Ayırma makinesinin arkasındaki programlama mantığını açıklayacaktır.
Program aşağıdaki gibi 4 adıma ayrılmıştır:
- Sistemi başlat
- Nesnelerin varlığını kontrol edin
- Mevcut nesnenin türünü kontrol edin
- Kutuyu Taşı
Her adımın ayrıntılı açıklaması için aşağıya bakın:
Adım 1Sistemi başlat
LED paneli (3) - Ayarlama LED'i (kırmızı) YÜKSEK, Hazır LED'i (yeşil) DÜŞÜK, Nesne mevcut (sarı) DÜŞÜK
Step motorun başlangıç konumunda olup olmadığını kontrol edin
-
Yandan kutu duvarına olan mesafeyi ölçmek için ultrasonik sensör testi yapın
- Başlangıç konumu == 0 >> Hazır LED YÜKSEK ve Kalibrasyon LED'i DÜŞÜK -> adım 2'nin değerlerini güncelleyin
-
Başlangıç konumu != 0 >> ultrasonik sensörlerin dijital okuma değeri ve sensör değerlerine göre:
- Motor hareket eden LED YÜKSEK'in değerini güncelleyin.
- Her iki ultrasonik sensörün değeri < eşik değeri olana kadar taşıma kutusunu çalıştırın.
Başlangıç konumunun güncelleme değeri = 1 >> LED Hazır YÜKSEK ve motor DÜŞÜK hareket ediyor ve DÜŞÜK Kalibre Ediliyor >> adım 2'nin güncelleme değeri
Adım 2
Nesnelerin varlığını kontrol edin
Ultrasonik Nesne algılamayı çalıştırın
- Nesne mevcut == 1 >> Nesne mevcut LED'inin değerini güncelle YÜKSEK >> Adım 3
- Nesne mevcut == 0 >> Hiçbir şey yapma
Aşama 3
Mevcut nesnenin türünü kontrol edin
Endüktif sensör algılamayı çalıştır
- endüktifDurum = 1 >> Adım 4
- indüktifDurum = 0 >> Adım 4
4. Adım
Kutuyu Taşı
Motor işlemini çalıştırın
-
endüktifDurum == 1
Motor hareket LED'ini güncelleyin YÜKSEK >> Motoru sola hareket ettirin, (ilk konumu güncelleyin = 0) geciktirin ve sağa geri hareket edin >> Adım 1
-
endüktifDurum == 0
Motor hareket LED'ini güncelleyin YÜKSEK >> Motoru sağa hareket ettirin, (başlangıç konumunu güncelleyin = 0), geciktirin ve sola geri hareket ettirin >> Adım 1
Fonksiyonlar
Programlama mantığından da anlaşılacağı üzere program, belirli bir amaç doğrultusunda işlevler yürüterek çalışır. Örneğin, ilk adım, "Adım motorunun başlangıç konumunda olup olmadığını kontrol edin" işlevini içeren sistemi başlatmaktır. İkinci adım daha sonra kendi içinde başka bir işlev olan nesnenin varlığını kontrol eder ("Ultrasonik Nesne algılama" işlevi). Ve diğerleri.
4. adımdan sonra, program tamamen yürütülmüştür ve tekrar çalıştırmadan önce 1. adıma dönecektir.
Ana gövdede kullanılan fonksiyonlar aşağıda tanımlanmıştır.
Bunlar sırasıyla:
- endüktifTest()
- moveBox(endüktifDurum)
- ultrasonikNesne Algılama()
// Nesnenin metalik olup olmadığını kontrol edin
bool inductiveTest() { if(digitalRead(inductiveSwitchRight) == 1 || digitalRead(inductiveSwitchLeft == 0)) { return true; else{ false döndür; } } void moveBox(bool inductiveState) { // Metal algılandığında kutu sola gider ve inductiveState = true if (inductiveState == 0){ stepper.moveTo(steps); // stepper.runToPosition() testi için bitecek rastgele konum; gecikme(1000); stepper.moveTo(0); stepper.runToPosition(); gecikme(1000); } else if (inductiveState == 1) { stepper.moveTo(-steps); // stepper.runToPosition() testi için bitecek rastgele konum; gecikme(1000); stepper.moveTo(0); // stepper.runToPosition() testi için bitecek rastgele konum; gecikme(1000); } } boolean ultrasonicObjectDetection() { uzun süre1, uzaklık1, süreSıcaklık, uzaklıkSıcaklık, ortalamaMesafe1, ortalamaDistanceTemp, ortalamaDistanceOlympian1; // Uzun mesafe alınacak ölçüm sayısını tanımlayınMax = 0; uzun mesafeMin = 4000; uzun mesafeToplam = 0; for (int i=0; i mesafeMax) { mesafeMax = mesafeTemp; } if (distanceTemp < DistanceMin) { DistanceMin = DistanceTemp; } uzaklıkToplam+= uzaklıkSıcaklık; } Serial.print ("Sensor1 maxDistance "); Serial.print (mesafeMax); Seri.println("mm"); Serial.print ("Sensor1 minDistance"); Serial.print (mesafeMin); Seri.println("mm"); // Okumalardan ortalama mesafeyi al ortalamaMesafe1 = mesafeToplam/10; Serial.print ("Sensör1 ortalamaMesafe1 "); Serial.print (ortalama Mesafe1); Seri.println("mm"); // Hatalı okumaları önlemek için ölçümlerin en yüksek ve en düşük değerlerini kaldırın ortalamaDistanceTemp = DistanceTotal - (distanceMax+distanceMin); ortalamaMesafeOlympian1 = ortalamaMesafeTemp/8; Serial.print ("Sensör1 ortalamaMesafeOlympian1 "); Serial.print (ortalamaMesafeOlympian1); Seri.println("mm");
// Sıcaklık değerlerini sıfırla
mesafeToplam = 0; mesafeMaks = 0; mesafeMin = 4000; uzun süre2, mesafe2, ortalamaMesafe2, ortalamaMesafeOlympian2; // (int i=0; i DistanceMax) için yapılacak ölçüm sayısını tanımlayın { DistanceMax = DistanceTemp; } if (distanceTemp < DistanceMin) { DistanceMin = DistanceTemp; } uzaklıkToplam+= uzaklıkSıcaklık; } Serial.print ("Sensor2 maxDistance "); Serial.print (mesafeMax); Seri.println("mm"); Serial.print ("Sensor2 minDistance"); Serial.print (mesafeMin); Seri.println("mm"); // Okumalardan ortalama mesafeyi al ortalamaMesafe2 = mesafeToplam/10; Serial.print ("Sensör2 ortalamaMesafe2"); Seri.print (ortalama Mesafe2); Seri.println("mm"); // Hatalı okumaları önlemek için ölçümlerin en yüksek ve en düşük değerlerini kaldırın ortalamaDistanceTemp = DistanceTotal - (distanceMax+distanceMin); ortalamaMesafeOlympian2 = ortalamaMesafeTemp/8; Serial.print ("Sensör2 ortalamaMesafeOlympian2 "); Serial.print (ortalamaMesafeOlympian2); Seri.println("mm"); // Sıcaklık değerlerini sıfırla uzaklıkToplam = 0; mesafeMaks = 0; mesafeMin = 4000; if (averageDistanceOlympian1 + ortalamaDistanceOlympian2 < emptyBoxDistance) { return true; } başka { false döndür; } }
Ana Gövde
Ana gövde, bu bölümün başında açıklanan mantığın aynısını içerir, ancak kodla yazılmıştır. Dosya aşağıdan indirilebilir.
Uyarı
Sabitleri bulmak için birçok test yapıldı: kurulumda emptyBoxDistance, adımlar ve Maximumspeed ve hızlanma.
7. Adım: Olası İyileştirmeler
- Başlangıçta nesneyi seçmenin her zaman doğru konumlarda olmasını sağlamak için kutunun konumu hakkında geri bildirime ihtiyacımız var. Sorunu çözmek için farklı seçenekler mevcuttur, ancak kolay olanı, kutu yolunun bir ucundaki bir anahtar kullanarak 3D yazıcılarda bulduğumuz sistemi kopyalamak olabilir.
-Ultrasonik algılamada bulduğumuz sorunlardan dolayı bu fonksiyon için bazı alternatifler arayabiliriz: KY-008 Lazer ve Lazer Dedektör (görüntü), kapasitif sensörler.
Adım 8: Sınırlayıcı Faktörler
Bu proje, talimatlarda açıklandığı gibi çalışır ancak aşağıdaki adımlarda özel dikkat gösterilmelidir:
Ultrasonik Sensörlerin Kalibrasyonu
Ultrasonik sensörlerin algılamaları gereken nesneye göre yerleştirildiği açı, prototipin doğru çalışması için çok önemlidir. Bu proje için, ultrasonik sensörlerin oryantasyonu için normale 12,5°'lik bir açı seçilmiştir, ancak en iyi açı, çeşitli nesneler kullanılarak mesafe okumaları kaydedilerek deneysel olarak belirlenmelidir.
Güç kaynağı
DRV8825 step motor sürücüsü için gerekli güç 12V'dir ve 0,2 ile 1 Amper arasındadır. Arduino üzerinde bulunan jak girişi kullanılarak maksimum 12V ve 0,2 Amper ile de arduinoya güç sağlanabilmektedir. Ancak hem Arduino hem de step motor sürücüsü için aynı güç kaynağı kullanılıyorsa özel dikkat gösterilmelidir. Örneğin 12V/2A AC/DC adaptör güç kaynağı kullanan sıradan bir elektrik prizinden güç alıyorsa, güç arduino ve step motor sürücüsüne beslenmeden önce devrede bir voltaj regülatörü ve diyotlar olmalıdır.
Kutuyu Arama
Bu proje, normal koşullar altında yüksek doğrulukla ilk konumuna dönen bir step motor kullanıyor olsa da, bir hata oluşması durumunda bir hedef arama mekanizmasına sahip olmak iyi bir uygulamadır. Projede olduğu gibi bir hedef arama mekanizması yoktur, ancak bir tanesini uygulamak oldukça basittir. Bunun için kutunun ilk konumuna mekanik bir anahtar eklenmelidir, öyle ki kutu anahtara bastığında ana konumunda olduğunu bilsin.
Step sürücü DRV8825 Ayarlama
Step sürücü, step motorla çalışmak için ayar gerektirir. Bu, DRV8825 çipi üzerindeki potansiyometreyi (vida) çevirerek deneysel olarak yapılır, böylece motora uygun miktarda akım sağlanır. Bu nedenle, potansiyometre vidasını motor zayıf bir şekilde hareket edene kadar hafifçe çevirin.
9. Adım: Krediler
Bu proje, 2018-2019 akademik yılında Université Libre de Bruxelles (ULB) - Vrije Universiteit Brussel'de (VUB) Bruface Master için bir mekatronik kursunun parçası olarak yapıldı.
Yazarlar:
Maxime Decleire
Lidia Gomez
Markus Poder
Adriana Puentes
Narjisse Snoussi
Proje boyunca bize yardımcı olan süpervizörümüz Albert de Beir'e de özel teşekkürler.
Önerilen:
OTOMATİK ÇÖP KUTUSU VEYA KUTUSU. GEZEGENİ KURTARMAK İÇİN: 19 Adım (Resimli)
OTOMATİK ÇÖP KUTUSU VEYA KUTUSU. GEZEGENİ KURTARMAK İÇİN: Başlamadan önce bunu okumadan önce ilk videoyu izlemenizi tavsiye ederim çünkü çok faydalı. Merhaba, benim adım Jacob ve İngiltere'de yaşıyorum. Geri dönüşüm yaşadığım yerde büyük bir sorun, tarlalarda çok fazla çöp görüyorum ve zararlı olabilir. NS
Çöp Kutusu (veya Diğer Tatlı Kutusu) Usb Işığı: 6 Adım
Çöp Kutusu (veya Diğer Tatlı Kutu) Usb Işığı: Masanızı aydınlatmanın veya LAN partilerinde hava atmanın kesinlikle 'çöp' bir yolu GÜNCELLEME: Önemli bir güvenlik güncellemesi ve zamandan tasarruf için Adım 6'ya gidin
Tüplü Radyolar için Puro Kutusu Pil Kutusu Oluşturun: 4 Adım
Tüplü Telsizler için Puro Kutusu Pil Kutusu İnşa Edin: Benim gibi tüplü telsizler kuruyor ve bunlarla uğraşıyorsanız, muhtemelen benim onlara güç verme konusunda benimkine benzer bir sorununuz vardır. Eski devrelerin çoğu, artık mevcut olmayan yüksek voltajlı b pillerle çalışacak şekilde tasarlanmıştır. Yani
Sedir (Puro?) Kutusu Hoparlör Kutusu: 8 Adım (Resimli)
Sedir (Puro?) Kutusu Hoparlör Kutusu: Munny hoparlörlerinden ilham alan, ancak 10 dolardan fazla harcamaya istekli olmayan, işte eski bilgisayar hoparlörlerini, ikinci el mağazasından bir tahta kutu ve çok sayıda sıcak tutkal kullanma talimatım
KART KUTUSU BİLGİSAYAR KUTUSU: 7 Adım
KART KUTUSU BİLGİSAYAR KUTUSU: Bu adamın yapacak başka bir şeyi olmadığını düşünebilirsiniz… ama sorun şu ki… Portekiz'den Birleşik Krallık'a taşındım ve IBM Kasası çok ağırdı, bu yüzden seçmek için, davayı ya da bazı kıyafetleri:D… Ama bunu yapmak için kontrol etmelisin