Daftar Isi:

Sorter Bin - Deteksi dan Sortir Sampah Anda: 9 Langkah
Sorter Bin - Deteksi dan Sortir Sampah Anda: 9 Langkah

Video: Sorter Bin - Deteksi dan Sortir Sampah Anda: 9 Langkah

Video: Sorter Bin - Deteksi dan Sortir Sampah Anda: 9 Langkah
Video: Uang 1 Miliar cukup aku karet in aja , biar gak jatuh. uang jangan di timbun aja #short 2024, Juli
Anonim
Image
Image
Bagaimana itu bekerja
Bagaimana itu bekerja

Pernahkah Anda melihat seseorang yang tidak mendaur ulang atau melakukannya dengan cara yang buruk?

Pernahkah Anda menginginkan mesin yang akan mendaur ulang untuk Anda?

Teruslah membaca proyek kami, Anda tidak akan menyesal!

Sorter bin adalah proyek dengan motivasi yang jelas untuk membantu daur ulang di dunia. Seperti diketahui, kurangnya daur ulang menyebabkan masalah serius di planet kita, seperti hilangnya bahan baku dan pencemaran laut, antara lain.

Oleh karena itu, tim kami telah memutuskan untuk mengembangkan proyek dalam skala kecil: tempat penyortir yang dapat memisahkan sampah menjadi penerima yang berbeda tergantung pada apakah bahannya logam atau non-logam. Dalam versi mendatang, tempat penyortir itu dapat diekstrapolasi ke skala besar, memungkinkan pembagian sampah menjadi semua jenis bahan yang berbeda (kayu, plastik, logam, organik…).

Karena tujuan utamanya adalah untuk membedakan antara logam atau non-logam, tempat penyortir akan dilengkapi dengan sensor induktif, tetapi juga dengan sensor ultrasonik untuk mendeteksi jika ada sesuatu di tempat sampah. Selain itu, tempat sampah akan membutuhkan gerakan linier untuk memindahkan sampah ke dalam dua kotak, maka dipilihlah motor stepper.

Pada bagian selanjutnya, proyek ini akan dijelaskan langkah demi langkah.

Langkah 1: Cara Kerjanya

Bagaimana itu bekerja
Bagaimana itu bekerja
Bagaimana itu bekerja
Bagaimana itu bekerja

Tempat penyortir telah dirancang untuk membuat pekerjaan relatif mudah bagi pengguna: sampah harus dimasukkan melalui lubang yang ditempatkan di pelat atas, tombol kuning harus ditekan dan proses dimulai, diakhiri dengan sampah menjadi satu dari penerima. Tapi pertanyaannya sekarang adalah… bagaimana proses itu bekerja secara internal?

Setelah proses dimulai, LED hijau menyala. Kemudian sensor ultrasonik, yang dipasang ke pelat atas melalui penyangga, mulai bekerja untuk menentukan apakah ada benda di dalam kotak atau tidak.

Jika tidak ada benda apapun di dalam kotak, LED merah menyala dan hijau mati. Sebaliknya, jika ada benda, sensor induktif akan diaktifkan untuk mendeteksi apakah benda itu logam atau bukan logam. Setelah jenis bahan ditentukan, LED merah dan kuning akan menyala dan kotak akan bergerak ke satu arah atau sebaliknya tergantung pada jenis bahan, didorong oleh motor stepper.

Ketika kotak tiba di ujung pukulan dan benda telah dijatuhkan ke penerima yang benar, kotak akan kembali ke posisi awal. Terakhir, dengan kotak di posisi awal, LED kuning akan mati. Penyortir telah siap untuk memulai lagi dengan prosedur yang sama. Proses yang dijelaskan dalam paragraf terakhir juga ditunjukkan pada gambar bagan alur kerja yang dilampirkan pada Langkah 6: Pemrograman.

Langkah 2: Bill of Material (BOM)

Bagian mekanik:

  • Membeli bagian untuk struktur bawah

    • Struktur logam [Tautan]
    • Kotak abu-abu [Tautan]
  • pencetak 3D

    PLA untuk semua bagian yang dicetak (bahan lain juga dapat digunakan, seperti ABS)

  • Mesin pemotong laser

    • MDF 3mm
    • Kaca plexiglass 4mm
  • Set Bantalan Linier [Tautan]
  • Bantalan Linier [Tautan]
  • Poros [Tautan]
  • Pemegang poros (x2) [Tautan]

Bagian elektronik:

  • Motor

    Linear Stepper Motor Nema 17 [Tautan]

  • Baterai

    Baterai 12v [Tautan]

  • Sensor

    • 2 Sensor ultrasonik HC-SR04 [Tautan]
    • 2 Sensor induktif LJ30A3-15 [Link]
  • Mikrokontroler

    1 papan arduino UNO

  • Komponen tambahan

    • Pengemudi DRV8825
    • 3 LED: merah, hijau dan oranye
    • 1 tombol
    • Beberapa kabel lompat, kabel, dan pelat solder
    • Papan tempat memotong roti
    • Kabel USB (koneksi Arduino-PC)
    • Kapasitor: 100uF

Langkah 3: Desain Mekanik

Image
Image
Desain mekanik
Desain mekanik
Desain mekanik
Desain mekanik

Pada gambar sebelumnya, semua bagian perakitan ditampilkan.

Untuk desain mekanik, SolidWorks telah digunakan sebagai program CAD. Berbagai bagian perakitan telah dirancang dengan mempertimbangkan metode pembuatan yang akan diproduksi.

Bagian potong laser:

  • MDF 3mm

    • Pilar
    • Pelat atas
    • Dukungan sensor ultrasonik
    • Dukungan sensor induktif
    • Kotak sampah
    • Dukungan baterai
    • Dukungan papan tempat memotong roti dan Arduino
  • Kaca plexiglass 4mm

    Platform

Bagian cetak 3D:

  • Pangkalan pilar
  • Elemen transmisi gerakan linier dari motor stepper
  • Motor stepper dan penyangga bantalan
  • Bagian fiksasi dinding untuk kotak sampah

Untuk pembuatan masing-masing bagian ini, file. STEP harus diimpor ke dalam format yang benar, tergantung pada mesin yang akan digunakan untuk tujuan itu. Dalam hal ini, file.dxf telah digunakan untuk mesin potong laser dan file.gcode untuk printer 3D (Ultimaker 2).

Perakitan mekanis proyek ini dapat ditemukan di file. STEP yang dilampirkan di bagian ini.

Langkah 4: Elektronik (Pilihan Komponen)

Pada bagian ini akan dilakukan deskripsi singkat tentang komponen elektronik yang digunakan dan penjelasan tentang pilihan komponen yang akan dilakukan.

Papan Arduino UNO (sebagai mikrokontroler):

Perangkat keras dan perangkat lunak sumber terbuka. Murah, mudah tersedia, mudah dikodekan. Papan ini kompatibel dengan semua komponen yang kami gunakan dan Anda akan menemukan banyak tutorial dan forum yang sangat membantu untuk mempelajari dan memecahkan masalah.

Motor (Linear Stepper Motor Nema 17):

Merupakan jenis motor stepper yang membagi putaran penuh dalam jumlah langkah tertentu. Akibatnya, dikendalikan dengan memberikan sejumlah langkah. Ini kuat dan presisi dan tidak memerlukan sensor untuk mengontrol posisi sebenarnya. Misi motor adalah untuk mengontrol pergerakan kotak yang berisi benda yang dilempar dan menjatuhkannya ke tempat sampah yang tepat.

Untuk memilih model Anda membuat beberapa perhitungan torsi maksimum yang diperlukan dengan menambahkan faktor keamanan. Mengenai hasil, kami membeli model yang sebagian besar mencakup nilai yang dihitung.

Pengemudi DRV8825:

Papan ini digunakan untuk mengontrol motor stepper bipolar. Ini memiliki kontrol arus yang dapat disesuaikan yang memungkinkan Anda untuk mengatur output arus maksimum dengan potensiometer serta enam resolusi langkah yang berbeda: langkah penuh, setengah langkah, 1/4 langkah, 1/8 langkah, 1/16- step, dan 1/32-step (akhirnya kami menggunakan full-step karena kami tidak merasa perlu melakukan microstepping tetapi masih dapat digunakan untuk meningkatkan kualitas gerakan).

Sensor ultrasonik:

Ini adalah jenis sensor akustik yang mengubah sinyal listrik menjadi ultrasound dan sebaliknya. Mereka menggunakan respons gema dari sinyal akustik yang pertama kali dipancarkan untuk menghitung jarak ke suatu objek. Kami menggunakannya untuk mendeteksi apakah ada objek di dalam kotak atau tidak. Mereka mudah digunakan dan memberikan ukuran yang akurat.

Meskipun keluaran dari sensor ini berupa nilai (jarak), dengan menetapkan ambang batas untuk menentukan apakah suatu objek ada atau tidak, kita mengubah

Sensor induktif:

Berdasarkan hukum Faraday, itu termasuk dalam kategori sensor jarak elektronik non-kontak. Kami menempatkannya di bagian bawah kotak bergerak, di bawah platform kaca plexiglass yang menopang objek. Tujuannya adalah untuk membedakan antara benda logam dan non-logam yang memberikan output digital (0/1).

LED (hijau, kuning, merah):

Misi mereka adalah untuk berkomunikasi dengan pengguna:

-LED hijau menyala: robot sedang menunggu objek.

-LED merah menyala: mesin bekerja, Anda tidak dapat membuang benda apa pun.

-LED kuning menyala: objek terdeteksi.

Baterai 12V atau sumber daya 12V + daya USB 5V:

Sumber tegangan diperlukan untuk memberi daya pada sensor dan motor stepper. Sumber daya 5V diperlukan untuk memberi daya pada Arduino. Ini dapat dilakukan melalui baterai 12V tetapi yang terbaik adalah memiliki sumber daya 5V terpisah untuk Arduino (seperti dengan kabel USB dan adaptor telepon yang terhubung ke sumber daya atau ke komputer).

Masalah yang kami temukan:

  • Deteksi sensor induktif, kami tidak mendapatkan akurasi yang diinginkan karena terkadang objek logam yang diposisikan dengan buruk tidak dirasakan. Ini karena 2 batasan:

    • Area yang dicakup oleh sensor dalam platform persegi mewakili kurang dari 50% (sehingga objek kecil tidak dapat dideteksi). Untuk mengatasinya, kami sarankan menggunakan 3 atau 4 sensor induktif untuk memastikan lebih dari 70% area tertutup.
    • Jarak deteksi sensor dibatasi hingga 15mm sehingga kami terpaksa menggunakan platform kaca plexiglass yang halus. Ini juga bisa menjadi batasan lain untuk mendeteksi objek dengan bentuk yang aneh.
  • Deteksi ultrasonik: sekali lagi, objek yang dibentuk dengan cara yang kompleks memberikan masalah karena sinyal yang dipancarkan oleh sensor dipantulkan dengan buruk dan kembali lebih lambat dari yang seharusnya ke sensor.
  • Baterai: kami memiliki beberapa masalah dalam mengontrol arus yang dikirim oleh baterai dan untuk menyelesaikannya, kami akhirnya menggunakan sumber daya. Namun, solusi lain seperti menggunakan dioda dapat dilakukan.

Langkah 5: Elektronik (Koneksi)

Elektronik (Koneksi)
Elektronik (Koneksi)
Elektronik (Koneksi)
Elektronik (Koneksi)

Bagian ini menunjukkan pengkabelan dari berbagai komponen yang disatukan. Ini juga menunjukkan ke pin mana pada Arduino yang terhubung dengan setiap komponen.

Langkah 6: Pemrograman

Pemrograman
Pemrograman

Bagian ini akan menjelaskan logika pemrograman di balik mesin Bin Sorting.

Program ini dibagi menjadi 4 langkah, yaitu sebagai berikut:

  1. Inisialisasi sistem
  2. Periksa keberadaan objek
  3. Periksa jenis objek yang ada
  4. Pindahkan Kotak

Untuk penjelasan rinci dari setiap langkah, lihat di bawah:

Langkah 1Inisialisasi sistem

Panel LED (3) - atur LED Kalibrasi (merah) TINGGI, LED Siap (hijau) RENDAH, Objek ada (kuning) RENDAH

Periksa motor stepper pada posisi awal

  • Jalankan uji sensor ultrasonik untuk mengukur jarak dari sisi ke dinding kotak

    • Posisi awal == 0 >> Perbarui nilai Ready LED HIGH dan Calibrating LED LOW -> step 2
    • Posisi awal != 0 >> nilai pembacaan digital sensor ultrasonik dan berdasarkan nilai sensor:

      • Perbarui nilai motor penggerak LED TINGGI.
      • Jalankan kotak pindah sampai nilai kedua sensor ultrasonik < nilai ambang batas.

Update nilai posisi awal = 1 >> Update nilai LED Ready HIGH dan motor bergerak LOW dan Kalibrasi LOW >> step 2

Langkah 2

Periksa keberadaan objek

Jalankan deteksi Objek Ultrasonik

  • Obyek hadir == 1 >> Perbarui nilai Obyek hadir LED TINGGI >> Langkah 3
  • Objek hadir == 0 >> Tidak melakukan apa-apa

Langkah 3

Periksa jenis objek yang ada

Jalankan deteksi sensor induktif

  • induktifState = 1 >> Langkah 4
  • induktifState = 0 >> Langkah 4

Langkah 4

Pindahkan Kotak

Jalankan operasi Motor

  • keadaan induktif == 1

    Perbarui LED penggerak motor TINGGI >> Buat motor bergerak ke kiri, (perbarui posisi awal = 0) tunda dan mundur ke kanan >> Langkah 1

  • keadaan induktif == 0

    Perbarui LED penggerak motor TINGGI >> Buat motor bergerak ke kanan, (perbarui posisi awal = 0), tunda dan mundur ke kiri >> Langkah 1

Fungsi

Seperti yang dapat dilihat dari logika pemrograman, program bekerja dengan menjalankan fungsi dengan tujuan tertentu. Misalnya, langkah pertama adalah menginisialisasi sistem yang berisi fungsi "Periksa motor stepper pada posisi awal". Langkah kedua kemudian memeriksa keberadaan objek yang merupakan fungsi lain (fungsi "Deteksi Objek Ultrasonik"). Dan seterusnya.

Setelah langkah 4, program telah sepenuhnya dijalankan dan akan kembali ke langkah 1 sebelum dijalankan kembali.

Fungsi yang digunakan dalam badan utama didefinisikan di bawah ini.

Mereka adalah masing-masing:

  • tes induktif()
  • moveBox(Negara induktif)
  • ultrasonikObjectDetection()

// Periksa apakah benda itu logam atau tidak

bool inductiveTest() { if(digitalRead(inductiveSwitchRight) == 1 || digitalRead(inductiveSwitchLeft == 0)) { return true; lain{ kembali salah; } } void moveBox(bool inductiveState) { // Kotak ke kiri saat logam terdeteksi dan inductiveState = true if (inductiveState == 0){ stepper.moveTo(steps); // posisi acak ke akhir untuk pengujian stepper.runToPosition(); penundaan (1000); stepper.moveTo(0); stepper.runToPosition(); penundaan (1000); } else if (inductiveState == 1) { stepper.moveTo(-steps); // posisi acak ke akhir untuk pengujian stepper.runToPosition(); penundaan (1000); stepper.moveTo(0); // posisi acak ke akhir untuk pengujian stepper.runToPosition(); penundaan (1000); } } boolean ultrasonikObjectDetection() { durasi panjang1, jarak1, durasiTemp, jarakTemp, jarak rata-rata1, Suhu Rata-rata, JarakOlympian1 rata-rata; // Tentukan jumlah pengukuran untuk mengambil jarak jauhMax = 0; jarak jauhMin = 4000; jarak jauhJumlah = 0; for (int i=0; i distanceMax) { distanceMax = distanceTemp; } if (distanceTemp < distanceMin) { distanceMin = distanceTemp; } jarakTotal+= jarakTemp; } Serial.print("Sensor1 maxDistance"); Serial.print (jarakMax); Serial.println("mm"); Serial.print("Sensor1 minDistance"); Serial.print (jarakMin); Serial.println("mm"); // Ambil jarak rata-rata dari pembacaan averageDistance1 = distanceTotal/10; Serial.print("Sensor1 averageDistance1"); Serial.print (jarak rata-rata1); Serial.println("mm"); // Hapus nilai pengukuran tertinggi dan terendah untuk menghindari kesalahan pembacaan averageDistanceTemp = distanceTotal - (distanceMax+distanceMin); averageDistanceOlympian1 = averageDistanceTemp/8; Serial.print("Sensor1 averageDistanceOlympian1"); Serial.print (averageDistanceOlympian1); Serial.println("mm");

// Setel ulang nilai suhu

jarakTotal = 0; jarakMaks = 0; jarakMin = 4000; durasi panjang2, jarak2, jarak rata-rata2, jarak rata-rata olimpiade2; // Tentukan jumlah pengukuran yang akan dilakukan (int i=0; i distanceMax) { distanceMax = distanceTemp; } if (distanceTemp < distanceMin) { distanceMin = distanceTemp; } jarakTotal+= jarakTemp; } Serial.print("Sensor2 maxDistance"); Serial.print (jarakMax); Serial.println("mm"); Serial.print("Sensor2 minDistance"); Serial.print (jarakMin); Serial.println("mm"); // Ambil jarak rata-rata dari pembacaan averageDistance2 = distanceTotal/10; Serial.print("Sensor2 averageDistance2 "); Serial.print (averageDistance2); Serial.println("mm"); // Hapus nilai pengukuran tertinggi dan terendah untuk menghindari kesalahan pembacaan averageDistanceTemp = distanceTotal - (distanceMax+distanceMin); averageDistanceOlympian2 = averageDistanceTemp/8; Serial.print("Sensor2 averageDistanceOlympian2"); Serial.print (averageDistanceOlympian2); Serial.println("mm"); // Atur ulang nilai suhu distanceTotal = 0; jarakMaks = 0; jarakMin = 4000; if (averageDistanceOlympian1 + averageDistanceOlympian2 < emptyBoxDistance) { mengembalikan nilai true; } else { kembali salah; } }

Tubuh utama

Badan utama berisi logika yang sama yang dijelaskan di bagian atas bagian ini, tetapi ditulis dalam kode. File tersedia untuk diunduh di bawah ini.

Peringatan

Banyak tes dilakukan untuk menemukan konstanta: emptyBoxDistance, langkah dan Kecepatan maksimum dan akselerasi dalam pengaturan.

Langkah 7: Kemungkinan Peningkatan

Kemungkinan Peningkatan
Kemungkinan Peningkatan

- Kami membutuhkan umpan balik tentang posisi kotak untuk memastikan selalu berada di posisi yang tepat untuk mengambil objek di awal. Pilihan yang berbeda tersedia untuk memecahkan masalah tetapi yang mudah adalah menyalin sistem yang kita temukan di printer 3D menggunakan sakelar di salah satu ujung jalur kotak.

-Karena masalah yang kami temukan dengan deteksi ultrasonik, kami dapat mencari beberapa alternatif untuk fungsi itu: KY-008 Laser dan Laser Detector (gambar), sensor kapasitif.

Langkah 8: Faktor Pembatas

Proyek ini bekerja seperti yang dijelaskan dalam instruksi tetapi perhatian khusus harus dilakukan selama langkah-langkah berikut:

Kalibrasi Sensor Ultrasonik

Sudut di mana sensor ultrasonik ditempatkan dalam kaitannya dengan objek yang harus mereka deteksi sangat penting untuk memfungsikan prototipe dengan benar. Untuk proyek ini, sudut 12,5 ° terhadap normal dipilih untuk orientasi sensor ultrasonik tetapi sudut terbaik harus ditentukan secara eksperimental dengan merekam pembacaan jarak menggunakan berbagai objek.

Sumber daya

Daya yang dibutuhkan untuk driver motor stepper DRV8825 adalah 12V dan antara 0.2 dan 1 Amp. Arduino juga dapat dialiri daya maksimum 12V dan 0.2 Amp dengan menggunakan input jack pada Arduino. Perhatian khusus harus diberikan jika menggunakan sumber daya yang sama untuk Arduino dan driver motor stepper. Jika diberi daya dari soket daya biasa menggunakan misalnya catu daya adaptor AC/DC 12V/2A, harus ada pengatur tegangan dan dioda di sirkuit sebelum daya diumpankan ke driver motor arduino dan stepper.

Menempatkan Kotak

Meskipun proyek ini menggunakan motor stepper yang dalam kondisi normal kembali ke posisi awal dengan akurasi tinggi, adalah praktik yang baik untuk memiliki mekanisme homing jika terjadi kesalahan. Proyek seperti itu tidak memiliki mekanisme homing tetapi cukup sederhana untuk mengimplementasikannya. Untuk ini, sakelar mekanis pada posisi awal kotak harus ditambahkan sedemikian rupa sehingga ketika kotak menyentuh sakelar, ia tahu bahwa kotak itu berada di posisi asalnya.

Pengemudi stepper DRV8825 Tuning

Driver stepper membutuhkan penyetelan untuk bekerja dengan motor stepper. Ini dilakukan secara eksperimental dengan memutar potensiometer (sekrup) pada chip DRV8825 sehingga jumlah arus yang sesuai disuplai ke motor. Jadi, putar sekrup potensiometer sedikit sampai motor bekerja dengan cara yang ramping.

Langkah 9: Kredit

Proyek ini dilakukan sebagai bagian dari kursus mekatronik selama tahun akademik 2018-2019 untuk Bruface Master di Université Libre de Bruxelles (ULB) - Vrije Universiteit Brussel (VUB).

Para penulisnya adalah:

Maksim Decleire

Lidia Gomez

Markus Poder

Adriana Puentes

Narjisse Snoussi

Terima kasih khusus kepada supervisor kami Albert de Beir yang juga membantu kami selama proyek ini.

Direkomendasikan: