Arduino Kodlu Renk Dedektör Devresi

Sorunları Ortadan Kaldırmak Için Enstrümanımızı Deneyin





Bu yazıda, rengi algılayabilen ve ilgili atanmış röleleri tetikleyebilen bir devre inşa edeceğiz. Bu proje TCS3200 renk sensörü ve Arduino kartı kullanılarak gerçekleştirilir.

TCS3200 ile Renk Algılama

Önceki makaleyi okumadıysanız, lütfen tartıştığımız yerden devam edin. TCS3200 kullanarak renk algılamanın temelleri



Bir devrenin renklere göre harekete geçmesini istiyorsanız, önerilen proje faydalı olabilir. Çeşitli endüstriyel alanlarda renk algılamaya dayalı uygulama okyanusları vardır.

Bu proje, farklı renkleri algılamak ve röleleri tetiklemek için renk sensörünü nasıl programlayabileceğimize dair bir fikir verecektir.



Bu proje için ana renkleri ele alacağız: KIRMIZI, YEŞİL ve MAVİ. Bu proje bu üç rengi ayırt edebilir ve her bir renk için her bir röle olmak üzere röleleri tetikleyebilir.

TCS3200 herhangi bir sayıda rengi algılayabilir, ancak projeyi anlaşılır kılmak ve program kodunu basit tutmak için yalnızca ana renklere odaklanıyoruz.

Devre şeması:

Arduino ve TCS3200 renk sensörünü arayüzleme

Yukarıdaki şema, Arduino ve TCS3200 renk sensörünün arayüzünü oluşturmak içindir.

Röle bağlantıları:

Arduino ve TCS3200 renk sensörünün röle bağlantıları

Arduino'ya en az 500mA ile 9V adaptör ile güç verin. Transistör, Arduino'nun GPIO pinleri röleye yeterli akımı sağlayamadığından röle için amplifikatör görevi görür.

1N4007 diyotu, röle bobinindeki yüksek voltaj yükselmelerini emecek ve yarı iletken bileşenlerin geri kalanını koruyacaktır.

Bu, donanımı tamamlıyor.

Şimdi kodu nasıl yükleyeceğinizi ve ihtiyaçlarınız için sensörü nasıl kalibre edeceğinizi görelim.
Renk hassasiyeti modülden modüle değişebilir ve ortam ışığı renk hassasiyetini büyük ölçüde değiştirebilir.

Tüm TCS3200 sensörlerinin imalat sırasında bazı farklılıkları vardır, şu anda sahip olduğunuz sensörün renk parametrelerini ölçmeniz gerekir, böylece bu parametreler rengi daha doğru algılamak için kodda kullanılabilir.

Sensörünüz için okumaları kalibre etmek ve optimize etmek için aşağıdaki adımları tam olarak izleyin:

Adım 1: Aşağıdaki kodu, tamamlanmış donanım kurulumuyla birlikte yükleyin.

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

Adım 2: Seri monitörü açın, aşağıdaki gibi renk parametrelerini bulacaksınız:

Renkli nesneyi (renkli kağıt tercih edilir) kırmızı, mavi ve yeşil getirin.

Aşama 3:

• Kırmızı renkli kağıdı TCS3200 sensörünün yakınına yerleştirin.
• Kırmızı renkli kağıdı yerleştirirken R, G, B okumalarını (üç rengin tümü) not edin.
• Benzer şekilde yeşil ve mavi renkli kağıtlar için R, G, B okumalarını not edin.

• NOT: TCS3200'ün önüne 3 renkten herhangi birini yerleştirdiğinizde, ana renk algılama programına girmeniz gereken her renkli kağıt için tüm kırmızı, mavi ve yeşil okumaları not edin.

4. Adım: 5. Adımı okuyun ve aşağıdaki ana kodu yükleyin (renk algılama programı)

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

Adım 5: Yukarıdaki kodda, değerleri yakın zamanda not ettiğiniz değerlerinizle değiştirin:

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

Kırmızı renkli kağıdı sensöre yerleştirdiğinizde üç ölçüm elde edersiniz, örneğin R = 56 | G = 78 | B = 38.

56, 78, 38 değerlerini şu şekilde yerleştirin:

// KIRMIZI Renk için:
int Rx1 = 56
int Gx1 = 78
int Bx1 = 38

Benzer şekilde, diğer iki renk için kodu yükleyin.

Adım6:

• Seri monitörü açın ve üç renkten herhangi birini sensörün önüne yerleştirin.
• Aynı anda seri monitörde renklerin algılandığını göreceksiniz, ilgili renk rölesi aktif hale gelir.

• Röleyi devre dışı bırakmak için Arduino kartındaki sıfırlama düğmesine basmışsınızdır.

NOT 1: Kalibrasyondan sonra KIRMIZI, YEŞİL, MAVİ renkli nesnenin / kağıdın biraz farklı tonunu / tonunu yerleştirirseniz devre renkleri algılamayabilir. Diğer bir deyişle, renkleri algılamak ve röleyi tetiklemek için tamamen aynı renkli nesne / kağıdı kullanmanız gerekir.

NOT 2: Ortam ışığı renk algılamasını etkileyebilir, bu nedenle lütfen kalibre ederken ve ayrıca renkleri tespit ederken sensörün yanında tutarlı bir ışık tutun.

Yazarın prototipi:

Arduino renk sensörü prototipi

Bu proje ile ilgili herhangi bir sorunuz varsa, lütfen yorum bölümünde belirtiniz, hızlı bir cevap alabilirsiniz.




Önceki: TSOP17XX Sensörlerini Özelleştirilmiş Frekanslarla Kullanma Sonraki: Boşaltma Kapasitörünü Kullanan Çoklu Akü Şarj Devresi