- •Содержание
- •1 Основная часть 4
- •2 Техническая часть 13
- •3 Реализация алгоритмов управления роботом 25
- •Введение
- •1 Основная часть
- •1.1 Описание платформы Hexapod.
- •1.1.1 Описание работы сервомоторов cds5516
- •1.1.2 Микроконтроллер Arduino Mega 2560
- •1.2 Последовательный порт (com)
- •1.3 Средства Visual Studio для работы с com портом
- •2 Техническая часть
- •2.1 Основные инструкции для управления сервомоторами
- •2.2 Инверсная кинематика
- •2.3 Вычисление углов для сервомоторов
- •3 Реализация алгоритмов управления роботом
- •Заключение
- •Список использованных источников
1.1.1 Описание работы сервомоторов cds5516
Сервомоторы, представленные в комплекте к DFRobot Hexapod, используются для передвижения и рассчитаны на нагрузку в 14 кг/см и углами поворотов от 0̊ до 300̊. Сервомоторы совместимы с протоколами и интерфейсом Dinamixel AX-12. AX-12 это более дорогие и улучшенные сервомоторы, которые используют тот же контролер и те же инструкции для работы с пакетами.
Особенность сервомоторов CDS5516 в том, что информация формируется в виде пакетов данных, которые принимает контроллер сервомотора уже в последовательном виде. Данная особенность связанна с тем, что сервомоторы общаются с платой Arduino, с помощью протокола UART. UART (или УАПП, универсальный асинхронный приемопередатчик) – который преобразует заданный набор данных в последовательный вид так, что их можно передать по одной сигнальной линии. UART использует свой внутренний преобразователь импульсов, который держит высокий уровень на шине (IDLE) до тех пор пока не прейдут байты данных. При приеме, кроме того, каждому байту данных предшествует Старт-бит (St) сигнализирующий приемнику о начале посылки, за ним следуют биты данных (от 0 до 8). Завершает посылку Стоп-бит (Sp), который обеспечивает паузу между байтами.
Рисунок 1. Формат протокола UART
Кроме того, контроллер сервомотора преобразует данные в полудуплексный вид. Полудуплекс позволяет передавать и отправлять данные от сервомотора (или другого устройства, подключенного по протоколу UART) по оному проводу, но с разделением по времени. На Рисунке 2 представлена схема интерфейса сервомотора.
Рисунок 2. Схема интерфейса сервомотора CDS5516(CDS5500)
Направление передачи зависит от уровня сигналов MCU_TXEN и MCU_RXEN
Таблица 1. Соотношение сигналов MCU_TXEN и MCU_RXEN
MCU_TXEN |
MCU_RXEN |
Статус |
1 |
0 |
Сервомотор настроен на передачу информации |
0 |
1 |
Сервомотор настроен на прием информации |
0 |
0 |
Высокий импеданс |
Сигналы к сервомоторам, в виде пакетов байт, приходят от микроконтроллера Arduino 2560, который рассмотрим в следующем разделе.
1.1.2 Микроконтроллер Arduino Mega 2560
Управление сервомоторами осуществляется с помощью платы Arduino Mega 2560. Данная плата состоит из микроконтроллера ATmega2560, 54 цифровых входа/выхода (15 могут использоваться в качестве ШИМ-выходов), 16 аналоговых выходов, 4 UART (аппаратных приемопередатчика для реализации последовательных интерфейсов), кварцевый резонатор на 16 МГц, разъем USB, разъем питания, разъем ICSP для внутрисхемного прогарммирования и кнопка RESET (сброс). Распиновка контактов представлена в Приложении А.
Основным микроконтроллером платы является ATmega2560. Это CMOS (КМОП) восьми битный микроконтроллер с низким энергопотреблением основанный на RISC архитектуре. Блок схема микроконтроллера представлена в Приложении Б. Микроконтроллер обладает 256 КБайтами флеш-памяти для программ, из которых 8 Кбайт используется загрузчиком, 8 Кбайт SRAM – памяти и 4 КБайта EEPROM – памяти.
Особенность данной платы, что для преобразования интерфейсов USB-UART используется микроконтроллер ATmega8U2 (Блок – схема представлена в Приложении В). Так же как и основной контроллер, он 8 битный CMOS - микроконтроллер, построенный на RISC архитектуре. Обладает 8 Кбайтами программируемой флеш памяти, 512 Байтами SRAM – памяти и 512 Байтами EEPROM – памяти.
Программирование микроконтроллера осуществляется в среде Arduino IDE, использующая язык Wiring. Данная среда является аналогом среды разработки Processing (ничто не мешает использовать ее в качестве средств разработки). Wiring это язык с открытым исходным кодом, используемых при программировании микроконтроллеров. Его особенность в том, что он основан на языке «С/С++», при этом язык упрощен, содержит встроенные библиотеки, такие как Servo.h, SPI.h, SD.h, рассчитанные на работу с большинством плат Arduino. В качестве средства компиляции используется компилятор AVR – GCC.
После компиляции готовый скетч файл в формате «.ino», отправляется в основной микроконтроллер ATmega 2560, через контроллер ATmega8U2.
