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.
- NEMA 24, 2.8A per coil, 18.5 kgf.cm hold torque
- Arduino Uno
- N-Channel IRF540N MOSFET rated to 33A (http://www.irf.com/product-info/datasheets/data/irf540n.pdf)
- P-Channel IRF9540N MOSFET rated to -23A (http://www.irf.com/product-info/datasheets/data/irf9540n.pdf)
- 4 NAND gate chip (74HC20 or similar)
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