...
POST No. 2408050
AX-12A, Arduino Uno, and Dynamixel Shield
2021-06-02 16:34:18 Everythingishard
I can't get it to work at all. I purchased Robotis' SMPS, which is plugged into the Uno; the Uno is a clone. It's connected to a Win 10 PC with the latest Arduino IDE, and the libraries (dyanmixel2arduino and dynamixelshield) were just installed a week ago or so. The power jumper is on.

I tested power from the SMPS, it was good; I tested power on the three TTL connections on the shield, they're all good. I get a red light on the servo when I turn on power to the shield. I have continuity on all the wires of the included cable. I managed to connect the LN-101_INT, and I can read what the servo is returning; for example, in the example code Position_mode, it returns a position of 0 for both raw and degrees.

I went through the Dynamixel Self Checklist; I can turn an unpowered servo by hand, but not when it's powered, so I think the servo is ok. Plus, it's brand new, and to the best of my knowledge it's never been used.

When I first received it, I tried powering it with a 7.2 volt battery. I ran several of the included examples, but none of them worked. So I shelved it until I got the SMPS, then I started looking at the code more closely. When I first received the servo, I ran the example for changing the servo ID and I think I changed it to 100, so I changed the ID back to 1 using the same example. The LN-101 confirmed that the ID is 1. I then started running the "position mode" example with Protocol 1.0 instead of the default 2.0, but I can't get that motor to move. I tried running the "factory_reset" code and starting all over, but I get a message that says "factory reset failed!"

I figure there's either a problem with the shield, the servo itself, or (most likely) operator error. What am I missing? What else can I try?

***Edit to update LN-101 results
 
2021-06-02 16:34:18
Everythingishard
2021-06-03 09:26:48 Will Son

Hi,


First of all, please make sure to run the examples in DYNAMIXEL Shield library, not the DYNAMIXEL2Arduino.

If you are using any DYNAMIXEL Shield board, you should run DYNAMIXEL Shield examples.

In case of running the position_mode example with AX-12A, you should modify the default code.


For example, you should change the DYNAMIXEL Protocol version to 1.0 as below

const float DXL_PROTOCOL_VERSION = 1.0;


as well as the baudrate from 57600 to 1000000 (the default baudrate of AX series is 1000000 bps)

// Set Port baudrate to 57600bps. This has to match with DYNAMIXEL baudrate.
dxl.begin(1000000);


Thank you.

2021-06-03 09:26:48
willson
2021-06-03 10:11:58 Edward

YES!!!! That worked! It was the baud rate. I didn't look at the code closely enough, lesson learned. Thanks for your help!

2021-06-03 10:11:58
Everythingishard