Круг детектора боја са Ардуино кодом

Испробајте Наш Инструмент За Елиминисање Проблема





У овом посту ћемо конструисати коло које може детектовати боју и активирати одговарајуће додељене релеје. Овај пројекат је остварен помоћу сензора у боји ТЦС3200 и Ардуино плоче.

Осетљивост боја ТЦС3200

Ако нисте прочитали претходни чланак, прођите кроз њега тамо где смо разговарали о њему основе осетљивости боја помоћу ТЦС3200



Предложени пројекат може бити користан ако желите да круг предузме акцију на основу боја. Постоје океани примена заснованих на детекцији боја у разним индустријским областима.

Овај пројекат ће дати увид у то како можемо програмирати сензор у боји да детектује различите боје и покреће релеје.



Размотрићемо основне боје: ЦРВЕНУ, ЗЕЛЕНУ и ПЛАВУ за овај пројекат. Овај пројекат може разликовати ове три боје и покретати релеје, сваки релеј за сваку боју.

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

Кружни дијаграм:

повезивање сензора у боји Ардуино и ТЦС3200

Горња шема је за повезивање сензора у боји Ардуино и ТЦС3200.

Релејни прикључци:

релејне везе Ардуино и ТЦС3200 сензора у боји

Напајајте Ардуино помоћу 9В адаптера са најмање 500мА. Транзистор делује као појачало за релеј, јер Ардуино-ови ГПИО пинови не могу пружити довољну струју за релеј.

Диода 1Н4007 ће апсорбовати високонапонске шиљке из завојнице релеја, штитећи остале полупроводничке компоненте.

То закључује хардвер.

Сада да видимо како да отпремите код и калибришете сензор према вашим захтевима.
Осетљивост боје може се разликовати од модула до модула, а амбијентално светло може драстично променити осетљивост боје.

Сви ТЦС3200 сензори имају неке варијације током израде, морате измерити параметре боје за сензор који тренутно поседујете, тако да ти параметри могу да се користе у коду за тачније откривање боје.

Да бисте калибрисали и оптимизовали очитавања за ваш сензор, следите тачно кораке:

Корак 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:

• Поставите папир у црвеној боји близу сензора ТЦС3200.
• Забележите очитања Р, Г, Б (све три боје) док постављате папир у црвеној боји.
• На сличан начин забележите Р, Г, Б очитање за зелене и плаве папире у боји.

• НАПОМЕНА: када ставите било коју од 3 боје испред ТЦС3200, забележите сва црвена, плава и зелена очитавања за сваки папир у боји, које треба да унесете у главни програм за детекцију боја.

Корак 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---------//

Када бисте поставили папир црвене боје на сензор, добили бисте три очитавања, на пример Р = 56 | Г = 78 | Б = 38.

Поставите вредности 56, 78, 38 овако:

// За ЦРВЕНУ боју:
инт Рк1 = 56
инт Гк1 = 78
инт Бк1 = 38

Слично томе, за друге две боје и отпремите код.

Корак 6:

• Отворите серијски монитор и ставите било коју од три боје испред сензора.
• Видећете откривање боја на серијском монитору истовремено када се активира одговарајући релеј у боји.

• Притисните тастер за ресетовање на плочи Ардуино да бисте деактивирали релеј.

НАПОМЕНА 1: Коло можда неће препознати боје ако након калибрације ставите мало другачију нијансу / нијансу ЦРВЕНЕ, ЗЕЛЕНЕ, ПЛАВЕ боје предмета / папира. Другим речима, за откривање боја и за активирање релеја морате користити потпуно исте боје предмета / папира.

НАПОМЕНА 2: Амбијентална светлост може утицати на детекцију боја, зато одржавајте константно светло у близини сензора током калибрације и такође док детектујете боје.

Ауторски прототип:

Прототип сензора за боје Ардуино

Ако имате било каквих питања у вези са овим пројектом, наведите их у одељку за коментаре, можда ћете добити брзи одговор.




Претходно: Коришћење ТСОП17КСКС сензора са прилагођеним фреквенцијама Следеће: Више кругова пуњача батерија помоћу истовара кондензатора