Датчик цвета TCS230: принцип работы и подключение к Arduino

Датчик цвета TCS230: принцип работы и подключение к Arduino

Модуль TCS230 переводит интенсивность красной, зелёной и синей составляющих в частоту импульсов. Разбираем выводы S0–S3, калибровку и индикатор цвета.

Как датчик различает цвета

Модуль на микросхеме TCS230 предназначен для определения цвета предмета. Микросхема содержит матрицу из 64 фотодиодов (4x16), разделённых на группы с красным, зелёным и синим фильтрами и без фильтра. Интенсивность выбранной составляющей спектра преобразуется в прямоугольный сигнал, частота которого зависит от освещённости, так что контроллеру остаётся измерить импульсы на выходе OUT поочерёдно для трёх фильтров.

Модуль датчика цвета TCS230
Преобразование интенсивности света в частоту выходного сигнала

Датчик располагают параллельно поверхности измеряемого предмета на расстоянии не более 10 мм. Четыре светодиода на плате подсвечивают место измерения.

Питание2,7–5,5 В
Масштабирование выходной частоты2 %, 20 %, 100 %
Цветовые фильтрыкрасный, зелёный, синий, без фильтра
Погрешность выходной частотыне более 0,2 %
Число фотодиодов64 (4x16)
Расстояние до объектадо 10 мм

Управляющие выводы

Входы S0 и S1 задают масштаб частоты на выходе OUT, а S2 и S3 выбирают активный фильтр. В примере использован масштаб 20 %: на S0 подаётся единица, на S1 — ноль.

Таблица выбора масштаба частоты выводами S0 и S1
Таблица выбора цветового фильтра выводами S2 и S3

В тестовом скетче выводы S0–S3 подключены к пинам Arduino 4, 5, 6 и 7, выход OUT — к пину 8. Красный фильтр включается комбинацией S2=0, S3=0, зелёный — S2=1, S3=1, синий — S2=0, S3=1. После переключения фильтра программа измеряет сигнал функцией pulseIn(pinOut, 0), выводит значение в монитор порта и выдерживает паузу 150 мс перед следующим цветом.

Калибровка

Полученные числа сами по себе цветом ещё не являются: их нужно привязать к диапазону. Для этого к датчику подносят образцы красного, зелёного и синего цвета и записывают показания на минимальном расстоянии и в удалении. В описанном опыте получились такие границы: R — 70–120, G — 120–200, B — 60–100. Точность определения зависит от того, насколько образцы близки к эталонным цветам.

Пример: индикатор цвета на RGB-светодиоде

Простейший проект — устройство, которое повторяет цвет предмета на RGB-светодиоде. Для него понадобятся:

  • плата Arduino;
  • макетная плата;
  • датчик TCS230;
  • RGB-светодиод;
  • три резистора 220 Ом;
  • провода.

Датчик подключён так же, как в тестовом скетче, а каналы светодиода — к выводам 9, 10 и 11. Для каждого фильтра измеренное значение ограничивается функцией constrain границами калибровки и пересчитывается функцией map в диапазон 255–0: чем меньше показание, тем ярче соответствующий канал. Затем три значения выдаются на светодиод через analogWrite. В листинге для зелёного канала взяты границы 100–200.

Если цвет определяется неверно

Сначала проверяют соединения датчика с платой. Если схема собрана правильно, повторяют калибровку на образцах R, G и B, максимально близких к эталонным.

← Все статьи