I have a circuit on a SMT board that is showing some rather odd noise issues. I don't think it is necessarily because of the Arduino, but I am curious if anyone else has seen this issue.
I am using the MSGEQ7 in a SMT package, and operating it using the typical example code. Everything looks great, but at random intervals, roughly 10-20 seconds apart, the values being read at the analog input spike from ~30-50 up to 100+.
When I look at my microphone on an oscilloscope, after my 20dB preamp, after the 0.1uF capacitor, directly on the input pin to the MSGEQ7, the signal looks fine. I see perhaps 2-3mV of noise, and can easily see speech or other sounds show up. Loud sounds show a peak to peak voltage of as much as a volt, so there is plenty of signal.
I heavily bypassed everything in the system; the microphone has both a 0.1uF and a 10uF capacitor on the power input, the preamp has a 10uF and a 0.1uF capacitor on the power input. The MSGEQ is not bypassed so thoroughly. Needless to say, my audio signal is quite clean, and the spikes showing up in my serial output of the received audio intensities does not seem to have any relationship to any events on my oscilloscope.
However, when I scope the output of the MSGEQ7 going to my arduino input pin, it shows the normal seven short pulses that you would expect. Usually these are jumping around a little bit, but not very much. However, when the arduino reports that the audio signal has gotten a lot louder, the output from the MSGEQ7 is noticeably jumping up as well.
Has anyone seen the MSGEQ7 misbehave in this way before? I have connected it up exactly as in its datasheet, and because this is all SMT work there aren't exactly any wire traces to pick up noise. I can't think of anything reasonable that could cause such bizarre behavior. I do have an ultrabright LED on my board, but this noise happens even when the LED is disabled. Even then, I put a 47uF capacitor to bypass the LED, and very carefully separated the supply voltage for the LED from all of the analog electronics.
It's quite frustrating, because when it is working "correctly", everything looks great and I can easily imagine implementing the algorithms I want. But it just periodically goes nuts, and I have no idea why. I tried lowpass filtering the audio inputs in software using an exponential rolloff, but I needed a time constant so long that the delay in detecting events made it unusable.
Hope someone out there has seen this before and has any ideas! Otherwise I'm off to call MSI tech support... although they've been horrible so far about actually picking up their phone =(