Stepper motor driver

I have a bipolar stepper motor which can draw up to 2.5A and runs on 24V. I am trying to find a board to control this with the arduino uno.

Any suggestions?

DIY solution
Rady made
Use as high supply voltage as possible for best performance

My motor has 4 wires - motor A start, motor A end, motor B start, motor B end.

I am looking at your "ready made" solution, and I do not understand how I would hook it up?

Thanks

Bipolar stepper motors ususally come with 4 wires. 2 for each winding. Wiring the motor to the controller is not critical as long as both wires from the same winding are connected to the same output. Beyond that you need a power supply with as high voltage as you controller can withstand. You need two singals from the arduino, one for stepping pulses and one for direction. Make sure that the arduino, the controller and the power supply have a common ground connection.
Here are some instructions, they apply for most controllers:

You won't be able to run it at 2.5A continuously from an A3977, since the chip cannot dissipate
the 5W+ needed.

For that current level single-chip drivers aren't going to cope well enough and a full blown
discrete MOSFET driver like a GeckoDrive is the way to go.

Do you actually need the full 2.5A drive? You can run at a lower current if not (within
reason).

The DRV8825 is one of the better (lower on resistance) stepper driver chips, and if only it
came in a package with a heatsink tab it would be mighty...

Here: Slowing 184.104.178.68&c=1&t=45047.5020266204 is a driver kit that will safely handle 4A continuous . It is based on the Toshiba THB6064 driver chip, a big improvement over the notorious Toshiba TB6560 used in many cheap Chinese stepper drives. It came out of a project documented on www.cnczone.com.

Bob

Hmm, you guys are asking some detailed questions. Maybe it would be helpful if I posted the manual to the motor. Here it is: http://ge.tt/8X8qBb22/v/0?c

Particularly pages 6, 9, and 10.

I made my original post after the board I picked up at microcenter started smoking and burned out when I hooked it up (I assume it couldn't handle the amount of current and got too hot, or maybe I hooked it up wrong?)

I am a software engineer, so I have no experience with stepper motors, and am not super knowledgeable about electronics in general, so I'm trying hard to figure this stuff out - but it's pretty confusing!

I should also add that I need micro-stepping capability (talked about on page 9 of the pdf)

If anyone can understand that manual and recommend me a board+how to hook it up, I'd be eternally grateful :-D. Would either of the ones linked above work?

Thanks!

Page 6 says 1,8A current which is quite much for a NEMA 17 motor. Why your spec of 2,5A? For that motor i would recommend a Big Easy Driver. The rest is about driving the motor in full step mode. Tha manual does not make much sense to me. Maybe if you drive the motor with the designated voltages and the dutycycles mentioned you will get the currents from the manual. If you drive the motor att full step with a dc voltage of 12V you will get 4.6A which indeed will get very hot and damage the winding in a very short period of time.

From looking at the manual, the Big Easy Driver is a bit underpowered at 1.4A/phase, the motor supplied with the valve requires 1.8A/phase. The recommended power supply is 24V with 2.6A minimum current. This is because at startup or in a stall condition the motor could draw up to 2.545A.

The driver from THB6064 MassMind Stepper Motor Driver Kit will handle this easily and provide the recommended microstepping. There aren't many good drivers except from ones using discrete MOSFETs that cover the range in between the lower current drivers and ones handling 2.5A or more.

As MarkT said, the Gecko drivers are the best, but you will pay much more for them.

If you want something that's not in kit form, http://www.automationtechnologiesinc.com/products-page/kl-stepper-drivers/kl-4030-24-40vdc-3-0a-microstepping-driver should do the job for a little bit more money. They also sell the Gecko drives, so you can compare them.

One thing to be careful in stepper motor driver selection is that many sellers rate the drivers using the maximum current instead of the continuous current rating. This is a good way to burn out the driver if you exceed the continuous rating for more than a split-second.

Thank you for all the input.

The KL-4030 looks perfect, and it's not too expensive.

From looking at some pictures, hooking the motor up looks easy, there's A+, A-, B+, B-, Power, and Ground. But then it seems there are 2 pins each for EN (energize?), PUL (pulse?), DIR (direction?)

I've been looking at some stepper motor code examples, and they always reference 4 pins - in1, in2, in3, in4. How do the 6 EN/PUL/DIR pins on the KL-4030 correspond with these?

Assuming I got this board (I'm about to order it), I don't think I see how I write the code to control it?

nilton61:
Page 6 says 1,8A current which is quite much for a NEMA 17 motor. Why your spec of 2,5A? For that motor i would recommend a Big Easy Driver. The rest is about driving the motor in full step mode. Tha manual does not make much sense to me. Maybe if you drive the motor with the designated voltages and the dutycycles mentioned you will get the currents from the manual. If you drive the motor att full step with a dc voltage of 12V you will get 4.6A which indeed will get very hot and damage the winding in a very short period of time.

Its a quad-stack motor, so a lot longer than most NEMA17's and the 1.8A rating is rms, not
peak, so the peak will be 2.5A. Since steppers are often at rest the normal way to
quote current is amplitude, not rms, I believe.

sarink:
Thank you for all the input.

The KL-4030 looks perfect, and it's not too expensive.

From looking at some pictures, hooking the motor up looks easy, there's A+, A-, B+, B-, Power, and Ground. But then it seems there are 2 pins each for EN (energize?), PUL (pulse?), DIR (direction?)

I've been looking at some stepper motor code examples, and they always reference 4 pins - in1, in2, in3, in4. How do the 6 EN/PUL/DIR pins on the KL-4030 correspond with these?

Assuming I got this board (I'm about to order it), I don't think I see how I write the code to control it?

Anyone?

EN = Enable
PUL = Pulse
DIR = Direction.

Each signal has two connections, one to each end of the led of an optocoupler. if you use an active high output (most common) you connect the signals to the + inputs and connect all - inputs to commen gnd.
If you use a active low output you connect the output to the - signals and connect all + signals to + 5V

What's "active high output" vs "active low ouptut" ? And how do I know which I want?

So does this mean I should (if using the more "common" active high output)...

Don't touch EN+ (this should leave the board enabled?)
Connect PUL-, DIR-, EN- together, attach them to a ground
Connect only the PUL+ and DIR+ to arduino output pins, and writeHigh/writeLow to these two pins to perform steps? (it looks like the arduino Stepper library has two modes, one which takes in 4 pins and one which takes in 2, so I'd just use the 2)

Have I understood correctly?

EN+ to +5V

All - signals to common GND
Use the 2 pin variant of the stepper or accelstepper library

Yes, it seems you got it right

Only change is connecting EN+ to +5v rail.

Sweet, thanks!

So I've got the board and everything all wired up and I'm trying to write the code.

The Stepper.h constructor takes 2 pins, but doesn't say which is which? Is the first pin the PUL+ or the DIR+?

I also am supposed to tell it the number of steps it takes to make a full revolution. I don't see that anywhere in the manual. I have the "6-way" variant of the valve, so it says there's a 60 degree angular move distance (which makes perfect sense, because there are 6 ports, and it rotates in a circle). But does that mean its 6 "steps" to make a full revolution?

Again here is a link to the manual: http://ge.tt/8X8qBb22/v/0

I'm really just looking for the line I need to instantiate the motor. Right now I've got:

int pulPin = 5;
int dirPin = 6;
Stepper motor(360/60, pulPin, dirPin);

Thanks

Here's how I have it wired:

VCC+ +24V (bench power supply)
GND- -24V (bench power supply)
A+ red (stepper motor)
A- blue (stepper motor)
B+ green (stepper motor)
B- black (stepper motor)

EN+ (not connected)
EN- (not connected)
PUL+ pin 5 (arduino)
PUL- GND (arduino)
DIR+ pin 6 (arduino)
DIR- GND (arduino)

And here's the code:

int pulPin = 5;
int dirPin = 6;
Stepper motor(360/60, pulPin, dirPin);

No matter what I do, it sounds like the motor is turning 100000000mph. It makes a really fast/high pitched winding sound, but it never actually turns the valve. I've tried flipping the pul/dir pins, I've tried adjusting the steps per revolution to 250 and 400... always the same result...

Anyone have any ideas what I'm doing wrong?

EN-has to be connected to gnd for starters.
Make a test program without the stepper library. Just set the dir pin to any level and generate pulses on the pulse pin.
I also recommend using the AccelStepper library instead. In this case chose the driver option