Dynamixel AX-12A и Arduino: как использовать последовательный порт

Сервопривод Dynamixel AX-12A

Возьмем два сервопривода Dynamixel AX-12A производства компании Robotis. Dynamixel – это Ferrari мира электроники - лучшие сервоприводы на рынке.

Основные характеристики:

  • Рабочий крутящий момент: 10.4 кг.см
  • Полудуплексная многоточечная последовательная шина
  • 1 Mbps последовательной связи
  • Отчеты про положение, скорость, нагрузку, напряжение и температуру
  • Режим полного вращения
  • 3000 угловое позиционирование с шагом 1024
  • Управление скоростью и крутящим моментом с шагом 1024
  • Встроенный LED индикатор статуса
  • Автоматическое выключение при макс/мин напряжении, нагрузке или температуре
  • Подключение к сети с помощью одного кабеля

При подключении данных сервоприводов к Arduino могут возникнуть сложности. Для подключения к Arduino нескольких сервоприводов полудуплексная связь до 1Mbps требует дополнительной проводки. В случае подключения одного сервопривода, нужно просто подсоединить его к Arduino. При использовании нескольких, необходимо подключить буфер с тремя состояниями (например, такой как 74LS241N) между Arduino и AX-12A.

scheme-1

Протокол Dynamixel – это серийный протокол, поэтому буфер 74LS241 должен быть подключен к серийному порту, а затем к выводам «0» и «1». Появляется вопрос: если серийный порт используется Dynamixel, то как можно отобразить информацию через монитор Arduino IDE Serial?

Необходим еще один серийный порт. Можно использовать библиотеку Arduino NewSoftSerial, но нам также понадобиться конвертер USB-serial (такой как USB2Serial).

На фото ниже представлены все компоненты необходимые для использования сервопривода Dynamixel.

all-components

Ниже – 74LS241 и конвертер USB2Serial.

additional-components

Вот все компоненты, соединенные между собой.

wired

Ниже – схема подключения.

scheme-2

Сервоприводы Dynamixel требуют программное обеспечение для работы с Arduino. Хорошим примером является библиотека от Savage Electronics.

На видео ниже можно увидеть сервоприводы Dynamixel в действии.

Вот код, который был использован:

#include <Dynamixel_Serial.h>

#include <NewSoftSerial.h>

 

NewSoftSerial mySerial(9,8); //9=tx, 8=rx

int k=0;

 

void setup(){ // Configuration

 

Ax12.begin(1000000,2); //2=data control

mySerial.begin(9600);  //speed of serial port used by NewSoftSerial

}

 

void loop(){

 

// move servo 1 and 2 randomly

Ax12.move(1,random(200,600));

Ax12.move(2,random(200,600));

mySerial.print("Number:");

mySerial.println(k++);

 

delay(1000);

 

mySerial.print("Number2:");

mySerial.println(random(100));

}

 

Адаптировано: http://robottini.altervista.org/dynamixel-ax-12a-and-arduino-how-to-use-the-serial-port

Залишити відповідь