Welcome! Log In Create A New Profile


Cheapest motor drivers possible

Posted by cpwebste 
Re: Cheapest motor drivers possible
March 12, 2009 12:49PM
While I agree with you wholeheartedly on driving fets as high as possible, that FET should give ID=10A with VGS=4.5V, VDS=3V, according to fig.1. At VGS=5.0V, it looks like ID=24A.

The problem is the resistance of the motor. You need to overdrive the FET because the VDS will be quite small. Suppose your motor is right across the 12V leads. That would give 1.3A. Then, at 1.3A, what is the FET's VDS? It looks to me like about 0.1V. This means that you're dissipating 130mW in each FET. That looks to me like it's low enough not to cause a problem, so I think the VDS must be higher than that. Could you measure it? It will give use more of a clue as to what's happening.
Re: Cheapest motor drivers possible
March 12, 2009 12:51PM
nophead Wrote:
> For some strange reason the datasheet does not
> have a graph of on resistance against VGS, which
> is what we are interested in here and is normally
> on a MOSFET datasheet. All we know is that the FET
> is off below 4V and down to 0.044 ohm at 10V.

Isn't it usually IDS vs VDS at multiple VGS levels?
Re: Cheapest motor drivers possible
March 12, 2009 12:54PM
Acutally figure one gives the information you need. At 5V VGS and 2A drain current will drop 0.05V so only 0.1W. With 1.3A you would be even less, so very little heat.

Re: Cheapest motor drivers possible
March 12, 2009 12:59PM
I think his FET is operating in the linear region. He needs it to be saturated. You're right, it needs more drive.
Re: Cheapest motor drivers possible
March 12, 2009 01:05PM
Actually "saturation" is not the correct term for FETs. It means almost the opposite of what it does for a BJT. But yes he needs a bit more gate drive to lower the on voltage.

Re: Cheapest motor drivers possible
March 12, 2009 01:54PM
I have found conflicting information about that. It may depend on the kind of FET in question. Are you thinking of a JFET or depeletion-mode MOSFET by any chance? Enhancement mode FET's seem to have the same nomenclature as BJT's (http://en.wikipedia.org/wiki/File:IvsV_mosfet.png)
Re: Cheapest motor drivers possible
March 12, 2009 03:17PM
No all FETs are the same I think. The first graph you linked shows exactly what I mean. I can't access the other link.

The sloping region near the origin is where the FET is acting like a resistance. The saturated region on the right is where the current no longer increases with voltage, i.e. it is acting like a constant current source. We want the VDS to be as small as possible, which is in the linear region on the left of the graph. I.e. the FET is behaving as a small resistance and has the least voltage on it for a given current.

In contrast when a BJT is acting as a constant current source it is considered to be in it linear region. If you look at the diagram here: [macao.communications.museum] you see it is very similar curve to the MOSFET one but the regions are labelled the other way round.

So "fully enhanced" is probably the correct term rather than "saturated" when talking about MOSFETs being hard on.

Re: Cheapest motor drivers possible
March 12, 2009 03:29PM
Yep, you've got it right. Had myself turned around there somehow. Clearly, it's been too long since I took my last electronic devices course 7 years ago. Good thing I'm back at school and going into another electronic devices course this May!

@ cpwebste, Regardless of all this discussion, nophead and I do agree on how to fix your hot FETs. Drive them harder.
Re: Cheapest motor drivers possible
March 13, 2009 07:10AM
Hah thanks for the wrap-up Annirak. I was getting a little lost amidst you guys' discussions. I have only had 2 electrical engineering courses so far and it's obvious that I have a few gaps. I did some research on how MOSFETs work and I think I am understanding a little better why this was giving me such a problem. I will try driving the HEXFETs at 5V this weekend and report back if I have any more heat problems.
Re: Cheapest motor drivers possible
March 13, 2009 01:01PM
One more question on that. I just want to verify that the MOSFET is connected the way I expect. Gate goes to the control input, source goes to GND and drain goes to the motor. Correct?
Re: Cheapest motor drivers possible
March 13, 2009 01:44PM
Yup. That's how I have mine wired. It works fine it was just having the heat issues described earlier, but the motors were turning as they should.

One additional question as you and nophead seem to know much more about transistors than me. Can I use the same HEXFETs that I posted the datasheet for above in place of the TIP120s used in the v1.1 PWM driver assuming the PWM is driving them at the appropriate voltage or should I look for some power transistors with a lower gate threshold voltage?

Re: Cheapest motor drivers possible
March 13, 2009 02:41PM
You'll need to change the base resistor but other than that, you should be in business.
Re: Cheapest motor drivers possible
March 13, 2009 02:51PM
You need about up to about 2A for the heater, so with 5V drive you should just get away with it. More modern logic drive FETs would be better. 44m Ohm is no longer considered an ultra-low RDS on. You can get about 10 times lower these days, but possibly more expensive and SMT only.

See my post about the diodes being the wrong place [forums.reprap.org]

Re: Cheapest motor drivers possible
March 13, 2009 03:40PM
FDP8447L FETs would do you a fair bit more good.

I think I saw a 1.7mOhm FET when I was looking in the past. SMD only, of course.

Edited 1 time(s). Last edit at 03/13/2009 03:48PM by Annirak.
Re: Cheapest motor drivers possible
March 15, 2009 10:42PM
So a quick update on my progress: I finally got my new power supply in the mail after my ~20 year old one died on me last week. I hooked one of the +5V rails from the molex connector up to the stepgenie IC and hooked the +12V rail up to the motor coil center tap pins. I ran the test program on the Arduino and the motor turned same as before. I had a few observations.

- The HEXFETs were no longer heating up when being driven by the +5V logic. The motor I am using had a measured resistance of about 4.7 ohms between the center tap and either end of the motor coil. For a 12V supply, this means 2.5 Amps through each coil right? That is probably a little more than I should be putting through my motor which I believe is rated for 2 Amps although I'm not totally sure how to read the spec chart (see specs here: pg. 16, KH56JM2, [www.dynetics.eu])

- The stepper motor I am using was now heating up instead of the HEXFETs! I have a feeling this is due to my first observation as I was probably just driving too much current through it. I guess I am going to have to dig for some power resistors to increase the total resistance of the coils and thus decrease the current per coil.

- The stepper had a audible hum coming from it. The humming sound actually changed pitch as the speed changed. I am not sure if this hum is normal or if the operation should be silent. I could use some guidance on this. I was running it with a delay between steps of 2500-8000 microseconds. Anything under 2300 microseconds and the motors would not start up. The reasoning for this was explained by nophead earlier. The hum was pretty much gone near the 2500 microsecond delay, although it might have just been too high pitched for me to hear it, not sure.

Hi there.


Here is a nice MOSFET based design that is cheap, easy to produce, provides optical isolation, and provides high speed operation.

The optical isolation are cheep and entirely eliminates earth loops. The design is different as it does not use large wattage resistors to speed up the operation by reducing the inductance effect of the coils, but rather, the MOSFETS operates within their linear regions, providing a constant current source to the stepper motors. Naturally that means the mosfets have to be on a heatsink, but the closed loop operation makes low cost mosfets work just as well as fancy expencive ones. The constant current approach allows one to drive the stepper motors faster than usual as the inductance of the motors coils are forced to accept current by the abnormally large available supply voltage.
Re: Cheapest motor drivers possible
March 16, 2009 05:36AM
Looking at the spec sheet the -903 motor has 4.9R coils so that looks like the one you measured. In which case it is 1A per coil, so you could simply wire it the 5V rail.

Stepper motors do get very hot when run at their max rating, especially when not mounted on metal to take the heat away. > 80C is not uncommon.

They do buzz at the frequency you step them. They get quieter the faster they go because the series of discrete steps start to merge into continuous motion due to the effects of inertia and inductance.

Edited 1 time(s). Last edit at 03/16/2009 05:43AM by nophead.

Re: Cheapest motor drivers possible
March 16, 2009 01:01PM
Murray Horn Wrote:
> optical isolation
Generally, we don't need that.

> the MOSFETS operates
> within their linear regions, providing a constant
> current source to the stepper motors.

This creates a high power dissipation where none is necessary. What's wrong with using PWM and the inductance in the motor to create a constant current?

> fancy expencive ones.

Take a look at the FETs I linked above. Those are neither fancy nor expensive, but they have a <10mOhm rdson over most of their range.

> The constant current approach allows one to drive
> the stepper motors faster than usual as the
> inductance of the motors coils are forced to
> accept current by the abnormally large available
> supply voltage.

Again, PWM-based constant current is a much more efficient solution.
True PWM is a sexy solution. The PWM has to be dynamic closed loop type though as the load is a complex one, not just PWM from the micro. The isolation is just a bonus, the optos act as high voltage drive translators. Low total cost though. FDP8447L is a nice device, thanks for alerting me to them, and a nice price, I think I will them as my GP mosfet next time.
Re: Cheapest motor drivers possible
March 17, 2009 07:51AM
Another quick question regarding PWM control using HEXFETs. The PWM driver v1.1 on the reprap site uses darlington power transistors and applies a pwm signal (analogWrite) to them. The darlingtons I assume allow a current through that is proportional to the voltage applied to them. However, I wish to use the HEXFETs that I currently have. I don't think I can use the same technique because the HEXFETs need the whole 5V to drive the specified current. So to achieve some type of varying current to my heater could I simply vary the delay between successive positive 5V outputs to the HEXFET. So for example:

digitalWrite(HEXFET_pin, HIGH);
delay(pwm_time); // this would be what I vary
digitalWrite(HEXFET_pin, LOW);
delay(10); // or some constant value, this may need tweaking

This way the duty cycle would simply be varied so that the effective voltage that the heater sees would be lower. Would this work?

Re: Cheapest motor drivers possible
March 17, 2009 08:05AM
Yes that will work.

I don't know anything about the Arduino firmware, but for it to be classed as PWM it should be a square wave signal, not an analogue voltage, otherwise the Darlingtons would get very hot. Is it possible that analogWrite to a digital pin actually does PWM?

I use the much simpler technique of: -

if thermistor reading < target value:
   turn heater on
   turn it off

I do this thousands of times a second in an interrupt and the effect of noise on the thermistor reading actually causes the heater to be driven with PWM when the temperature is close to the target.

Very simple and gives me very accurate temperature, within a degree or two, without needing to calibrate the PWM values like RepRap has to.

Edited 1 time(s). Last edit at 03/17/2009 08:17AM by nophead.

Re: Cheapest motor drivers possible
March 17, 2009 04:30PM
I like your style nophead. Simpler and better. I will definitely use that method for the final build. The only reason I was trying to be able to change the voltage is that I just built my heater and I wanted to heat it up slowly to make sure nothing started burning up or anything bad like that. I only have my ATX power supply so I only really have a 5V and 12V available and I wanted more adjustability than that. My nichrome wire is 8 ohms and at 5V from the power supply the temp was about 70C. At 12V the temp got above 100C but I started to see some smoke come off of the nichrome wire. I don't know if this was the insulation burning off or maybe some rogue JB weld that had gotten on there or maybe even the PTFE thread tape. It smelled like JB weld, but either way I turned it off in case I had a problem. Any thoughts? Is it supposed to smoke a little the first time? Here's a link to my heater design so you can see what I'm talking about.

Re: Cheapest motor drivers possible
March 17, 2009 04:51PM
Yes I left a comment on your blog.

JB Weld does smoke a bit when you first heat it and becomes much darker in colour. It will get you going but doesn't really last long enough. That is why the official design has moved to fire cement packed inside a copper pipe.

The exposed wire will get much hotter than the stuff buried in the JB_weld because there is nothing taking the heat away. I have heard people claim it glows red so that may burn the insulation, if it is insulated. I use bare nichrome with copper wires attached under the insulation. That way none of the wiring gets any hotter than the heater, so I can use PTFE sleeving over the copper wires.

PTFE won't smoke till it gets above 300C and then gives off poisonous fumes.

You probably need about 10V to get 240C, or about 75% PWM.

Re: Cheapest motor drivers possible
March 21, 2009 08:46PM
Ok, so I have been working on this most of the weekend and have been attempting to get a Picaxe 14m performing the functions that the StepGenie IC is doing. The 14m has more than enough inputs and outputs for the task. I have pin4 (leg 3) attached to the step_pin on the arduino. The arduino just sends a 20 microsecond pulse on this pin every second. The idea would be that the picaxe would receive these pulses and increment step the motor one step each second. Pin3 (leg 4) is the direction pin and is toggled between high and low every 200 steps. This should cause the motor to change direction. The outputs from the picaxe are connected to the gate pins of the HEXFETs. I am having issues getting any movement besides random sporadic jerking from the motors so I was wondering if anyone has tried a similar approach or has any ideas. Here is the code that I am using:

#picaxe 14m

symbol pos = b0 ' current position
pos = 0
dirsc = %00011110 'set four outputs for HEXFETs

WAIT_ZERO: if pin4=1 then WAIT_ZERO '**** wait for step pulse to zero for next pulse
'debug b0

WAIT_ONE: if pin4=0 then WAIT_ONE '**** wait for step pulse to ONE for next pulse

if pin3=1 then
pos = pos + 1
pos = pos - 1

if pos>7 then ZERO_POS
if pos<0 then SEVEN_POS


let pos = 0

pos = 7

branch pos,(coil12,coil2,coil23,coil3,coil34,coil4,coil41,coil1)

'**** energise correct coil and set position ****

let pins = %00000010

let pins = %00000110

let pins = %00000100

let pins = %00001100

let pins = %00001000

let pins = %00011000

let pins = %00010000

let pins = %00010010

Re: Cheapest motor drivers possible
March 21, 2009 08:59PM
Does a PIC run basic fast enough to see a 20us pulse?

Re: Cheapest motor drivers possible
March 21, 2009 09:16PM
Yeah that's what I thought it was at first, but changing it all the way up to 100 milliseconds still made no difference. Maybe I will just have to buy the stepgenie ICs. I was hoping to have a little more flexibility though if I eventually wanted to add a current chopper or something similar....

Re: Cheapest motor drivers possible
March 21, 2009 09:28PM
You probably should post on the picaxe forum....

I'd probably use setint to catch the pulse instead of looping with an if statement. Way to slow a loop to probably see the low/high pulse. Pulsin would be another possibility.

I do use picaxes where appropriate but unless you're using one of the 16mhz chips you probably will be unhappy with the speed. The 14M can be sped up to 8mhz. I tried to pulse one of the rrrf stepper controllers with an 08M at 4mhz and it was way too slow.

Re: Cheapest motor drivers possible
March 22, 2009 05:52AM
If you can't see a 100ms pulse then it looks like something else is wrong. What happens if you replace the wait for pulse with a delay, does the motor spin?

Re: Cheapest motor drivers possible
November 19, 2011 10:44AM
pingiscoolest Wrote:
> I am using the Step Genie currently and loving it
> smiling smiley. It uses Hexfets so for about $8 a board you
> can control steppers up to 35A at 25V... Sounds
> good to me hot smiley

just curious, does StepGenie work with bi-polar motors? From what I'm reading, I might have to build a circuit to control a bi-polar motor?
Re: Cheapest motor drivers possible
November 20, 2011 01:47AM
I've been thinking of making my own boards using these;

Basically a cheaper 1amp version of the 4984. There's TSSOP to DIP adapters cheap enough on eBay.

Maybe the rest of the stepstick components could be integrated into a mainboard in DIP format and we could just plug and play the allegro chip only.


Edited 2 time(s). Last edit at 11/20/2011 01:56AM by jkomp316.
Sorry, only registered users may post in this forum.

Click here to login