Direct connection XL430-W250-T to OpenCM9.04-A

I connected XL430-W250-T directly to OpenCM9.04-A and added 11v power supply to the board.
The motor blinks red once on start.
Following code makes green led blinking but no action from the motor.
What I did wrong?

#include <Dynamixel2Arduino.h>
#define DXL_SERIAL Serial3
#define DEBUG_SERIAL Serial
const uint8_t DXL_DIR_PIN = 22;
const uint8_t DXL_ID = 1;
const float DXL_PROTOCOL_VERSION = 2.0;

Dynamixel2Arduino dxl(DXL_SERIAL, DXL_DIR_PIN);
using namespace ControlTableItem;

void setup() {
DEBUG_SERIAL.begin(115200);
dxl.begin(57600);
dxl.setPortProtocolVersion(DXL_PROTOCOL_VERSION);
dxl.ping(DXL_ID);

dxl.torqueOff(DXL_ID);
dxl.setOperatingMode(DXL_ID, OP_CURRENT_BASED_POSITION);
dxl.torqueOn(DXL_ID);

pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
dxl.setGoalCurrent(DXL_ID, 200);
dxl.setGoalPosition(DXL_ID, 350.0, UNIT_DEGREE);

// Print present current
delay(500);
DEBUG_SERIAL.print("Present Current(raw) : ");
DEBUG_SERIAL.println(dxl.getPresentCurrent(DXL_ID));
digitalWrite(LED_BUILTIN, HIGH); // set to as HIGH LED is turn-off

delay(500);
dxl.setGoalCurrent(DXL_ID, 3.0, UNIT_PERCENT);
dxl.setGoalPosition(DXL_ID, 0);
delay(500);
DEBUG_SERIAL.print("Present Current(ratio) : ");
DEBUG_SERIAL.println(dxl.getPresentCurrent(DXL_ID, UNIT_PERCENT));
digitalWrite(LED_BUILTIN, LOW); // set to as LOW LED is turn-on

delay(500);
}

Dear Dimik,

excuse me for having issues with your DYNAMIXEL - But I will do my best to support you as good as possible :wink:

Could you please open the Serial Monitor and send me a screenshot what you are seeing?

Dear Support,

I have only repeatable rows:

Present Current(raw) : 0.00
Present Current(ratio) : 0.00

May be also useful

Thanks for your reply and the attached photo. Just one short question, please are you sure, you’ve insert the DYNAMIXEL plug in the correct way?

OpenCM

If the wiring is correct could you please run the Monitor example below and post the serial Monitor output here?

Slots in XL430-W250 are located differently (by 90 degrees) that in your diagram, but I checked both possible options of connection changing left and right wires (blue and black in your diagram). The result for both options is the same:


Press Enter Key
[CMD] : scan
Find 0 Dynamixels

Dear Dimik,

thanks for your reply. If the wiring is correct and the DYNAMIXEL is getting the correct voltage from the battery or power supply it can be just any issue with the code. Are you sure no short circuit happened and the OpenCM is fault? The STM controller on the top of the board is not getting warm while operation?

I’ve already sent the manufacturer an email they should share their opinion as well.

Dear support,

thank you for helping me. You can see the voltage and the current on the photo I’d sent.
Actually the board consuming about 50mA by itself from the 11v power supply and about 50mA more after connecting a motor. All the elements had normal temperature. I’d also measured that 11v is delivered to the motor with correct polarity regarding
https://emanual.robotis.com/assets/images/dxl/x/x_series_ttl_pin.png

Dear Dimik,

It seems that the section of Preprocessor has been wrongly defined for #DXL_SERIAL and the #DXL_DIR_PIN .

You should redefine the code as following,

#include <Dynamixel2Arduino.h>

#define DXL_SERIAL Serial3 > Serial1 //OpenCM9.04 EXP Board’s DXL port Serial. (Serial1 for the DXL port on the OpenCM 9.04 board)

#define DEBUG_SERIAL Serial

const uint8_t DXL_DIR_PIN = 22 > 28 ; //OpenCM9.04 EXP Board’s DIR PIN. (28 for the DXL port on the OpenCM 9.04 board)

Looking through the issue ticket, it seems that the user is using DYNAMIXEL XL430-W250 which does not support Current Based Mode.

Go to XL430-W250 e-Manual, and see the supported Operating Mode,

I hope you find this helpful,

Thank you. That works for me.