Меню

Arduino с датчиком цвета

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

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

Характеристики датчика TCS230, описание

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

Датчик цвета TCS230 схема, описание, характеристики

Технические характеристики:

— напряжение питания от 2,7 до 5,5 В;
— программируемые цвета и выходная частота сигнала;
— функция автоматического отключения питания;
— малая погрешность выходной частоты — 0,2%.

Датчик используется для определения оттенка цвета объекта на расстоянии до 10 мм, для подсветки места измерения на датчике имеется четыре светодиода. С обратной стороны датчика имеется две колодки с четырьмя контактами. Через эти контакты датчик TCS230 подключается к микроконтроллеру Arduino. Контакты «S0» и «S1» служат для масштабирования частоты импульсов на выходе «OUT» датчика.

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

Для этого занятия нам потребуется:

  • плата Arduino Uno / Arduino Nano / Arduino Mega;
  • макетная плата;
  • датчик оттенка цвета TCS230;
  • 3 светодиода;
  • 3 резистора 220 Ом;
  • провода «папа-мама» и «папа-папа».

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

Пояснения к коду:

  1. процедура void color() используется для опроса датчика цвета;
  2. в процедуре void loop() выводим данные на монитор порта, как на фото ниже.

Вывод информации с датчика TCS2300 на монитор порта

Скетч калибровки датчика цвета TCS230

Калибровка должна выполняться при хорошем освещении и на одинаковом расстоянии до предмета. При изменении освещенности в помещении или расстояния до предмета — все настройки могут сбиться. Обратите внимание на то, что датчик легко определяет красный цвет, но плохо различает синий от зеленого. Для вывода информации о цвете на монитор порта, добавьте в void loop() следующие строчки:

Источник

Распознавание цвета с помощью Arduino и TCS 3200

Рассмотрим как обнаруживать и распознавать цвета с помощью Arduino, датчика TCS 3200, и как отображать всё на ЖК-дисплее.

Комплектующие

Ниже перечислим детали, которые используются в этом проекте, чтобы с помощью Ардуино распознавать цвета.

Оборудование

  • Arduino Nano × 1
  • Модуль датчика цвета TCS 3200 × 1
  • Стандартный ЖК-дисплей Adafruit — 16×2, белый на синем × 1
  • Макет × 1
  • Перемычки

Идея проекта

Это простое руководство, в котором мы рассмотрим, как считывать цвета, используя Arduino и сенсоры, такие как TCS 3200. Идея будет заключаться в том, чтобы обнаружить цвет объекта и отобразить это на ЖК-дисплее.

Этот проект в будущем будет прототипом более крупного проекта, который будет представлять собой манипулятор робота, который выбирает правильное действие в зависимости от цвета объекта. Приведенная выше блок-схема показывает основные компоненты.

Читайте также:  Gsm датчики температуры в доме

В итоге процесс работы данного устройства по распознаванию цвета вы сможете увидеть на видео в конце урока.

Сенсор цвета TSC 3200

Как описано в техническом описании, TCS3200 является программируемым преобразователем цветового света в частоту, который сочетает в себе настраиваемые кремниевые фотодиоды и преобразователь тока в частоту на одной монолитной интегральной схеме CMOS.

На выходе получается прямоугольная волна (коэффициент заполнения 50%) с частотой, прямо пропорциональной интенсивности света (освещенности). Полномасштабная выходная частота может быть масштабирована одним из трех предустановленных значений с помощью двух управляющих входных контактов (S0 и S1).

Цифровые входы и цифровой выход обеспечивают прямой интерфейс с микроконтроллером или другими логическими схемами.

Разрешение выхода (OE, Output enable) переводит выход в состояние высокого импеданса для совместного использования нескольких входных линий микроконтроллера. В TCS3200 преобразователь света в частоту считывает матрицу 8 x 8 фотодиодов.

  1. 16 фотодиодов имеют синие фильтры
  2. 16 фотодиодов имеют зеленые фильтры
  3. 16 фотодиодов имеют красные фильтры
  4. 16 фотодиодов без фильтров.

Контакты S2 и S3 используются для выбора активной группы фотодиодов (красный, зеленый, синий, прозрачный). Фотодиоды имеют размер 110 х 110 мкм и расположены на 134-мкм центрах.

OE (Enable) должен быть подключен к GND (LOW).

Датчик инкапсулирован и должен питаться от 2,7 до 5,5 В постоянного тока. Мы будем использовать выход Arduino 5 В для питания датчика. Чтобы правильно использовать датчик, мы установим небольшое резиновое кольцо, чтобы изолировать датчик от бокового света. Мы использовали горячий клей для этого.

Схема соединения

Вы можете скачать файл схемы для программы Fritzing ниже:

Соединяем сенсор TSC3200 с Ардуино следующим образом:

Соединяем I2C LCD 2/16 ЖК-дисплей:

Установите Arduino Nano на макетную плату. Подключите выход Nano 5V и GND к обеим силовым шинам.

Код Ардуино для распознавания цвета

Первое, что нужно определить, — это масштабирование частоты, как определено в приведенной выше таблице. Для этого используются контакты S0 и S1. Масштабирование выходной частоты полезно для оптимизации показаний датчиков для различных частотных счетчиков или микроконтроллеров. Мы установим S0 и S1, оба в HIGH (100%):

Следующее, что нужно сделать, это выбрать цвет, который будет считываться фотодиодом (красный, зеленый или синий), для этого мы используем управляющие контакты S2 и S3. Поскольку фотодиоды подключены параллельно, настройка S2 и S3 LOW и HIGH в разных комбинациях позволяет выбирать разные фотодиоды, как показано в таблице выше.

В окончательном коде мы несколько раз прочитаем каждый из компонентов RGB и возьмем среднее значение, чтобы мы могли снизить ошибку, если одно из показаний неверное.

Когда у нас есть 3 компонента (RGB), мы должны определить, какой это цвет. Чтобы сделать это, нужно предварительно откалибровать проект. Вы можете использовать известную цветную тестовую бумагу или объект и прочитать 3 сгенерированных компонента.

Вы можете изначально использовать наш код, изменив параметры для вашего уровня освещенности:

Как вы можете видеть выше, мы предопределили 6 цветов: белый, черный, красный, зеленый, желтый и синий. По мере того, как рассеивается окружающий свет, параметры становятся все выше. Внутри цикла loop() мы определяем показания на ЖК-дисплее каждую 1 секунду.

Читайте также:  Датчик давления топлива паз

Все программы, которые нужны для проекта и библиотеки вы можете найти в архиве ниже:

Итоговый результат (видео)

В итоге наш проект Ардуино распознавание цвета работает следующим образом:

Источник

Детектор цвета на Arduino Uno

В этом проекте мы будем подключать датчик цвета TCS3200 к плате Arduino UNO. TCS3200 представляет собой датчик цвета способный обнаруживать любое количество цветов при правильном программировании. TCS3200 содержит массив RGB (красный зеленый синий). Как показано на рисунке ниже под микроскопом на данном датчике можно рассмотреть квадратные элементы на «глазе» датчика. Эти квадратные элементы представляют собой массивы RGB матрицы. Каждый из этих квадратных элементов содержит 3 датчика: один для определения интенсивности красного цвета, второй для определения интенсивности зеленого цвета и третий для определения интенсивности синего цвета.

К каждому из этих элементов массива можно обратиться по отдельности в зависимости от ваших потребностей, поэтому TCS3200 и называют программируемым датчиком. Его можно запрограммировать чтобы он обнаруживал только один определенный цвет и игнорировал остальные цвета. Для этой цели он содержит в своем составе соответствующие фильтры. Существует еще специальный режим без фильтров (forth mode) – в этом режиме датчик обнаруживает белый цвет.

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

  1. Плата Arduino Uno (купить на AliExpress).
  2. Датчик цвета TCS3200 (купить на AliExpress).
  3. ЖК дисплей 16х2 (JHD_162ALCD) (купить на AliExpress).
  4. Светодиод (купить на AliExpress).
  5. Источник питания с напряжением 5 В.

Работа схемы и программы

В ЖК дисплее 16×2 мы имеем 16 контактов, без использования черного цвета можно использовать 14 контактов. Контакты черного цвета можно запитать или оставить «пустыми». То есть из 14 контактов мы имеем 8 контактов данных (7-14 или D0-D7), 2 контакта питания (1&2 или VSS&VDD или GND&+5v), 3-й контакт для управления контрастностью (VEE-controls определяет насколько толстыми будут выглядеть символы на экране дисплея) и 3 контакта управления (RS&RW&E).

В схеме мы использовали только 2 контакта управления ЖК дисплея. Контакт контраста и контакт READ/WRITE используются редко поэтому в нашем случае их можно просто замкнуть на землю. Это обеспечивает ЖК дисплею максимальную контрастность и переводит его в режим чтения данных. В этом случае нам будет необходимо только управлять контактами ENABLE и RS чтобы передавать на ЖК дисплей символы и данные.

В схеме необходимо будет сделать следующие соединения платы Arduino с ЖК дисплеем:
PIN1 или VSS на землю
PIN2 или VDD или VCC к источнику питания +5 В
PIN3 или VEE на землю (обеспечивает ЖК дисплею максимальную контрастность – удобно для начинающих)
PIN4 или RS (Register Selection – выбор регистра) к контакту PIN8 платы ARDUINO UNO
PIN5 или RW (Read/Write) на землю (переводит ЖК дисплей в режим чтения что упрощает взаимодействие с ним для начинающих)
PIN6 или E (Enable) к контакту PIN9 платы ARDUINO UNO
PIN11 или D4 к контакту PIN7 платы ARDUINO UNO
PIN12 или D5 к контакту PIN11 платы ARDUINO UNO
PIN13 или D6 к контакту PIN12 платы ARDUINO UNO
PIN14 или D7 к контакту PIN13 платы ARDUINO UNO

Читайте также:  Какую метеостанцию выбрать для дома с внешним датчиком наружной температуры

С датчиком цвета необходимо сделать следующие соединения:
VDD к источнику питания +5V
GND на землю
OE (output Enable) на землю
S0 к контакту pin 2 платы Arduino
S1 к контакту pin 3 платы Arduino
S2 к контакту pin 4 платы Arduino
S3 к контакту pin 5 платы Arduino
OUT к контакту pin 10 платы Arduino

Схема устройства представлена на следующем рисунке.

Цвет, который необходимо будет обнаруживать (детектировать), выбирается с помощью двух контактов — S2 и S3. С помощью этих двух контактов мы можем сообщить датчику интенсивность какого цвета ему необходимо измерять.

Если нам необходимо измерять интенсивность красного цвета (RED), то на эти два контакта необходимо подать низкий уровень. В этом случае датчик будет измерять интенсивность красного цвета и передавать это значение на плату контроля, находящуюся внутри датчика.

Необходимые значения сигналов на этих контактах для обнаружения других цветов представлены в следующей таблице.

S2 S3 Photodiode Type
L L Red (красный)
L H Blue
H L Clear (нет фильтра)
H H Green (зеленый)

Управляющая система внутри модуля датчика представлена на следующем рисунке. Интенсивность цвета, измеряемая массивом фоточувствительных элементов, передается на конвертер частоты, который выдает на выход прямоугольную волну, чья частота пропорциональна значению постоянного тока, поступающего с массива фоточувствительных элементов.

Таким образом, мы имеем систему, которая выдает на выход прямоугольную волну, частота которой зависит от интенсивности цвета, выбранного с помощью контактов S2 и S3.

Частота этой прямоугольной волны может быть отмасштабирована в соответствии с нашими потребностями. В следующей таблице представлены возможные коэффициенты масштабирования.

S0 S1 Output Frequency Scaling (f0)
L L Power Down
L H 2%
H L 20%
H H 100%

Частота масштабирования устанавливается с помощью битов (контактов) S0 и S1. Для удобства в нашем проекте мы применим коэффициент масштабирования 20%. Это делается при помощи подачи на S0 высокого уровня, а на S1 – низкого. Возможность применения масштабирования этой частоты особенно полезна когда мы имеем дело с системами с низкой частотой.

Чувствительность массива элементов к определенным цветам показана на следующем рисунке.

Хотя разные цвета имеют разную чувствительность для обычного использования это не имеет значения.

В представленной схеме плата Arduino Uno передает сигнал на датчик цвета для обнаружения цвета и затем данные, получаемые датчиком цвета, отображаются на ЖК дсиплее.

Плата Arduino Uno по отдельности детектирует (обнаруживает) интенсивность трех цветов и показывает ее на ЖК дисплее.

Плата Arduino Uno может измерять длительность импульсов прямоугольной волны с выхода датчика цвета и, таким образом, измерять частоту этой прямоугольной волны. А, зная эту частоту, мы можем определить интенсивность нужного нам цвета.

Int frequency = pulseIn(10, LOW);

С помощью этой команды плата Arduino Uno считывает продолжительность импульса на своем 10-м контакте и сохраняет ее в переменной целого типа “frequency”.

Мы будем делать эту операцию для распознавания всех трех цветов и затем показывать интенсивность этих цветов на экране ЖК дисплея.

Исходный код программы

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

Источник

Adblock
detector