Датчик линии своими руками

Товары

Обзор Датчик линии/препятствия KY-033

Датчик линии – это оптический модуль, предназначенный для обнаружения препятствий в виде белых или чёрных линий. Основным его элементом является оптопара TCRT5000, состоящая из инфракрасного светодиода и фототранзистора. Внешний вид датчика показан на рисунке №1.

Рисунок №1 – внешний вид датчика линии/препятствия.

Согласно документации , инфракрасный диод излучает свет с длиной волны 950nm, что позволяет достоверно определять препятствия на расстоянии от 1мм до 25мм. Также в состав модуля входят компаратор, подстроечный резистор и контрольный светодиод. Подстроечным резистором выбирается порог срабатывания датчика на разный оттенок чёрного цвета. При максимальном сопротивлении датчик сработает на сером оттенке, а при минимальном сопротивлении – только на чёрном. Факт срабатывания сопровождается загоранием контрольного светодиода и подачей логического нуля на сигнальный вывод датчика. Следует отметить, что для удобства монтажа, по обе стороны оптического элемента расположены два крепёжных отверстия. Это позволяет более точно позиционировать датчик или группу датчиков на необходимом расстоянии от препятствия. Для исключения взаимного влияния светодиода и фототранзистора они конструктивно разделены небольшой перегородкой.

Что касается принципа работы, то он очень прост. При подаче питания на модуль, инфракрасный светодиод начинает излучать свет, который отражаясь от белой поверхности попадает на фототранзистор. В таком режиме на выводе OUT (SIGNAL) будет установлена логическая единица. Как только в зону видимости датчика попадает чёрный объект, световой поток, поглощаясь этим самым объектом, перестаёт доходить до фототранзистора и компаратор переключает вывод OUT (SIGNAL) в логический ноль. Более наглядно этот процесс показан на рисунке №2.

Рисунок №2 – логика работы датчика линии

При проектировании устройств с использованием датчика линии, необходимо чётко следить за границами приближения/удаления модуля от исследуемой поверхности. Если фотоэлемент будет слишком приближен, то перегородка не даст пройти световому потоку от ИК-диода к фототранзистору, даже при самой белой поверхности. Та же ситуация произойдёт и при чрезмерном удалении фотоэлемента, так как весь световой поток попросту рассеется в воздушной среде не дойдя до объекта-отражателя.

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

Из основных технических характеристик можно выделить следующие:

Расстояние уверенного определения препятствия: 1-25 мм;

Диапазон рабочего напряжения питания: 3,3 – 5 В;

Тип используемого ИК датчика: TCRT5000;

Длина волны излучения: 950nm;

Тип используемого компаратора: LM393;

Максимальная нагрузка на выход компаратора: 15 мА;

Физические размеры модуля: 40х11х11 мм.

Подключение к Arduino

В своём составе, датчик линии имеет всего 3 выхода (VCC, GND и S/OUT). Выводы VCC и GND предназначены для подачи питания на модуль. Вывод S (OUT) служит для регистрации срабатываний. Ввиду того, что датчик способен выдавать только логические «0» и «1», вывод S (OUT) можно цеплять на любой цифровой пин Arduino. На рисунке №3 изображена схема подключения датчика у которого сигнальный выход идёт на пин D2 Arduino.

Рисунок №3 – схема подключения датчика линии к Arduino UNO

Работа с датчиком или группой датчиков на программном уровне сводится к простейшей обработке состояний цифровых входов и не должна вызывать сложностей даже у начинающего программиста. Ниже приведён скетч с комментариями, позволяющий отслеживать моменты срабатывания одного датчика согласно схемы на рисунке №3.

В результате работы программы, при наличии чёрной линии в области видимости фотоэлемента, в окно терминала будет постоянно выводиться надпись BLACK, а при её отсутствии — LIGHT.

Пример использования

Одной из главных отраслей, где используется датчик линии является робототехника. В этой сфере есть направление, когда мобильный робот должен следовать по определённой траектории. Даже устраиваются целые соревнования на лучший алгоритм и скорость прохождения маршрута. В таких проектах, как правило, используется не один, а группа датчиков, с помощью которых робот определяет границы маршрута. Помимо роботов для соревнований, подобные датчики имеют и бытовые роботы-пылесосы. На рисунке №4 показан робот, оснащённый группой из 8 датчиков линии.

Рисунок №4 – роботизированная платформа с 8 датчиками линии

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

Чтобы закрепить знакомство с датчиком KY-033, создадим небольшой проект станка для намотки катушек индуктивности. Идея заключается в следующем. С помощью стандартного терминала серийного порта, мы вводим нужное количество витков проектируемой катушки. Палата Arduino, обрабатывает поступившие данные и даёт команду на вращение мотора и соответственно привода с закреплённым сердечником. Датчик линии будет отсчитывать количество намотанных витков по специально нанесённой метке на вращающуюся часть привода. Если количество витков будет равно заданному в терминале – мотор остановится с выводом соответствующего сообщения. На рисунке №5 схематически отражена идея проекта.

Рисунок №5 – структурная схема проекта намоточного станка

Как видно из вышеприведенного рисунка, оптический элемент датчика линии располагается под контролируемой зоной, окрашенной в белый цвет. На эту зону в одном единственном месте нанесена чёрная метка, которая будет фиксироваться датчиком при каждом очередном обороте вала. Arduino будет следить за этим процессом и отключать двигатель по достижению конца счёта. Со структурой проекта разобрались – перейдём к схемному и аппаратному решению.

В роли центральной платы управления выберем Arduino Uno. Крутить привод с держателем сердечника будет 12-вольтовый двигатель постоянного тока со встроенным редуктором. С датчиком линии мы уже знакомы – остаётся силовая управляющая часть.

Дело в том, что питать мотор напрямую от платы Arduino мы не можем, так как у последней просто не хватит мощности, поэтому управление двигателем необходимо осуществлять либо через реле, либо через транзистор. Выбираем полевой N-канальный транзистор IRL540N, управляемый логическим уровнем, как наиболее подходящее решение для данного проекта. На рисунке №6 изображена схема подключения всех составляющих элементов проекта.

Рисунок №6 – электрическая схема намоточного станка

Диод 1N4007, используемый в схеме, защищает полевой транзистор от пробоя высоким напряжением самоиндукции, которое возникает во время размыкания индуктивной нагрузки, т.е. двигателя. Резистор 220 Ом ограничивает ток микроконтроллерного выхода, а резистор 100к разряжает затвор, гарантировано отключая двигатель при логическом нуле. Также особое внимание следует обратить на то, что двигатель питается от внешнего источника 12В, минус которого в обязательном порядке соединяется с минусом платы Arduino.

Программа будет составлена по принципу конечного автомата, т.е. в каждый момент времени будет обрабатываться конкретное событие, а именно:

Фаза №1. При подаче питания программа определяет в каком состоянии находится вал мотора с отметкой. Последняя должна находиться точно над фотоэлементом датчика линии. Если это не так – мотор вращается и выставляет вал в начальное положение. С этого момента можно закреплять проволоку будущей катушки в начале сердечника.

Фаза №2. В терминале выводиться сообщение с запросом о вводе требуемого количества витков. После нажатия клавиши ENTER, начинается вращение двигателя.

Фаза №3. Программа отслеживает каждый оборот путём фиксации чёрной отметки и сравнивает с заданным до этого числом в терминале. Как только счётчик достигнет конца, пользователь получит сообщение и алгоритм повторится.

Ниже приведёт программный код с подробными комментариями.

Вот таким нехитрым способом можно приспособить датчик линии под свои нужды. При желании проект можно расширить, добавив дисплей, кнопки управления, дополнительный двигатель для автоматического распределения обмотки по всей поверхности сердечника и т.п. На рисунке №7 показан собранный прототип намоточного станка.

Рисунок №7 – прототип намоточного станка

Как видно из вышеприведенного рисунка, с левой стороны двигателя надето колесо с нанесённой чёрной отметкой. Фотоэлемент датчика линии направлен в сторону колеса и чётко фиксирует прохождение метки через своё поле зрения. На этом же валу справа закреплён П-образный держатель, в который вставлен предполагаемый каркас будущей катушки. Силовая часть управления мотором расположилась на макетной плате. Последовательность работы со станком следующая:

Дожидаемся, когда двигатель автоматически установится в начальное положение (чёрная отметка должна оказаться под фотоэлементом датчика линии);

Вставляем сердечник в держатель и фиксируем на нём один конец провода;

Вводим в терминале необходимое количество витков и нажимаем Enter;

Аккуратно придерживаем провод рукой и дожидаемся окончания намотки.

На рисунке №8 показано окно терминала, как результат работы программы. Здесь отображено два цикла работы. Изначально задан запрос на намотку 7-ми витков и после отсчёта нужного количества оборотов, повторяется опыт для намотки 3-х витков. Конец каждого цикла обозначен словом Completed с разделительной полосой.

Рисунок №8 – результат работы программы намоточного станка

FAQ. Часто задаваемые вопросы

1. В продаже помимо цифровых датчиков линии существую аналоговые. В чём их отличия друг от друга?

  • Аналоговый датчик линии способен различать оттенки серого цвета, в то время как цифровой только 2 состояния, установленные подстроечным резистором. Аналоговый датчик линии подключается к аналоговому входу Arduino, а его состояние опрашивается функцией analogRead(). Цифровой датчик опрашивается функцией digitalRead() и может быть подключен к любому цифровому пину Arduino.

2. Как использовать датчик линии в качестве энкодера?

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

3. Какое минимальное количество датчиков линии необходимо для построения простейшего робота, следующего по линии?

  • Чтобы заставить робота двигаться по линии достаточно 2-х датчиков. Они устанавливаются друг от друга на расстоянии, равном ширине полосы маршрута. Программа постоянно опрашивает состояние датчиков линии и в зависимости от показаний выдаёт питание на двигатели правого или левого колеса.

Товары

Обзор Датчик линии/препятствия KY-033

Датчик линии – это оптический модуль, предназначенный для обнаружения препятствий в виде белых или чёрных линий. Основным его элементом является оптопара TCRT5000, состоящая из инфракрасного светодиода и фототранзистора. Внешний вид датчика показан на рисунке №1.

Рисунок №1 – внешний вид датчика линии/препятствия.

Согласно документации , инфракрасный диод излучает свет с длиной волны 950nm, что позволяет достоверно определять препятствия на расстоянии от 1мм до 25мм. Также в состав модуля входят компаратор, подстроечный резистор и контрольный светодиод. Подстроечным резистором выбирается порог срабатывания датчика на разный оттенок чёрного цвета. При максимальном сопротивлении датчик сработает на сером оттенке, а при минимальном сопротивлении – только на чёрном. Факт срабатывания сопровождается загоранием контрольного светодиода и подачей логического нуля на сигнальный вывод датчика. Следует отметить, что для удобства монтажа, по обе стороны оптического элемента расположены два крепёжных отверстия. Это позволяет более точно позиционировать датчик или группу датчиков на необходимом расстоянии от препятствия. Для исключения взаимного влияния светодиода и фототранзистора они конструктивно разделены небольшой перегородкой.

Что касается принципа работы, то он очень прост. При подаче питания на модуль, инфракрасный светодиод начинает излучать свет, который отражаясь от белой поверхности попадает на фототранзистор. В таком режиме на выводе OUT (SIGNAL) будет установлена логическая единица. Как только в зону видимости датчика попадает чёрный объект, световой поток, поглощаясь этим самым объектом, перестаёт доходить до фототранзистора и компаратор переключает вывод OUT (SIGNAL) в логический ноль. Более наглядно этот процесс показан на рисунке №2.

Рисунок №2 – логика работы датчика линии

При проектировании устройств с использованием датчика линии, необходимо чётко следить за границами приближения/удаления модуля от исследуемой поверхности. Если фотоэлемент будет слишком приближен, то перегородка не даст пройти световому потоку от ИК-диода к фототранзистору, даже при самой белой поверхности. Та же ситуация произойдёт и при чрезмерном удалении фотоэлемента, так как весь световой поток попросту рассеется в воздушной среде не дойдя до объекта-отражателя.

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

Из основных технических характеристик можно выделить следующие:

Расстояние уверенного определения препятствия: 1-25 мм;

Диапазон рабочего напряжения питания: 3,3 – 5 В;

Тип используемого ИК датчика: TCRT5000;

Длина волны излучения: 950nm;

Тип используемого компаратора: LM393;

Максимальная нагрузка на выход компаратора: 15 мА;

Физические размеры модуля: 40х11х11 мм.

Подключение к Arduino

В своём составе, датчик линии имеет всего 3 выхода (VCC, GND и S/OUT). Выводы VCC и GND предназначены для подачи питания на модуль. Вывод S (OUT) служит для регистрации срабатываний. Ввиду того, что датчик способен выдавать только логические «0» и «1», вывод S (OUT) можно цеплять на любой цифровой пин Arduino. На рисунке №3 изображена схема подключения датчика у которого сигнальный выход идёт на пин D2 Arduino.

Рисунок №3 – схема подключения датчика линии к Arduino UNO

Работа с датчиком или группой датчиков на программном уровне сводится к простейшей обработке состояний цифровых входов и не должна вызывать сложностей даже у начинающего программиста. Ниже приведён скетч с комментариями, позволяющий отслеживать моменты срабатывания одного датчика согласно схемы на рисунке №3.

В результате работы программы, при наличии чёрной линии в области видимости фотоэлемента, в окно терминала будет постоянно выводиться надпись BLACK, а при её отсутствии — LIGHT.

Пример использования

Одной из главных отраслей, где используется датчик линии является робототехника. В этой сфере есть направление, когда мобильный робот должен следовать по определённой траектории. Даже устраиваются целые соревнования на лучший алгоритм и скорость прохождения маршрута. В таких проектах, как правило, используется не один, а группа датчиков, с помощью которых робот определяет границы маршрута. Помимо роботов для соревнований, подобные датчики имеют и бытовые роботы-пылесосы. На рисунке №4 показан робот, оснащённый группой из 8 датчиков линии.

Рисунок №4 – роботизированная платформа с 8 датчиками линии

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

Чтобы закрепить знакомство с датчиком KY-033, создадим небольшой проект станка для намотки катушек индуктивности. Идея заключается в следующем. С помощью стандартного терминала серийного порта, мы вводим нужное количество витков проектируемой катушки. Палата Arduino, обрабатывает поступившие данные и даёт команду на вращение мотора и соответственно привода с закреплённым сердечником. Датчик линии будет отсчитывать количество намотанных витков по специально нанесённой метке на вращающуюся часть привода. Если количество витков будет равно заданному в терминале – мотор остановится с выводом соответствующего сообщения. На рисунке №5 схематически отражена идея проекта.

Рисунок №5 – структурная схема проекта намоточного станка

Как видно из вышеприведенного рисунка, оптический элемент датчика линии располагается под контролируемой зоной, окрашенной в белый цвет. На эту зону в одном единственном месте нанесена чёрная метка, которая будет фиксироваться датчиком при каждом очередном обороте вала. Arduino будет следить за этим процессом и отключать двигатель по достижению конца счёта. Со структурой проекта разобрались – перейдём к схемному и аппаратному решению.

В роли центральной платы управления выберем Arduino Uno. Крутить привод с держателем сердечника будет 12-вольтовый двигатель постоянного тока со встроенным редуктором. С датчиком линии мы уже знакомы – остаётся силовая управляющая часть.

Дело в том, что питать мотор напрямую от платы Arduino мы не можем, так как у последней просто не хватит мощности, поэтому управление двигателем необходимо осуществлять либо через реле, либо через транзистор. Выбираем полевой N-канальный транзистор IRL540N, управляемый логическим уровнем, как наиболее подходящее решение для данного проекта. На рисунке №6 изображена схема подключения всех составляющих элементов проекта.

Рисунок №6 – электрическая схема намоточного станка

Диод 1N4007, используемый в схеме, защищает полевой транзистор от пробоя высоким напряжением самоиндукции, которое возникает во время размыкания индуктивной нагрузки, т.е. двигателя. Резистор 220 Ом ограничивает ток микроконтроллерного выхода, а резистор 100к разряжает затвор, гарантировано отключая двигатель при логическом нуле. Также особое внимание следует обратить на то, что двигатель питается от внешнего источника 12В, минус которого в обязательном порядке соединяется с минусом платы Arduino.

Программа будет составлена по принципу конечного автомата, т.е. в каждый момент времени будет обрабатываться конкретное событие, а именно:

Фаза №1. При подаче питания программа определяет в каком состоянии находится вал мотора с отметкой. Последняя должна находиться точно над фотоэлементом датчика линии. Если это не так – мотор вращается и выставляет вал в начальное положение. С этого момента можно закреплять проволоку будущей катушки в начале сердечника.

Фаза №2. В терминале выводиться сообщение с запросом о вводе требуемого количества витков. После нажатия клавиши ENTER, начинается вращение двигателя.

Фаза №3. Программа отслеживает каждый оборот путём фиксации чёрной отметки и сравнивает с заданным до этого числом в терминале. Как только счётчик достигнет конца, пользователь получит сообщение и алгоритм повторится.

Ниже приведёт программный код с подробными комментариями.

Вот таким нехитрым способом можно приспособить датчик линии под свои нужды. При желании проект можно расширить, добавив дисплей, кнопки управления, дополнительный двигатель для автоматического распределения обмотки по всей поверхности сердечника и т.п. На рисунке №7 показан собранный прототип намоточного станка.

Рисунок №7 – прототип намоточного станка

Как видно из вышеприведенного рисунка, с левой стороны двигателя надето колесо с нанесённой чёрной отметкой. Фотоэлемент датчика линии направлен в сторону колеса и чётко фиксирует прохождение метки через своё поле зрения. На этом же валу справа закреплён П-образный держатель, в который вставлен предполагаемый каркас будущей катушки. Силовая часть управления мотором расположилась на макетной плате. Последовательность работы со станком следующая:

Дожидаемся, когда двигатель автоматически установится в начальное положение (чёрная отметка должна оказаться под фотоэлементом датчика линии);

Вставляем сердечник в держатель и фиксируем на нём один конец провода;

Вводим в терминале необходимое количество витков и нажимаем Enter;

Аккуратно придерживаем провод рукой и дожидаемся окончания намотки.

На рисунке №8 показано окно терминала, как результат работы программы. Здесь отображено два цикла работы. Изначально задан запрос на намотку 7-ми витков и после отсчёта нужного количества оборотов, повторяется опыт для намотки 3-х витков. Конец каждого цикла обозначен словом Completed с разделительной полосой.

Рисунок №8 – результат работы программы намоточного станка

FAQ. Часто задаваемые вопросы

1. В продаже помимо цифровых датчиков линии существую аналоговые. В чём их отличия друг от друга?

  • Аналоговый датчик линии способен различать оттенки серого цвета, в то время как цифровой только 2 состояния, установленные подстроечным резистором. Аналоговый датчик линии подключается к аналоговому входу Arduino, а его состояние опрашивается функцией analogRead(). Цифровой датчик опрашивается функцией digitalRead() и может быть подключен к любому цифровому пину Arduino.

2. Как использовать датчик линии в качестве энкодера?

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

3. Какое минимальное количество датчиков линии необходимо для построения простейшего робота, следующего по линии?

  • Чтобы заставить робота двигаться по линии достаточно 2-х датчиков. Они устанавливаются друг от друга на расстоянии, равном ширине полосы маршрута. Программа постоянно опрашивает состояние датчиков линии и в зависимости от показаний выдаёт питание на двигатели правого или левого колеса.

Цифровой датчик линии призван отличать тёмную поверхность от светлой.

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

Пример использования с Arduino

Проверим датчик в действии с платформами Arduino. На выходе сенсора цифровой сигнал. Для быстрого и удобного подключения используйте Troyka Shield.

Схема устройства

Код программы

После загрузки скетча — откройте монитор Serial-порта. Проведите датчиком сначала над столом, а потом за краем стола. При выходе за край стола на мониторе должно возникнуть предупреждение.

Видеообзор

Элементы платы

Troyka-контакты

Датчик подключается к управляющей электронике по трём проводам.

Оптопара TCRT5000

Оптопара TCRT5000 — это собранные в одном корпусе светоиод (синий на рисунке) и фототранзистор n-p-n типа (чёрный на рисунке). Светодиод излучает в инфракрасном диапазоне на длине волны 950 нм. Свет отражается от поверхности и попадает на фототранзистор.

Нужно иметь ввиду, что показания датчика также зависят от расстояния до поверхности. Когда датчик слишком низко, перегородка между диодом и фототранзистором оптопары мешает транзистору принимать отраженный свет. Когда датчик слишком высоко, отраженный свет рассеивается и не доходит до датчика. В обоих случаях датчик выдаст 0.

Инвертор

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

Переменный резистор

Переменный резистор позволяет настраивать датчик линии на различные оттенки серого. Если повернуть ручку резистора до упора против часовой стрелки (максимальное сопротивление), то датчик будет выдавать логический ноль над поверхностью светлого оттенка серого. Если повернуть ручку до упора по часовой стрелке (минимальное сопротивление) то датчик будет реагировать только на самые тёмные оттенки. Варьируя сопротивление, вы можете настроить датчик на нужный вам оттенок.

Сигнальный светодиод

Сигнальный светодиод загорается, когда датчик находится над светлой (по его мнению) поверхностью. Наличие диода позволяет более точно откалибровать датчик. Оттенок серого, над которым он загорается в зависимости от настройки можно считать реперной точкой.


[an error occurred while processing the directive]
Карта сайта