Верига за цветен детектор с код Arduino

Опитайте Нашия Инструмент За Премахване На Проблемите





В този пост ще изградим верига, която може да открива цвят и да задейства съответните зададени релета. Този проект е реализиран с помощта на цветен сензор TCS3200 и платка Arduino.

Color Sensing от TCS3200

Ако не сте прочели предишната статия, моля, преминете през нея, където обсъдихме основи на цветовото усещане с помощта на TCS3200



Предложеният проект може да е полезен, ако искате схема да предприеме действия въз основа на цветовете. Има океани от приложения, базирани на откриване на цветове в различни индустриални области.

Този проект ще даде представа за това как можем да програмираме цветния сензор да открива различни цветове и да задейства релетата.



Ще разгледаме основните цветове: ЧЕРВЕН, ЗЕЛЕН и СИН за този проект. Този проект може да прави разлика между тези три цвята и да задейства релетата, всяко реле за всеки цвят.

TCS3200 може да открива произволен брой цветове, но за да бъде проектът разбираем и за да е прост програмният код, ние се концентрираме само върху основните цветове.

Електрическа схема:

свързване на цветния сензор Arduino и TCS3200

Горната схема е за свързване на цветния сензор Arduino и TCS3200.

Релейни връзки:

релейни връзки на цветния сензор Arduino и TCS3200

Захранвайте Arduino с 9V адаптер с поне 500mA. Транзисторът действа като усилвател за реле, тъй като GPIO изводите на Arduino не могат да осигурят достатъчен ток за реле.

Диодът 1N4007 ще абсорбира пикове с високо напрежение от релейната намотка, защитавайки останалите полупроводникови компоненти.

Това завършва хардуера.

Сега нека видим как да качите кода и да калибрирате сензора според вашите изисквания.
Цветовата чувствителност може да варира в зависимост от модул, а околната светлина може драстично да промени чувствителността на цветовете.

Всички сензори TCS3200 имат някои вариации по време на производството, трябва да измерите цветовите параметри за сензора, който в момента притежавате, така че тези параметри да могат да се използват в кода за по-точно откриване на цвета.

За да калибрирате и оптимизирате показанията за вашия сензор, следвайте стъпките точно:

Стъпка 1: Качете следния код с завършена хардуерна настройка.

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

Стъпка 2: Отворете серийния монитор, ще намерите цветовите параметри по следния начин:

Носете цветния обект (предпочитана е цветна хартия) червено, синьо и зелено.

Стъпка 3:

• Поставете червената хартия близо до сензора TCS3200.
• Запишете показанията R, G, B (и трите цвята), докато поставяте червената цветна хартия.
• По същия начин запишете R, G, B четене за хартия в зелен и син цвят.

• ЗАБЕЛЕЖКА: когато поставите някой от трите цвята пред TCS3200, запишете всички червени, сини и зелени показания за всяка цветна хартия, които трябва да въведете в основната програма за откриване на цветове.

Стъпка 4: Прочетете Стъпка 5 и качете основния код по-долу (програма за откриване на цвят)

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

Стъпка 5: В горния код заменете стойностите с вашите стойности, които сте записали наскоро:

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

Когато поставите червената хартия върху сензора, ще получите три показания, например R = 56 | G = 78 | B = 38.

Поставете стойностите 56, 78, 38 по следния начин:

// За ЧЕРВЕН Цвят:
int Rx1 = 56
int Gx1 = 78
int Bx1 = 38

По същия начин, за другите два цвята и качете кода.

Стъпка 6:

• Отворете серийния монитор и поставете някой от трите цвята пред сензора.
• Ще видите разпознаването на цветове на серийния монитор едновременно със съответното цветно реле се активира.

• Натиснете бутона за нулиране на платката Arduino, за да деактивирате релето.

ЗАБЕЛЕЖКА 1: Веригата може да не разпознае цветовете, ако поставите малко по-различен нюанс / оттенък на ЧЕРВЕН, ЗЕЛЕН, СИН цвят цветни предмети / хартия след калибриране. С други думи, трябва да използвате точно едноцветни обект / хартия, за да откривате цветове и да задействате реле.

ЗАБЕЛЕЖКА 2: Околната светлина може да повлияе на разпознаването на цветовете, така че, моля, поддържайте постоянна светлина близо до сензора, докато калибрирате, а също и докато откривате цветове.

Прототип на автора:

Прототип на цветен сензор Arduino

Ако имате някакви въпроси относно този проект, моля изразете в раздела за коментари, може да получите бърз отговор.




Предишен: Използване на сензори TSOP17XX с персонализирани честоти Напред: Многократна верига за зарядно устройство, използваща кондензатор за изхвърляне