Building an H-bridge for very high current Stepper Motors.

Hi,
I'm attempting to run two very high current stepper motors with the Arduino, ideally with the stepper motor library.

What I have so far.

So far, I have been unable to find a pre-built H-bridge (dual or otherwise) that is capable of delivering 2.8A per coil.

A brief analysis of the Torque-Speed curve for this motor indicates that it should be able to lift a 15kgf.cm load at 300rpm without issue.

I am a little new to this; however, I do believe that with the gates and the drains tied (to their respective counterpart), an N-Channel and P-channel MOSFET will make a half-bridge.

Mocked up in Yenka, I have the following (single coil) schematic. Note that this was originally designed for an even bigger stepper, which called for 5A!

Yenka (formally Crocodile Clips) models MOSFETs with respect to Gain Factor. A little Googling indicated that this term was synonymous with Forward Transconductance; values above shown from data sheets.

Wiring as demonstrated in 123D:

The MOSFETs unfortunately obscure some of the wirings, but 123D schematic shows that the H-bridges are wired correctly

Of course, I am not actually using a 9V battery, as it wouldn't be able to provide sufficient currents. Which leads me to my actual problem.

Wired up as it is above, the Arduino was indeed able to turn the stepper motor successfully, with code similar to:

void setup()
{
    Stepper motor1 = new stepper(200,3,4); // 1.8 degree steps = 200 steps per rotation
    motor1.setSpeed(100);
   // additional code
}

void loop()
{
   motor1.step(10);
}

The issues:
1.
Setting pins 3 and 4 to set values:

digitalWrite(3, HIGH);
digitalWrite(4, LOW);

or any other combination, I would have thought that the coils would be energised and thus the stepper motor would be able to demonstrate its holding torque. Indeed, the motor was difficult to turn in this fashion, but with nowhere near the force I would have thought it would take.

Taking a multi-meter and checking the current running through the coils, I found it was no where near the expected currents as simulated. With a 6V battery, the current running through the coils was a measly 800mA.

Paradoxically, briefly connecting a 12V battery to the circuit gave 6A through the coils, which was way too high for me to test running the motor. I was surprised about its apparent non-linearity: I would have thought doubling the voltage would only double the current, not increase it by a factor of eight!

Even with the low current, I was able to test the stepper library with my setup. It did turn the motor; however it appear to be limited to only a setSpeed of 100 rpm. Any faster, and the motor didn't turn properly, indicating that it was skipping steps. I thought initially that this might be due to resonance or bounce, but even at much higher speeds or with light to not-so-light loads, the motor still wouldn't turn cleanly. Considering the above T-S curve shows the motor up to 10,000 pulses per second, 300rpm is only 1,000 pps and is right at the top of the curve: I would expect that this motor should be able to handle these speeds quite easily!

Could anyone shed some light onto why I might have such low currents through the H-bridges and why the system cannot handle speeds faster than 333 pps?

Thankyou


EDIT
Missing words and spelling mistakes

Your mosfets are designed for ~10V at the gate before they will fully switch "on"; if you look at your datasheet you'll see the specs typically quoted a 10VGS. This is why you saw such a dramatic increase in current when you moved from 6V to 12V. A logic level mosfet (e.g. IRL540) is what you want when controlling the gate with an Arduino.

If you're really looking to build a high performance H bridge the you'll want to study up on "mosfet drivers". These are designed to drive mosfet gates from logic level signals and then do so with high voltage and current for fast switching times. An IR2181 (you'd need two for a full bridge) would be an example of what you're looking for.

It seems to me a bit pointless going to the trouble of building a H-bridge for that stepper motor.

It really needs a proper stepper motor driver that has current limiting and can drive it with a high voltage (24v, maybe 50v) supply. Look on ebay for stepper drivers with 3amps, or better 5 amps current capacity. There is good advice about using a proper stepper driver on the Pololu A4988 web page but the A4988 can't supply 2.8amps.

Using a H-bridge you will be limited to a voltage low enough so you don't exceed the maximum current in the coils.

...R

In particular note that the torque-speed curve you show is for a 30V supply and
a chopper-drive, not an H-bridge. The available voltage is what limits speed as
back-EMF has to be overcome and current switching in an inductive load is faster
with a higher driving voltage.

What is NEMA24? NEMA23 perhaps? Motors of that size are about 1 ohm and 3A,
so you'd need to run an H-bridge at about 3V to avoid frying the motor, giving very
little speed at all.

No, a chopper drive is mandatory for this class of motor really...

BTW there's an experiment you need to do. Connect a multimeter in AC volts range
(or an oscilloscope ideally) to one of the motor windings.

Spin the motor shaft at 300rpm and note the rms voltage from the winding.

If the rms voltage is higher than about 8V you'll never be able to spin that
motor at 300rpm from 12V since you can't overcome the back-EMF.

Annoying the back-EMF per RPM is seldom quoted for steppers despite being
a very useful spec to have.