top of page
lavabexiremet

Ucn5804 Stepper Motor Driver: The Ultimate Guide for Beginners and Experts



Bruce Shapiro got me to design and build the UBW (USB Bit Whacker) project to solve his problem of disappearing parallel ports on computers. The UBW design has exceeded all of my expectations. As well as meeting the original design objectives, it has proven itself a great platform for many forms of firmware. But there was still a problem! Bruce traditionally used the UCN5804B stepper motor driver chip for his EggBot classes because it is easily breadboardable and very simple to use. Unfortunately, they are now $17 each and very difficult to find. Bruce wondered if I could design and build a replacement driver that would still be mountable on a breadboard, would still just need two input lines (step and direction) and would drive bi-polar stepper motors. And so now we have the EasyDriver design.




Ucn5804 Stepper Motor Driver



Q) What kind of stepper motors can I use EasyDriver with?A) The Allegro 3967 driver chip that the EasyDriver is based off of is a bi-polar driver. This means it has a true H-bridge design internally, and sends current both ways through each of the two coils. You can use 4-wire, 6-wire or 8-wire stepper motors. The only kind you can't use is 5-wire stepper motors. (They need uni-polar drivers.)


Q) Why does EasyDriver get so hot?A) PWM current limiting drivers (so-called 'chopper' drivers) are turning the coil currents on and off very rapidly. This makes sure that the maximum amount of current (as set by R16, the current set pot) is _always_ flowing through the coils of the stepper motor, even if it is not moving at all. That's just how these things work. It means that the driver is constantly passing that much current through, and because its internal resistance is not zero, it dissipates some heat. If you turn R16 all the way up so that 750mA flows through each coil, the entire EasyDriver board will get hot to the touch. I've never burned my finger on it, but it certainly gets hot. (At the minimum - about 150mA/coil - it only gets barely warm.) You can put a small fan blowing across the board if you want to. But fear not, the driver chip has a thermal cut out at 165 degrees C, so it will protect itself. The boards have quite a bit of copper pour on them, to maximize heat dissipation, which helps a lot. Also the voltage regulator gets quite hot - this is because the driver chip needs 70mA at 5V for its logic supply. Depending upon what voltage you use into the M+ pin, the voltage regulator needs to drop that down to 5V (and throw the rest away as heat). So the higher the M+ voltage, the hotter that regulator will get.


Q) What hardware/software can I use to test my EasyDriver?A) Here's what I do. I solder headers in the pins of the EasyDriver and put it into a breadboard. I solder the wires on my stepper motor to a 4-pin .100" male header, and plug that into the breadboard so it connects properly to the EasyDriver. Then I take a PC power supply, and use the 12V from that into the GND and M+ pins on the EasyDriver. Then I tie the DIR pin to Ground with a wire. Then I take a square wave with a frequency of about 500Hz and put it into the STEP pin. This I generate with a signal generator or an Arduino or UBW. The motor should be spinning at this point. You can then take the DIR pin and connect it to +5V to see the motor go in the other direction. As the motor is running, you can slowly adjust the current adjust pot to see the effect that it has on the smoothness of the motor's motion.


Q) How do I connect my EasyDriver up?A) (For Version 4.2) All of the pins on the EasyDriver are on a .100" grid. If you solder .100 headers into the pins you want to use, it plugs into a standard breadboard. Once you plug it into a breadboard, you can then plug in your stepper motor to the four motor pins (JP3), your 8V to 30V motor power to the GND and M+ PWR IN pins (JP1), and your Step and Direction signals to the STEP, DIR and GND pins (JP2). The GND pin in the lower left corner of the board is really only there for mechanical support, but it is tied to ground and you can use it as such.You could also construct a simple 'carrier' board (on a proto board or some such) with female .100" headers for all for the EasyDriver pins. Then it would be easy to wire up as many EasyDrivers as you wanted to drive lots of stepper motors.


A) (For Version 3) All nine of the pins on the EasyDriver are on a .100" grid. This means it plugs into a standard breadboard. Once you plug it into a breadboard, you can then plug in your stepper motor to the four motor pins (JP4), your 5V to 30V motor power to the GND and V+ pins (JP1), and your Step and Direction signals to the STP and DIR pins (J3). The GND pin in the lower left corner of the board is really only there for mechanical support, but it is tied to ground and you can use it as such.You could also construct a simple 'carrier' board (on a proto board or some such) with female .100" headers for all for the EasyDriver pins. Then it would be easy to wire up as many EasyDrivers as you wanted to drive lots of stepper motors.


EasyDriver by Brian Schmalz is licensed under a Creative Commons Attribution 3.0 United States License. Based on a work at www.schmalzhaus.com/EasyDriver. Built on the Allegro A3967 it was a replacement for the UCN5804B stepper motor driver chip. I'm using it as a replacement for the equally hard to find and costly MC3479 stepper motor controller.


This really consists of a circuit board with a surface mount integrated circuit. The board costs between $10 to $15. While designed to operate low-power bipolar stepper motors with a current limit of about 700 mA, we can do a lot more.


The four outputs for two motor windings (A and B) can drive power MOSFETs or bipolar transistors to operate in the unipolar mode. The power can be boosted by using the four outputs to drive a L298N bipolar type driver board.


A3967 microstepping driver.MS1 and MS2 pins broken out to change microstepping resolution to full, half, quarter and eighth steps (defaults to eighth).Compatible with 4, 6, and 8 wire stepper motors of any voltage.Adjustable current control from 150mA/phase to 750mA/phase.Power supply range from 7V to 30V. The higher the voltage, the higher the torque at high speeds.


Microstepping is good for smooth motion. However, having a 256 microstep/step driver does not automatically mean that you will get 256 evenly spaced increments of motion from the motor for those microsteps.


Second, determine the application supply voltage. Then select a stepper with at least twice as much torque as required at the target operating speed, and use a motor rated at about supply voltage. Next, look at the driver current required to get target motor torque. Select a stepper driver based on that number.


Microstepping can increase the resolution of a system, which smoothes rotation and prevents vibration and noise. However, problems will arise if incorrect voltage is applied to a PWM (pulse width modulation) or chopper drive. We receive many questions about these drivers. For example, if a motor is rated at 5 V, many users wonder why they need to apply larger voltages. They also wonder why they are not getting increased performance even after changing to a PWM/chopper drive. Engineers sometimes forget about motor fundamentals like back EMF and electrical time constants when they are using stepper motors and drives. This results in an incorrectly configured stepper motor drive or driver and motor, which are starved for power (voltage and/or current) in the application.


When an engineer does not understand the purpose of microstepping, a number of issues can arise. The main purpose is to increase smoothness of motor operation by leveling out the shocks of stepping, making operation more reliable. By misapplying microstepping, you can actually greatly decrease the available torque that the motor can produce. This usually requires a much larger motor than otherwise necessary. Those who don't understand the proper use of microstepping opt not to use it, instead turning to servo-based systems, which add unnecessary levels of complexity and cost. Engineers also sometimes complete mechanical designs and then attempt to hide or dampen system vibration. When an engineer chooses an incorrect stepper, the motor won't be able to move the load weight. Select the motor while considering not only load weight, but also the mechanism's frictional properties.


Don't believe that a motor will achieve the data sheet's rated speed and torque when it is matched to just any driver. Like a servo, the motor's stall torque, rated torque, and rated speed all depend as much on the drive and motor being correctly matched as they do on available voltage and current.


Over-sizing a motor will cause it to run louder and generate higher EMI/RFI. It may also cause users to pay more for a motor and driver in terms of money, as well as panel space or machine space, than is necessary.


Choosing the wrong stepper drive can lead to stall conditions, which are different than outright rotor stopping. The motors can actually fall behind by a few motor poles but continue to move the load, or in some cases, overshoot if commanded to stop too abruptly for the inertial load. An encoder used as a feedback device can report that condition and/or correct for it after the commanded move is done, but it cannot prevent it. Even with an encoder, a stepper inherently remains an open loop system.


Stepper drives always offer the cheapest solution, so use a stepper wherever appropriate. Remember these major considerations: First, does the system require position confirmation? Second: The wrong stepper drive can cause ringing, resonance, and poor low-speed performance. Third, during high speeds, stepper motors can whine. Because stepper drives have a high pole count, hysteresis and eddy current losses are also common at high speed; for these reasons, a stepper is not recommended for continuous operation above 2,000 rpm. Finally, because full current is needed to produce holding torque, step motors can get hot at a standstill. 2ff7e9595c


0 views0 comments

Recent Posts

See All

Comments


bottom of page