interfacing a 3.15V stepper motor

Hello all--

Forgive the basic question here, it's amazing how my EE skills have deteriorated since leaving college and not using them. At any rate, I'm looking to connect a 6 lead 3.15V unipolar stepper motor according to the diagram posted here: http://www.arduino.cc/en/Reference/StepperUnipolarCircuit

My question is actually more regarding the function of the Darlington Array. The diagram seems to imply that if I provide the necessary motor voltage (in this case 3.15V) to the COM pin on the array, the various outputs of the Array will match this voltage. Is this assumption correct, or are the output voltages a function of the input voltages (5V)?

Any assistance is appreciated...

Thanks.

Stepper motor coil voltages are only supplied as an aid in selecting an appropriate driver. You'll need additional information, such as the rated coil amperage or watts.

A stepper is providing the most torque when the coil is running at full current. The voltage across your coils at full rated current will be 3.15V. There's a catch. Inductors resist a change in the flow of current. If you apply 3.15 volts to your stepper motor, and scope the current, you'll see a relatively slow rise in current instead of a sharp edge.

This is a problem if you want to run the stepper motor at any usable speed. The risetime needs to be a small fraction of the total time the coil is powered. If the interval between coils switching is less than the risetime, or less than say 10 times the risetime, you will see incredibly reduced torque. In most cases, the stepper will not even run beyond a couple hundred Hz, and will stall out if you put your finger on it.

There are a couple ways to cheat this fact of physics. Well, only one way, but a few approaches. The upshot is that you need to use a much higher voltage to get a faster risetime in the coil. But you still need to keep the coil within rated parameters.

One approach is to use power resistors in series with each coil, and a power supply several times higher than the rated coil voltage. This results in a short risetime, but burns the majority of your available power as heat. With that approach, you'd use the same calculations used for LED dropping resistors, calculate the voltage drop necessary to get your 3.15 volts from a 24 volt supply, and calculate the watts dissipated so you can select the correct resistor wattage. This approach is called an RL driver. You could use this method with the darlington array.

Another approach is much more efficient. The higher supply voltage is applied directly to the coil, but the current is actively monitored. When the current reaches rated value, the coil is shut off; if the current drops, the coil is turned back on. This can happen at a pretty high rate, up to the hundreds of KHz. This approach is called a chopper driver. Ready-made chopper drive chips exist.

One last approach uses BJTs in their linear region to control current. Obviously this will dump excess current as heat, just like a resistor. But the current can be controlled precisely, and can give the motors the current they need for a fast risetime. There is a kit called the Linistepper that uses this type of driver.

My question is actually more regarding the function of the Darlington Array.

The ULN200x series is literally an array of NPN Darlington transistors with a common emitter (GND) and freewheeling diodes tied to a common pin (COM).

The diagram seems to imply that if I provide the necessary motor voltage (in this case 3.15V) to the COM pin on the array, the various outputs of the Array will match this voltage.

The various output are only able to either sink current or be high-impedance. The voltage applied to the motor is controlled entirely by whatever you've wired to the motor's common pin. The common pin simply connects to the free-wheeling diodes on the collector of each transistor, in virtually all cases this is tied to the motor supply line, but it does not "supply" any current to the motor.

The ULN200x datasheet has much more, obviously.

OK, now I'm with you...current is actually flowing from the center tap of each winding (motor voltage) to the various current sinks created by the Darlington Array...By applying +5 to the input side of the darlington, we open the transistor and allow current to flow from the output pin to ground...

I'm not sure I quite follow the reason for connecting the motor supply voltage to the COM pin, but I'll chalk that one up for the time being.

Thanks for the replies...I'll probably bump my motor up to a 12V version to get better torque out of it now that I'm better versed in how everything functions together.

I'm not sure I quite follow the reason for connecting the motor supply voltage to the COM pin, but I'll chalk that one up for the time being.

When you rapidly stop current flowing through an inductive load (like your motor's coils), a (usually large) flyback voltage is generated. The ULN200x has diodes installed to shunt that voltage back onto the V+ line through the COM pin.

As usual, wikipedia has more.

Makes sense....Thanks!

A 3.15V stepper motor running at 12V with 18 ohm 5W (assuming 500ma current) dropping resistors will probably be a lot faster and more powerful than a 12V stepper motor running at 12V. The 12V just means there is more inductance to overcome.