- Необходимые материалы
- Концепции последователя линии
- Описание схемы
- Работа робота-следящего за линией с использованием MSP430
- Принципиальная электрическая схема
- Объяснение программирования
Робот-последователь линии - один из популярных проектов робототехники среди студентов и новичков из-за своей простоты. Он следует черной или белой линии, в зависимости от того, как вы программируете свой микроконтроллер. Здесь мы делаем робота-следящего за линией, используя стартовую панель MSP430 от Texas Instruments, которая следует за черной линией. Если вы не знакомы с панелью запуска MSP430, прочтите наше Учебное пособие по началу работы с MSP430.
Необходимые материалы
- MSP430G2 LaunchPad от Texas Instruments
- Модуль драйвера двигателя L298D
- Соединительные провода
- Модули ИК-датчика
- Шасси, колесо, американские горки
- Энергия IDE
- Источник питания (3,3 В) и 5 В-12 В
Концепции последователя линии
Понятие последователя линии связано со светом. Мы использовали поведение света на черно-белой поверхности. Когда свет падает на белую поверхность, он почти полностью отражается, а в случае черной поверхности свет поглощается черной поверхностью. Это объясненное поведение света используется в этом роботе-следователе линии.
В этом роботе-повторителе линии на базе MSP430 мы использовали ИК-передатчики и ИК-приемники, также называемые фотодиодами. Они используются для отправки и получения света. ИК передает инфракрасный свет. Когда инфракрасные лучи падают на белую поверхность, они отражаются и улавливаются фотодиодами, что вызывает некоторые изменения напряжения. Когда ИК-свет падает на черную поверхность, свет поглощается черной поверхностью, и лучи не отражаются обратно, поэтому фотодиод не получает свет или лучи. Чтобы узнать больше об ИК-датчиках, перейдите по ссылке.
Здесь, в этом роботе-повторителе линии на базе MSP430, когда датчик обнаруживает белую поверхность, тогда MSP получает 1 как вход, а когда обнаруживает черную линию, MSP получает 0 как вход.
Описание схемы
Мы можем разделить робота-следящего за линией на различные секции, такие как секция датчиков, секция управления и секция драйвера.
Секция датчика: Эта секция содержит ИК-диоды, потенциометр, компаратор (операционный усилитель) и светодиоды. Потенциометр используется для установки опорного напряжения на одном конце и ИК - датчиков компаратора чувствовать линию и обеспечить изменение напряжения на втором терминале компаратора. Затем компаратор сравнивает оба напряжения и генерирует цифровой сигнал на выходе. Здесь, в этой схеме, мы использовали два компаратора для двух датчиков. LM358 используется в качестве компаратора. LM358 имеет два встроенных малошумящих операционных усилителя.
Секция управления: MSP430 Launchpad используется для управления всем процессом робота-следящего за линией. Выходы компараторов подключены к цифровым выводам P1_3 и P1_4 панели запуска MPS430. Панель запуска MSP430 считывает эти сигналы и отправляет команды в схему драйвера повторителю линии привода.
Секция драйвера: Секция драйвера состоит из драйвера двигателя и двух двигателей постоянного тока. Драйвер двигателя используется для управления двигателями, поскольку панель запуска MSP430 не подает на двигатель достаточного напряжения и тока. Поэтому мы добавили схему драйвера двигателя, чтобы обеспечить достаточное напряжение и ток для двигателя. Здесь мы использовали драйвер L298d для управления двигателями постоянного тока. MSP430 Launchpad отправляет команды этому приводу двигателя, а затем запускает двигатели.
Мы разработали роботов-следящих за линией с использованием другого микроконтроллера:
- Робот следящего за линией с использованием микроконтроллера 8051
- Робот следящего за линией, использующий Arduino
- Робот-последователь линии с использованием Raspberry Pi
- Робот следящего за линией с использованием микроконтроллера PIC
Работа робота-следящего за линией с использованием MSP430
Очень интересна работа последователя линии. Робот-следящий за линией обнаруживает черную линию с помощью датчика, а затем отправляет сигнал на панель запуска MSP430. Затем MSP430 Launchpad запускает двигатель в соответствии с выходными сигналами датчиков.
В этом проекте мы используем два модуля ИК-датчиков, а именно левый датчик и правый датчик. Когда левый и правый сенсоры обнаруживают белый цвет, робот движется вперед.
Если левый датчик выходит на черную линию, робот поворачивает налево.
Если правый датчик обнаруживает черную линию, робот поворачивает вправо, пока оба датчика не коснутся белой поверхности. Когда появляется белая поверхность, робот снова начинает двигаться вперед.
Если оба датчика показывают черную линию, робот останавливается.
Принципиальная электрическая схема
Схема этого робота-следящего за линией MSP430 очень проста. Выход компараторов напрямую подключен к цифровому контакту MSP430 Launchpad с номерами p1_3 и P1_4. А входные контакты драйвера двигателя IN1, IN2, IN3 и IN4 подключены к цифровым контактам P1_5, P2_0, P2_1, P2_2 панели запуска MSP430 соответственно. Один двигатель подключен к выходному контакту драйвера двигателя OUT1 и OUT2, а другой двигатель подключен к выходам OUT3 и OUT4. Здесь мы использовали источник питания 3,3 В для питания всей схемы, кроме модуля драйвера двигателя. Мы поставили 8В на модуль драйвера двигателя. Пользователь может использовать 5–12 В.
Вы также можете создать свой собственный ИК-модуль, как я построил на Perf Board. Ниже приведена схема ИК-модуля:
Объяснение программирования
Полную программу и видео можно найти в конце этой статьи.
В программе, прежде всего, мы определяем входной и выходной контакты для датчика и двигателей. Затем определите несколько макросов для направления следящего за линией, а затем напишите директиву для выбора выхода датчика.
Примечание: датчик может быть активным низким или активным высоким, поэтому сначала проверьте, какой выходной сигнал датчика, затем выберите директиву, комментируя или раскомментируя activeLowMode . Для активного HIGH закомментируйтемакрос activeLowMode .
#define l_sensor P1_3 #define r_sensor P1_4 int pins = {P1_5, P2_0, P2_1, P2_2}; #define forward 0x05 #define left 0x06 #define right 0x09 #define stop 0x00 // # define activeLowMode #ifdef activeLowMode int res = {forward, left, right, stop}; #else int res = {стоп, вправо, влево, вперед}; #endif
После этого в функции настройки мы указываем направление на датчик и штифт двигателя. Затем в функции цикла мы проверяем входы и отправляем выходные данные в модуль драйвера двигателя для запуска двигателей.
void setup () { для (int я = 0; я <4; я ++) pinMode (контакты, ВЫХОД); pinMode (l_sensor, INPUT); pinMode (r_sensor, INPUT); } void loop () {int sense = (digitalRead (l_sensor) << 1) - digitalRead (r_sensor); для (int i = 0; i <4; i ++) digitalWrite (контакты, (res >> i) & 0x01); }
В этом повторителе строки есть четыре условия, которые мы читаем с помощью MSP430 Launchpad. Мы использовали два датчика, а именно левый датчик и правый датчик.
Условия: Активный ВЫСОКИЙ выход
Ввод |
Вывод |
Движение Робота |
||||
Левый датчик |
Правый датчик |
Левый мотор |
Правый мотор |
|||
LS |
RS |
LM1 |
LM2 |
RM1 |
RM2 |
|
0 |
0 |
0 |
0 |
0 |
0 |
Стоп |
0 |
1 |
1 |
0 |
0 |
0 |
Поверни направо |
1 |
0 |
0 |
0 |
1 |
0 |
Повернуть налево |
1 |
1 |
1 |
0 |
1 |
0 |
Вперед |
Программа написана согласно условиям приведенной выше таблицы. Проверьте полный код и демонстрационное видео ниже.