Proper power supply to Gecko Driver

I am not proficient in motors yet, I apologise for missing out on providing any information that should generally be available in any post.
I am dealing with a problem of running a NEMA-23 stepper motor with a Gecko G540 Motor Driver and Arduino Due (I use Due along with an ethernet shield for other purposes that are not relevant for this post).

I use a Keithley 2231A-30-3 power supply unit to supply DC to the Gecko driver. The Gecko motor driver is a G540 model. The NEMA-23 Stepper motor is a 23HS22-1504S model. The manuals/data sheets are given below (They are available on the website as well):
Power supply
Gecko G540 Driver Manual
NEMA-23 23HS22-1504S data sheet


Images.pdf (663 KB)


I can’t find the exact source, but I have read that for NEMA-23 motors, I should give between 24V - 48V. The G540 has a limit of 50V, so I definitely won’t exceed that. I am currently setting the power unit to give 30V (This has worked before, with no issues. I just disconnected and reconnected stuff and now it’s not working).

I connect the power supply terminals to the G540 terminals (as instructed in the manual), insert the E-Jumper and switch on the supply. The Green LED on the driver lights up, so the wiring seems fine, but the power supply unit indicates that the voltage is about 11 V (with CC being displayed. I read up that CC is constant charge, and I would need CV, constant voltage, but it doesn’t seem to be a setting on the power supply unit). This is without even connecting the motor yet.

The motor has a rated current of <3.5A, so I have soldered a 1.5kohm resistor across the terminals of the DB9 connector that I use. Once I plug that in, and switch on the supply, the green LED lights up again, and the holding torque engages on the motor (I tried physically turning the shaft and it stays put). The voltage on the supply unit still says about 11 V (exact number in the images). I further connected the GND (pin 25) and the step and direction pins (8 and 9, I use the A-axis on the driver) to the Arduino, with the help of a DB25 connector. I run the following code:

#include <Stepper.h>

int bottomSPR = 200; // Number of steps per revolution

// initialize the stepper library on pins 8 through 11:
Stepper bottom(bottomSPR, 8,9); // A axis => Step pin is 8 and Direction Pin is 9 (from G540 manual)

void setup()
  // set the speed __ rpm:
  // initialize the serial port:

void loop()
  bottom.step(1000); //Turn 1000 steps CW
  bottom.step(-1000); //Turn 1000 steps CCW

The above test code does not make the motor turn. When I use 10V instead of 30V, the supply unit is able to achieve constant voltage and shows CV. It does so for 11V as well. With the supply on, when I change the voltage to 12V, the stepper motor starts vibrating violently.

I have read through Robin2’s very helpful post and tried to search the forum, but can’t seem to resolve this. From what I can understand, the problem is not the Arduino Due, since just connecting the driver to the supply is resulting in lower voltage.

IF you have ever done this " I just disconnected and reconnected stuff and now it's not working)." Without first turning off all the power, then this is where the problem lies. Dead controller.


IF you have ever done this " I just disconnected and reconnected stuff and now it's not working)." Without first turning off all the power, then this is where the problem lies. Dead controller.


Hey Paul, Thanks for help. Is there any other way to check if I really have a dead controller?
I have several replacements for the g540 and I tried with a few of them, and I'm getting the same problem. While they are not brand new, I was pretty sure some them hadn't been used before.

Check the leads going to the motor with a scope and see if there is anything that looks like a pulse. Should be the same pulse shape for each motor winding.


Hi Paul, and others who may be facing a similar problem.
I was able to fix my problem. Firstly, @Paul, I checked each of the leads with an oscilloscope and all of them showed pulses (albeit different ones, some were thin, some were wide...). Didn't make much sense to me, I'm afraid.

As for the fix, everyone, sorry to say since I don't know what the problem exactly was, the fix isn't very clear either. What was happening was that the power supply unit was automatically switching to CC (constant current) instead of staying on CV (constant voltage). Some sources on the net indicated that this happens due the the load not being what you expect it to be, leading to drop in potential, so the supply instead adjusts the current it supplies (thus not being at CV). This kind of points to the driver possibly being dead, so for you it just might be.

I don't still know how this fixed it, but apparently changing the supply to CC mode, increasing the set current at or greater than the rated current, and then switching back to CV got it working again: It holds at 30V, and shows CV. One small issue still remains that there is a high pitched noise, so I'm guessing the current given by the supply is now not appropriate, but I'm able to control the stepper motor with my Arduino code and it's working for all purposes I need it for at the moment. Will try to update if I get more information on this.

IF the noise is from the stepper motors when they move, then that is normal.


The motor data sheet says it’s a 5v stepper. 30v seems excessive.
More later…

1st - you're not understanding the way bench-top power supplies like this work.
A "lab" power supply will typically have a voltage setting AND a current limit. It will regulate the set voltage UP UNTIL the current limit is reached. Then it will reduce the voltage to keep the current from exceeding the limit. This is great, if you have a reasonable expectation of how much current your device should use - you just set the limit a bit above that, and your circuit doesn't blow up, even if you have wiring errors or shorts. It's also good things that need constant current, like LEDs, some types of battery charging, etc.

If you look at your "Power Supply Connected" photo, it shows that the current limit has been reached, AND is set to "only" 100mA. 100mA would be a fine setting for powering just an Arduino, but it's unlikely to make a motor driver or high power stepper motor very happy...

Second, the datasheet for your motor says it's a 5V motor. That may not mean much - most modern stepper drivers have fancy mechanisms for limiting motor current that involve using a power supply that provides a higher-than-rating voltage to improve speed (dI/dt = V/L), but 30V for a 5V motor seems higher than it ought to be. The "NEMA-23" is just an indication of physical size, not electrical rating. (that said, bigger motors are likely to require more power...)