Author Options:

Noise in Amp from LED Strip & servo Answered


I am working on a project in which TL072 is amplifying an audio signal which is going to speakers & arduino analog input. Amp is powered by a wall wart with 12V 2A output. The same 12V is also regulated to 5V and used to power an AVR. The AVR is being used to PWM, using a power transistor(TIP120), an LED strip taking 1A from the same 12V supply. There 

1) Now the rapid switching of current for LED strip is messing up the amplifier output. It's working fine with LED Strip off but when using PWM, there is a high frequency noise in the amplifier output. I have a 0.1uF and 10uF caps near power inputs for both AVR and amplifier. This is probably due to insufficient decoupling. Can someone please help me make it better?

2) There is another independent source of noise I'm finding which I'm unable to explain. The audio is going into Arduino which is controlling a servo as well. As soon as the servo is connected, there is a constant loud noise in amplifier output. This remains even after powering the arduino and servo using seperate USB supply(only ground connected). I placed audio setup and servo data wire far apart since they may be interfering due to PWM used for servo, but it wasn't of any use.

Since in both cases, amplifier is producing noise, I think my amplifier diagram might be at fault. If I remove the amplifier, the audio stream reaches arduino without any noise . Anybody got any ideas how to remove these 2 noises?

Attached images: amplifier schematic, graph of audio input in Arduino analog pin.




5 years ago

Here's something to try...it's a bit of a long shot, if you're certain the noise isn't RF:

Add a resistor on the non-inverting input of the opamp--something between 33K and 100K. Coupled with the innate input capacitance of the opamp, it should form a low-pass filter. See these in tube amps all the time--it's called a "grid stopper," and it helps prevent high frequency oscillation...and picking up radio stations.

With the high input impedance inherent in a non-inverting amp it shouldn't attenuate your signal very much...

That might work but won't passing the input signal through a resistor decrease the volume of output as well?

It shouldn't effect the output much--a resistor in series with the input doesn't change the signal voltage (as a voltage divider would). It may limit current somewhat, but if the input impedance of the non-inverting opamp is high (and it should be very high, possibly 10M or even more) then very little current is required for the opamp's input to function well. 50K or 60K of in-line resistance here probably wouldn't even be noticeable.

It sounds looks like you didn’t isolate your circuits.

From your 12 volt supply have a diode go to each circuit and after the diode a large capacitor.

The diode keeps the capacitor charge from back bleeding so you don’t get a loading signal through your power supply.

If you don’t isolate your circuits one circuit creates a loading effect on the other.

So from your 12 volt supply you have two diodes separating the 12 volt supply to two large capacitors then one goes to the 5 volt regulator and the other to the amp.

The diodes didn't reduce the noise. But at the moment, I'm only working with servo and amplifier. They may help when I add LED strip later on.

It "sounds" like 100Hz. I don't have an oscilloscope so I matched the noise to various frequencies created by a frequency generator app and 100Hz sounded just about right.

I uses a modified version of amanda's amplifier Instructable: http://instructables.com/id/Arduino-Audio-Input/
Will try reversing it. But I think the noise is now at a bearable level. I will put up the whole circuit on the weekend on a breadboard. Thanks for your help!

Put a lot more heavy caps near the motor supply connections, bypass them with 100n ceramics.

Run heavy current lines separately back to a common ground "star point"

I replaced 100uF caps with 470uF and tried using a low pass filter. Now the analog input is smooth but noise is still going into the power lines. Also tried using star grounding but that didn't help. I'll post a diagram soon to help you understand.

I tried adding various capacitor values across R2. They did reduce noise but they also reduced audio by about the same amount. That got me thinking and I tried caps across R2 and R4. Turned out if only I increased R4 pot from 10K to 150K, about 80% of the noise went away! Most of the noise was probably due to R4 connected to noisy VCC. The rest of the noise in amp is probably coming through the R1-R2 resistor bridge to center signal about VCC/2. Any suggestions to eliminate that? I tried putting caps across their VCC and GND connections.

The PROPER method to split the rail is to use another op-amp as a unity-gain buffer on R1 and R2

That might be a bit too complex for a beginner like me :P
I have removed most of the noise with the changing R4 to 150K and bigger caps everywhere. I tried out adding the amplifier, arduino, servo and LED strip. The noise was noticeable but only in moments of silence. I'll try the final complete circuit on the weekend. Thanks for your help.

Sounds like you need more shielding. Do you have any kind of RF shielding around the amp? Are you using any Ferrite cores to help prevent any RF signals from passing through the power input?

Why do you have 2 VCC inputs on the mic input?

No, I am not using any shielding or ferrite core. Just components soldered on PCB. The 10K potentiometer is to set the sensitivity of mic and the output then gets centred around VCC/2 by the resistor bridge. I think you are looking at only the VCC connection of resistor bridge.

Good news is I managed to remove the first noise due to LED strip by distancing all the amplifier wires and I think one of the decoupling caps was not soldered properly.

The servo noise is more troubling. I removed everything with only servo connected to the Arduino and uploaded servo sweep code, modified to send readings of A0 analog input as well. Then I connected A0 pin to ground and plugged Arduino to computer. I got the same fluctuations(avg: 30, max: 40) in analog readings whenever servo was connected, meaning servo is polluting my analog input. I tried placing caps, but to no avail. Have you encountered this weird problem?

Any motor running near an amp, especially one that isn't shielded, will pick up on the EMP from the motor. Use shielded wires and get some shielding around the PCB.

Ok. But I removed the amp and started from scratch. Only Arduino with servo connected to it. A0 pin is connected to GND. When Arduino is connected to PC and value read from A0 is read from serial monitor, I get a lot of noise. If servo is removed, I get a reading of 0. Is this normal?

The analog inputs tend o pick up lots of noise unless they are pulled one way or the other. Often when you try to generate a random number with the arduino you will poll one of the analog inputs to add some more randomness to the number generator based on the noise picked up by the pin.