Electronic – arduino – Stepper Motor Voltage

arduinoarduino unostepper motorswitchingtransistors

I am having a problem making a stepper motor run. The problem is that the voltages that I am reading from the motor never reach zero (they move from a high voltage to a smaller voltage) so they never are switching on and off (from a high voltage to 0) as I thought it would.

Right now I have the following setup:

An Arduino pin connected to TIP122 base with a 17k resistor in between while its collector is connected to the motor's inductor and a flyback diode in parallel. The voltage source is connected to the collector and is 24V
The pulse source is an Arduino Uno and the inductance and resistance I got from the motor's datasheet.

What I was hoping for was if somebody could tell me if the direction I am going to is the right one. Should it work like a switch? And if it should what are some possibilities of why it isn't working?

EDIT: I accidentally wrote 47 Ohms on the motors resistance, it was supposed to be 4.7 ohms.

Best Answer

Darlington pairs have very high saturation voltage. In this case if you refer to the datasheet for the TIP122 you will see that you might expect anything from 2-4V across the C-E.

enter image description here

In your case the saturation voltage will be very high because you have minimal base current for the TIP122.

A FET may be a better device to consider.

Update: The base current you use is far too low. You have to overdrive the base to ensure the final transistor gets closer to saturation.

Using the Fairchild datasheet for the TIP122 (there is an error in the OnSemi version) you get this graph.

enter image description here

For Ib=Ic/250 you will need 4mA of base current (it's slightly more complicated than this because of the internal resistors). With a Vbe(sat) of around 1.5V you need an 875 Ohm base resistor driving from a 5V Arduino.

This should give you a Vce(sat) of approximately 0.8V at 1A.