Sirkuit Detektor Warna dengan Kode Arduino

Coba Instrumen Kami Untuk Menghilangkan Masalah





Dalam posting ini kita akan membangun sirkuit yang dapat mendeteksi warna dan memicu relai yang ditugaskan. Proyek ini diselesaikan dengan menggunakan sensor warna TCS3200 dan papan Arduino.

Color Sensing oleh TCS3200

Jika Anda belum membaca artikel sebelumnya, bacalah di mana kita telah membahas dasar-dasar penginderaan warna menggunakan TCS3200



Proyek yang diusulkan mungkin berguna, jika Anda ingin rangkaian mengambil tindakan berdasarkan warna. Ada lautan aplikasi berdasarkan deteksi warna di berbagai bidang industri.

Proyek ini akan memberikan wawasan tentang bagaimana kita dapat memprogram sensor warna untuk mendeteksi warna yang berbeda dan memicu relai.



Kami akan mempertimbangkan warna primer: MERAH, HIJAU dan BIRU untuk proyek ini. Proyek ini dapat membedakan antara tiga warna ini dan memicu relai, setiap relai untuk setiap warna.

TCS3200 dapat mendeteksi sejumlah warna, tetapi untuk menjaga proyek tetap dapat dimengerti dan untuk menjaga kode program tetap sederhana, kami hanya berkonsentrasi pada warna primer.

Diagram Sirkuit:

menghubungkan sensor warna Arduino dan TCS3200

Skema di atas adalah untuk menghubungkan sensor warna Arduino dan TCS3200.

Koneksi relai:

relay menghubungkan sensor warna Arduino dan TCS3200

Nyalakan Arduino dengan adaptor 9V dengan setidaknya 500mA. Transistor bertindak sebagai penguat untuk relai karena pin GPIO Arduino tidak dapat memberikan arus yang cukup untuk relai.

Dioda 1N4007 akan menyerap lonjakan tegangan tinggi dari koil relai, melindungi komponen semikonduktor lainnya.

Itu menyimpulkan perangkat keras.

Sekarang mari kita lihat cara mengupload kode dan mengkalibrasi sensor untuk kebutuhan Anda.
Sensitivitas warna dapat bervariasi dari satu modul ke modul lainnya dan cahaya sekitar dapat mengubah sensitivitas warna secara drastis.

Semua sensor TCS3200 memiliki beberapa variasi saat membuat, Anda harus mengukur parameter warna untuk sensor yang Anda miliki saat ini, sehingga parameter tersebut dapat digunakan dalam kode untuk mendeteksi warna dengan lebih akurat.

Untuk mengkalibrasi dan mengoptimalkan pembacaan untuk sensor Anda, ikuti langkah-langkahnya secara tepat:

Langkah 1: Unggah kode berikut dengan penyiapan perangkat keras yang lengkap.

//-----Program Developed by R.GIRISH-----// const int Red_relay = 9 const int Green_relay = 10 const int Blue_relay = 11 const int s0 = 4 const int s1 = 5 const int s2 = 6 const int s3 = 7 const int out = 8 int var = 25 int red = 0 int green = 0 int blue = 0 int state = LOW int state1 = LOW int state2 = HIGH //-----------Enter Values--------// //For RED Colour: int Rx1 = 92 int Gx1 = 240 int Bx1 = 53 //For GREEN Colour: int Rx2 = 228 int Gx2 = 163 int Bx2 = 64 //For BLUE Colour: int Rx3 = 300 int Gx3 = 144 int Bx3 = 45 //----------------------------// void setup() { Serial.begin(9600) pinMode(Red_relay, OUTPUT) pinMode(Green_relay, OUTPUT) pinMode(Blue_relay, OUTPUT) digitalWrite(Red_relay, LOW) digitalWrite(Green_relay, LOW) digitalWrite(Blue_relay, LOW) pinMode(s0, OUTPUT) pinMode(s1, OUTPUT) pinMode(s2, OUTPUT) pinMode(s3, OUTPUT) pinMode(out, INPUT) //----Scaling Frequency 20%-----// digitalWrite(s0, state2) digitalWrite(s1, state1) //-----------------------------// } void loop() { int redH1 = Rx1 + var int redL1 = Rx1 - var int redH2 = Rx2 + var int redL2 = Rx2 - var int redH3 = Rx3 + var int redL3 = Rx3 - var int blueH1 = Bx1 + var int blueL1 = Bx1 - var int blueH2 = Bx2 + var int blueL2 = Bx2 - var int blueH3 = Bx3 + var int blueL3 = Bx3 - var int greenH1 = Gx1 + var int greenL1 = Gx1 - var int greenH2 = Gx2 + var int greenL2 = Gx2 - var int greenH3 = Gx3 + var int greenL3 = Gx3 - var //-----Sensing RED colour-----// digitalWrite(s2, state1) digitalWrite(s3, state1) red = pulseIn(out, state) delay(100) //------Sensing Green colour----// digitalWrite(s2, state2) digitalWrite(s3, state2) green = pulseIn(out, state) delay(100) //------Sensing Blue colour----// digitalWrite(s2, state1) digitalWrite(s3, state2) blue = pulseIn(out, state) delay(400) if(red = redL1) { if(green = greenL1) { if(blue = blueL1) { Serial.println('Detected Colour: RED') Serial.println('') digitalWrite(Red_relay, HIGH) delay(1000) } } } if(red = redL2) { if(green = greenL2) { if(blue = blueL2) { Serial.println('Detected Colour: Green') Serial.println('') digitalWrite(Green_relay, HIGH) delay(1000) } } } if(red = redL3) { if(green = greenL3) { if(blue = blueL3) { Serial.println('Detected Colour: Blue') Serial.println('') digitalWrite(Blue_relay, HIGH) delay(1000) } } } } //------Program Developed by R.GIRISH--------//

Langkah 2: Buka monitor serial, Anda akan menemukan parameter warna seperti ini:

Bawa objek warna (kertas berwarna lebih disukai) merah, biru dan hijau.

Langkah 3:

• Tempatkan kertas berwarna merah dekat dengan sensor TCS3200.
• Catat pembacaan R, G, B (ketiga warna) saat Anda menempatkan kertas warna merah.
• Catat juga pembacaan R, G, B untuk kertas berwarna hijau dan biru.

• CATATAN: bila Anda meletakkan salah satu dari 3 warna di depan TCS3200 catat semua bacaan merah, biru dan hijau untuk setiap kertas warna, yang harus Anda masukkan dalam program deteksi warna utama.

Langkah 4: Baca Langkah 5 dan unggah kode utama di bawah ini (program deteksi warna)

//-- -- -- -- Enter Values-- -- --// //For RED Colour: int Rx1 = 92 int Gx1 = 240 int Bx1 = 53 //For GREEN Colour: int Rx2 = 228 int Gx2 = 163 int Bx2 = 64 //For BLUE Colour: int Rx3 = 300 int Gx3 = 144 int Bx3 = 45 //-- -- -- -- -- -- -- -- -- -- -- //

Langkah 5: Dalam kode di atas, ganti nilai dengan nilai Anda yang baru-baru ini Anda catat:

//--------Program Developed by R.GIRISH-------// const int s0 = 4 const int s1 = 5 const int s2 = 6 const int s3 = 7 const int out = 8 int frequency1 = 0 int frequency2 = 0 int frequency3 = 0 int state = LOW int state1 = LOW int state2 = HIGH void setup() { Serial.begin(9600) pinMode(s0, OUTPUT) pinMode(s1, OUTPUT) pinMode(s2, OUTPUT) pinMode(s3, OUTPUT) pinMode(out, INPUT) //----Scaling Frequency 20%-----// digitalWrite(s0, state2) digitalWrite(s1, state1) //-----------------------------// } void loop() ') delay(100) //------Sensing Blue colour----// digitalWrite(s2, state1) digitalWrite(s3, state2) frequency3 = pulseIn(out, state) Serial.print(' Blue = ') Serial.println(frequency3) delay(100) Serial.println('-----------------------------') delay(400) //---------Program Developed by R.GIRISH---------//

Ketika Anda meletakkan kertas berwarna merah pada sensor Anda akan mendapatkan tiga bacaan, misalnya R = 56 | G = 78 | B = 38.

Tempatkan nilai 56, 78, 38 seperti ini:

// Untuk Warna MERAH:
int Rx1 = 56
int Gx1 = 78
int Bx1 = 38

Begitu pula untuk dua warna lainnya dan upload kodenya.

Step6:

• Buka monitor serial dan letakkan salah satu dari tiga warna di depan sensor.
• Anda akan melihat deteksi warna pada monitor serial secara bersamaan saat relai warna yang sesuai diaktifkan.

• Anda telah menekan tombol reset pada papan Arduino untuk menonaktifkan relai.

CATATAN 1: Sirkuit mungkin tidak mendeteksi warna, jika Anda menempatkan bayangan / warna yang sedikit berbeda pada objek / kertas MERAH, HIJAU, BIRU, setelah kalibrasi. Dengan kata lain, Anda harus menggunakan objek / kertas dengan warna yang sama persis untuk mendeteksi warna dan memicu relai.

CATATAN 2: Cahaya sekitar dapat memengaruhi deteksi warna, jadi, pertahankan cahaya yang konsisten di dekat sensor saat mengkalibrasi dan juga saat mendeteksi warna.

Prototipe penulis:

Prototipe sensor warna Arduino

Jika Anda memiliki pertanyaan tentang proyek ini, silakan ungkapkan di bagian komentar, Anda dapat menerima balasan cepat.




Previous: Menggunakan Sensor TSOP17XX dengan Frekuensi yang Disesuaikan Berikutnya: Rangkaian Pengisi Daya Baterai Ganda menggunakan Dump Capacitor