I've been tinkering with some brushless drives and have found something
that I'd like to improve.  My brushless amps have a minimum pulse width
they will respond to.  Depending on which transistors I am using, I have
different deadtime selections in the CPLD, so it goes from about 400 ns
to 1 us.  I am using the stock EMC2 PID routine with my PWM controller
and the hal_ppmc.c driver.  With my new version of the universal PWM
controller, that gives me pulse width resolution of 25 ns and minimum
pulse widths well below what the drive can respond to.

The problem is there is a dead band where the P term produces a pulse
width that is too narrow for the servo amp to produce any output.
If you deflect the motor until the pulse width is able to produce output
from the servo amp, then there is a discontinuity in the transfer function,
and the motor jumps when deflected across that "edge".  I have tinkered
with negative values of the dead band parameter to PID, and it definitely
seems to help narrow the width of the motor's dead band, but I can't get
it down to zero.  If I try, it causes it to be very unstable, as a tiny 
movement
of the motor jumps from + to - output of the servo.  (So, not a surprise.)
Maybe a very fine tweaking of this value to allow a tiny dead band to
exist would help.

Anyway, I'm not asking for a "solution", just a discussion of what tricks
might be useful in reducing the deadband.  Right now, it varies from
a couple degrees to maybe 5 degrees or more of motor shaft movement.
You can easily feel the zone where there is no motor current, and the
sharp transition when the minimum pulse width causes the transistors
to turn on.

I know that if I could turn up the P gain, it would help narrow this zone.
But, I have P turned up as high as I can while maintaining reasonable
stability with these voltage-mode amps.  I've been trying to figure out
if there's an inexpensive way to turn these simple PWM-in equals
PWM-out amps into some kind of torque-mode amps, but so far I
haven't come up with anything that sounds promising.  (It might look
something like smooth the incoming PWM into an analog voltage,
compare to motor current and generate PWM from that.  But, that
would be adding a bunch of op-amps and comparators to the
board.)

Jon

------------------------------------------------------------------------------
Join us December 9, 2009 for the Red Hat Virtual Experience,
a free event focused on virtualization and cloud computing. 
Attend in-depth sessions from your desk. Your couch. Anywhere.
http://p.sf.net/sfu/redhat-sfdev2dev
_______________________________________________
Emc-developers mailing list
Emc-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-developers

Reply via email to