Датчик цвета TCS230 Датчик TCS230 используется для определения цвета объекта на расстоянии до 10 мм.
Датчик умеет распознавать 4 цвета:
- Красный
- Синий
- Зеленый
- Белый
В качестве чувствительного элемента используется микросхема TCS230, которая преобразует интенсивность цветового спектра в выходной меандр (50% ) различной частоты. Чем выше частота выходного сигнала, тем ниже интенсивность цветового спектра.
В цветовой модели RGB, каждый цвет можно представить в виде комбинации трех цветов: R (красный), G (зеленый) , B (синий). Поэтому для определения цвета объекта необходимо измерять три спектра: красный, синий, зелёный. Микросхема TCS230 состоит из массива фотодиодов 8x8, 16 фотодиодов имеют голубой фильтр, 16 фотодиодов – зеленый фильтр, 16 фотодиодов – красный фильтр и 16 фотодиодов без фильтра. Датчик позволяет устанавливать фильтр (подачей комбинации цифровых сигналов) для измерения каждого компонента спектра R, G, B.
На корпусе датчика расположено четыре светодиода – они используются для подсветки места измерения. Чтобы измерения были корректны, датчик нужно ставить на светодиоды параллельно к объекту измерения.
Характеристики. Для определения цвета объекта, датчик 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);
Описание датчика цвета TCS230 PDF