MX-64 Dynamixel Motor not Turning When Using Dynamixel Shield with Arduino Uno


I am currently starting a project in which I need to control a Dynamixel servo motor using an Arduino Uno. After following many tutorials, what should of been a quick setup has left me with a motor that will not turn or even exhibit holding torque (the power light does blink once though when power is connected).

My current setup is:

  • MX- 64 dynamixel motor
  • Arduino Uno
  • Dynamixel Shield
  • 12V power supply (that is able to provide the required current and does not unexpectedly drop below this voltage)

Currently I am just trying to run the position_mode dynamixel shield example code.

My method of running is:

  • Connect dynamixel shield to Arduino Uno
  • Connect MX-64 motor to the first TTL pin (furthest from power switch of the three)
  • Connect the Arduino Uno usb connection to my computer
  • connect the 12V power supply to the dynamixel shield and have the shields power switch off (have tested with on and off while uploading code and it didn’t make a difference)
  • switch UART switch to the upload position
  • bring up the position_mode example sketch (from the dynamixelShield section of examples)
  • from the tools menu, select the Arduino Uno as my board and the COM port the Uno is recognised on (COM8) for the port
  • upload the code using the arrow button (no errors when doing this are thrown)
  • switch the UART switch to the dynamixel mode once uploaded
  • switch the dynamixel shield power on if it wasn’t allready
  • hit the Arduino Uno reset button (done without this step and no difference)

I have both the DynamixelShield and Dynamixel2Arduino libraries included.

Unfortunately as of now I do not have access to a LN101 to see what the dynamixel is doing serial wise but considering the simplicity of what I’m trying to do I shouldn’t need it.

Any help will be much appreciated :slight_smile:

1 Like


Note that DYNAMIXEL MX / X series can use two different DYNAMIXEL Protocol either 1.0 or 2.0

These two protocols may use different data address, which might be the cause of your issue, as the DYNAMIXEL2 Arduino’s example you uploaded is mainly designed for DYNAMIXEL Protocol 2.0

Switch to DYNAMIXEL Protocol 2.0 through Firmware Recovery–You may need communication interface to use this tool.

If you do not have interface, you may just stick on DYNAMIXEL Protocol 1.0. In this case, modify the code. See Running Protocol 1 & 2 servos with DYNAMIXEL Shield for Arduino MKR - Example Sketch Setup Explained

  • Attached video may cover different controller from the one you have. However, the basic concept of modifying code is same as every controller (Address, data range, and etc modification)

Good day,