Pages: 1 2 [3]   Go Down
Author Topic: I think I've got a ground loop messing up my audio. Help!  (Read 3295 times)
0 Members and 1 Guest are viewing this topic.
Manchester, New Hampshire
Offline Offline
Edison Member
*
Karma: 1
Posts: 1283
Propmaker
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Weird.  I could not get my board to power down just now with the power switch.  The power switch switches +5v to a logic level mosfet to turn the board on.  I traced the issue to the RCA cable.  It was plugged into the amp, which was off but connected to the same battery as the Mighty.

I can't for the life of me figure out how the mosfet could turn on to allow power to flow.  The pin that controls it is not attached to anything but a switch on the board which is off, and some pins for an external switch which is what I was using to switch it.  So the +5v had to have been coming from somewhere else.  But there is no connection to +5v from the RCA cable.  The + RCA line goes to the DAC output.

My schematic and layout are in this post btw:
http://arduino.cc/forum/index.php/topic,150336.msg1129683.html#msg1129683

[edit]

Oh wait, my mosfet doesn't switch 5V, it switches ground.  And the RCA cable carries ground from the amp.  DUH. 
« Last Edit: March 08, 2013, 09:44:13 pm by scswift » Logged

Manchester, New Hampshire
Offline Offline
Edison Member
*
Karma: 1
Posts: 1283
Propmaker
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Oh I forgot to mention... I just tried disconnecting the ground to the Mighty and allowing the RCA to carry the ground, thus eliminating the ground loop, but I still get the noise.  So it seems it isn't the ground loop at all causing it.  Yet a transformer between the Mighty and the Amp in the RCA line fixes the noise issue.  It's gotta be the inductance or something.  Like I said before I also tried caps on both + and - RCA lines and that ought to break the ground loop as well but that didn't help with the noise either. 
Logged

Anchorage, AK
Offline Offline
Edison Member
*
Karma: 37
Posts: 1147
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I think you're beginning to learn a painful lesson on why you don't produce a PCB in large numbers until you've had a chance to run it through the wringer for a while.  ;-)  You know what they say ... in theory, there's no difference between theory and practice.  In practice, there is.  Having a schematic and a prototype that works is only half the battle.  (Guess how I know...)

I agree with you that the noise is probably not caused by a ground loop.  Trying to alleviate the noise using techniques intended to fix ground loops is just going to be a waste of time.  There were some good suggestions a while back on trying to isolate the high current loops using capacitance and such.  Did you try that?  I know it's not what you want to hear based on board layout, but if you can, test the theory anyway.  If for no other reason than to prove it wrong and move on to something else.  Do whatever you have to do to get a large cap on the power rails near your LEDs and see what happens.
Logged

Manchester, New Hampshire
Offline Offline
Edison Member
*
Karma: 1
Posts: 1283
Propmaker
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I think you're beginning to learn a painful lesson on why you don't produce a PCB in large numbers until you've had a chance to run it through the wringer for a while.  ;-)

Well I didn't really have a choice. 

I raised the $16K to produce the boards in May of last year (actually $14K since Kickstarter and Amazon took a chunk) and then I realized my original design wasn't going to cut it and redesigned the whole thing virtually from scratch, upgrading the 328P to the 1284P, increasing the available IO ports, changing the power LED to an indicator LED, redesigning the audio circuit to provide better isolation from noise in the power and ground planes (apparently I didn't do a good enough job), moving all the LED drivers off the main board (driven by the realization that with a proton pack, at least one on the board would end up being wasted, and it was more efficient to create modules that could allow ribbon cables to be plugged in), and finally just before shipping, I had to remove the voltage regulator from the board and replace it with the mosfet because I realized I'd screwed up the power dissipation calculations and the regulator was going to melt the board to slag.

I stupidly assumed that if I followed the recommended layout for the TLC5947 exactly that that would provide adequate noise suppression. And I didn't encounter anyone who'd mentioned having this sort of problem with them.  And as for the audio circuit, I did the same, following the schematic, and looking at how others designed their line outs.  I tried my best to isolate that portion of the circuit from noise, but information on how to properly isolate the audio portion of a circuit is hard to come by.

Anyway, I finished the redesign at the end of September and many folks were expecting the boards for Halloween and I thought maybe I could still put together something in that time, but obviously that didn't happen.  Programming them and working out the kinks with the audio by moving the LED drivers to their own data bus, and then getting an SD card based bootloader to work took several more months, and I've finally just started to ship them.  Yes, I've had to ship them with the audio problem.  My customers are willing to purchase a  ground loop isolator, but not willing to wait any longer.

Which is what they'd be doing (waiting) if I had not had the PCB house press full steam ahead in October because it took till now to find most of the issues and I still don't have a solution for the audio issue.  I've got some suggestions I can try but I don't know they'll fix the problem for certain.  And even if they do fix the current problem, what of all the noise that is generated when I power servos?   Fixing the LED drivers isn't going to fix that.  I haven't yet tested the servo noise issue with the ground loop isolator.  I suspect it will greatly reduce the noise, but not eliminate it completely, as has been the case with the LED drivers.  A combination of greatly eliminating and attempting to reduce it seems like the best course of action.  It's not like I have tons of space on the board to add big capacitors.

So I really had no choice in the matter. 


Quote
I agree with you that the noise is probably not caused by a ground loop.  Trying to alleviate the noise using techniques intended to fix ground loops is just going to be a waste of time.  There were some good suggestions a while back on trying to isolate the high current loops using capacitance and such.  Did you try that?  I know it's not what you want to hear based on board layout, but if you can, test the theory anyway.  If for no other reason than to prove it wrong and move on to something else.  Do whatever you have to do to get a large cap on the power rails near your LEDs and see what happens.

Oh, I believe them when they say it's the LED modules causing the noise, but modifying them at this point is not going to happen.  That is something that will have to wait for a redesign.  Right now, I am starting to ship the boards as is because with the ground loop isolator they work good enough for their intended purpose.  Adding more capacitance is something I will try when I have some time and before I get the next batch manufactured, assuming there is a next batch.

But assuming it is high current loops in the LED drivers... What would the isolation transformer on the RCA line be doing to fix that, and how might I replicate that without a big transformer?  (big relative to my tiny 2"x2" board I mean)  If it were simply that the board's ground was at a different potential than the amp, and I'm sure that's true as well, I would have expected the capacitors on the RCA cable to do something, but they didn't do a thing.
Logged

United Kingdom
Offline Offline
Tesla Member
***
Karma: 220
Posts: 6587
Hofstadter's Law: It always takes longer than you expect, even when you take into account Hofstadter's Law.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

You have a large pulsed current flowing from the battery to the LED boards, via the microcontroller board. Because of the resistance and inductance of the power supply lines, this means that the ground on the microcontroller board carries a small pulsed voltage relative to the battery negative terminal. The line output from the microcontroller board is referenced to the microcontroller board ground, therefore this small pulsed voltage gets added to the line output (as viewed relative to the battery negative terminal, and hence the amplifier ground).

The transformer fixes the problem because you feed the difference between line output and microprocessor ground to the primary (thereby cancelling out that small pulsed voltage) and this gets reflected at the secondary.

Here are some suggestions to reduce or eliminate the problem:

1. You really should provide adequate power supply bypassing on the LED boards. Without this, your boards may also generate RFI. I think you need at least 1000uF between +5V (the positive supply to the LEDs) and the ground pin of the TLC5947. 2200uF or 4700uF would be better. An inductor in series with the incoming +5V on the LED board (as discussed earlier) would be the next step.

2. Include a small PCB-mounting audio isolation transformer on the microcontroller board.

3. In the diagram in your original post, you have a ground connection to R11, R12 and JP7. If you choose not to include a transformer, then make provision on your board to separate this ground from the main ground on the board, with a jumper connecting them together. When using a common supply, remove the jumper. This way, the voltage divider will be referenced to the amplifier input ground instead of the microcontroller ground, so at the same time as reducing the signal voltage, the divider will reduce the noise voltage passed to the amplifier. Removing the jumper will eliminate the ground loop too.

4. Use thick wires between the microcontroller board and the battery (to reduce resistance), and ensure the power and ground conductors are in the same cable, or twisted around each other (to minimize the area they enclose and thereby minimize the inductance).
Logged

Formal verification of safety-critical software, software development, and electronic design and prototyping. See http://www.eschertech.com. Please do not ask for unpaid help via PM, use the forum.

Manchester, New Hampshire
Offline Offline
Edison Member
*
Karma: 1
Posts: 1283
Propmaker
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
You have a large pulsed current flowing from the battery to the LED boards, via the microcontroller board. Because of the resistance and inductance of the power supply lines, this means that the ground on the microcontroller board carries a small pulsed voltage relative to the battery negative terminal.

I don't understand.  Is it because the ground plane and wires act kind of like a capacitor as power flows in and the battery is unable to discharge them back to 0V quickly enough that the ground potential of the board fluctuates as the LED modules draw power?  Is that why you suggested I use larger wires?  Because with less resistance the battery will be able to pull the ground plane back down to 0V (relative to the battery ground) more quickly?
 

Quote
The transformer fixes the problem because you feed the difference between line output and microprocessor ground to the primary (thereby cancelling out that small pulsed voltage) and this gets reflected at the secondary.

Makes sense. 

So am I right in assuming that the reason putting a cap in series with the RCA's ground pin didn't work, was because the fluctuations on the ground were AC in nature, and could pass right through the cap? 

Quote
1. You really should provide adequate power supply bypassing on the LED boards. Without this, your boards may also generate RFI. I think you need at least 1000uF between +5V (the positive supply to the LEDs) and the ground pin of the TLC5947. 2200uF or 4700uF would be better. An inductor in series with the incoming +5V on the LED board (as discussed earlier) would be the next step.

I will, when I have a new batch of boards made.

Quote
2. Include a small PCB-mounting audio isolation transformer on the microcontroller board.

Not gonna happen. 

1. The boards need to be really small.  I'd never be able to fit a transformer on there and still fit the board where it needs to go.  (Handheld costume props.)

2. All audio transformers filter out some frequencies, but most I've looked at don't provide data on what frequencies they're good for, and I don't know how to calculate that.   

3. They tend to be fairly expensive and many aren't stocked in large quantities on Digikey.

4.  I don't want to stick this big ugly thing on my beautiful surface mount board:



That's one of the cheaper ones available in large quantiies, and one of the few that actually provides data on the frequencies it handles but it's still too big, and ugly, and it only handles down to 100hz which means I'd lose all the bass in my audio, so that's no good.

As a last resort I could make my own ground loop isolator cables with a custom PCB and heat shrink the thing.  That wouldn't be too bad but still, a costly solution, labor intensive, and I'd lose frequencies I want to keep.

 
Quote
3. In the diagram in your original post, you have a ground connection to R11, R12 and JP7. If you choose not to include a transformer, then make provision on your board to separate this ground from the main ground on the board, with a jumper connecting them together. When using a common supply, remove the jumper. This way, the voltage divider will be referenced to the amplifier input ground instead of the microcontroller ground, so at the same time as reducing the signal voltage, the divider will reduce the noise voltage passed to the amplifier. Removing the jumper will eliminate the ground loop too.

This sounds like an excellent solution and is something I may be able to try out with a little surgery on one of my boards. 

I wish I didn't need to use a jumper to do it...  Don't really have room for a switc.  Perhaps I could just require the user to tie the board and amp grounds together at the power input if they choose to run them on separate power sources?  95% of them will choose to run them off the same battery, so if I could get away without adding a jumper to the board that would be nice.


Quote
4. Use thick wires between the microcontroller board and the battery (to reduce resistance), and ensure the power and ground conductors are in the same cable, or twisted around each other (to minimize the area they enclose and thereby minimize the inductance).

I'll make that suggestion to my customers, but I have no control over what they do there.  The first guy I gave a board to connected the amp up with like 28 AWG wire.


Thanks for all the suggestions.  I think I have a little better understanding of what's going on now at least and I can try out tying those grounds together on the line out and see how that works.  If that works that will be perfect.
Logged

Anchorage, AK
Offline Offline
Edison Member
*
Karma: 37
Posts: 1147
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I don't understand.  Is it because the ground plane and wires act kind of like a capacitor as power flows in and the battery is unable to discharge them back to 0V quickly enough that the ground potential of the board fluctuates as the LED modules draw power?
No, as he said, the ground traces act like an inductor.  They're unable to change instantly.  With DC pulses, the voltage (in theory) goes from 0v to +5v instantaneously, then after the PWM delay, back to 0v instantaneously.  In real life, that just can't happen.  But, the fatter and shorter those traces are, the closer to the ideal behavior you will get.

So am I right in assuming that the reason putting a cap in series with the RCA's ground pin didn't work, was because the fluctuations on the ground were AC in nature, and could pass right through the cap?
No, my last answer to this still stands.  You formed a very high-frequency lowpass filter.  You probably eliminated the MHz-region noise adequately, but it takes big caps to filter low frequencies.  Of course, if the noise is already in the audio band on the RCA cables, a low enough filter will remove audio as well.  That's why the proper fix is to prevent the LF (audible range) noise from leaving the source of that noise at all.

I sympathize with your quandary.  Prototyping electronics is often an expensive process, but it has to be done.  Real-world constraints affect performance in big ways.  Data sheets and example schematics are never enough to tell you what is really going to happen.  Out of a couple thousand dollars spent at fab houses, I'm not sure I have even a single project where the first PCB was ready for mass distribution.  I am nowhere near confident enough in my engineering ability to even consider promising a product before I have a completely-built prototype that I'm able to put hands and scopes on.  Although, sometimes I can hack it or live with it enough to use it, but I still go back and touch-up the design just in case I ever have spare room on a future PCB order.
Logged

Pages: 1 2 [3]   Go Up
Jump to: