Shop OBEX P1 Docs P2 Docs Learn Events
Large motor is creating huge power spikes when I switch on/off with PWM - how t — Parallax Forums

Large motor is creating huge power spikes when I switch on/off with PWM - how t

Dennis FerronDennis Ferron Posts: 480
edited 2007-07-25 02:55 in General Discussion
I'm building a motor controller for fairly large 50 watt DC motors. I'm using MOSFETs to do PWM, and I'm seeing an absolutely enormous (twice the input voltage!) ringing spike every time I switch the mosfet off. This spike rings like a bell at a resonant frequency of about 5 MHz, and diminishes afer about thirty cycles. The problem is, it's spilling over as a 1-volt peak to peak oscillation on my regulated 5 volt logic power supply, too! (In other words, my logic line bounces between 4 to 6 volts at 5 MHz every time I PWM the motor. NOT GOOD.) I tried running separate supplies with semi-independent grounds (coupling my logic to my MOSFET driver chip via optoisolators since there's no longer a shared ground) and it only reduced the ringing from 1 volt peak to peak, to 500 millivolts peak to peak. Better, but still not healthy.

What can I do to stop this ringing at the motor? I tried various combinations of capacitors across the motor - small ceramics from 100 pF to 100,000 pF, electrolytics, etc., but nothing seems to be able to get rid of the ringing. I can shift the wave around, but I can't get rid of it. My guess is that my ceramics have the right frequency response but too little oomph to absorb the power, and my electrolytics have enough capacity but are too inductive at 5 MHz.

I have diodes to absorb transients, but I didn't have any schottky so I used power rectifier diodes instead. Is it possible that my problems stem from the slow response time of my diodes?

Is there anything I can do using power resistors to kill the resonance, or some kind of active dampening circuit using transistors?

What other things might I try?

Comments

  • Bruce BatesBruce Bates Posts: 3,045
    edited 2007-07-20 08:12
    Dennis -

    When you say "I have diodes to absorb transients" are you speaking of back-emf diodes? If not, then that is probably what will do the trick. If they ARE configured as back-emf diodes, then your assessment of using diodes with a faster response time (of an appropriate size) will probably do the trick.

    I suspect you're much closer to solving this than you may think!

    Regards,

    Bruce Bates

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
  • metron9metron9 Posts: 1,100
    edited 2007-07-20 18:25
    I think you can also slow down the mosfets. i don't mean the frequency but the shut off by adding a tiny capacitor on the gate with a bleed resistor. The will soften the turn off where the spike is generated basically giving it a a small sin wave shut off. This is just a theory from the information input to my brain from lectures at MIT so it may not be correct.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Think Inside the box first and if that doesn't work..
    Re-arrange what's inside the box then...
    Think outside the BOX!
  • Dennis FerronDennis Ferron Posts: 480
    edited 2007-07-23 22:21
    Thanks Metron!

    That's exactly what it was. I was turning the MOSFETs off too quickly, which was resulting in a sharp voltage spike as the inductive load tried to maintain full current flow in the face of a complete shut-off.

    The weird 5 MHz period that would not go away, despite changing the amount of inductance of the load, appears to have been caused by the RC time constant relationship of the gate driver resistor (10 ohms) and the gate capacitance (1900 picofarads). Essentially, the oscillation period seems to have been related only to the speed at which the MOSFET was switching, irrespective of the inductance of the final load. The contribution of a different load inductance was to change the amplitude of the resulting spikes, rather than their frequency.

    I tried various combinations of adding an extra capacitor to the gate and different resistors. I found that due to the already large gate capacitance of the MOSFETs I'm using, there isn't much point in adding more capacitance. (At 1900 picofarads they're equivalent to the ceramic capacitor with "192" printed on the front.) Instead, changing the 10 ohm driver resistor to a 1K resistor makes the weird 5 MHz spikes go away entirely under all loads.

    It's in my interest to use the smallest resistor possible here, because turning the MOSFETs on and off slowly keeps them in their linear region where they could overheat. However, I found that no smaller resistor is as effective as the 1K resistor I tried. I did note that the problem with the 5 MHz ringing only occurs on the falling edge. There is no problem switching the inductor on hard on the rising edge, because inductors do not instantaneously conduct on the rising edge, so no ringing occurs there. So what I've done is I have a diode placed so that when the MOSFET is being turned on, it gets slammed on hard through 10 ohms, but when it's being turned off, it goes slowly through 1K. That eliminates almost half the time I'm keeping the MOSFET in its (heat producing) linear activation region.

    After slowing down the turn off time and speeding the turn-on time back up with the diode, I'm still left with a MOSFET that is not switching as quickly as I'd originally planned to have it. I had hoped to run the motor driver in the ultrasonic frequency range (20KHz+) so that it would be inaudible. If I did this, my MOSFETs would get hotter than I'd like. So instead I'm going to run it much slower, possibly in the 300 to 400 Hz range, so that it will hum instead of whining (it would whine at 3 or 4 KHz) and hopefully run cooler.

    I've learned from doing this project that you can't expect to build this kind of circuit and have it perfect in all possible ways. Instead, you have to make trade-offs and compromises.
  • QuattroRS4QuattroRS4 Posts: 916
    edited 2007-07-23 22:52
    Dennis,
    Twice the input voltage is not unusually large - I have seen a lot worse.
    I had a scenario where I was switching inductive loads, not especially fast either,and current consumption was pretty low.
    As an output stage driver I was using PVDZ172N photovoltaics (An ssr of sorts) - it's optically coupled and the driver stage has an inbuilt reverse biased diode .. but yet I still got resets on a prop based application ... I used the following components and they did the trick for me(see attached datasheet).As well as fitting these to the output lines I have also placed these in line with the control board Vin. There are a number of aspects here to consider not only do you want to suppress noise affecting your circuit but you don't want your application to be a generator of noise affecting other equipment around it.

    Look at the DSS306 and DSS706 models ... available in many varieties See 'key characteristics' table for details of effective frequency ranges. DSS706 models have an integrated·varistor cap ... may be an additional protection method.Personally I would incorporate these or similar in such an application.


    Bruce Bates and metron9 have both highlighted very valid points also.

    Regards,
    QuattroRS4

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    'Necessity is the mother of invention'

    Post Edited (QuattroRS4) : 7/23/2007 11:01:03 PM GMT
  • Dennis FerronDennis Ferron Posts: 480
    edited 2007-07-24 06:37
    Thanks Quattro! I had no idea there were so many options for noise suppression circuits. I have more than one robot base, so I hope to take what I learn with this motor controller and make a better one for the other robots. I might use some of the components you linked to when I build the improved controller.

    I finally got the changes made to stop the spike, and it worked - and then I moved the scope out further (in time) and found another power spike! This one is lower frequency and probably not related to the first one. I found I can eliminate this second spike with a capacitor across the motor, but the motors are so big it takes a really beefy capacitor to do it - 470 uF or more! And I have to limit peak current from the capacitor so I won't blow my MOSFETs, so I need a power resistor too. Looks like another trip to Radio Shack.
  • metron9metron9 Posts: 1,100
    edited 2007-07-24 15:57
    What mosfets are you using and what voltage.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Think Inside the box first and if that doesn't work..
    Re-arrange what's inside the box then...
    Think outside the BOX!
  • Dennis FerronDennis Ferron Posts: 480
    edited 2007-07-24 20:04
    I'm using IRF44Z MOSFETs and 12 volts.
  • metron9metron9 Posts: 1,100
    edited 2007-07-25 02:55
    I cant find a data sheet on IRF44Z but I found one on IRF440 . It has a .6RDS(on) It says it has a low RDS(on) at high voltage and that is in the 500Volt area. I dont know how many amps you are running (edit I guess it's about 4?) but here is a mosfet with just 0.05 RDS(on) max 30V and 6.5AMP It is a SOT-233 package but easy to solder as the pins are spaced .100. I think might help the problem of the fets getting hot.

    Also I don't know for sure if a regular DC motor can use higher voltage when it is pulsed. A stepper motor for example can use 2x or 4x 16x the voltage through the coils when the current is limited. Perhaps to get a higher frequency you would need to increase the voltage and add power resistors.

    STN4NF03L

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Think Inside the box first and if that doesn't work..
    Re-arrange what's inside the box then...
    Think outside the BOX!
Sign In or Register to comment.