Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Mesin Sortir Warna

Komponen dan persediaan

Arduino Nano R3
× 1
Sensor RGB TCS 34725
× 1
Pengubah uang LM2596
× 1
Servo MG-90S
× 2
Bantalan bola MR105ZZ (5 x 10 x 4 mm)
× 3
bantalan bola 608RS atau 608ZZ (8 x 22 x 7mm)
× 1
bantalan bola 6003RS (17x35x10mm)
× 1
Sekrup countersunk M3*15mm
× 1
Sekrup self-tapping M2x10
× 20
Led RGB (common Anode(+))
× 1
Resistor 220 ohm
× 3
kabel
× 1
colokan colokan 2.1x5.5mm
× 1
tabung heatshrink
× 1
konektor dupont
× 1
catu daya 9V atau 12v (minimum 1 amp)
× 1
Tabung reaksi 5X 22mm(OD)x100mm (dari Danmu Art)
× 1
Skittles!!!!!!!!!!
× 1

Alat dan mesin yang diperlukan

Printer 3D
obeng
pencabut kabel
tang
besi solder
multimeter
alat crimping

Tentang proyek ini


INTRO.

Cerita lucunya adalah bahwa proyek ini tidak pernah dimaksudkan.

Sekitar 3,5 tahun yang lalu saya mulai merancang mesin penyortiran warna yang jauh lebih funkier dan seperti banyak proyek saya, mesin ini akhirnya setengah jadi mengumpulkan debu di ambang jendela (saya yakin tidak ada orang lain yang bisa memahami ini haha).

Singkat cerita, beberapa bulan yang lalu saya memutuskan untuk mengambil kembali proyek lama ini. Hal pertama yang perlu saya kerjakan adalah bagaimana mengumpulkan Skittles dari reservoir dan memeriksa warnanya dengan cukup andal sambil menjaga sistem tetap kompak (yang gagal saya capai pertama kali). Saya berhasil membujuk diri saya sendiri untuk merancang mesin penyortiran warna yang lebih sederhana hanya untuk mendapatkan desain sistem pengumpulan yang benar. Saya dengan bodohnya berpikir Ini akan menjadi pekerjaan 2 akhir pekan, bagus, mudah dan cepat... Astaga!!! apakah saya salah...

Saya membawa saya 2 desain yang sama sekali berbeda dan banyak prototipe tweak untuk mendapatkan sesuatu yang bekerja dengan cara yang dapat diterima (saya masih mengalami beberapa masalah pengambilan dari waktu ke waktu).

Meski belum sempurna, saya cukup puas dengan hasilnya.

BAGAIMANA CARA KERJANYA.

Mesin dapat dibagi menjadi 2 tahap utama.

Di bagian atas Anda dapat menemukan reservoir untuk Skittles yang tidak disortir. Di bagian bawah reservoir ini adalah mekanisme makan yang bertanggung jawab untuk mengumpulkan Skittles dan menempatkannya di depan sensor warna tempat warnanya akan diperiksa.

Mekanisme feeding termasuk lengan yang menggoyang isi reservoir untuk memastikan Skittles mengalir dengan baik melalui lubang mekanisme feeding tanpa macet di dalam reservoir ( sayangnya kadang-kadang masih terjadi).

Setelah warna Skittle ditemukan, tahap kedua mesin mulai beraksi. Penahan tabung reaksi sejajarkan tabung kanan di depan mekanisme pengumpanan Skittle untuk dijatuhkan.

Siklus tersebut kemudian dapat diulang sampai reservoir kosong.

INGIN BUAT SENDIRI???

..................https://www.littlefrenchkev.com/colour-sorting-machine............. ......

PERAKITAN.

Setelah Anda mengunduh dan mencetak bagian-bagiannya, Anda akan mendapatkan sesuatu seperti ini :

Perhatikan bahwa cangkang depan hadir dalam 2 versi. Tidak ada perbedaan nyata mereka hanya terlihat berbeda.

Sisa bagian yang dibutuhkan.

Berikut video proses perakitannya. Saya bahkan mencoba menjadi seniman dengan membuat intro dengan gambar printer 3D slowmo!!!

PENYIAPAN AWAL.

Hal pertama yang dilakukan mesin saat Anda menghidupkan adalah memindahkan kedua servos ke posisi awalnya. Saat Anda menghidupkan mesin untuk pertama kalinya, Anda perlu memastikan bahwa roda gigi/poros yang mengumpulkan Skittles berada pada posisi teratasnya dan bahwa penahan tabung sejajar dengan mekanisme pengumpanan.

PEMECAHAN MASALAH.

Jika Anda memutuskan untuk membuat mesin sortir ini sendiri, Anda mungkin mengalami beberapa masalah umum. berikut cara mengatasinya.

LED berkedip merah - tidak ada urutan awal:

Setelah pindah ke posisi awal, mesin harus melalui urutan awalnya. Jika tidak dan LED berkedip merah, itu berarti Anda memiliki beberapa masalah dengan sensor RBG Anda tidak ditemukan. Ada masalah dengan kabel Anda atau sensornya rusak.

Tabung tidak sejajar dengan benar:

Penyebab 1

Selama urutan awal, pemegang tabung akan bergerak 5 kali, sekali untuk setiap warna. Anda mungkin memperhatikan bahwa tabung tidak sejajar dengan mekanisme pengumpanan. Ini mungkin karena servos tidak terlalu presisi atau karena beberapa variasi dalam dimensi cetak.

Ini dapat diperbaiki melalui perangkat lunak dengan memodifikasi array variabel color_angle. Setiap nilai dalam larik ini mewakili posisi servo untuk setiap warna, dengan mengubah nilai-nilai tersebut, Anda dapat menyetel dengan baik di mana tabung akan berhenti untuk setiap warna.

Penyebab 2

Karena toleransi pencetakan, Anda mungkin juga mendapatkan beberapa reaksi pada gigi pemegang tabung. Tergantung ke arah mana tabung berputar, inersianya dapat membuat mereka melampaui posisi berhentinya. Hal ini juga dapat dikoreksi melalui perangkat lunak dengan memodifikasi variabel anti backlash forward dan backwash. Nilai tersebut akan ditambahkan atau dihapus dari nilai sudut warna tergantung ke arah mana holder berputar untuk mengimbangi serangan balik ini.

Pencampuran warna:

Jika Anda mengalami beberapa pencampuran warna, Anda harus memodifikasi array color_limit_values. Setiap nilai dalam larik tersebut mewakili nilai minimum dan maksimum untuk Merah, Hijau, dan Biru. Untuk mendapatkan gambaran yang lebih baik tentang nilai yang seharusnya, muat mesin hanya dengan satu warna, colokkan mesin ke komputer Anda dan buka monitor serial. Setiap kali Skittle diperiksa, Anda harus mendapatkan nilai RGB yang dibacanya dan warna apa yang menurut program itu. Ini akan memberi Anda gambaran yang lebih baik tentang jenis nilai apa yang harus dikaitkan dengan setiap warna.

BEBERAPA FITUR KEREN.

(yah saya pikir mereka juga!)

LED RGB:

Ada LED RGB yang dipasang di dasar mesin. Selama proses penyortiran, ia berubah warna agar sesuai dengan warna Skittle yang dijatuhkan. Ia melewati setiap warna Skittle secara terus-menerus setelah reservoir kosong.

Ini juga akan berkedip merah saat memulai jika masalah terdeteksi dengan sensor.

Kompensasi anti-balasan:

Dudukan tabung diputar menggunakan beberapa roda gigi taji. Karena toleransi pencetakan sangat sulit untuk sepenuhnya menghilangkan permainan apa pun di roda gigi. Ini berarti pemegang tabung cenderung melampaui posisi idealnya. Kode memungkinkan untuk mengkompensasi hal ini dengan menghentikan pemegang lebih awal dengan jumlah tertentu tergantung ke arah mana pemegang berputar.

Penundaan dengan ekstra:

Kode menyertakan fungsi "set_led(ms, color)". Ini bertindak persis seperti fungsi "penundaan (ms)" tetapi memungkinkan LED untuk beralih dengan mulus ke warna barunya saat penundaan terjadi. Ini berfungsi dengan baik untuk mengubah warna LED saat dudukan tabung berputar ke posisinya!

CATATAN TAMBAHAN.

Catatan 1:Saya mencetak mesin saya dalam warna hitam, ini akan berdampak pada nilai warna apa yang akan dibaca oleh sensor terutama ketika tidak ada Skittles yang dikumpulkan oleh mekanisme pengumpanan.

Catatan 2:Setelah melalui proses penyortiran beberapa kali warna Skittles tampaknya menjadi lebih sulit untuk dibaca secara andal. Saya berasumsi ini karena mereka kehilangan kilau setelah menggosok di dalam reservoir berkali-kali atau mereka menjadi sedikit lengket saat ditangani dengan tangan (kedengarannya menjijikkan!). Saat mengkalibrasi nilai warna, coba gunakan Skittles 'segar'.

Catatan 3:Pastikan Anda mengambil semua tindakan pencegahan yang diperlukan saat menangani makanan. Ini termasuk memastikan Anda menggunakan filamen pencetakan yang aman untuk makanan.

Catatan 4:Saya mencoba memposting beberapa pekerjaan yang sedang berjalan dan proyek apa yang sedang saya lakukan di Instagram. Jika itu milik Anda, Anda dapat melihatnya di sini:https://www.instagram.com/little_french_kev/


Kode

  • LFK_sorting_machine
LFK_sorting_machineC/C++
Berikut adalah kode Arduino untuk mesin sortir .
#include #include "Adafruit_TCS34725.h"#include/* Berdasarkan contoh kode untuk library breakout Adafruit TCS34725 */// =======================Variabel yang terkait dengan sensor RGB=========================Adafruit_TCS34725 tcs =Adafruit_TCS34725(TCS34725_INTEGRATIONTIME_24MS, TCS34725_GAIN_1X); // setup warna sensor RGB =0;//0-hitam, 1-kuning, 2-hijau, 3-oranye, 4-merah, 5-ungu sebelumnya_warna =warna;int black_count =0; // jumlah warna kosong/tidak diketahui start_measurment_angle =88; //posisi servo untuk menyelaraskan skittle di depan sensorint measurment_sweep =2; //jumlah ukuran yang diambil. digunakan untuk rata-rata errorint measurment_angle_increment =4; //peningkatan sudut antara pengukuran//batas nilai[] ={min_red_values, max_red_values, min_green_values, max_green_values, min_blue_values, max_blue_values}uint16_t black_limit_values[] ={0, 200, 0, 200, 0, 200};uint16_t[] =limit_values {850, 2200, 800, 2200, 400, 1100};uint16_t green_limit_values[] ={400, 800, 700, 1400, 300, 700};uint16_t orange_limit_values[] ={650, 1800, 300, 850, 210, 600 };uint16_t red_limit_values[] ={400, 950, 150, 450, 150, 400};uint16_t purple_limit_values[] ={150, 400, 150, 450, 150, 500};//=======================Variabel yang terkait dengan led RGB==========================byte R_pin =5; byte G_pin =6;byte B_pin =11;int current_red_value =255;int current_green_value =255;int current_blue_value =255;const int orange[] ={0, 230, 255};const int merah[] ={0, 255, 255};const int hijau[] ={255, 0, 255};const int kuning[] ={0, 170, 255};const int ungu[] ={0, 255, 40};//=======================Variabel yang terkait dengan servos pengumpan =========================int release_delay =220;const int color_angles[] ={10, 46, 82, 118, 154};//{10, 46, 82, 118, 154};//int holder_offset =0; // penyesuaian offset untuk pemegang tabung. disimpan antara 0 dan 36const int backward_anti_backlash =2;const int forward_anti_backlash =2;Servo feeder_servo; //deklarasikan feeder servoServo holder_servo; // nyatakan servo pemegang tabung//====================================SETUP ========================================void setup(void) { Serial.begin(9600); pinMode(R_pin, OUTPUT); //set LED pinMode(G_pin, OUTPUT); pinMode(B_pin, OUTPUT); analogWrite(R_pin, 255); //matikan LED analogWrite(G_pin, 255); analogWrite(B_pin, 255); feeder_servo.attach(3); //pasang servo feeder ke pin 3 holder_servo.attach(2); //pasang pemegang servo ke pin 2 feeder_servo.write(0); holder_servo.write(colour_angles[0]); int putih[] ={0, 0, 0}; //variabel nilai putih lokal int black[] ={255, 255, 255}; //variabel nilai hitam lokal set_led(1000, putih); // nyalakan LED (putih) if (tcs.begin()) { //periksa apakah sensor ditemukan Serial.println("Found sensor"); mulai_urutan(); } else { Serial.println("Tidak ditemukan TCS34725 ... periksa koneksi Anda"); while (1) //merah cepat berkedip jika sensor tidak ditemukan { set_led(300, red); set_led(300, hitam); } }}//====================================LOOP =========================================void loop(void) { if (black_count <10) { feeder_servo.write(0 ); // setel posisi servo ke atas untuk penundaan pengumpulan skittle(450); // tunda untuk memberi waktu yang cukup bagi servo pengumpan untuk mendapatkan posisi sebelumnya_warna =warna; get_warna(); // baca skittle color if (color ==0) { black_count ++; //jika tidak ada warna yang ditemukan, tingkatkan black count shake();//memberikan sedikit lebih banyak shake ke reservoir meskipun tidak ada skittle } else if (color ==6) { black_count ++; //jika warna tidak diketahui, tambahkan hitungan hitam - tidak ada pelepasan skittle } else { //jika warna ditemukan move_holder(); // pindahkan dudukan tabung release_skittle(); // lepaskan skittle black_count =0; } } else { end_loop(1000); }}//===================================DAPATKAN WARNA =========================================void get_colour() { uint16_t r, g, b, c;//, colorTemp , luks; uint16_t total_r =0; uint16_t total_g =0; uint16_t total_b =0; feeder_servo.write(start_measurment_angle); //bergerak untuk memulai penundaan sudut pengukuran(200); Serial.println("----------------"); for (int i =0; i <=measurment_sweep; i++) //loop untuk setiap ukuran { tcs.getRawData(&r, &g, &b, &c); //mendapatkan pengumpan data warna_servo.write(start_measurment_angle + i *measurment_angle_increment); //menambah sudut servo untuk pengukuran selanjutnya total_r +=r; //tambahkan nilai merah ke total nilai merah total_g +=g; //menambah nilai hijau ke total nilai hijau total_b +=b; //tambahkan nilai biru ke total nilai biru delay(15); } total_r /=pengukuran_sapuan; //nilai rata-rata di semua pengukuran total_g /=pengukuran_sweep; total_b /=pengukuran_sapuan; Serial.print(total_r); Serial.print(""); Serial.print(total_g); Serial.print(""); Serial.print(total_b); Serial.print(""); Serial.println(" "); //bandingkan nilai untuk menentukan warna. if ((total_r =yellow_limit_values[0]) &&//periksa kuning (total_r =yellow_limit_values[2]) &&(total_g  =yellow_limit_values[4]) &&(total_b =green_limit_values[0]) &&//periksa hijau (total_r =green_limit_values[2]) &&(total_g  =green_limit_values[4]) &&(total_b =orange_limit_values[0]) &&//periksa orange (total_r =orange_limit_values[2]) &&(total_g  =orange_limit_values[4]) &&(total_b =red_limit_values[0]) &&//periksa merah (total_r =red_limit_values[2]) &&(total_g  =red_limit_values[4]) &&(total_b =purple_limit_values[0]) &&//periksa ungu (total_r =purple_limit_values[2]) &&(total_g  =purple_limit_values[4]) &&(total_b  warna) { //memaksa servo dudukan untuk mundur lebih jauh dari posisi normal sebagai kompensasi untuk serangan balik roda gigi int anti_backlash_angle =new_holder_position - backward_anti_backlash; holder_servo.write(anti_backlash_angle); //penundaan(penundaan_pemegang); } else { int anti_backlash_angle =new_holder_position + forward_anti_backlash; //holder_servo.write(anti_backlash_angle); holder_servo.write(posisi_pemegang baru); // pindahkan pemegang di posisinya //delay(holder_delay); } if (warna ==1) { set_led(holder_delay , kuning); } else if (warna ==2) { set_led(holder_delay , hijau); } else if (warna ==3) { set_led(holder_delay , orange); } else if (warna ==4) { set_led(holder_delay , red); } else if (warna ==5) { set_led(holder_delay , ungu); } else {}}//==============================RELEASE SKITTLE ===========================void release_skittle() { feeder_servo.write(180); // atur posisi servo ke bawah untuk penundaan pelepasan skittle(release_delay);}//================================SHAKE =================================void shake() { int shake_delay =80; int shake_jumlah =5; int shake_min_value =90; int shake_max_value =180; feeder_servo.write(180); // atur posisi servo ke bawah untuk penundaan pelepasan skittle(release_delay); feeder_servo.write(120); // setel posisi servo ke bawah untuk penundaan pelepasan skittle(80); for (int i =0; i <=shake_amount; i++) //loop untuk setiap ukuran { feeder_servo.write(shake_min_value); // atur posisi servo ke bawah untuk penundaan pelepasan skittle(shake_delay); feeder_servo.write(shake_max_value); // atur posisi servo ke bawah untuk penundaan pelepasan skittle(shake_delay); }}//============================URUTAN MULAI ============================void starting_sequence() { color =1; pindah_pemegang(); set_led(300, kuning); penundaan (400); warna =2; pindah_pemegang(); set_led(300, hijau); penundaan (400); warna =3; pindah_pemegang(); set_led(300, oranye); penundaan (400); warna =4; pindah_pemegang(); set_led(300, merah); penundaan (400); warna =5; pindah_pemegang(); set_led(300, ungu); penundaan (400); warna_sebelumnya =warna; warna =3; pindah_pemegang(); end_loop(200);}//================================END LOOP =================================void end_loop(int durasi) { set_led(durasi, oranye); set_led(durasi, merah); set_led(durasi, hijau); set_led(durasi, kuning); set_led(durasi, ungu);}//============================SETEL WARNA LED RGB =======================// Ini bertindak sebagai penundaan() tetapi memungkinkan LED berubah warna saat menunggu .void set_led(int durasi, int warna[3]) { int start_time =mili(); // nilai waktu mulai int saat_waktu =waktu_mulai; // nilai waktu saat ini int current_duration =0; // total durasi while (current_duration   

Skema

Kabel cukup lurus ke depan. Pastikan konverter uang Anda menghasilkan 5V sebelum mencolokkan apa pun ke sana !!!!!

Proses manufaktur

  1. Mesin EEG
  2. Mesin Penjual Otomatis
  3. Mesin Jahit
  4. Televisi
  5. Kualitas Bantalan &Bantalan Spindle
  6. Bagian dari mesin bubut
  7. Pengertian mesin bubut
  8. Komponen mesin penggilingan
  9. Memahami Mesin
  10. Mesin JW