Post by gregkovacs on Oct 14, 2018 15:23:46 GMT -8
We are using Gameduino 3 displays for some scientific instruments where small analog signals are amplified and processed. Every time we execute GD.swap(), there is a significant current spike that comes through the Vin and GND rails. It doesn't seem easy to decouple by adding capacitors external to the Gameduino 3 board, so we are thinking about trying surgery to add a capacitor to the board itself, or to try series power inductors externally (bigger and more expensive).
It's not huge, but I see 40 mA current spikes on Vin to the Gameduino 3, and Vin bounces by about 300 mV (quite a bit on a 5V rail).
Putting a 1000 uF capacitor in parallel with Vin off the Gameduino 3 does not help, but I'm still looking at it.
I worked designing circuit boards for over 20 years. Most of these board had both digital and analog circuits on them. Most were used in oceanographic instruments. Noise was one of the biggest problems that I encountered and had to defeat. You can have the best transducer(signal source) you can buy but if you allow digital noise in, then your signal become too noisy to see or use. (And your idea about placing more filtering on the Gameduino board will not help.)
So here are my suggestions.
1. The signals that you are seeing are normal for a digital circuit. Since most of these signals are square waves they have frequencies that go from the fundamental frequency to radio frequencies. It is very difficult to get rid of these signals. But they do not bother the digital circuits as long as they don't get beyond the voltage levels used by the circuit, usually .33vcc for a low and .67vcc for a high. So 300mv will not affect the digital circuit. This is not true for analog circuits.
2. To prevent the digital noise from interfering with the analog signal I used the following techniques.
Two power supplies, one digital and one analog, and two ground planes, one analog and one digital tied to each other in one place usually at the power source. They can use the same power source but they have to have different regulators and filters. I use low noise regulators. The analog power supply filter should have a large capacitor and a smaller capacitor in parallel. I suggest a 100ufd tantalum and a 1000pfd to 100pfd ceramic. Use good quality parts. Some capacitors can be very noisy. Also use the smallest value resistors for your op-amp amplifiers and the best quality resistors you can. (not carbon resistors)
You should filter the analog signal to get rid of any frequencies you are not interested in. I suggest a low pass butterworth filter or a bandpass filter. I used 2 to 4 sections of low noise op-amp filters with about -40 to -80 db of loss for out of bound signals. There are a couple of places on the web to get the information to get the right parts. Use low noise op-amps. (TI has a filter design program call WEBENCH filter design which they got from National Semi. You might have to go through some hoops to get registered but it is better than the math approach).
Keep all leads as short as possible. They act like antennas.
3. I suggest you read chapter 8 of the book The Art Of Electronics. Or if you are a Ham radio operator the Amateur Handbook has some good information.
Post by jamesbowman on Oct 16, 2018 12:19:09 GMT -8
Echoing Peter's reply.
It looks like those graphs approximate the scanout signals. There are 28 signals, all carrying square waves at about 10 MHz, all 70 mm long. The quiet section in each cycle is probably the vertical blanking.
You can set REG_PCLK to zero, that switches off the scanout. You can set REG_PWM_DUTY to zero, that switches off the backlight.
GD.wr(REG_PCLK, 0); // no scanout GD.wr(REG_PWM_DUTY, 0); // no backlight
It would be very interesting to see noise levels with these changes.
Note than scanout can be suspended for about 100 ms without affecting the image at all. Perhaps sampling could happen in these "quiet times"?
Post by gregkovacs on Oct 17, 2018 16:48:33 GMT -8
Peter, Many thanks. We have similar backgrounds. I am a (semi-retired, two PhD students left) professor of EE at Stanford, and have designed mixed-signal circuits for 35+ years. This is not a trivial problem, and we already have separate grounds, power rails, great decoupling, and careful board layout. Of course, we could have missed something. I do think your comments are awesome and will help many, and also incredibly kind!
Funny you mention reading The Art of Electronics. I know Paul Horowitz and recently had dinner with him.
Post by gregkovacs on Oct 17, 2018 16:52:38 GMT -8
James, Thank you I'll take another look and try your suggestions this weekend. Our current work-around is to suspend sampling with the Teensy 3.6 during display updates. It's ok, but if anyone wants to build a high-performance instrument (e.g., oscilloscope) with GD3, they will need to manage it. Incidentally, I designed a board to support the Teensy 3.6, a common WiFi module (ESP8266) with separate 3.3V regulator, and a mid-rail analog rail (1.65V) that is quite quiet. It also has an ample prototype area.
Once tested and/or debugged, we will make this open-source.
I am more of a technician that read a lot. So when I began to work at the University of Washington as a technician and found a mistake in my bosses design, they made me a senior field engineer.
Anyway, When I was starting out I went to a seminar by Dr. Van Doren of the Missouri University. The seminar was about noise and how to get rid of it in circuits(PCB or Wiring). I would recommend getting the course as he does not teach anymore. (see www.emc-education.com/)
He showed that if the signal path and the return path were not close together or were disrupted in some way then the signal path became an antenna and radiated signal to the rest of the circuits. The further apart the two paths were the more radiated noise was created. He also had some probes(antennas) that could show where the noise was being created.
Well I took this information and used it in all of my designs. I received some praise about how quiet my circuits were.
In today's digital everything world, noise is not something that some engineers think about until it kills a small analog signal they are trying to measure.