I'm doing an art installation at some bus stops here in my city and I'm having some flickering issues in one particular location. Everything works fine in my lab and in other locations but at this particular bus stop the flickering is very strong. What is different about this location is that it is the highest place on my city, so all the radio/TV transmitting antennas are there. So, I strongly suspect that the LED strips are acting like receiving antenna and the noise is disturbing the data signal. This hypothesis is corroborated by the fact that when the LED strips are laying on the floor, they work fine. But when I move them to the upright position (they will be installed in the glass in the back of the bus stop) the flickering starts. Each LED strip has 2 meters (about 6ft). Is there anything that I can do to resolve this issue?
Today I'm going to replace the plastic profiles that I'm using by aluminum ones in the hope that they can create a Faraday cage (the front will still have only an acrylic strip to diffuse the light).
Try adding fair size capacitors (470uF or 1000uF) between Vcc & GND. I suspect that those lines may act as an antenna if you put them upright, though i have never heard of this problem before. Those transmitting antennas must be transmitting with quite a lot of power, it is probably not healthy to stand there for to long.
That should help particularly if you can connect them to 'earth' of the mains power (not GND of the PSU)
If the data line starts picking up stuff you can shield it or change to a twisted-pair max485 configuration for transfer, how long is the cable to the strip ?
I am guessing that you either did not study how Faraday cages work or did not understand about how the openings relate to the wavelength of the RF you are trying to eliminate.
Before you go to extremes, try putting small bypass capacitors between any power connections and the closest ground wire.
Make sure all wires are are as short as possible. I am guessing you have an Arduino somewhere. Put all of that and all you can into a metal box.
So you can guarantee that both power supply wires - presumably 5 V as you give no details - run as a pair everywhere (twin or "figure 8" style cable) from one part to another and that similarly, the data wire from Arduino to strip also travels as a pair with its ground?
Also that there are no open loops in the wiring. So you cannot power the Arduino separately from the data connection to the strip unless it is from a totally separate, isolated power supply. The power to the Arduino otherwise must run from the start of the LED strip together with the data wire and ground, back to the Arduino.
The topic name states ws2812B, that is always 5v strip or they'd have to put a regulator on every pixel.
Mind you i've just done some testing driving WS2812B's with an ATtiny, and they work at least down to 2.7v when the BOD of the ATtiny kicked in. (sorry that bit is not relevant to this topic)
If this is a case of EMI, this is most likely caused in the MCU or the data wire between the MCU and the strip. If the data wire is of significant length, you should have a resistor between the strip and the data wire (not the MCU and the data wire). The size of the resistor depends on the amount of EMI, the usually recommended would be 330 ohm. If the length of the data wire is insignificant, you may want to try to shield the MCU itself. For testing you can wrap the MCU in cellophane and then in some tin foil connected to GND.
Yes, they are quite powerful. Once I was installing a long strip of normal LEDs and the middle ones lighted up without having any power connection!
I'm going to use either the earth from the mains power or the outside of the bus stop.
I tried to minimize a lot the length of data lines (they are about 15cm / 6in). I'm using an ESP32 to drive three independent sections of WS2812b LED strips. I'm using normal cables though. So, I'm going to buy and swap them by shielded ones.
Yes, indeed I didn't do my homework on this area. I had the feeling that the front opening wouldn't protect much the WS2812b LEDs from interference, but it would be really difficult to create a complete cage without interfering too much in the LED display.
This I think is my main problem. The LED strip that I'm using doesn't have any bypass capacitors on the LEDs. The strip have the small pads where the capacitors should be soldered but they are no present. I bought another one that have the bypass capacitors and the problem was greatly reduced!
I was a bit desperate about this issue so I added:
a level shifter (exactly the one that Leo recommended: 74HCT125);
a 300 ohm resistor;
a hack using a first "dummy" WS2812b really close to the MCU and then using its output to send the signal to the LED strip.
I'm going to buy some metal boxes to put my electronic inside.
Thanks a lot for the replies. They were really helpful! I'm going to do some more tests here with the suggestions that you gave me and will give an update on the results.
For future use, a Faraday box MUST be fully enclosed, all sides!. It may be made of screen, but the longest side of any opening must be less than 1/4 wavelength for the highest frequency you are trying to contain or keep out. That is because the edges of the openings act as antennas when they are 1/4 wavelength long. So, for the TV frequencies, you are looking at chicken fence wire or even hardware cloth.
There is a touching faith in the hobby world that putting something in a Fariday cage will stop all emissions into and out of the box.
When you try this in practice this will simply not work, which anyone who has ever worked in an EM test chamber, trying to get EM compliance will testify. Any joint in the box will act as a radiator even if it looks to be in physical contact. Any hole where cables go in and out will radiate. There is a lot of the black art in suppressing interference. Interference and susceptibility to interference are two sides of the same coin, crack one and you crack the other
This is why there are products that ensure real contact between joints, like mesh gaskets, copper fingers and feed through capacitors. Even then nothing is 100% effective at stopping emissions. I think a lot of this faith is caused by a misunderstanding of the original Fariday experiment.
That is a serious problem, well that is the problem buy yourself a reel of 100nF 1206 SMT capacitors and add those to every single LED, and send an angry letter to the vendor. It is a bit of work, but those capacitors are not really optional.
The lengths should be OK, but a level shifter (as has been suggested by some) should be added as well.
The normal way to reduce antenna-like currents in this situation would be breaking the strip up into shorter sections at RF. This is done typically with ferrite toroids - though they might need to be fairly large (a problem if they obscure LEDS !)
Another approach is using shorter sections of LED strip each driven via opto- or digital-isolators.
You may have seen large transmitting towers that have lumps regularly spaced along the guy-wires - these are insulating blocks to prevent the guy lines from interacting too strongly with the transmitted signal - break them into electrically shorter pieces and the problem is reduced.
You might be able to get some shielding just by having the LED strips run on a wide metal strip as backing - this backing will then take up a lot of the induced current, reducing the effect on the strip (hopefully), and may be more practical than ferrite toroids. The metal strip being wider should mean it couples to the RF fields more than the LED strip.
I'm here to give my thanks for your help with my issue!
Sorry that it took so long to reply, but I was quite busy because I had to buy new LED strips with the capacitors (they were essential to fix my issue), rewire with shielded cables, buy metallic boxes to put the electronics and do a lot of tests at the bus station during the night (most of the time, going back home at 3am). I'm glad to say that the project is implemented and the client is very happy with the result!