No Image

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

СОДЕРЖАНИЕ
73 просмотров
12 декабря 2019

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

1 датчик (следование по одному краю)

Для данного способа следования по линии необходим только один датчик. На самом деле робот следует не по самой линии, а по её границе, постоянно переходя от темного к светлому. На роботе также устанавливается два привода, один двигатель включается, когда линия видна, но выключается, когда линия не видна, другой активируется, когда линия не видна, но выключается, когда линия видна. И таким образом робот, виляя из стороны в сторону, двигается вдоль границы чёрного и белого. Это отлично работает на более медленных скоростях, но становится непригодным для использования в скоростном боте. Если датчик пересекает линию, он может развернуться и поехать в обратном направлении, если робот теряет линию, он начинает постоянно вращаться. Из–за простоты, такой тип датчика редко используется в схемах ботов с микроконтроллерами. Датчик может быть в одном из двух возможных состояний 1 или 0 (см. рисунок)

Условия работы сенсора:
0 – линия не видна
1 – линия видна

2 датчика (исключение линии)

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

Условия работы сенсора:
00 — граница линии потеряна
01- линия справа
10 — линия слева
11 — Не используется, если расстояние между датчиками больше чем ширина линии.

3 Датчика (предвидение линии)

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

Условия работы сенсора:
001 — линия слева
010 -линия по центру
011 — линия ушла немного влево
100 — линия справа
101 — не используется
110 — линия ушла немного вправо
111 — Не используется (но может использоваться для слежения линии в лабиринте или на сложных трассах с перекрёстками)

5 Датчиков ("пляски" по линии)

Трёх датчиков, очевидно, достаточно, чтобы эффективно следовать линии, так почему же мы хотим добавить еще два? Ответ на этот вопрос сводится к главному качеству роботов для следования по линии — скорость. Добавление еще ​​двух датчиков повышает чувствительность, и датчики могут с большим разрешением распознавать положение линии под бампером робота. Когда бот движется не слишком быстро, есть много времени для регулировки направления и скорости, чтобы удержаться на линии. Что же происходит, когда скорость значительно увеличивается? Вместо того чтобы изящно следовать линии, бот начинает избыточно поворачиваться и может вылететь с трассы.

С этим можно бороться двумя различными способами:

  1. Уменьшить скорость, пока бот не станет управляемым.
  2. Планировать и компенсировать скорость.

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

В примере на фото выше, робот потерял линию, когда вошёл в поворот. Так как он начал поворачивать налево, когда линия из под него ушла, он знает, что нужно повернуть налево, пока не найдет полосу, крайним левым датчиком (на довольно остром углу) перед любым другим датчиком. В нормальных условиях только левый датчик, видя линию, будет поворачивать робота до упора влево. Но только для того чтобы привести его к линии не включаясь в неё. Это вернёт бота обратно на трассу, и не даст ему перелететь через полосу. В отличие от предыдущей схемы здесь очень важно наличие ещё двух дополнительных датчиков. Они служат для более точного управления и быстрого реагирования на выброс и избыточную поворачиваемость. Кликните здесь, чтобы посмотреть видео моего робота Arty.

Читайте также:  Дерево для рисования детям

Как и в других проектах, давайте посмотрим возможные условия работы с пятью датчиками (я перечислил только полезные):
00000 — Потеря линии от превышения скорости или разрыв в линии.
00001 – Робот почти потерял линию, необходимо полностью повернуть на право и снизить скорость.
00011 – линия с правого края, повернуть на право.
00010 – линия ушла вправо, держаться правого края.
00110 — чуть правее от центра линии, небольшая коррекция на право.
00100 — по центру линии, увеличить скорость для прямых участков.
01100 — Чуть левее от центра линии, небольшая коррекция влево.
01000 — Линия ушла влево, держаться левого края.
11000 — линия с левого края, повернуть налево.
10000 — Робот почти потерял линию, необходимо полностью повернуть налево и снизить скорость.
11111 — пересечение линии или круг в конце лабиринта.

Как вы можете видеть, если мы используем 5 датчиков, у нас получается гораздо более тонкий контроль движения бота,. Глядя на состояние датчиков в виде двоичных чисел, мы можем легко запрограммировать логику нашего робота.
Ниже приведен фрагмент кода от Arty, моего последнего робота для следования по линии. Это основной цикл логики, который управляет и рулевым управлением и скоростью и учитывает выброс за пределы линии, а также пытается компенсировать избыточную поворачиваемость. Он написан на BASCOM для DevBoard-M8.

Lineflag это переменная, которая содержит двоичное представление состояния 5 датчиков.
Servo (1) ШИМ канал сервоприводов рулевого управления.
Servo (2) ШИМ канал приводных сервоприводов.
Overshoot флаг, указывающий на то что бот потерял линию в повороте.

Bascom Основной сегмент кода для Arty:

Итак, мы видим, что 5 датчиков обеспечивает более тонкую степень контроля, которая позволяет увеличить скорость бота на прямых, чтобы компенсировать время, затраченное на прохождение поворотов.

Заключение
Какая из четырёх представленных схем подходит для вашего робота? Это зависит от вас. Наиболее простой является схема с парой датчиков. Больше датчиков даст вам больше контроля, но скорее всего, придётся использовать микроконтроллер для обработки данных со всех датчиков. Используйте метод, который соответствует вашим потребностям и уровню квалификации — каждая конструкция имеет свои преимущества.

Добавление
Ниже представлена полная программа, используемая Arty 1.0. Мой первый робот, следующий по линии, имеющий шарнирно- сочленённую раму. Он включает в себя код для автоматической калибровки датчиков линии.
Эта программа была написана для ATMega8 на Bascom-AVR. Серво команда используется для управления сервоприводом рулевого управления и контроля скорости.

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

1 датчик (следование по одному краю)

Для данного способа следования по линии необходим только один датчик. На самом деле робот следует не по самой линии, а по её границе, постоянно переходя от темного к светлому. На роботе также устанавливается два привода, один двигатель включается, когда линия видна, но выключается, когда линия не видна, другой активируется, когда линия не видна, но выключается, когда линия видна. И таким образом робот, виляя из стороны в сторону, двигается вдоль границы чёрного и белого. Это отлично работает на более медленных скоростях, но становится непригодным для использования в скоростном боте. Если датчик пересекает линию, он может развернуться и поехать в обратном направлении, если робот теряет линию, он начинает постоянно вращаться. Из–за простоты, такой тип датчика редко используется в схемах ботов с микроконтроллерами. Датчик может быть в одном из двух возможных состояний 1 или 0 (см. рисунок)

Условия работы сенсора:
0 – линия не видна
1 – линия видна

2 датчика (исключение линии)

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

Условия работы сенсора:
00 — граница линии потеряна
01- линия справа
10 — линия слева
11 — Не используется, если расстояние между датчиками больше чем ширина линии.

Читайте также:  Детская ремонт дизайн фото

3 Датчика (предвидение линии)

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

Условия работы сенсора:
001 — линия слева
010 -линия по центру
011 — линия ушла немного влево
100 — линия справа
101 — не используется
110 — линия ушла немного вправо
111 — Не используется (но может использоваться для слежения линии в лабиринте или на сложных трассах с перекрёстками)

5 Датчиков ("пляски" по линии)

Трёх датчиков, очевидно, достаточно, чтобы эффективно следовать линии, так почему же мы хотим добавить еще два? Ответ на этот вопрос сводится к главному качеству роботов для следования по линии — скорость. Добавление еще ​​двух датчиков повышает чувствительность, и датчики могут с большим разрешением распознавать положение линии под бампером робота. Когда бот движется не слишком быстро, есть много времени для регулировки направления и скорости, чтобы удержаться на линии. Что же происходит, когда скорость значительно увеличивается? Вместо того чтобы изящно следовать линии, бот начинает избыточно поворачиваться и может вылететь с трассы.

С этим можно бороться двумя различными способами:

  1. Уменьшить скорость, пока бот не станет управляемым.
  2. Планировать и компенсировать скорость.

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

В примере на фото выше, робот потерял линию, когда вошёл в поворот. Так как он начал поворачивать налево, когда линия из под него ушла, он знает, что нужно повернуть налево, пока не найдет полосу, крайним левым датчиком (на довольно остром углу) перед любым другим датчиком. В нормальных условиях только левый датчик, видя линию, будет поворачивать робота до упора влево. Но только для того чтобы привести его к линии не включаясь в неё. Это вернёт бота обратно на трассу, и не даст ему перелететь через полосу. В отличие от предыдущей схемы здесь очень важно наличие ещё двух дополнительных датчиков. Они служат для более точного управления и быстрого реагирования на выброс и избыточную поворачиваемость. Кликните здесь, чтобы посмотреть видео моего робота Arty.

Как и в других проектах, давайте посмотрим возможные условия работы с пятью датчиками (я перечислил только полезные):
00000 — Потеря линии от превышения скорости или разрыв в линии.
00001 – Робот почти потерял линию, необходимо полностью повернуть на право и снизить скорость.
00011 – линия с правого края, повернуть на право.
00010 – линия ушла вправо, держаться правого края.
00110 — чуть правее от центра линии, небольшая коррекция на право.
00100 — по центру линии, увеличить скорость для прямых участков.
01100 — Чуть левее от центра линии, небольшая коррекция влево.
01000 — Линия ушла влево, держаться левого края.
11000 — линия с левого края, повернуть налево.
10000 — Робот почти потерял линию, необходимо полностью повернуть налево и снизить скорость.
11111 — пересечение линии или круг в конце лабиринта.

Как вы можете видеть, если мы используем 5 датчиков, у нас получается гораздо более тонкий контроль движения бота,. Глядя на состояние датчиков в виде двоичных чисел, мы можем легко запрограммировать логику нашего робота.
Ниже приведен фрагмент кода от Arty, моего последнего робота для следования по линии. Это основной цикл логики, который управляет и рулевым управлением и скоростью и учитывает выброс за пределы линии, а также пытается компенсировать избыточную поворачиваемость. Он написан на BASCOM для DevBoard-M8.

Lineflag это переменная, которая содержит двоичное представление состояния 5 датчиков.
Servo (1) ШИМ канал сервоприводов рулевого управления.
Servo (2) ШИМ канал приводных сервоприводов.
Overshoot флаг, указывающий на то что бот потерял линию в повороте.

Bascom Основной сегмент кода для Arty:

Итак, мы видим, что 5 датчиков обеспечивает более тонкую степень контроля, которая позволяет увеличить скорость бота на прямых, чтобы компенсировать время, затраченное на прохождение поворотов.

Заключение
Какая из четырёх представленных схем подходит для вашего робота? Это зависит от вас. Наиболее простой является схема с парой датчиков. Больше датчиков даст вам больше контроля, но скорее всего, придётся использовать микроконтроллер для обработки данных со всех датчиков. Используйте метод, который соответствует вашим потребностям и уровню квалификации — каждая конструкция имеет свои преимущества.

Читайте также:  1 Особая категория электроснабжения пуэ

Добавление
Ниже представлена полная программа, используемая Arty 1.0. Мой первый робот, следующий по линии, имеющий шарнирно- сочленённую раму. Он включает в себя код для автоматической калибровки датчиков линии.
Эта программа была написана для ATMega8 на Bascom-AVR. Серво команда используется для управления сервоприводом рулевого управления и контроля скорости.

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

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

Аналоговый датчик линии

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

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

С датчика, когда он получает питание, на рабочую поверхность направлен луч инфракрасного светодиода, излучающего волну длиной 940 нм. Отражаясь от поверхности напротив, луч возвращается назад, и попадает на расположенный рядом с инфракрасным светодиодом фототранзистор структуры NPN, с коллектора которого снимается полезный сигнал.

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

Так, теоретически при полном отражении луча, на коллекторе фототранзистора будет минимум напряжения, а при полном поглощением поверхностью — максимум напряжения. Если поверхность находится дальше — напряжение на выходе датчика будет больше, если она ближе — выходное напряжение меньше. Датчик подключается к управляющей электронике тремя проводами: общий провод, провод питания и сигнальный провод.

Цифровой датчик линии

Здесь, как и в аналоговом датчике, инфракрасный светодиод излучает волну с длиной 950 нм (в инфракрасном диапазоне). ИК-луч отражается от поверхности напротив и попадает на фототранзистор. На выходе получаем либо логическую 1 (напряжение высокого уровня), либо 0 (напряжение низкого уровня).

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

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

Выходной сигнал получается здесь в цифровой форме благодаря инвертирующему триггеру Шмитта. Когда NPN-фототранзистор не принимает луч, на его коллекторе максимальное рабочее напряжение, следовательно на выходе датчика 0. Когда луч принят, на выходе 1.

Датчик может быть легко настроен на определенный оттенок, либо для работы на определенном расстоянии.

Для калибровки (регулировки чувствительности) ручку подстроечного резистора поворачивают в ту или иную сторону. Так можно добиться срабатывания только на самый темный оттенок или на самый светлый, либо если цвет преграды напротив датчика неизменен — только на расстояние не дальше установленного.

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

Комментировать
73 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
Adblock detector