Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Motion controller for a small DC motor make noise

Status
Not open for further replies.

oldman

Junior Member level 3
Joined
Feb 21, 2002
Messages
28
Helped
1
Reputation
2
Reaction score
1
Trophy points
1,283
Activity points
285
I designed a motion controller for a small DC motor (see **broken link removed**) that uses a 512 lines encode (see **broken link removed**) and a zero backlash 1:76 gearhead (see **broken link removed**). The main job is done using LM629 motor controller (National Semiconductor -- 8 bit PWM) using a 4 MHz clock. This controller is used for a fast tracking system and uses position mode of LM629. The motor driver is LMD18200 (H-Bridge).

Everything works fine except one thing - the noise that the motor is making: it is not the mechanical noise due to motor gearhead movement, but it is a high pitch continuous noise generated by the motor itself when the PWM signal attack it. From my investigation, there is an explanation of this thing: the PWM signal frequency is related by the controller clock frequency by:

f(PWM) = f(CLK)/512

in my case f(PWM) is ~8 kHz. This is exactly the noise that I can hear.

Does anyone knows how to get rid of this noise, other than rising the clock frequency in order to obtain f(PWM in ultrasonic domain? Please consider that LM629 is capable of functioning normally up to 8 MHz (f(PWM) would be ~16kHz in this case -- still in audible domain).

Thanks,

OldMan
 

Once upon a time I was involved in a design of a shop-lifter
alarm. The design utilized a very high performance LC-filter made
up of (in part) large copper coils. The frequencies that were used
were in the audible range (a few kHz). There were considerable
complaint about the design because it omitted audible noise.

After having sound experts looking, measuring and pondering on
the design they eventually found out that the sound emmanated
from the copper, which the coils were made of, swelling
somewhat (very little in fact but measurable) from the changing
current that was put through them. The current was purely
sinusodial by the way.

The conclusion that was drawn was that the only way of
decreasing the audible sound from the coils was to enclose them
into a sound-damped cabinet. There were also a problem with
audible sound from the capacitors that were used. The same
conclusion was drawn for them, i.e. no other solution than to
build-in them into a well sound-isolated cabinet.

With the above in mind I do not think it is very likely that you can
decrease the audible noise from your motor in other ways than
increase the frequency and/or decrease the current (the latter of
which you might not want to do).

I also have experience with stepper motors (Berger&Lahr
5-phase) and they simply use the approach of having a switching
frequency that is about 20 kHz. Though this frequency is above
the hearable range the motors still emit a hissing noise. This noise
sounds as a random faint broadband noise in the audio range. The
reason for that I do not know and I am sure of that Berger&Lahr
(they are a large German company) have spent a considerable
amount of time in minimizing it without obtaining perfect success in
that.

The frequency of 16 kHz is not hearable for all people. The upper
hearable frequency limit tends to decrease with age and also the
human ear is less sensitive at very low and very high frequencies
in general. The peak sensitivity for the human ear is about 2-4 kHz
as I recall.

/Pim
 

In my case I cannot enclose the whole thing in a cabinet (or even in a box) because the whole controller (including motors) must fit a very constrained space. Yes, I can add some polyurethanic foam (or something like that) around the motor (and this is what I'm going to do next, in the same time with rising the frequency at 16 kHz). PWM command operates with pulses that probably produce the noise I'm telling you about. Even in a steady position the motor makes the noise (I scoped the output of the H-Bridge that connects to the motor and I saw pulses of few microseconds and about 12V in amplitude). Maybe a DC command (with D/A converter and DC power amplifier) would be silent enough, but this means another design and additional components and I don't have enough space on the PCB.

Newer DC motor controllers operates at higher frequencies (> 25 kHz) and that's why I suppose they don't have such problems.

Thank you anyway for your message. It's good to know that other people fought with similar problems... Maybe some of them will find their solution here in this forum.

Regards,

OldMan
 

Should you want to silence the motor with anything I can strongly
recommend a similar approach as they use to use on cars, i.e. a
sandwich-like structure with heavy and not fully rigid material
mixed with light material. They use to use this heavy asfalt-like
carpet material directly on the metal and upon that some amount of
filt-like material.

I assume that they sell such stuff in shops that are specialized in
selling car repair parts and the like. If using a hair-dryer in
connection with the application of the asfalt-like carpet (they are
usually sold in plates that a have glue on one side) you may be
able to warm it up and twist it to the desired shape prior to
the application.

If making a sandwich of several layers of those materials
interveaned it will most likely have a strong silencing effect on your
motor. But do not forget that sound travels very good through
metal, meaning also the attachments and shaft of the motor. If
these high-frequency vibrations then are imposed on something
that will resonate (in any particular mode) with the frequency in
question you may still be able to hear it well. Also, the cooling of
the motor (if it needs any) might be compromised by using such
materials surrounding it.

/Pim
 

Oldman,
Have you tried the higher frequency. You may find that it works better with less noise.

Just remember to check some of the following. The eletrical time constant helps define the switching frequency. You will also have additional losses on the motor driver. I did not look at the specs of the motor, but you probably should be alright. I will look at them later.

Also, have you considered a different controller. HP makes a similar controller. HCTL 1100 if I remember correctly.

I typically roll my own. One of my favor processors for motor control is the 68332. Kinda old, but the TPU is GREAT.

robotman.
 

I agree with you: I ordered two new LM629 controllers capable to work at 8 MHz (i.e. f(PWM) ~16 kHz). On the other hand, I tried to find other motion controllers...
- HCTL1100 can achieve 20 kHz at 2 MHz clock frequency.
- PMD makes a number of motion controllers IC's that operate at 25 kHz.
- A number of Japanese companies make also motion controllers.
The bad thing is that the prototype and the firmware are already done. Changing the controller now means a re-design effort that I don't want to make (I spent few months to build the whole prototype -- at the end of this my client told me the device is too noisy for his application, but he forgot to mention that he didn't specify anything about the noise when we made the deal).

That's why I want a quick solution to this. Anyway, thank you for your hints. Any additional ideas, information or suggestions would be very much appreciated.

OldMan
 

After pondering on your design somewhat more I vaguely recall a PWM audio power amplifier design that I saw a long time ago. They used a switching frequency of 250 kHz and inserted a lowpass-filter between the output stage and the loundspeaker. Not so much for the audio quality but for the RFI-matter.

Would it be an idea to practise the same approach on your design? That would mean an inductor in series with the motor and a (bipolar) capacitor across the motor. Supposedly components of the standards that are often used in passive filters for loudspeakers could be used for this purpose.
The inductors of such often use to have a wire diameter of roughly 1 mm, the capacitors are of bipolar electrolytic design, if the capacitance is high enough.

With a lowpass-filter your motor would see a more DC-like voltage rather than a pulsed one and so it may well run more silently.

Using a lowpass-filter could possibly lead to that your motor would not stop as fast as possible (lowpass-filters tends to slow down the signal edges), but then the moving mass of the motor's rotating parts could be a far greater contributor to the fact that the motor can not instantly stop when being ordered to.

Furthermore, using any type of passive filter in connection with the motor and the H-bridge may bring about different voltage/current relationships in the output transistors of the H-bridge, which may be of consideration with bipolar transistors (risk of second breakdown). MOSFET:s does not suffer from second breakdown phenomenons though.

/Pim
 

You're right. I tried this several days ago, but with poor results. I suppose it was my fault, because I didn't use an inductor (i.e. LC filter) but a resistor (RC filter) and the capacitor was too small. Next time I'll try to build a better filter... On the other hand, in order to keep a good response time it might be necessary to re-adjust the PID filter coefficients.

The DC motor I used needs only 50..60 mA at 12V, working at 8 kHz (or 16 kHz). I hope the filter components will be reasonable small, because the space is now my major constrain.

My H-Bridge has a bipolar transistor output stage with flyback diodes, designed to operate with inductive loads less than 38 mH. Unfortunately, I cannot change the H-Bridge driver now. Maybe in the next generation I'll change it with a new one based on DMOS transistors.

Once again, thank you for your support. I'll keep you informed with my progress (especially when I'll change the clock frequency to 8 MHz to get f(PWM) = 16 kHz).

OldMan




<font size=-1>[ This Message was edited by: oldman on 2002-02-27 23:57 ]</font>
 

oldman,

Here is an idea, Seemed bizarre to me when I first thought about it, but it might work.

Pims message kinda made me think of it.

If I remeber right, the width of the PWM control register is 8 bits. If it is not you might have to scale the frequency and dividers.

What if you took the control signal to the FETS and sampled them externally. This could be done with a counter running at 256*8khz rate. Given the PWM period, use that to generate a PWM signal using an additional counter running at the higher frequency. This might could be done with a small CPLD (64 macrocells might do it). This might seem a little complicated, but if the investment is in the software, then it might be a good solution.

Something else I was pondering is betting the 8khz with a higher fequency synchronous signal. It would have to be LPF, but it might works.... Still thinking about it.

robotman
 

Oldman,

I have designed motor controllers in the past. You should PWM at 25-28KHz. Anything greater than that will not be very efficient. Anything less, you’ll more than likely get your audible noise.

ST has some pretty good information.

Good Luck,

Stallion
 

If you are tight on space I assume that the inductor could be made
by the way of utilizing a toroid core. Such cores are available that
have so called "distributed air-gap", meaning that they have ferrit
(or iron) particles spread out in them (I do not know the details of
the manufacturing process) but such likely exists that have good
performance in your frequency range of interest. Using a
"distibuted air-gap" would have the same effect as having a core
with a normal air-gap, i.e. the core is not saturated from the
DC-current.

A "quick-and-dirty" way of acquiring a make-shift bipolar capacitor
(if not regular non-polarity sensitive types could be used) would
be to connect two electrolytic capacitors back-to-back (positive
side towards the other positive side). It would be possible to use a
diode across each of them to short-circuit the voltage that may
arise over the capacitor that at the instant has the wrong polarity
over itself.

The issue of second-breakdown possibility in bipolar transistors is
sometimes found to be the cause of catastrophic failure in power
amplifiers of different kinds, but the current-levels that you mention
are much below them that I generally connect with
second-breakdown-failure possibility. Though, small transistors
are of course more sensitive than large transistors.

The pulse-length is to a very high extent a factor to count with
regarding second breakdown. Second breakdown is due to a
hot-spot developing on the chip. With sufficiently small
pulse-lengths this hot-spot does not have the time to develop and
so no second breakdown will occure. Have a look at a datasheet
for e.g. the power transistor 2N3055 and you will see this
phenomenon well illustrated.

Regarding the spec about the allowed inductance that the H-bridge
can handle, as you mentioned it, such figures I have seen in
connection with other switching driver devices. To my best
understanding I have concluded that this figure much pertains to
the energy (in Joules) that in worst case could be dumped from an
inductor into the transistor or diode. I assume that everything could
be modelled in proper order and simulated, to give a good indication
of what loading the transistors would see, but trial-and-error
would perhaps be a faster way.

You can also connect a small resistor in series with one of the
outputs and measure the voltage over it (this will indicate the
current from the output) and connect the other probe so that you
will measure the voltage between the outputs of the H-bridge. You
can then connect the probes to an oscilloscope and set it to X-Y
mode.

Compare the figures that you see against the ones that are seen
when the load is only the motor (without any lowpass-filter), and a
load consisting of the maximum allowed inductance. This perhaps
may give you any ideas whether there exists any well-founded
reason to investigate further the possibility of exceeding the
maximum spec that the drivers are specified at. Also check the
temperature rise of the driver (if it is noticeable). That may also
give an indication of increased stress on the driver transistors and
accompanying diodes.

/Pim
 

There is a relative simple and clever solution to that problem. If you could not rise the frequency out of the audio range and modulation effect also mix components back into that you should use a more audiable modulation. That means to spread the sharp harmonic spectrum to a more noise like spectrum.
The procedure is as follows:

1. Use digital PWM
2. Define the ON time by "a"
3. Define the OFF time by "b"
4. a+b=T is the m_e_a_n period
5. Your PWM ratio is a/(a+b)
6. Use 2.-3.order sigma delta molulator to define "a" a_n_d "b"
7. The time resoltion for example is Tmean/32
8. "a" before the SDMOD is e.g. 8 bit
9. So the SDMOD convert 8 bit into 5 bit with random properties

That should give a random pattern and much less audioable noise
 

Had the same problem when "designed" a 3-phase bldc motor controller + amp with 629 back in late 80s, there was that constant pwm-noise due to the way how 629 dig-filter pll-pwm's and eventually was told by more experienced to add series L, this really reduced both the noise, and improved the motor performance radically, smoothing everything nicely. The small motor was too fast, andresponded too fast to the 629 "pwm-noise"while large motor would have self-lowpassedthe noise.

Found the serial L values moderately quick
experimentally, could have tried calclating
but bein lazy ...

Whole design, motor board, amp-board, and
writing software for 6803, a board stack of
2.5x5 inches,took less than 2 months, and
out of the 2 months, 90 % was the sw part,
few thousand lines of straight 6803 assembler + debugging it with piggy-back
rom 6803 plus L.A. , and tuning the pid
using F-V + scope was included in the total
time.

Still have the design and code somewhere,
but better designs can be done now 14
years later for sure.

The series L issue was one of the most
important, and another was using a look-up
table for allowing dynamic chancing of PID
values on the run, as the motor-pump
combo had non-linearities at low and high
rpm end to piece-wise-linearize the deal
which extended the dynamic range of the
motor compared to single fixed PID set for
all RPM range. Hope this is of any help.
 

Hey guys,

You gave me something to think about these days. I wouls like to thank you all for advise.

I'll be trying some of your ideas soon, when ordered LM629-8 will arrive.

Keep you in touch,

OldMan
 

" Does anyone knows how to get rid of this noise, other than rising the clock frequency in order to obtain f(PWM in ultrasonic domain? Please consider that LM629 is capable of functioning normally up to 8 MHz (f(PWM) would be ~16kHz in this case -- still in audible domain). "

Noise dramaticaly reduce if you increase the PWM freq.

Usualy this selected more then 16khz.

But even if you select the high freq. for example 16 khz you can hear
the acustic noise if you wrong tune the PID parameters.

If the Derivative constand high system produce noise while movement.

Best regards.
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top