My apologies, but I just cannot resist the temptation to comment on some of the messages about H-bridges on this list. (Especially since it gives me an opportunity to take on so many of the experts at the same time (:-) - Let's see if I survive it.) Also, perhaps I can reduce some confusion on the issue. First of all, I would like to compliment Terry and Sean for the nice ideas and instructive examples! I agree with Terry that an SMPS controller could make a very nice motor controller. As Paul indicated, motor driver are very close to SMPS, and in fact, many of the key issues for SMPS design apply to motor driver design as well. However, a motor driver has many more pathological noise/transient/etc cases one needs to consider for a good design. (For a few years, I have had as a kind of hobby collecting Good Methods of How to Destroy a DC-Motor Driver, and my, that list is pretty long by now...) I like Sean's example, because it is deceptive, but (or rather, therefore) very instructional. Calculations appear correct, but the conclusion is a bit odd. There is a tacit assumption in the example, which seems not to have received any attention so far. Sean Breheny wrote: ... > is because the same average current needs to flow (if the frictional torque > remains the same). If we have a motor that generates 10v of back emf at > full speed and has 1 ohm of winding resistance, then with 12v PWM at 100% > duty cycle, we have a continuous 2 amps flowing, we are using 24 watts of > electrical power,and doing 20 watts of mechanical work (approximately, > assuming that the transfer of power due to back EMF is purely mechanical). > The efficiency is 20/24 = 83% > > If we now drop to 50% duty cycle, we still need an average current of 2 > amps to oppose the friction,so we have 4 amps flowing during the on time. > That's 48 watts of power for 50% of the time,or,again,24 watts of average > electrical power. However, the back emf is now only 8v ( 12-8=4, 4/1ohm = 4 > amps),so we are only doing 8*4=32 watts for half the time, or 16 watts > mechanical work. The efficiency is now only 67%,and it reaches 0% when the > duty cycle gets so low that the resistance doesn't allow enough current to > flow to oppose the friction (in this case, we couldn't operate the motor > below 16% duty cycle). As we decrease the duty cycle, the speed vs. duty > cycle curve is nonlinear and drops expecially fast as we near 16%. ... That something is funny here is clear if we consider the following case, the idea of which I think somebody touched upon in a response: Suppose we drive the motor with just under 2 Volts steady. Although this consumes 4 W, it isn't enough to overcome the friction, and efficiency is 0%. However, let's now use 12 V PWM to switch on the current on for sufficiently long periods, so that the maximum current through the rotor ramps up to just above 2 A, and so the motor just barely overcomes the friction and moves a trifle. The average power during the on cycle will obviously be less than 24 W. Let the OFF-period be nine times as long as as the ON-period. Clearly, the duty cycle is less than 10%, total power consumption less than 2.4 W, but the PWM efficiency is still >0%, while linear voltage control gives a solid 0% efficiency even at 4 W. So, what is the problem? Several writers have commented on the type of load. Although frictional load contributes to the seemingly paradoxical result, I woudn't say that it is the most important thing here. An inertial load would represent more of a worst case from the driver designer's point of view (cf. below). Instead, IMHO, the key word is "average". Sean wrote: "we need an average current..." It is important to think of how the the current behaves, or is supposed to behave, in the rotor winding. The current wants to stay the same and goes to great lengths and voltages to do just that. If we have a current which varies greatly, we are using too low switching frequency. The current shouldn't be left in peace for too long or it freaks out. The analogy with SMPS is useful here. For maximum efficiency of an SMPS, we want to keep the current through the energy store choke on a constant level. Large excursions will increase resistive losses. The voltage is generated by the ripple on top of this current. It is the same thing for a DC-motor. We want to keep a relatively constant current through the rotor. ON periods push the current up a little bit, OFF periods pull it down a little bit. If the current is allowed to go to zero or saturate the core, the PWM frequency is too low, and we will have such effects as Sean described. A key feature of PWM is to let the motor inductance even out the pulse variations. A small example. Escap's coreless DC-motor 23DT12-216P has the following data: Nominal 9 V, Imax (cont) 1.76 A, Max temporary torque 80 mNm, Torque constant 12.4 mNm/A, Terminal resistance 2.6 ohm, Rotor inductance 0.2 mH. We have u = L*di/dt, where u is the voltage over the coil minus back emf (near zero at low speed) and resistive drop. For a continuous current of 1.76 A, low speed, and a max ripple of 10%, we have that the maximum ON-period is roughly dt < di * L/u = 0.176 * 0.0002/(9 - 1.76*2.6) = (approx) 8 us. For the OFF-period, u equals the resistive voltage drop, so dt < 0.176 * 0.0002/4.4 = (approx) 8 us. Together this means a switching frequency of at least 1000/(8+8) > 60 kHz. Sean wrote: > With a switcher,however,we could forget PWM and just supply a continuous > variable voltage to the motor. The current would stay the same and the RPM > would linearly follow the voltage. The efficiency would not change much > over the whole RPM range. Paul Webster wrote: > [Sean's] analysis regarding motor performance is correct. Implementation > of switchmode control as you describe essentially consists of using PWM > whilst providing a series inductor and commutation diode. The > commutation diode(s) may already be part of an H-bridge or if the FETs > may be operated "backwards", they may function as such. I would say as a conclusion rather that with sufficient switching frequency, PWM is only marginally worse than linear control from a resistive losses aspect. (There are of course also switching losses, and I haven't said it is _easy_ to implement such fast switching. Only that high resistive losses are not an inherent PWM property :-) For low speeds and such frictional load as Sean describes, PWM becomes superior. There is still a reason, however, for driving a DC-motor with the output from an SMPS. The coil on the SMPS is stationary and can be bulky, without adverse effects. The DC-motor cannot afford such a big and bulky rotor coil. A smaller choke has lower inductance and would require higher switching frequency than the SMPS, if PWM driven. John Payson wrote: > When PWM'ing a motor, there are two methods which can be used, which > I'll call voltage-based PWM and current-based PWM. > > For voltage-based PWM, the motor output is switched between "active > high" [a positive voltage source] and "active low" [ground]. Ground- > ing the motor output will actively brake the motor, so the motor will > be switched between full-on and full-stop. This method will cause > the motor to move somewhat jerkily (if the PWM is at an audible freq- > uency, the motor will "sing") but has the advantages of decent torque > output and (for the slower part of the range) a speed output which is > reasonably proportional to the duty cycle. The big disadvantage of > this PWM method is that it is a *MAJOR* power hog (running a motor at > 1/2 speed with no load will use about 1/4 as much power as a stalled > motor receiving 100% power) but if that's acceptable the performance > can be quite good. Well, it is a power hog only if the PWM frequency is so low that the winding current changes substantially during one PWM cycle. John also wrote: > very well. Nonetheless, it may sometimes be useful to add a sinking > transistor; this is to allow for rapid changes in motor speed. If > the motor has little mechanical loading, there will be no way for it > to slow down quickly absent a sinking transistor. If the "active > high" output is equivalent to a car's gas pedal, the "active low" > output is the brake. Although braking should be minimized when it's > not needed, it's hard to slow down or stop without it. This is really very important, and I wonder why it is so rare to find such a shunt included in published circuits! A not too exceptional case is where the motor runs full speed one way, and the driver then reverses to full speed the other direction. The motor will then act as a generator, and pull twice its stall current. Bob Blick wrote: > drop is more like 2 volts. If you think about how a DC motor works, you'll > see that there is no way to operate a 12 volt motor with 12 volts and 5 > amps at high speed. If you had a motor like this, it would draw much more > than 5 amps at low speed, and destroy the H-bridge. At low speeds, it If you also consider rapidly reversing direction, the motor will draw twice the stall current at full speed and full supply voltage. This current will be sustained if there is large inertia on the rotor. Scott Dattalo wrote: >I am a bit confused here: why would the FETs require more precautions? The >only thing I can think of would be that the power dissipation for a FET >goes as the second power of current,and for a darlington/BJT, as the first >power of current. Granted,this makes a big difference as current goes to >infinity, but in certain cases, you might burn up the BJTs way before the >FETs if the RDSon of the FETs is really low. and Bob responded: > It's actually even worse than that. The R of the MOSFET increases with > temperature and current, so unless you go overkill or have protection you > have a big problem. With comparable devices, the bipolar will usually take > a lot more abuse(assuming it has enough drive current). Generally in a > small application it's easy enough to use a larger MOSFET, but I've > designed 1200 amp motor controllers and it makes sense to put in good > protection so you can use fewer MOSFETs. I guess Bob has had a lot of bad experiences with MOSFETs... One of the primary obstacles with fast MOSFET switching is that it causes a zillion of noise and transient problems. Due to the high speed, it can be extremely difficult to debug a MOSFET switching circuit. MOSFETs also sometimes have a peculiar property of going on working and appearing alright for a while, although they are fatally wounded. Otherwise, AFAIK, the two main problems with BJTs as compared to MOSFETs are 1) Current concentration and thermal runaway, and 2) Secondary breakdown. Some other problems are: Slow switching, switching time temperature dependent, difficult to interpret SOA and derate for various parameters, complex drive circuitry, and power consumption of driver circuit itself. Cheers, Martin Nilsson http://www.sics.se/~mn/ Swedish Institute of Computer Science E-mail: mn@sics.se (current) Box 1263, SE-164 29 Kista, Sweden Dr.Nil@bigfoot.com (permanent) Tel: +46-8-633-1574 Fax: +46-8-751-7230