We have a product which is failing EMC testing on radiated emissions. It fails by approx. 25 dBuV at the peaks. The product has a large 550x900 mm opaque 5mm acrylic window. Behind this, at a 50 mm distance sit 300 2812 LEDs arranged in a 15 x 20 grid. A microprocessor drives various display patterns. The LEDs are on a 5m flexible PCB tape from the manufacturer, which we have cut into sections to achieve the grid effect. I have access to a spectrum analyser, so I can measure any potential fixes. I believe each individual LED on the strip reconstitutes the data signal it receives before passing it on to the next in the strip, so I would guess that some sort of shielding of the whole grid would be the only option. Does anyone have any thoughts/experience/suggestions?

The LED strip has a capacitor after every LED between 5 V & GND. The LEDs are laid out in rows, the white wire links the data from one row to the next. The 5 V & GND are connected using the copper "bus bars" to make sure each row gets sufficient power. If we rely on just the 5 V in the strip, then the last LED rows are very dim. ESP32-based controller is at top centre, 75 W power supply is at top right. LED strip layout The scan looks like: EMC results


Well, I tried all the suggestions, hints and tips you good folks gave me. Unfortunately, nothing seems to make an appreciable difference. Does anyone know of any WS2812 suppliers who actually measure/certify the EM which comes out from their LED strips? Does anyone have any other types of strips which we can try?

  • 2
    \$\begingroup\$ Check if the problem persists while you are not sending data the the WS2812's. If it doesn't then maybe it's the data line. If it does then it's probably the LED pwm. \$\endgroup\$
    – Drew
    Mar 27, 2023 at 18:54
  • 2
    \$\begingroup\$ The data line EMI can be reduced by reducing the edge rates. You may be able to reduce the PWM emi by using a lot of decoupling and bulk capacitance on the power rails. \$\endgroup\$
    – Drew
    Mar 27, 2023 at 18:56
  • 1
    \$\begingroup\$ The hard part is you have 900 separate PWM outputs. The easy part is that none of them travel over wires, so you can keep the current loops very short. \$\endgroup\$
    – Drew
    Mar 27, 2023 at 18:57
  • \$\begingroup\$ Can you share the spectrum of the radiated emissions tests? At which frequencies is it failing? Layout and schematic would also be helpful for useful answers. \$\endgroup\$ Mar 27, 2023 at 19:14
  • 2
    \$\begingroup\$ Those are really high frequencies, I would suspect the MCU board. As Drew suggested, stop sending data to the LEDs and see what happens. But otherwise, you want the code to run the same (ideally just change one line of code). \$\endgroup\$
    – Mattman944
    Mar 28, 2023 at 12:38

4 Answers 4


One EMI problem with cutting the strips like that and just connecting the data line to the next row is the ground return path of the data signal at the last LED of a row.

In the paintover below you can see the green data line and the corresponding black GND return path. The last LEDs of each row form relatively large signal loops. Depending on the signal bandwidth, these loops could be radiating quite a bit. enter image description here

A solution could be some sort of GND plane underneath the strips using a thin copper foil or something similar. You would need to connect the strips at least on the last LEDs of each row.

There are probably also some other EMI problems e.g. on the data line from the ESP32 to the first LED or the power supply could be problematic. The comments already provide some good ideas what to try, e.g. check and reduce rise- and fall-times of the ESP32 signals, check EMI without communication, ferrites on the cable etc.


The comments on ground paths and current loops are good ones. You need to minimize the current loop areas and provide good grounding. I'd start by twisting the red and black wires together (minimizes area between them) and moving the bus bars as close as possible to each other (minimum area). Connect from the bus bars to each strip with twisted wires and land them on the closest +5V and GND points. If you can, install capacitors between the bus bars at each strip takeoff point. Use caps with low ESR/ESL, maybe 1-10 uF, to start. These will help provide current for the LED PWM transients, just like bypass caps on Vcc/GND for ICs. (Make sure your power supply can handle the extra capacitance, especially on cold start.) Finally, it would be a good idea to use twisted wires for the data signals and their grounds. Connect DOUT and GND from one strip to the DIN and GND of the next strip with twisted wires. Also, use twisted wires from the first strip's DIN and GND to the processor's data out signal and its ground (a ground that's closest to the data signal: e.g., CPU ground). Also, as has been mentioned, you could put a ferrite around the wires to the display assembly.


I'd start by adhering the LED strips on a thin conductive backplane, say made out of galvanized steel or stainless. Then locally connect several ground points on each strip to the backplane, using short (1" max) wires. That backplane constitutes a GND return. I'd say the jumpers should be no farther than 6" apart along each strip. If that works, you can always spread them further apart.

VCC should still be distributed using the vertical bus, put in the middle of the length of the strips, not at the end. The bus should be glued to the backplane using e.g. thin double sided tape, and the jumpers from the bus to the VCC points on the strips should be short - 1" max.

Connect a dedicated LED power supply between the backplane and the vertical bus. This should be a "floating" power supply with DC output that is not earth-referenced, and should not be used to power anything else but the LEDs. This is very important to avoid ground loops. Twist the wires going from the power supply to the display.

Now you have two options:

  1. Run data in a daisy chain. With the backplane and tight power distribution as above, this may now work well enough, EMI-wise. Connect the MCU to the first LED strip using a shielded cable. Connect the shield directly to the backplane right next to where it connects to the LED strip, and also to the GND plane on the controller that generates the control signals.

    Verify that there are only two external connections that connect to the backplane: the shield of the control signal, and the (-) side of the LED power supply.

  2. Run data separately to each strip, using a thin shielded cable for each connection from the controller to the strips. The controller will have to generate several signals in parallel, or it can activate those connections individually one after another. One shield should be terminated on both ends. Shields from other cables can be terminated on the controller end only.

    Verify that there are only two external connections that connect to the backplane: the shield of either one control signal or all of them, and the (-) side of the LED power supply. The choice between connecting one shield or all shields to the backplane may have some effect, and it's hard to tell which way will be better at the moment.

The LED power supply should not connect anywhere but to the backplane and the busbar. The wires should be either in a common shield, or twisted together.

The daisy chained option would look like this:

enter image description here

With this approach, there is a reasonable return path for the control signal current - it will flow on the backplane directly under each strip.

The wires that daisy chain the strips must be laying flat on the backplane - use tape to hold them down for testing. For production, the backplane can have pairs of holes through which you'd loop a zip-tie to retain those cables. Similarly you can strain-relieve the PSU wires and the shielded control cable.

I have had a similar project a couple years ago, and I didn't even bother with a single backplane. The design had two CNC-cut aluminum sheets it was sandwiched between. The thicker one was a backplane and a mechanical mount. The thinner one on the front was a shield, with a nice cutout for each LED. The shield had push-in threaded studs on standoffs, to maintain distance between the shield and the backplane. The backplane had mating holes. Nuts with captive lock washers were used on the back of the backplane to capture the shield hardware.

The shield had a distributed connection to the backplane via the mounting hardware.

We also ran copper tape on conductive backing around the outer seam between the shield and the backplate. It wasn't necessary just to pass EMC, but it did improve things so it was left in place following the "less EMI is better" mantra.

  • \$\begingroup\$ Does anyone think that using 12v variation of ws2812 strips instead of the 5v variant would make a difference? \$\endgroup\$
    – srlevitt
    May 5, 2023 at 15:56

I am working with WS2813 LEDs but not strips. Make sure that you are not using pirate chips. WS2812 has changed some over the years. World Semi says that RFI has improved. I am not sure what they have done but if the rising and falling edges have gotten less steep than that would create a big improvement between chips.

Power lines appear in my testing to be big emitters. I am using shielded cable and it seems to have helped. It also helped me transmit a longer distance from microcontroller to LED. A resistor on the data line will cut the signal between the controller and first LED, there is information on the World Semi datasheet. A clamp on ferrite on the powerleads and maybe between strips likely would help.

On my list for today is to use an RF probe and try to figure out exactly where my problem is. I am building boards with these LEDs on them. My opinions are NOT expert opinions. I am a hobbiest.

  • \$\begingroup\$ One idea mentioned to me was to try using the 12v variant of the strips. Would this provide a more stable power supply (less voltage dissipation) and thus less EMC? \$\endgroup\$
    – srlevitt
    Aug 23, 2023 at 7:59

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.