Как работает датчик цвета TCS3200 и как его подключить к Arduino


Датчик цвета (color sensor) является простым в применении устройством, которое можно использовать для определения цвета интересующего объекта. Он находит широкое применение в промышленности для задач сортировки и упаковки различных объектов. В промышленности используются достаточно дорогие модели датчиков цвета, для проектов, выполняемых своими руками (DIY) вполне подойдет экономичный вариант датчика цвета TCS3200.

Внешний вид подключения датчика цвета TCS3200 к Arduino Uno

В данной статье мы рассмотрим основные принципы работы датчика цвета TCS3200 и его подключение к плате Arduino Uno.

Необходимые компоненты

  1. Плата Arduino Uno (купить на AliExpress).
  2. Датчик цвета TCS3200 (купить на AliExpress).
  3. Соединительные провода.

Датчика цвета TCS3200

Распиновка датчика цвета TCS3200

Датчик цвета TCS3200 имеет 8 контактов: VCC, OUT, S3, S2, S1, S0, OUT, 0E и GND. Все эти контакты являются цифровыми, за исключением контактов VCC и Ground. Распиновка (назначение контактов) датчика цвета TCS3200 приведена на следующем рисунке.

Распиновка (назначение контактов) датчика цвета TCS3200

VCC – контакт для подачи питания на датчик, можно использовать питающее напряжение 5V или 3.3V.

S0 и S1 – эти контакты отвечают за масштабирование выходной частоты датчика. Можно установить масштабирование равное 2%, 20% или 100%.

S2 и S3 – данные контакты используются для выбора массива цвета датчика. При помощи выбора правильного массива цвета датчик производит идентификацию цвета.

OE – данный контакт называется Output Enable или Disable pin. Изначально на этот контакт подается низкий уровень напряжения, для отключения (disable) датчика на этот контакт необходимо подать импульс высокого (high) уровня.

OUT – выходной контакт датчика. Когда датчик идентифицирует определенный цвет, частота сигнала на этом контакте изменяется. Анализируя изменение ширины импульса на этом контакте можно определить идентифицированный датчиком цвет.

Ground – общий контакт (земля) датчика цвета, его необходимо подключить к контакту ground платы Arduino.

Как работает датчик цвета

Датчик цвета использует основные принципы света для идентификации цвета объекта. Как известно, белый цвет является комбинацией трех основных цветов – красного, зеленого и синего. Каждый из этих цветов имеет различную длину волны. Когда свет падает на какую либо поверхность, то в зависимости от свойств материала этой поверхности он либо отражается, либо поглощается ею. Когда отраженный свет попадает в наш глаз мы в качестве результата этого процесса видим цвет поверхности.

Принцип работы датчика цвета

Теперь посмотрим на представленную gif картинку, демонстрирующую принцип работы датчика цвета. Если мы подаем сигналы High и low на контакты S0 и S1 датчика, то масштабирование выходной частоты датчика устанавливается равным 20%. Это означает что датчик будет работать на частоте 200 кГц. В этом режиме коэффициент заполнения (duty cycle) датчика будет оставаться на уровне 50%, но выходная частота датчика будет изменяться в зависимости от значения цвета.

Контакты S2 и S3 датчика используются для выбора массива фотодиодов. Если цвет, обнаруженный датчиком, соответствует выбранному массиву датчика, то выходная частота датчика будет увеличиваться, для остальных значений цветов значение выходной частоты будет оставаться неизменным (либо же вы увидите кратковременное (до одной минуты) ее изменение). Для более детальной информации по данному вопросу вы можете обратиться к даташиту на датчик TCS3200.

Как мы отмечали ранее, контакты S0, S1, S2 и S3 используются для настройки работы датчика в соответствии с представленными ниже таблицами.

S0 и S1 устанавливают коэффициент масштабирования выходной частоты датчика.

S0 S1 Коэффициент масштабирования выходной частоты датчика
L L Power down mode
L H Scaling Factor 2%
H L Scaling Factor 20%
H H Scaling Factor 100%

S2 и S3 устанавливают тип внутреннего фильтра.

S0 S1 Тип внутреннего фильтра
L L Красный фильтр
L H Синий фильтр
H L Нет фильтра
H H Зеленый фильтр

Компоненты датчика цвета TCS3200

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

Компоненты датчика цвета TCS3200

"Сердцем" датчика является микросхема датчика цвета TS3200, разработанная компанией TAOS (Texas Advanced Optoelectronic Solutions Inc). Также датчик содержит в своем составе 4 белых светодиода, при подаче питания на датчик они зажигаются. Эти светодиоды освещают объект, цвет которого необходимо определить. Дополнительно в своем составе датчик содержит фильтрующий конденсатор, развязывающий конденсатор и несколько резисторов. Рабочее напряжение для датчика составляет от 2.7V до 5.5V.

Наиболее часто задаваемые вопросы про датчик цвета TCS3200

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

Сколько контактов у датчика цвета?
Датчик цвета состоит из цветных фильтров, массива фотодиодов, преобразователя тока в частоту и формирователя выходного сигнала, который можно подавать непосредственно на микроконтроллер. Микросхема датчика цвета TSC3200 содержит 8 контактов и упакована в SOC корпус.

Работает ли датчик цвета в темноте?
Да, работает, поскольку в своем составе он содержит 4 ярких белых светодиода. Датчик цвета может различать цвета или измерять интенсивность отраженного света. Испуская свой собственный свет, датчик может работать даже в полной темноте и определять цвет поверхности, отражающей его свет.

Какие основные компоненты датчика цвета?
Датчик цвета содержит белый источник света для освещения поверхности. Три фильтра в его составе, чувствительные к длинам волн 580 нм, 540 нм и 450 нм, позволяют измерять интенсивность красного, зеленого и синего цветов соответственно.

Схема модуля датчика цвета TCS3200

Схема датчика цвета TCS3200 представлена на следующем рисунке.

Схема датчика цвета TCS3200

"Сердцем" данного датчика является микросхема TCS3200 и поскольку сопротивление выходного контакта данной микросхемы мало, то последовательно ему включен резистор сопротивлением 1 кОм. Также в схеме датчика присутствуют 4 светодиода с токоограничивающими резисторами 330 Ом. Дополнительно модуль датчика два подтягивающих резистора 10 кОм, которые "подтягивают" контакты S0 и S1 микросхемы датчика. Также схема содержит фильтрующий конденсатор 10 мкФ и развязывающий конденсатор 100 нФ. И еще к контакту общего провода подключены два резистора 0 Ом.

Схема проекта

Схема подключения датчика цвета TCS3200 к плате Arduino Uno представлена на следующем рисунке.

Схема подключения датчика цвета TCS3200 к плате Arduino Uno

Как видите, схема достаточно проста. Для подключения датчика цвета TCS3200 мы использовали всего 5 контактов платы Arduino Uno с номерами 8, 7, 6, 5, 4. Для подачи питания на датчик мы использовали контакты 5V и Ground платы Arduino.

Внешний вид собранной конструкции проекта приведен на следующем рисунке.

Внешний вид собранной конструкции проекта

Объяснение программы для Arduino

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.

В коде программы нам необходимо указать контакты платы Arduino, к которым подключен датчик цвета. После этого мы с помощью платы Arduino будем устанавливать различные режимы работы датчика цвета, как указано в его даташите. Если все будет работать так, как нужно, то на выходе датчика значение цвета будет закодировано в виде импульсов. Мы будем использовать функцию pulsein() Arduino чтобы измерить длительность этих импульсов и, таким образом, определить цвет.

В коде программы мы первым делом укажем контакты платы Arduino, к которым подключен датчик цвета.

Затем, в функции setup(), мы зададим режимы работы этих контактов.

Далее подадим на контакт S0 уровень high, а на контакт S1 – уровень low, этим мы установим коэффициент масштабирования выходной частоты датчика равный 20%. Также мы задействуем последовательный порт (UART) для целей отладки.

Далее, в функции void loop(), мы объявим три локальные переменные: r, g и b. В этих переменных мы будем хранить RGB значения, получаемые с датчика цвета. После этого мы запрограммируем три функции для обработки значений красного, зеленого и синего цвета. Эти значения мы и будем хранить в переменных r, g и b. Также между считываниями цвета мы будем использовать задержку 200ms чтобы у датчика цвета было время обработать данные. После получения данных с датчика цвета мы будем выводить эти значения в окно монитора последовательной связи. У нас в программе будут три условия для определения "магических" значений. Эти значения выбираются после помещения объекта несколько раз перед датчиком цвета и усреднения его выходных значений. Если эти значения будут соответствовать выходу датчика, то в окно монитора последовательной связи мы будем выводить название цвета.

Теперь рассмотрим три функции, которые будут заниматься обработкой считываемых с датчика значений. Коды всех этих функций очень похожи друг на друга, разница состоит лишь в том, каким образом настраиваются контакты  S2 и S3. Для обработки красного цвета на оба контакта S2 и S3 должен быть подан уровень low. Для обработки зеленого цвета на эти контакты должен быть подан уровень high.  А для обработки синего цвета на S2 нужно подать low, а на S3 – high. Функция pulseIn() используется для измерения длительности импульса с выхода датчика. Длительность импульса данная функция измеряет в миллисекундах – эти измеренные значения мы потом выводим в окно монитора последовательной связи.

Тестирование работы проекта

На представленном видео показано тестирование работы нашего проекта. В левой стороне картинки показана плата Arduino с подключенной к ней датчиком цвета. После этого мы помещаем перед датчиком объекты красного, зеленого и синего цвета и проверяем окно монитора последовательной связи чтобы убедиться в том, правильно ли датчик распознал цвет или нет.

Как вы можете видеть из представленной картинки, датчик успешно различает все три цвета.

Возможные проблемы при работе с датчиком цвета TCS3200

1. Если у вас возникают проблемы при работе с датчиком цвета TCS3200 первым делом проверьте рабочее напряжение датчика. Стабильное рабочее напряжение датчика должно быть в диапазоне от 2.7V до 5.5V. Подача на датчик другого значения напряжения может привести к его нестабильной работе.

2. Если при работе с датчиком возникают флуктуации выходных значений попробуйте накрыть датчик коробкой. Это уменьшит влияние внешних шумов.

3. Если у вас наблюдаются проблемы с масштабированием, проверьте правильно ли сконфигурированы контакты S0 и S1 датчика.

4. Если у вас проблемы с выходом датчика, проверьте правильно ли сконфигурированы контакты S2 и S3 датчика.

Исходный код программы (скетча)

Источник статьи

(Проголосуй первым!)
Загрузка...
194 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *