Перейти к содержанию

Датчик цвета Ардуино подключение TCS230

Датчик цвета Ардуино подключение TCS230

Датчик определения цвета Arduino TCS230 способен распознавать 4 цвета и преобразует интенсивность цветового спектра в сигнал различной частоты. Рассмотрим устройство датчика распознавания цвета rgb, схему подключения к Arduino Uno и представим несколько примеров программ (скетчей) для использования сенсора с выводом информации о цвете объекта (поверхности) на последовательный порт Arduino IDE.

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

  • Arduino Uno / Arduino Nano / Arduino Mega
  • датчик цвета TCS230
  • светодиоды и резисторы
  • коннекторы

Дополнительные материалы на эту тему:

  1. Как подключить RGB светодиод к Ардуино
  2. Датчик ультрафиолетового излучения GUVA S12SD
  3. Подключение датчика жестов APDS-9960 к Ардуино

В цветовой палитре RGB любой цвет может быть представлен, как комбинация трех основных цветов: красного (Red), зеленого (Green) и синего (Blue). Поэтому для определения цвета необходимо измерить красный, синий и зеленый спектр. В качестве сенсора используется модуль TCS230, состоящий из массива фотодиодов 8×8 — 16 фотодиодов для трех цветов и еще 16 фотодиодов работают без фильтра.

TCS230 Arduino характеристики, распиновка

TCS230 Arduino характеристики, распиновка

Характеристики TCS230 (datasheet)

  • Напряжение питания: от 2,7 В до 5,5 В
  • Преобразование интенсивности света в частоту с высоким разрешением

Датчик используется для определения цвета объекта на максимальном расстоянии до 10 мм. Он оснащен четырьмя светодиодами (LED), которые освещают место измерения. На задней стороне датчика находятся контакты, через которые модуль подключается к плате Ардуино или Raspberry. Контакты «S0» и «S1» на плате аналогового сенсора используются для масштабирования частоты импульсов на выходе «OUT» модуля TCS230.

Как подключить датчик цвета TCS230 к Ардуино

Как подключить датчик цвета TCS230 к Ардуино

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

Скетч для датчика определения цвета TCS230


#define s2  2
#define s3  3
#define out 4

byte red = 0;
byte green = 0;
byte blue = 0;

void setup() {
  Serial.begin(9600);
 
  pinMode(s2, OUTPUT);
  pinMode(s3, OUTPUT);
  pinMode(out, INPUT);
} 
 
void loop() { 
  color();

  Serial.print(" RED: " + String(red));
  Serial.print(" GREEN: " + String(green));
  Serial.println(" BLUE: " + String(blue));
 
  delay(500);
}
 
void color() {
  digitalWrite(s2, LOW);
  digitalWrite(s3, LOW);
  red = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);

  digitalWrite(s3, HIGH);
  blue = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);

  digitalWrite(s2, HIGH);
  green = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH); 
}

Подключение датчика цвета Ардуино и светодиодов

Подключение датчика цвета Ардуино и светодиодов

После загрузки следующей программы в микроконтроллер, откройте последовательный порт, там вы увидите значения для каждого из трех RGB цветов. Сообщение будет указывать, какой цвет был определен сенсором, когда датчик поднесем к образцу. Следует отметить, что если цветовое сообщение не соответствует реальному цвету, необходимо изменить значения в условном операторе if, подогнав их под нужное значения RGB.

Скетч для датчика распознавания цвета TCS230

#define s2  2
#define s3  3
#define out 4

byte red = 0;
byte green = 0;
byte blue = 0;

void setup() {
  Serial.begin(9600);
 
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);
 
  pinMode(s2, OUTPUT);
  pinMode(s3, OUTPUT);
  pinMode(out, INPUT);
} 
 
void loop() { 
  color();

  Serial.print(" RED: " + String(red));
  Serial.print(" GREEN: " + String(green));
  Serial.println(" BLUE: " + String(blue));

  if(red > 60 && blue > 90 && green > 90) {
    Serial.println("RED COLOR");
    digitalWrite(10, HIGH);
    digitalWrite(11, LOW);
    digitalWrite(12, LOW);
  }

  if(red > 60 && blue > 90 && green > 90) {
    Serial.println("GREEN COLOR");
    digitalWrite(10, LOW);
    digitalWrite(11, HIGH);
    digitalWrite(12, LOW);
  }

  if(red > 60 && blue > 90 && green > 90) {
    Serial.println("BLUE COLOR");
    digitalWrite(10, LOW);
    digitalWrite(11, LOW);
    digitalWrite(12, HIGH);
  }
 
  delay(500);
}
 
void color() {
  digitalWrite(s2, LOW);
  digitalWrite(s3, LOW);
  red = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);

  digitalWrite(s3, HIGH);
  blue = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);

  digitalWrite(s2, HIGH);
  green = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH); 
}

Заключение. Распознавание цвета с помощью Ардуино имеет множество реальных применений и может быть очень полезно, когда может быть выполнена с помощью такого недорогого решения, как платформа Arduino. Модуль датчика определения цвета TCS2300 будет полезен в проектах Ардуино, где требуется распознавание цвета, например, для подбора красителей, сортировки цветов, определения цвета тест-полосок и т.д.

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

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

newzaym
➜