Display Choice Advice

I've been trying to run an audio application, passing a guitar signal through 1/4" jacks into a guitar amp with an I2C OLED (SSD1306: http://www.ebay.com/itm/282174165223).

When I run the OLED, I get some awful noise in my audio path (https://youtu.be/s9LLt7F7W4Q). As soon as I pull the OLED out, the noise is gone.

I suppose my questions are: 1. Is there an easy fix? 2. If not, what other display choice should I use? Something comparable in size, preferably. And if possible, I2C.

Thanks for your consideration, Kyle

I'm using an Arduino Pro Micro.

Perhaps something like a ST7565 or KS0108 or ST7920? I don't know what any of those are, but they look like they're LCD at 128x64. I guess you use the term GLCD for Graphical LCD (which I guess means something other than the 20x2).

Any direction would be appreciated.

GLCD probably means "Graphics LCD". 20x2 LCDs are usually called "Character LCDs" (hmmm, but noone calls them CLCDs).

I think there can be two reasons: 1) OLEDs and LCDsrequire >7 V to operate. This is usually generated with a charge pump (voltage multiplier) which runs at 50KHz to 1MHz. 2) The display itself (OLED or LCD) outputs data row by row/screen by screen. If the display has a frame rate of 50 Hz and has 100 lines, you will probably have a 5000 Hz signal somehow.

The first thing, what you should do is trying to reduce the noise with your existing hardware. Did you try to put a 100nF and 1uF keramic cap close to the display?

Oliver

olikraus: GLCD probably means "Graphics LCD". 20x2 LCDs are usually called "Character LCDs" (hmmm, but noone calls them CLCDs).

I think there can be two reasons: 1) OLEDs and LCDsrequire >7 V to operate. This is usually generated with a charge pump (voltage multiplier) which runs at 50KHz to 1MHz. 2) The display itself (OLED or LCD) outputs data row by row/screen by screen. If the display has a frame rate of 50 Hz and has 100 lines, you will probably have a 5000 Hz signal somehow.

The first thing, what you should do is trying to reduce the noise with your existing hardware. Did you try to put a 100nF and 1uF keramic cap close to the display?

Oliver

All of that makes sense.

Where the heck is this charge pump on my OLED board? I know it says it can operate between 3.3V and 5V, but I don't see a charge pump on the PCB itself.

I DID try to put a 100n MLCC cap between VCC and GND directly on the OLED board, and it affected nothing. However, I will try to add the 1u in parallel.

I've also tried to jump/unjump the audio ground from the digital ground. No change there.

OLED and TFT controller chips generate all their own voltages internally. The module manufacturer would have mounted any external capacitors specified by the chip maker.

You generally do not need to worry about these details. Just provide a stable power supply and use a respected library. As others have suggested, add 10uF and 100nF to the board. Possibly a series inductor / choke as well.

There will always be some electrical noise. Good layout, short wires, adequate decoupling capacitors should keep it manageable.

David.

david_prentice: OLED and TFT controller chips generate all their own voltages internally. The module manufacturer would have mounted any external capacitors specified by the chip maker.

You generally do not need to worry about these details. Just provide a stable power supply and use a respected library. As others have suggested, add 10uF and 100nF to the board. Possibly a series inductor / choke as well.

There will always be some electrical noise. Good layout, short wires, adequate decoupling capacitors should keep it manageable.

David.

All great points. I didn't realize the charge pump was in the OLED itself. Neat!

I'm using the SSD1306ASCII library from https://github.com/greiman/SSD1306Ascii. I'm pretty sure this is a legit library.

A bit more information regarding the power. * I'm using a 1SPOT PRO CS12 isolated power supply (120VAC to 9VDC). I don't think I can get much cleaner. * The 9V goes thru a 1N5817 to the Arduino, which uses its internal 5V vreg. I power the OLED from this vreg. * The 9V also goes to a DC-DC buck converter to step down to 5VDC. I use this to power the relays and most of the other stuff. I don't know if matters for my design, but the IN- and OUT- of the DC-DC buck converter are connected to the same GND. * I have tried a LM7805 instead of the DC-DC buck converter. No change. (However, I do realize that this does not power the OLED).

I'm definitely not a true PCB guy. I do it as a hobby for guitar effects. However, showing my layout to other EEs, they saw nothing immediately wrong. I tried to keep the SDA/SCL traces short, and tried to keep a ground pour between them.

Every other IC on my board has a 100n decoupling cap.

I could probably shorten the wires I'm using to test my OLED.

For the 10uF and 100nF caps that we're talking about: you mean just from VCC to GND, right, in parallel?

daleykd: Where the heck is this charge pump on my OLED board? I know it says it can operate between 3.3V and 5V, but I don't see a charge pump on the PCB itself.

The charge pump is part of the display controller. The SSD1306 requires two external caps for the charge pump.

I just had a quick look at my own OLEDs: |500x375

For the OLED the charge pump caps seem to C3 and C4.

The captured signal looks like this: |500x375

So it is clearly a 100KHz signal and we can nicely see the charge pump controll circuit in action.

Of course crosstalk is there. I captured the signal from the flex connector: |500x375

And it looks like this: |500x375

There are 20mV peak voltage. However as soon as i remove the probe a little bit from the flex wire, the signal is not visible any more.

Not sure whether this helps, but i just wanted to analyse this for myself.

Oliver

I've tried: * Added a 100n MLCC + 10u (parallel) from VCC to GND directly to the OLED PCB. No change. * Tried shorter wires. No change. * Tried a 100R + 100n MLCC (parallel) to connect my AGND to GND. No change. * Tried a 100R + 100n MLCC (parallel) to connect my GND of the main PCB to the OLED GND. No change, maybe even noisier. * Three different OLEDs. Some are noisier than others.

I just ordered some probes for my o-scope. I've never used one, so I'm hopefully going to have a friend walk me thru how to use one. The probes should be here Sunday.

I found a 16x2 LCD that a friend lent me. It appears to be I2C. When I have motivation, I'll see if using this alleviates the issue. If so, I guess I'm back to my original question about GLCD?

I've had issues with SSD1306 displays creating a lot interference with a 125 kHz RFID reader. One thing that helped was disabling the charge pump in the initialization sequence. The library I used had the sequence stored in progmem, so I only had to find and comment off 0x8D, 0x14. The display still works at 5 V (just dimmer), but the RF noise is gone.