Рубрики
Схемы на PIC

Робот следующий вдоль линии на микроконтроллере PIC16F877A

Робот, следующий вдоль линии (Line Follower Robot), является одним из самых простых видов роботов, конструируемых радиолюбителями-энтузиастами. В данной статье мы рассмотрим создание подобного робота на основе микроконтроллера PIC16F877A. Это 40-контактный микроконтроллер общего назначения, который мы ранее достаточно часто использовали в наших обучающих статьях про микроконтроллеры PIC.

Также на нашем сайте вы можете посмотреть другие проекты роботов, следующих вдоль линии:

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

  1. Микроконтроллер PIC16F877A (купить на AliExpress).
  2. Инфракрасный датчик – 2 шт. (купить на AliExpress).
  3. Держатель микросхем на 40 контактов (купить на AliExpress).
  4. Программатор PICkit 3 (купить на AliExpress).
  5. Кварцевый генератор 20 МГц (купить на AliExpress).
  6. Конденсаторы 22 пФ (2 шт.), 0,1 мкФ и 10 мкФ (купить на AliExpress).
  7. Регулятор напряжения 7805 (купить на AliExpress).
  8. Драйвер двигателей L293D (купить на AliExpress).
  9. Электродвигатель постоянного тока – 2 шт.
  10. Шасси робота.
  11. Power bank (или другой аналогичный источник питания).
  12. Перфорированная плата и соединительные провода.

Принцип работы робота, следующего вдоль линии

Следующий вдоль линии робот способен обнаруживать/отслеживать линию с помощью пары инфракрасных датчиков. Каждый инфракрасный датчик имеет в своем составе инфракрасный передатчик (IR Transmitter) и инфракрасный приемник (IR receiver), роль которого выполняет фотодиод. Инфракрасный передатчик излучает инфракрасный свет, а инфракрасный приемник принимает эти отраженные от препятствия лучи (если оно есть). При этом не все поверхности способны хорошо отражать инфракрасные лучи, некоторые поверхности практически полностью поглощают эти лучи. К примеру, от светлой (белой) поверхности инфракрасные лучи отражаются хорошо, а вот черной поверхностью они полностью поглощаются как показано на рисунках ниже. На этих свойствах инфракрасного цвета и будет основан принцип работа нашего робота, следующего вдоль линии.

Внешний вид инфракрасного датчика показан на следующем рисунке.

Таким образом, в составе нашего проекта будет два инфракрасных датчика, которые будут отслеживать местоположение линии и два двигателя, которые будут перемещать робота вдоль этой линии. Эти двигатели будут потреблять достаточно большой ток и должны быть двунаправленными, поэтому для управления ими в нашем проекте мы использовали модуль драйвера двигателей L293D. Обрабатывать данные с инфракрасных датчиков и управлять работой двигателей в нашем проекте будет микроконтроллер PIC. Структурная схема работы проекта показан на следующем рисунке (только в ней Raspberry Pi замените на микроконтроллер PIC).

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

Если левый датчик обнаруживает черную линию, то робот поворачивает влево.

Если правый датчик обнаруживает черную линию, то робот поворачивает вправо.

Если оба датчика обнаруживают черную линию, робот останавливается.

В нашем проекте мы использовали два инфракрасных датчика (сенсора), которые мы назовем левым датчиком и правым датчиком.

Схема проекта

Схема робота, следующего вдоль линии, на основе микроконтроллера PIC16F877A представлена на следующем рисунке.

Схема содержит два инфракрасных датчика и два электродвигателя постоянного тока, который управляются с помощью драйвера L293D – его использование необходимо в связи с тем, что выходные контакты микроконтроллера не могут обеспечить ток достаточный для управления двигателями. Его в нашей схеме можно запитать от 5V, как и всю остальную схему. Модуль драйвера двигателей L293D содержит 4 входных контакта (по 2 на каждый двигатель), подключенных к микроконтроллеру PIC16F877A, с которого и будет осуществляться управление двигателями.

«Глазами» робота в нашем проекте являются два инфракрасных датчика, также подключенных к микроконтроллеру PIC16F877A. При обнаружении белого цвета на выходе данных датчиков будет логическая «1», а при обнаружении черного цвета на их выходе будет логический «0».

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

№ п/п Контакт в схеме Контакт микроконтроллера PIC
1 вых. контакт левого датчика RD2 (pin 21)
2 вых. контакт правого датчика RD3 (pin 22)
3 Motor 1 Channel A pin RC4 (pin 23)
4 Motor 1 Channel B pin RC5 (pin 25)
5 Motor 2 Channel A pin RC6 (pin 26)
6 Motor 2 Channel B pin RC7 (pin 27)

Для питания схемы мы использовали power bank, который на своем выходе обеспечивает +5V через USB порт, поэтому мы обошли (не использовали регулятор напряжения 7805) и с его выхода непосредственно запитали микроконтроллер PIC, датчики и двигатели. Вы же с помощью регулятора 7805 можете использовать для питания схемы батарейки на 9 или 12V.

Внешний вид собранной конструкции робота показан на следующих рисунках.

Объяснение программы для микроконтроллера PIC

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.

Первым делом в программе инициализируем используемые контакты. У нас два контакта будут работать на ввод данных (к ним подключены инфракрасные датчики) и четыре контакта – на вывод данных (с них будет осуществляться управление двигателями).

После этого нам необходимо считывать состояние контактов, к которым подключены  инфракрасные датчики, и в зависимости от их состояния осуществлять управление двигателями. К примеру, если на выходах обоих датчиков уровень high (то есть ни один из датчиков не видит черную линию), то робот должен двигаться прямо.

Если левый датчик обнаруживает черную линию, то робот должен двигаться влево, для этого нужно остановить двигатель 1, а двигатель 2 вращать в прямом направлении.

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

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

Тестирование работы робота

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

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

Более подробно работу проекта вы можете посмотреть на видео, приведенном в конце статьи.

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

Видео, демонстрирующее работу проекта

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

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