Управление Dynamixel 12A путем последовательной отправки пакетов: 5 шагов
Управление Dynamixel 12A путем последовательной отправки пакетов: 5 шагов
Anonim
Управление Dynamixel 12A путем последовательной отправки пакетов
Управление Dynamixel 12A путем последовательной отправки пакетов

DYNAMIXEL 12A

Шаг 1. Необходимые компоненты

АППАРАТНОЕ ОБЕСПЕЧЕНИЕ:

1. Dynamixel 12A или любой двигатель Dynamixel

2. USB для Dynamixel.

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ:

1. Мастер Robotis Dynamixel.

2. Python --- серийный пакет установлен

Шаг 2: Знакомство с Dynamixel 12A

Двигатели Dynamixel очень точны и в основном используются в робототехнике. Каждый двигатель Dynamixel имеет внутри микроконтроллер STM. Вы можете считывать текущий крутящий момент, напряжение, потребляемый ток, температуру, положение и т. Д. Из Dynamixels Motors.

Технические характеристики Dynamixel 12A:

Рабочее напряжение - 12 В

Вес - 55 г

Максимальный ток --900 мА

Крутящий момент в стойле - 15,3 кг / см

Шаг 3: обмен данными / управление Dynamixel 12A

  • Dynamixel 12A не похож на обычные серводвигатели, которые имеют 3 контакта GND, PWM, VCC, подают питание и сигнал PWM и управляют двигателем.
  • Мы можем управлять двигателями Dynamixel, используя протокол связи Half Duplex UART.

Что такое протокол полудуплексной связи?

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

Теперь мы узнаем о протоколе 1.0 для Dynamixel от Robotis для управления двигателями Dynamixel.

  • Вы можете связываться с двигателями Dynamixel, отправляя пакеты со своего ноутбука / микроконтроллера, такого как Arduino, r-pi и т. Д., На микроконтроллер, который присутствует внутри двигателей Dynamixel.
  • У каждого Dynamixels есть ID, которые можно изменить.
  • Пакет - это не что иное, как набор байтов.

В случае протокола Dynamixel 1.0 у вас будет два типа пакетов

  • Пакеты инструкций
  • Пакеты статуса

Пакет инструкций - это командные данные, отправляемые на устройство.

Пакет инструкций выглядит так:

Заголовок1, Заголовок2, ID, Длина, Инструкция, Параметр 1… Параметр, NC Контрольная сумма

0xFF, 0xFF, ID, длина, инструкция Param 1… Param, NCHKSUM

Байт инструкции сообщает, что делать, читать ли данные или записывать в двигатель Dynamixel.

ТАБЛИЦА УПРАВЛЕНИЯ ДИНАМИКСЕЛЬНЫМ ДВИГАТЕЛЕМ. Таблица управления - это структура, которая состоит из нескольких полей данных для хранения статуса или управления устройством.

Подробнее о таблице управления читайте здесь. Таблица управления Robotis.

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

Шаг 4: Запись положения цели в динамиксельный двигатель

Пакет инструкций для записи позиции цели

каждый пакет начинается с заголовка

H1 H2 ID LEN INST P1 P2 P3 CKSM

0xFF, 0xFF, 0x01, 0x05, 0x04, 0x1E, 0xF4, 0x01, 0xE2

LEN-инструкция byte + p1 + p2 + p3 + chk sum = 5 байтов

ID = идентификатор двигателя Dynamixel 1 - вы можете установить идентификатор Dynamixel с помощью программного обеспечения robotis Dynamixel wizard

INST = reg write - указывает, что вы пишете в мотор.

P1 = Начальный адрес входных данных в таблице управления. Позиция цели имеет адрес 30 (0x1E в шестнадцатеричном формате).

P2 = младший байт данных

P3 = старший байт данных

Расчет контрольной суммы будет объяснен в ближайшее время ………………….

Если вы отправите вышеуказанный пакет в Dynamixel Serially с помощью USB2Dynamixel, целевое положение двигателя Dynamixel будет установлено на 500.

Шаг 5: КОД PYTHON

# Разработано Мадху. Последнее обновление 19.07.2019

импорт серийного номера

время импорта

ser = serial. Serial ('com36', '57142')

# соответственно измените com-порт, скорость передачи моих двигателей Dynamixel составляет 57142 бода, вы можете установить ее с помощью программного обеспечения Dynamixel wizard.

в то время как (1):

gp1 = input ('введите позицию цели ID1 (0-1023)')

l = gp1 & 255 # младший байт

h = (gp1 >> 8) & 255 # старший байт

li = [0xff, 0xff, 0x01, 0x05, 0x04, 0x1e, l1, h1]

# расчет контрольной суммы

crc = sum (li [2:])

low1 = crc & 255

chksum = 255-низкий1

li.append (chksum) # добавление контрольной суммы

a = bytearray (li) # преобразование списка в bytearray

ser.write (a) # Последовательно отправить, используя usb2dynamixels.

time.sleep (0,5)

# Скопируйте вставку кода в среде IDE Python. Установите пакет pyserial. Подключите USB-разъем usb2dynamixel к USB-порту ноутбука, а другой конец - к двигателю Dynamixel. Подайте внешнее питание 12В на USB2DYNAMIXEL.

ЗАПУСТИТЕ код, введите значение позиции цели. См. Двигатель работает.