İçindekiler:

Sıralayıcı Kutusu - Çöpünüzü Algılayın ve Sıralayın: 9 Adım
Sıralayıcı Kutusu - Çöpünüzü Algılayın ve Sıralayın: 9 Adım

Video: Sıralayıcı Kutusu - Çöpünüzü Algılayın ve Sıralayın: 9 Adım

Video: Sıralayıcı Kutusu - Çöpünüzü Algılayın ve Sıralayın: 9 Adım
Video: DOĞA NASIL ÇALIŞIYOR? | KOMPOST YAPMAK NEDEN ÖNEMLİ? 2024, Kasım
Anonim
Image
Image
Nasıl çalışır
Nasıl çalışır

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?

Nasıl çalışır
Nasıl çalışır
Nasıl çalışır
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

Image
Image
Mekanik tasarım
Mekanik tasarım
Mekanik tasarım
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)

Elektronik (Bağlantılar)
Elektronik (Bağlantılar)
Elektronik (Bağlantılar)
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

Programlama
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:

  1. Sistemi başlat
  2. Nesnelerin varlığını kontrol edin
  3. Mevcut nesnenin türünü kontrol edin
  4. 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

Olası İyileştirmeler
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: