Датчик цвета

Дата публикации: 15.04.2011 17:40:49

Для определения цвета роботу нужен датчик цвета. Попался в руки датчик цвета из конструктора LEGO Mindstorm. Разобрать мне бы его, конечно, не дали, но снаружи то, что мне нужно было, я увидел, а именно: светочуствительный элемент (измеряет интенсивность светового потока) и пара светодиодов, один из которых спаренный. Предположим, что три цвета у светодиодов включаются поочереди, а световой поток измеряется фоторезистором. Тогда освещая исследуемую поверхность, окрашенную в некоторый цвет, красным, зеленым и синим цветом от светодиодов, мы можем измерить световой поток отраженный от поверхности, а значит измерить цвет в модели RGB.

Имея фоторезистор (выпаял его из ночного фонаря, срабатывающего при сумерках), на монтажной плате накидал схемку:

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

Для уменьшения "световых помех" от внешнего освещения нужно постараться максимально изолировать фоторезистор от внешних источников света, например, поместить его в картонную трубку.

Светодиоды также полезно поместить в светонепроницаемый кожух, но при этом учесть, что луч света от светодиодов должен светить на образец и отражаться на фоторезистор. Значит, высота внешней картонной трубки вокруг светодиодов и фоторезистора в кожухе должна быть выше, чем трубка фоторезистора. Я сделал ее выше примерно на 1,5 - 2 см. На верхний торец этой трубки и нужно будет помещать изучаемый цветной образец. Для удобства калибровки в схему добавлена кнопка на основе микрика и резистора 10 КОм.

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

При испытаниях датчик заработал! Заливаем скетч, включаем монитор последовательного порта - на него Freeduino подает сообщения во время калибровки и распознавания цвета. Сначала идет процесс калибровки: нужно положить на датчик образец запрашиваемого цвета и нажать кнопку на схеме. После калибровки начинается процесс распознавания: на датчик нужно класть разные образцы и нажимать кнопку, при этом на монитор последовательного порта выводятся три значения числовых замеров R,G,B и после замера и сравнения с образцами замеров (+ - delta отклонение из-за "шума" фоторезистора), полученных при калибровке, выводится название угаданного цвета. Если положить образец, цвет которого не калибровался, то ничего не выводится.

Кладем образец на датчик так:

Для точности измерений накрывал образец черной картонкой.

Датчик работает. При тестовом прогоне ошибок не возникло, что радует. Можно теперь разводить схему на текстолит, продумать более надежный и защищенный корпус, собрать и использовать его в конструкции робота.

Скетч, с которым экспериментировал, во вложении.