2
\$\begingroup\$

I am troubleshooting an audio noise problem in project which has several components wired together as follows:

Block Diagram

Overview:

The overall project does some motion control with a servo and has an audio notification that is triggered by one of the servo channels.

For the audio pathway, it uses an Arduino Uno with Wave Shield as the source of audio, a Kemo M034N amplifier of unknown class, and a single 4Ω speaker. On the servo side of things, there is a buck converter to drop the voltage from 12V to 6V, a Spektrum RC receiver, and a generic Futaba servo. One of the RC channels connects to the Arduino so that the audio can be remote triggered.

The 6V from the RC receiver to the Arduino is not connected, but the grounds are tied together.

The Problem:

The amplifier is picking up the noise of the servo motor, but I haven't been able to decouple it. The amplifier has unusual connections in that the ground connection is the same as one of the audio lines (indicated in green on the block diagram).

If I simply disconnect the audio out from the Arduino, the problem goes away (but of course no desired audio reaches the amp in this case). I believe this tells me that the problem is not present on the Vcc and ground connection to the amplifier.

Connecting an oscilloscope to the audio output of the Arduino shows a clean signal, even when the servo is being driven. However if I reconnect them, then connect the scope to the amplifier end of the wires, about 12 cm (~5 in), the waveform is much noisier and has the servo noise present.

What I've Tried:

I tried running a shielded wire from the Arduino to the amplifier, connecting the shield to ground. I've tried adding three capacitors of different sizes (1000μF, 100μF, and 0.1μF) in parallel to both the amplifier and Arduino power input to try and decouple them from the rest of the circuit. Neither of these had any improvement.

If I connect headphones to the Arduino and ignore the amplifier and speaker, the sound is clean and no servo noise is present.

Edit: I've also tried using two separate power supplies; one for the audio components and one for the servo components. That also solves the problem, but ultimately I need to have just one power supply. The problem occurs whether I use a 12V 5Ah battery, a regulated bench power supply, or the intended 12V 10A SMPS.

Question:

I'm not sure what else to try. Is there some sort of ground loop? Am I decoupling improperly/insufficiently? What else should I try to eliminate the noise?

\$\endgroup\$
  • \$\begingroup\$ Whenever possible, it's generally better to eliminate noise at the source. Have you tried adding decoupling caps to the servo power, as close to the servo you can get? Also, try using a "star ground" scheme, making sure that the ground current from the servo does not share any wiring with the arduino/amplifier. \$\endgroup\$ – Dave Tweed Sep 1 '14 at 21:26
  • \$\begingroup\$ @Dave I'm finding that adding caps at the servo side is helping. Everything is in a star topology. Currently I am putting some caps just after the buck converter and that seems to be diminishing the noise. I have a 3300 uF cap currently, and am wondering whether I should add more. \$\endgroup\$ – JYelton Sep 1 '14 at 21:42
  • \$\begingroup\$ Rather than just adding more capacitance, you might try adding some series inductance(s) between the caps and the power source. \$\endgroup\$ – Dave Tweed Sep 1 '14 at 22:04
1
\$\begingroup\$

The solution was to physically separate the power connections for the audio components. While @Dave mentioned in the comments something about a star ground topology, the problem was that while the ground connections were all centralized, the Vcc connections were also, and shouldn't have been.

In the original design, power was supplied to the entire assembly via a small PCB with header pins for each separate component. Two rows of male header pins, one for 12V DC and one for ground. In this arrangement, all of the noise was being dumped onto the audio components each time the servo motor was actuated. Adding capacitors helped slightly, but certainly not enough.

The main two wires supplying the small power distribution PCB are about 10 cm long. I added a second pair, and created a second power distribution PCB. The original one was used for the servos and receiver, while the new one was used for audio and amplifier. The "Y" split in the power cable ultimately had the effect of keeping the power clean on the audio side.

I also removed the ground connection between the RC receiver and Arduino, though this was unnecessary. Its presence did not add noise, nor did its absence cause triggering problems.

An electrical engineer coworker advised me that it was important to have separate power supplies for motors versus digital components. While this project still only uses one power supply, the solution was to split the power as early as practical, and dedicate each to its respective purpose.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.