Схема цветового детектора с кодом Arduino

Попробуйте наш инструмент устранения неполадок





В этом посте мы собираемся построить схему, которая может определять цвет и запускать соответствующие назначенные реле. Этот проект реализован с использованием цветового датчика TCS3200 и платы Arduino.

Определение цвета с помощью TCS3200

Если вы не читали предыдущую статью, просмотрите ее там, где мы обсуждали основы распознавания цвета с помощью TCS3200



Предлагаемый проект может быть полезен, если вы хотите, чтобы схема действовала на основе цветов. Существует множество приложений, основанных на обнаружении цвета в различных областях промышленности.

Этот проект даст представление о том, как мы можем запрограммировать датчик цвета на обнаружение разных цветов и запуск реле.



Мы рассмотрим основные цвета: КРАСНЫЙ, ЗЕЛЕНЫЙ и СИНИЙ для этого проекта. Этот проект может различать эти три цвета и запускать реле, каждое реле для каждого цвета.

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

Принципиальная электрическая схема:

подключение датчика цвета Arduino и TCS3200

Вышеупомянутая схема предназначена для сопряжения цветового датчика Arduino и TCS3200.

Подключение реле:

реле подключения датчика цвета Arduino и TCS3200

Подайте питание на Arduino с помощью адаптера 9 В с током не менее 500 мА. Транзистор действует как усилитель для реле, поскольку контакты 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 | В = 38.

Поместите значения 56, 78, 38 следующим образом:

// Для КРАСНОГО цвета:
интервал Rx1 = 56
интервал Gx1 = 78
интервал Bx1 = 38

Аналогично для двух других цветов и загружаем код.

Шаг 6:

• Откройте последовательный монитор и поместите любой из трех цветов перед датчиком.
• Вы увидите обнаружение цветов на последовательном мониторе одновременно с активацией соответствующего цветового реле.

• Вы должны нажать кнопку сброса на плате Arduino, чтобы отключить реле.

ПРИМЕЧАНИЕ 1: Схема может не определять цвета, если после калибровки вы поместите немного другой оттенок / оттенок КРАСНОГО, ЗЕЛЕНОГО, СИНЕГО цветного объекта / бумаги. Другими словами, вы должны использовать объект / бумагу одного цвета для определения цветов и срабатывания реле.

ПРИМЕЧАНИЕ 2: Окружающий свет может влиять на определение цвета, поэтому, пожалуйста, поддерживайте постоянный свет рядом с датчиком во время калибровки, а также во время определения цветов.

Авторский прототип:

Прототип датчика цвета Arduino

Если у вас есть какие-либо вопросы по этому проекту, пожалуйста, укажите в разделе комментариев, вы можете получить быстрый ответ.




Предыдущая: Использование датчиков TSOP17XX с настраиваемыми частотами Далее: Схема зарядного устройства для нескольких батарей с использованием конденсатора сброса