Модуль распознавания цвета TCS230
Датчик TCS230 используется для определения цвета объекта на расстоянии до 10 мм.
Датчик умеет распознавать 4 цвета:
- Красный
- Синий
- Зеленый
- Белый
В качестве чувствительного элемента используется микросхема TCS230, которая преобразует интенсивность цветового спектра в выходной меандр (50% ) различной частоты. Чем выше частота выходного сигнала, тем ниже интенсивность цветового спектра.
В цветовой модели RGB, каждый цвет можно представить в виде комбинации трех цветов: R (красный), G (зеленый) , B (синий). Поэтому для определения цвета объекта необходимо измерять три спектра: красный, синий, зелёный. Микросхема TCS230 состоит из массива фотодиодов 8x8, 16 фотодиодов имеют голубой фильтр, 16 фотодиодов – зеленый фильтр, 16 фотодиодов – красный фильтр и 16 фотодиодов без фильтра. Датчик позволяет устанавливать фильтр (подачей комбинации цифровых сигналов) для измерения каждого компонента спектра R, G, B.
На корпусе датчика расположено четыре светодиода – они используются для подсветки места измерения. Чтобы измерения были корректны, датчик нужно ставить на светодиоды параллельно к объекту измерения.
Характеристики.
- высокое разрешение конверсии света в частоту;
- программируемые цвета и настройка выходной частоты;
- работа напрямую с микроконтроллером;
- напряжение питания датчика: 2,7 – 5,5 В;
- функция автоматического отключения питания;
- малая погрешность выходной частоты: 0,2\%;
- стабильный температурный коэффициент: 200 ppm/°C (частиц на миллион при 1 градусе Цельсия);
- габариты: 31,3 х 24,2 х 18,5 мм;
- вес: 4 г;
- цвет: черный.
Подключение.
Датчик распознавания цвета TCS230 имеет две штыревые колодки контактов по четыре контакта на каждую.
Первая колодка:
- GND – земля;
- OE – контакт включения;
- S1, S0 – настройка масштабирования частоты импульсов.
Вторая колодка:
- S3, S2 – входной сигнал настройки фильтра;
- OUT – выходная частота;
- VCC – напряжение питания.
Для определения цвета объекта, датчик TCS230 необходимо подключить к микроконтроллеру. Подачей сигналов на контакты S0, S1 устанавливаем масштабирование частоты импульсов на выходе OUT датчика:
Подачей сигналов на контакты S2, S3 устанавливаем фильтр измерения спектра:
Схема подключения датчика к плате Arduino:
И скетч для определения компонентов цвета R, G, B для измеряемого объекта:
//Перечисление Colours – RED,GREEN,BLUE and ClEAR
enum Colours {RED,GREEN,BLUE,CLEAR};
// пины Arduino для подключения контактов s2, s3, OUT датчика
#define s2Pin 2
#define s3Pin 3
#define outPin 4
void setup()
{
// запуск последовательного порта
Serial.begin(9600);
// настройка контактов s2, s3, OUT в режим OUTPUT
pinMode(s2Pin, OUTPUT); //Pin Mode s2Pin as Output
pinMode(s3Pin, OUTPUT); //Pin Mode s2Pin as Output
pinMode(outPin, INPUT); //Pin Mode s2Pin as Input
}
void loop()
{
Serial.print(ReadColour(RED));
// Вывод данных R, G, B в последовательный порт
Serial.print(" : ");
Serial.print(ReadColour(GREEN));
Serial.print(" : ");
Serial.print(ReadColour(BLUE));
Serial.print(" : ");
Serial.println(ReadColour(CLEAR));
}
// Функция определения интенсивности выбранногот фильтра
byte ReadColour(byte Colour)
{
switch(Colour)
{
case RED:
digitalWrite(s2Pin, LOW);
digitalWrite(s3Pin, LOW);
break;
case GREEN:
digitalWrite(s2Pin, HIGH);
digitalWrite(s3Pin, HIGH);
break;
case BLUE:
digitalWrite(s2Pin, LOW);
digitalWrite(s3Pin, HIGH);
break;
case CLEAR:
digitalWrite(s2Pin, HIGH);
digitalWrite(s3Pin, LOW);
break;
}
// масштабирование к интервалу 0 - 255
return map(pulseIn(outPin, HIGH), 30, 2500, 255, 0);