Прошивка M2C2Д

Статья принадлежит к серии – колёсная управляемая платформа с элементами BEAM.

Как говорилось ранее основные возможности платы: управление 2-мя двигателями, 2-мя сервоприводами и опрос одного датчика. Но т.к. сейчас нет возможности проверить работу сервоприводов – будет рассмотрен алгоритм без них, т.е. это будет М2Д.

Робот

Робот

Алгоритм робота сводиться к 2-м одновременно выполняемым вещам: контроль UART и обработка его данных, что происходит в главной функции программы, и формирования ШИМ’а для работы двигателей, за что отвечает третий таймер контроллера (TMR2).

Связь с роботом происходит по Bluetooth в режиме SPP или последовательного порта, т.е. UART. Данные передаются пакетами, длиной по 3 байта:
1 стартовый и одновременно команда
2 передаваемый параметр/значение
3 конечный байт, имеет 13 код или в ASCII – это Enter

Реализованные команды и их значения:

Команда Параметр Описание
A Байт, скорость вращения 0-255 Левый мотор вперед
a Левый мотор назад
D Правый мотор назад
d Правый мотор назад
W Оба мотора вперед
w Оба мотора назад
S Байт, не используется Стоп моторы
L Запрос значения с датчика
l Байт, 0-255, значение АЦП Ответ робота на команду L


Т.к. длина посылки фиксированная, в командах без параметров передаётся любое значение вместо параметра.

Такое большое количество команд создавалось для временного управления роботом через консоль, для управления из программы команды W, w, S не используются. О приеме команды робот сообщает мигнувшим светодиодом.

Действия, происходящие в главной функции, описывает следующая блок-схема —

Просмотреть блок схему функции main

Если кратко словами, то: после включения питания и инициализации в бесконечном цикле крутиться проверка наличия данных пришедших с Bluetooth, а что пришло, обрабатывается и выполняется.

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

Просмотреть блок схема таймера TMR2

I – это байтовая переменная, т.е. принимает значения от 0 до 255, она постоянно увеличивается на 1, при переполнение возвращается в 0. В самом начале происходит проверка – включены ли моторы, т.е. следует ли формировать ШИМ для них, если нет, то нечего не делаем. Если включен – смотрим, в какую сторону он должен крутиться, и на соответствующих выводах подаём логические 1 и 0, так же во временную переменную сохраняем значение, отвечающее за конец ШИМа или его величину. Далее на каждом такте таймера проверяем, для каждого из моторов, следует ли прекратить формирования ШИМа.

Скачать прошивку

Комментарии RSS

Оставьте отзыв