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

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


Датчик располагают параллельно поверхности измеряемого предмета на расстоянии не более 10 мм. Четыре светодиода на плате подсвечивают место измерения.
| Питание | 2,7–5,5 В |
| Масштабирование выходной частоты | 2 %, 20 %, 100 % |
| Цветовые фильтры | красный, зелёный, синий, без фильтра |
| Погрешность выходной частоты | не более 0,2 % |
| Число фотодиодов | 64 (4x16) |
| Расстояние до объекта | до 10 мм |
Управляющие выводы
Входы S0 и S1 задают масштаб частоты на выходе OUT, а S2 и S3 выбирают активный фильтр. В примере использован масштаб 20 %: на S0 подаётся единица, на S1 — ноль.


В тестовом скетче выводы 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, максимально близких к эталонным.