Setting up MX3600 3-axis driver

I am having trouble running the X-Carve with the Leadshine MX3660 stepper driver offered by Inventables. I’ve reduced my system to the minimum three components: Arduino Uno controller, MX3660 driver, Nema 17 stepper motor. The Arduino has simple code that sends direction and step signals to the MX3660, but the stepper doesn’t step. The stepper is energized and is very difficult to rotate by hand. If I hold the stepper I can feel it twitching when the step commands are sent, but there is no rotation. Can anyone find what is wrong in my setup?

Arduino:
The code is stripped down to basics. It sends direction and step signals to the driver in a loop. I scoped the signal from the Arduino and it is correct. I have varied the step width and low level width (interval between step signals) significantly, but nothing works. If the low level width is very large (10000 uS) the motor whines but doesn’t move.

int stepWidth = 10; // microseconds
int lowLevelWidth = 100; // microseconds

// send direction signal
// data sheet says 5uS minimum delay before step signal
digitalWrite(directionPin, LOW);
delayMicroseconds(10);

// send step signals
// data sheet says 2.5uS minimum signal width
// data sheed doesn’t list minimum low level width
for (int i = 0, i < 200; i++) {
digitalWrite(xStepperPin, HIGH);
delayMicroseconds(stepWidth);
digitalWrite(xStepperPin, LOW);
delayMicroseconds(lowLevelWidth);
}
delay(1000);

DB 25 Cable:
The MX3660 receives input through a DP 25 cable. I have the step signal in pin 2 and the direction signal in pin 3, per diagram on page 13 of the manual

MX3660:
There are a few settings on the driver: a charge pump (watchdog timer) called Pulse Switch, a Smoother Switch, output current, and microstep resolution.

The Pulse Switch is set to ON, which means (confusingly) that the charge pump is off. I’ve tried it both on and off. When set ON the motors twitch. I am not sending a watchdog signal.
The Smoother Switch has been tried on and off, no difference. The signal to the controller is pretty sharp so I don’t think this is necessary.
Output current is set ON ON ON, for 1.45A peak/1.04 RMS. I’ve tried it at 2.08A peak/1.48 RMS.
Microstep is set at ON ON ON, for full steps. I’ve tried 1/8 step also.

The Arduino has it’s own 12VDC power supply. The MX3660 is powered by a 30V 10A variable voltage power supply set at 24VDC. It shows only .1A being drawn.

Can you send a picture of all the connections?

Here are photos of the setup and connections:

The simplified test setup.

The Arduino with the DB25 cable broken out. I’m using Arduino pin 2 and pin 3 for STEP and DIRECTION signals.

The MX3660 pulse switch. The dip ON setting means the charge pump setting is off.

The MX3660 power and motor settings.

MX3660 dip switches setting current limit and micro step resolution.

We have run one of these with grbl on an Arduino Uno , but the setup was taken apart. We started to put it back together on Friday, but ran out of time. @TaitLeswing will work on it next week.

I have been looking into the signals from the Arduino and the MX3660. All motor outputs (A+, A-, B+, B-) are in sync, so the motor is energized and rotation is locked. This is the case no matter what signals are coming from the Arduino.

The Arduino is sending a constant direction signal of 5VDC to MX3660 pin 3, the x direction input pin. The Arduino is also sending pulses to MX3660 pin 2, the x step input pin. The step signal width is 7uS, but this has been varied 5uS-200uS.

Here’s a scope image of the MX3660 A+ signal output (A) and the Arduino step signal input (B).

From what I can see the Arduino is sending the correct signals to the MX3660 and the MX3660 is totally unresponsive. There is not fault signal from the MX3660. I’ve tried all possible dip switch settings. All three channels have the same null response. I can’t see what’s missing and at this point I am out of ideas on what to do next.

Do you have any recommendations? How is your testing going?

@JeffBennett I have a setup in the workshop right now that is working with the MX3660, this board and an Arduino running grbl 0.9i.

Would you like me to send you one of these boards to see if it solves your problem? Have you tried flashing grbl onto your Arduino?

From the MX3660 manual:

"When the charge pump feature is turned on, the MX3660’s activation will depend on the receiving of 10 KHz signals at pin 16 of the DB25 connector. "

You said earlier that you weren’t sending a watchdog signal, have you tried since?

@TaitLeswing I have tried sending the watchdog signal, with the dip switch in both ON and OFF positions, but no luck.

I do not want to use grbl on this project. I would be interested in trying the board you mentioned above. Would you be intending that board as a replacement for the MX3660?

@JeffBennett, the board is not a replacement, it’s sort of a breakout board. Please message me the address you’d like it sent to and I’ll pack it up.