Litar Pengesan Warna dengan Kod Arduino

Cuba Instrumen Kami Untuk Menghapuskan Masalah





Dalam catatan ini kita akan membina litar yang dapat mengesan warna dan mencetuskan geganti yang ditentukan. Projek ini dilaksanakan dengan menggunakan sensor warna TCS3200 dan papan Arduino.

Pewarnaan Warna oleh TCS3200

Sekiranya anda belum membaca artikel sebelumnya, sila baca di mana kita telah membincangkannya asas penginderaan warna menggunakan TCS3200



Projek yang dicadangkan mungkin berguna, jika anda mahu litar mengambil tindakan berdasarkan warna. Terdapat lautan aplikasi berdasarkan pengesanan warna di berbagai bidang industri.

Projek ini akan memberi gambaran bagaimana kita dapat memprogram sensor warna untuk mengesan warna yang berbeza dan memicu relay.



Kami akan mempertimbangkan warna utama: MERAH, HIJAU dan BIRU untuk projek ini. Projek ini dapat membezakan antara tiga warna ini dan mencetuskan relay, setiap relay untuk setiap warna.

TCS3200 dapat mengesan sejumlah warna, tetapi untuk memastikan projek dapat difahami dan untuk memastikan kod program tetap sederhana, kami hanya memusatkan perhatian pada warna utama.

Rajah Litar:

antara muka sensor warna Arduino dan TCS3200

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

Sambungan geganti:

geganti menghubungkan sensor warna Arduino dan TCS3200

Kuasakan Arduino dengan penyesuai 9V dengan sekurang-kurangnya 500mA. Transistor bertindak sebagai penguat untuk relay kerana pin GPIO Arduino tidak dapat memberikan arus yang mencukupi untuk relay.

Diod 1N4007 akan menyerap lonjakan voltan tinggi dari gegelung geganti, melindungi sisa komponen semikonduktor.

Itu menyimpulkan perkakasan.

Sekarang mari kita lihat cara memuat naik kod dan mengkalibrasi sensor untuk keperluan anda.
Kepekaan warna dapat berbeza dari modul ke modul dan cahaya sekitar dapat mengubah kepekaan warna secara drastik.

Semua sensor TCS3200 memiliki beberapa variasi ketika membuat, anda harus mengukur parameter warna untuk sensor yang Anda miliki saat ini, sehingga parameter tersebut dapat digunakan dalam kod untuk mengesan warna dengan lebih tepat.

Untuk menentukur dan mengoptimumkan bacaan agar sensor anda ikuti, langkahnya tepat:

Langkah 1: Muat naik kod berikut dengan persediaan perkakasan 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 bersiri, anda akan dapati parameter warna seperti ini:

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

Langkah 3:

• Letakkan kertas berwarna merah dekat dengan sensor TCS3200.
• Catat bacaan R, G, B (ketiga-tiga warna) semasa anda meletakkan kertas warna merah.
• Perhatikan juga bacaan R, G, B untuk kertas warna hijau dan biru.

• CATATAN: apabila anda meletakkan salah satu daripada 3 warna di hadapan nota TCS3200, catat semua bacaan merah, biru dan hijau untuk setiap kertas warna, yang perlu anda masukkan dalam program pengesanan warna utama.

Langkah 4: Baca Langkah 5 dan muat naik kod utama di bawah ini (program pengesanan 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 kod di atas ganti nilai dengan nilai anda yang anda catat baru-baru ini:

//--------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---------//

Apabila anda meletakkan kertas berwarna merah pada sensor anda akan mendapat tiga bacaan, misalnya R = 56 | G = 78 | B = 38.

Letakkan nilai 56, 78, 38 seperti ini:

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

Begitu juga untuk dua warna lain dan muat naik kodnya.

Langkah 6:

• Buka monitor bersiri dan letakkan salah satu dari tiga warna di depan sensor.
• Anda akan melihat pengesanan warna pada monitor bersiri serentak relay warna yang sesuai diaktifkan.

• Anda mempunyai butang tekan semula pada papan Arduino untuk menyahaktifkan geganti.

CATATAN 1: Litar mungkin tidak dapat mengesan warna, jika anda meletakkan warna / warna yang sedikit berbeza dari MERAH, HIJAU, objek / kertas berwarna BIRU, setelah ditentukur. Dengan kata lain, anda mesti menggunakan objek / kertas berwarna yang sama untuk mengesan warna dan mencetuskan relay.

CATATAN 2: Cahaya ambien dapat mempengaruhi pengesanan warna, jadi, jaga cahaya yang konsisten di dekat sensor semasa menentukur dan juga ketika mengesan warna.

Prototaip pengarang:

Prototaip sensor warna Arduino

Sekiranya anda mempunyai pertanyaan mengenai projek ini, sila nyatakan di bahagian komen, anda mungkin akan mendapat balasan cepat.




Sebelumnya: Menggunakan Sensor TSOP17XX dengan Frekuensi Tersuai Seterusnya: Litar Pengisi Bateri Berganda menggunakan Dump Capacitor