Ардуино по линии с тремя датчиками. Робот Arduino с тремя датчиками линии: как научить следовать по трассе

Как работает робот с 3 датчиками линии на Arduino. Какие преимущества дает использование 3 сенсоров вместо 1 или 2. Как запрограммировать движение робота по линии с помощью 3 датчиков.

Принцип работы робота с 3 датчиками линии

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

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

  • Если центральный датчик видит линию, а боковые нет — робот движется прямо
  • Если левый датчик видит линию — робот поворачивает налево
  • Если правый датчик видит линию — робот поворачивает направо

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


Преимущества использования 3 датчиков линии

Использование 3 датчиков линии вместо 1 или 2 дает роботу ряд важных преимуществ:

  1. Более точное определение положения линии
  2. Возможность плавного движения по кривым участкам трассы
  3. Способность распознавать перекрестки и развилки
  4. Быстрая реакция на резкие повороты
  5. Стабильное движение на высокой скорости

Благодаря этим преимуществам робот с 3 датчиками способен проходить сложные трассы быстрее и точнее.

Подключение датчиков линии к Arduino

Для создания робота, следующего по линии, потребуются следующие компоненты:

  • Плата Arduino (например, Arduino Uno)
  • 3 инфракрасных датчика линии
  • Шасси робота с двумя моторами
  • Драйвер моторов (например, L298N)
  • Батарейный отсек

Схема подключения датчиков к Arduino выглядит следующим образом:

  • VCC датчиков подключается к 5V на Arduino
  • GND датчиков подключается к GND на Arduino
  • Сигнальные выходы датчиков подключаются к цифровым пинам Arduino (например, 2, 3, 4)

Моторы подключаются через драйвер к цифровым пинам Arduino для управления направлением и скоростью вращения.


Программирование движения робота по линии

Алгоритм движения робота по линии с 3 датчиками может выглядеть следующим образом:

  1. Считываем состояние всех трех датчиков
  2. Анализируем комбинацию сигналов
  3. Принимаем решение о направлении движения
  4. Управляем моторами для поворота или движения прямо
  5. Повторяем цикл

Вот пример простого кода для Arduino, реализующего этот алгоритм:

«`cpp #define LEFT_SENSOR 2 #define CENTER_SENSOR 3 #define RIGHT_SENSOR 4 #define LEFT_MOTOR_PIN1 5 #define LEFT_MOTOR_PIN2 6 #define RIGHT_MOTOR_PIN1 9 #define RIGHT_MOTOR_PIN2 10 void setup() { pinMode(LEFT_SENSOR, INPUT); pinMode(CENTER_SENSOR, INPUT); pinMode(RIGHT_SENSOR, INPUT); pinMode(LEFT_MOTOR_PIN1, OUTPUT); pinMode(LEFT_MOTOR_PIN2, OUTPUT); pinMode(RIGHT_MOTOR_PIN1, OUTPUT); pinMode(RIGHT_MOTOR_PIN2, OUTPUT); } void loop() { int leftSensor = digitalRead(LEFT_SENSOR); int centerSensor = digitalRead(CENTER_SENSOR); int rightSensor = digitalRead(RIGHT_SENSOR); if (leftSensor == LOW && centerSensor == HIGH && rightSensor == LOW) { moveForward(); } else if (leftSensor == HIGH && centerSensor == LOW && rightSensor == LOW) { turnLeft(); } else if (leftSensor == LOW && centerSensor == LOW && rightSensor == HIGH) { turnRight(); } else { moveForward(); } } void moveForward() { analogWrite(LEFT_MOTOR_PIN1, 200); analogWrite(LEFT_MOTOR_PIN2, 0); analogWrite(RIGHT_MOTOR_PIN1, 200); analogWrite(RIGHT_MOTOR_PIN2, 0); } void turnLeft() { analogWrite(LEFT_MOTOR_PIN1, 0); analogWrite(LEFT_MOTOR_PIN2, 200); analogWrite(RIGHT_MOTOR_PIN1, 200); analogWrite(RIGHT_MOTOR_PIN2, 0); } void turnRight() { analogWrite(LEFT_MOTOR_PIN1, 200); analogWrite(LEFT_MOTOR_PIN2, 0); analogWrite(RIGHT_MOTOR_PIN1, 0); analogWrite(RIGHT_MOTOR_PIN2, 200); } «`

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


Калибровка датчиков линии

Важным этапом настройки робота с 3 датчиками линии является их калибровка. Это позволяет адаптировать чувствительность датчиков к конкретным условиям освещения и отражающей способности поверхности.

Процесс калибровки обычно включает следующие шаги:

  1. Размещение робота на белой поверхности и считывание показаний датчиков
  2. Размещение робота на черной линии и считывание показаний
  3. Определение порогового значения между черным и белым для каждого датчика
  4. Сохранение калибровочных значений в памяти Arduino

Калибровка позволяет повысить точность и надежность работы робота в различных условиях.

Оптимизация движения робота по линии

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

  • Использование ПИД-регулятора для более плавного движения
  • Динамическое изменение скорости на поворотах
  • Прогнозирование траектории линии
  • Использование датчиков расстояния для объезда препятствий
  • Запоминание маршрута для оптимизации повторных проходов

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


Создание сложных трасс для робота

Для тестирования и совершенствования робота с 3 датчиками линии можно создавать различные трассы. Вот несколько идей:

  • Трасса с плавными поворотами разного радиуса
  • Трасса с острыми углами и резкими поворотами
  • Лабиринт с развилками и тупиками
  • Трасса с перекрестками и прерывистыми линиями
  • Трасса с подъемами и спусками

Создавая разнообразные трассы, вы сможете всесторонне проверить возможности вашего робота и усовершенствовать алгоритм его движения.

Применение роботов, следующих по линии

Роботы с 3 датчиками линии находят применение во многих областях:

  • Автоматизация складов и производств
  • Доставка грузов в больницах и офисах
  • Образовательные наборы для обучения робототехнике
  • Соревнования роботов
  • Исследование алгоритмов навигации

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


3 канальный датчик линии

Добавить к сравнению

Цвет красный
Драйвер
74HC14D
Платформа TCRT5000
Свечение Зелёный
Интерфейс Цифровой
Питание 5 вольт
Тип Инфрокрасный

Категории: Препятствия

Оставьте отзыв об этом товаре первым!

Следование по линии — руководство по использованию датчиков

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

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:

Case &B00000 'No line
 'If the bot loses the line, make steering changes
 Servo(2) = Slow - Progspeed
 If Lastlineflag < 4 Then
 Overshoot = 1 'Overshot a righthand corner
 Elseif Lastlineflag > 4 Then
 Overshoot = 1 'Overshot a left hand corner
 End If
Case &B00100 'Line under center sensor
 Overshoot = 0
 Servo(1) = Center
 Servo(2) = Mediumfast - Progspeed
Case &B00110
 Overshoot = 0
 Servo(1) = Smallright
 Servo(2) = Mediumfast - Progspeed
Case &B00010
 Overshoot = 0 'Line under midright sensor
 Servo(1) = Mediumright
 Servo(2) = Mediumfast - Progspeed
Case &B00011 'Line between midright and right sensor
 If Overshoot = 0 Then
 Servo(1) = Largeright
 Servo(2) = Medium - Progspeed
 Else
 Servo(1) = Mediumright
 Servo(2) = Medium - Progspeed
 End If
Case &B00001 'Line under right sensor
 If Overshoot = 0 Then
 Servo(1) = Hardright
 Servo(2) = Mediumslow - Progspeed
 Else
 Servo(1) = Largeright
 Servo(2) = Mediumslow - Progspeed
 End If
Case &B01100 'Line between center and midleft sensor
 Overshoot = 0
 Servo(1) = Smallleft
 Servo(2) = Mediumfast - Progspeed
Case &B01000 'Line under midleft sensor
 Overshoot = 0
 Servo(1) = Mediumleft
 Servo(2) = Mediumfast - Progspeed
Case &B11000 'Line between midleft and left sensor
 If Overshoot = 0 Then
 Servo(1) = Largeleft
 Servo(2) = Medium - Progspeed
 Else
 Servo(1) = Center
 Servo(2) = Medium - Progspeed
 End If
Case &B10000 'Line under left sensor
 If Overshoot = 0 Then
 Servo(1) = Hardleft
 Servo(2) = Mediumslow - Progspeed
 Else
 Servo(1) = Largeleft
 Servo(2) = Mediumslow - Progspeed
 End If
End Select

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

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

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

Оригинал статьи

Теги:

  • Робот
  • Перевод
  • Микроконтроллер
  • AVR
  • BASCOM-AVR

Keyestudio KEYBOT Easy Plug Программируемый робот 3-сторонний датчик слежения за линией для робота Arduino

Keyestudio KEYBOT Easy Plug Программируемый робот 3-сторонний датчик слежения за линией для робота Arduino

Ваша позиция: Home / Easy-plug STEM / Датчик Easy-Plug

Формат PDF

KS0352

  • Описание
  • Характеристики
  • Документы
  • отзывов

Этот трехсторонний датчик слежения Keyestudio необходимо использовать вместе с платой управления EASY plug V2. 0. Модуль подключается к интерфейсу SPI всего одним проводом, что очень удобно и просто. Модуль поставляется с двумя круглыми отверстиями, его легко закрепить на других устройствах.
Это также инфракрасный датчик. В качестве компонента здесь используется инфракрасная трубка TCRT5000. Принцип работы заключается в использовании различной отражательной способности инфракрасного света для цвета, преобразуя силу отраженного сигнала в текущий сигнал.
Во время обнаружения черный цвет активен при ВЫСОКОМ уровне, а белый — при НИЗКОМ. Высота обнаружения 0-3 см. Мы объединили три группы инфракрасных трубок TCRT5000 на одной плате, что более удобно для подключения и управления. Вращая часть с регулируемым сопротивлением, вы можете регулировать чувствительность датчика.

 

  • Рабочее напряжение: 3,3-5 В (постоянный ток)

  • Выходной сигнал: цифровой сигнал

  • Высота обнаружения: 0–3 см

  • 5 звезд0%
  • 4 звезды0%
  • 3 звезды0%
  • 2 звезды0%
  • 1 звезда0%

Средний рейтинг:

Поделитесь своими мыслями с другими покупателями

Напишите отзыв

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

keyestudio EASY plug Ultimate Starter Kit для Arduino STEM EDU

$ 64,00

Keyestudio RJ11 EASY Plug Основная плата обновления контроллера V2. 0 + USB-кабель для Arduino STEAM

$ 19.00 $ 20.00

Keyestudio EASY plug (сервомодуль + микро сервопривод) для робота Arduino

$ 7,70

Стартовый обучающий комплект Keyestudio EASY-Plug для Arduino STEAM (21 модуль)

$ 45,50

Фенни Ариэль Виола Солнечный

WeChat

Солнечно Виола Фенни Ариэль

Ариэль Виола Фенни

Ссылки:автозапчасти

Датчик слежения за линией | Makeblock Education

Последнее обновление

Обзор

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

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

● Рабочее напряжение: 5 В постоянного тока

● Рабочая температура: 0–70℃

● Диапазон обнаружения: 1–2 см

● Угол обнаружения: <120°

● Режим управления: двойной цифровой интерфейс

● Размеры (Д x Ш x В): 51 x 24 x 22 мм

Особенности

● Белая зона на модуле предназначена для соединения с металлическими балками;

● Два светодиодных индикатора сообщают о состоянии следования по линии;

● Обратное подключение питания не вредит ИС;

● Модуль чувствителен к естественному освещению, поэтому он может плохо работать в местах со значительными колебаниями окружающего освещения;

● Модуль поддерживает программирование в Arduino IDE и упрощает программирование с помощью библиотеки времени выполнения;

● Модуль поддерживает блочное кодирование на mBlock 5 и mBlock 3, что подходит для пользователей всех возрастов;

● Простое подключение благодаря разъему RJ25;

● Модуль имеет модульную установку, совместимую с деталями Lego;

● Модуль имеет контакты S1, S2, VCC и GND, которые поддерживают большинство основных плат управления Arduino.

Назначение контактов

Разъем модуля повторителя линии имеет 4 контакта. Характеристики контактов показаны в следующей таблице.

Серийный номер Штифт Особенность
1 Земля Подключить заземляющий электрод
2 ВКЦ Подсоедините шнур питания
3 С1 Вывод данных датчика 1
4 С2 Вывод данных датчика 2

Способ подключения

● Кабельное соединение RJ25

Бирка на интерфейсе следящего датчика имеет синий цвет. При использовании разъема RJ25 его необходимо подключить к порту с синей меткой на главной плате управления. Возьмите Makeblock Orion в качестве примера. Вы можете подключить его к порту 3, порту 4, порту 5 или порту 6, как показано на следующем рисунке.

 

● Подключение кабеля Dupont

При использовании кабеля Dupont для подключения к Arduino Uno контакты S1 и S2 модуля должны быть подключены к цифровым интерфейсам, как показано на следующем рисунке.

Руководство по программированию

● Программирование с помощью mBlock 5

Модуль следящего за линией поддерживает программирование с помощью mBlock 5. Ниже приводится краткое описание блока в этом модуле: 179 Характеристики Выберите порт

Чтение значения состояния датчика следящего элемента

● Программирование с помощью mBlock 3

Модуль следящего за линией поддерживает программирование с помощью mBlock 3. Ниже приводится краткое описание блока в этом модуле:

Блок Характеристики
Выберите порт

Чтение значения состояния датчика следящего элемента

● Программирование Arduino

Если вы используете программирование Arduino, вам необходимо использовать Makeblock-Library-master для управления следящим модулем.

MeLineFollower(uint8_t port) определяет порт для подключения

Функция Особенность
MeLineFollower (порт uint8_t) Определите порт для подключения
uint8_t readSensors() Чтение значений состояния датчиков

Эта программа написана на языке программирования Arduino. Значения датчиков считываются каждые 200 мс. Вы можете видеть, находятся ли два датчика за пределами черной линии последовательного монитора.

Принцип работы

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

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

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