Picture of Upgrading Smart RGB LEDs: WS2812B vs. WS2812

The sheer number of projects we've seen making use of Smart RGB LEDs—whether it be strips, modules, or custom PCBs—over the past 3 years is quite astonishing.  This outbreak of RGB LED usage has gone hand-in-hand with a significant drop in pricing and an increased ease of use of these electronic devices.  

Amongst LED manufacturers, WorldSemi has seemingly become the de facto standard amongst DIYers, hobbyists, and wearable electronics designers.  The company's WS28XX family of Smart RGB LEDs includes an easy-to-use control protocol, a convenient pinout and footprint, and an incredibly bright luminescence, all within a tiny 5mm x 5mm package.   But, what really has made a difference in the products' DIY market success is the $0.30 to $0.40 unit pricing in small quantities.

In the latest version of these LEDs, the WS2812B, WorldSemi yet again has made significant improvements upon its predecessor, the WS2812.  Since there is very little information out there about this relatively new version, we decided to make a short Instructable to highlight the design upgrades, and advertise some of the already existing features of this nifty device!

Difficulty level: Beginner+ (some familiarity with smart RGB LEDs)
Time to completion: 5-10 Minutes

Remove these adsRemove these ads by Signing Up

Step 1: List of Materials

Picture of List of Materials
To highlight the features of both the WS2812B and the WS2812 RGB LEDs, we can make use of the following parts:
1 x WS2812 RGB LED (pre-soldered onto a tiny breakout board)
1 x Solderless Breadboard
1 x Breakaway Pin Connector, 0.1" Pitch, 8-Pin Male
1 x Arduino Uno R3
1 x WS2812B Lumina Shield for Arduino
Solid Core Wire (assorted colors; 28 AWG) and Wire Strippers
Power Supply (Optional)

Both the WS2812 and WS2812B carry an embedded constant-current LED driver, as well as 3 individually controlled LEDs; one red, one green, and one blue.  The LED driver comprises:
- An internal oscillator
- A signal reshaping and amplification circuit
- A data latch
- A 3-channel, programmable constant current output drive
- 2 digital ports (serial output/input)

Note: the LED driver itself is also available in a 6-pin Integrated Circuit (IC) form, which we can use to connect directly to 'non-smart' RGB LEDs of our choice; the IC in question is non other than the WS2811.
cburg2 months ago

Thank You for this information. It will be very helpful for some projects iI am working on. One question.

You talked about the WS2811 chip. Do you have a source for this chip in the 8-pin dip package? I know WorldSemi make it but I can not find a place to buy it.

Thanks again!

marksmanaz7 months ago

I have had nothing but problems with the ws2812B LEDs that I bought in 5 meter strips. They are very sensitive. I use them as accent/motion lighting in a restaurant. When some equipment is turned on or if there is a slight surge the first LED in each string is blown and I have to solder a new one each time. What a pain. I had to remove all the florescent lighting in the building and replace them with LED because each time the balasits were turned on it would blow the first ws2812B in the string. Very sorry I installed they in the end I will lose a lot of money on this job because of these poor lights.

You ignored the recommendation to put a capacitor close to the first LED in the strip?

WorldSemi has clearly indicated recommendations for installation - that is one recommendation they try and emphasise. If you ignore it and blow your LED, that's not really the fault of the manufacturer.

acrobotic (author)  marksmanaz7 months ago

These are low (DC) voltage LEDs, so the power supplied to them does need to be 'clean'. Ideally, in most indoor lighting installations people use surge protection circuitry before connecting these LEDs. The strips just include LEDs, they do not carry additional circuitry to protect them from overvoltage---you need to add this yourself. If you do not have this option, at least add a 100uF 25V capacitor between power and ground, this will help with the transient changes in voltage!

How would I hook up the 100uF 25V capacitor in a setup with 5 LED strips where I have to run power to each LED strip in order to prevent color fading from voltage drop? Would I just hook it up between V+ and V- at the power supply and be done with it?

acrobotic (author)  Pseudonymd6 months ago

Yep, that's one option (between V+ and V-). If you want to be extra careful, you could connect 5 capacitors as close to the strips as possible (also between V+ and V-). Capacitance adds up in parallel, so you'd end up with a 500uF value, but this is ok. Depending on how 'clean' your power supply is, you may need to also connect additional capacitor values (also between V+ and V-). The point if to prevents the initial onrush of current from damaging the LEDs.

How clean do you think the power is from a LED power supply like this -

It has vague reference to "anti-interference function", and "meet CE & ROHS, GB4943.EN60950". By the way, it says it is constant voltage, but it is not. The voltage drops from 4.55V to 3.8V when full load is placed on it. And it 's supposed to be a 5V power supply...

Pseudonymd6 months ago

The diagram underneath step 2 showing the WS2812 vs WS2812B is incorrect. Though it correctly shows 4 pins vs 6 pins in the packaging, the internal layout of the LED pads and control chip (visible through the LED lens) shows the WS2812 layout in both cases, even on the WS2812B chip. This diagram needs to be updated to show the different visible layout of the WS2812B chip as seen through the chip's lens.

acrobotic (author)  Pseudonymd6 months ago

Good eye, we didn't have the time to create a new SVG. It's somewhere on our To-Do list :)

jdavid2211 months ago

Hello, I'm using Fubarino Sd, but do not understand how to translate your code
Arduino to Fubarino Sd.
I could help with this?

acrobotic (author)  jdavid226 months ago

Sorry, we typically don't work with PIC microcontrollers :-(

serhiyiv1 year ago

Hi. Could you tell me please is it possible to limit current used by WS2812B leds??? I found in a datasheet for WS2812 leds there is written - Current(mA) RED - 20, GREEN - 20, BLUE - 20. So if I set all the RGB to 255 the WS2812B will use 60mA? then how to limit it to 45mA???

acrobotic (author)  serhiyiv1 year ago
Thanks for the interest in our Instructable! You can use a current limiting resistor for that purpose. Each LED has a forward voltage of ~3V (check the datasheet). If you put a 40--50Ohm resistor between the power source and the VCC pins of the modules, you'd get a ~45mA current limit.

Remember that the more modules you have powered by the same supply, the more current that will pass through the resistor. Make sure that the wattage of the resistor is high enough for the *total* amount of current you'll be using.

Hi. Thank you for reply. I know adding a resistor works with simple LEDs but WS2812B has a built in IC, so I just wonder if the resistor won't interfere with the IC.????? Also, tell me please, as I've written above, if for example I set all the three (RGB) to half brightness (128, 128, 128), then will this WS2812B consume 30mA???? If so, then why the resistor????

acrobotic (author)  serhiyiv1 year ago

No problem, glad I can help.

The resistor won't interfere with the IC, as you're limiting the current supply only and not affecting the signal. The IC consumes little current, so it's negligible relative to the 20mA sourced to each LED.

The brightness scale isn't perfectly linear with current. Remember that a brightness of (1,1,1) will turn on the LEDs slightly, which means that current needs to be greater than the forward-current threshold (this value is on the datasheet). The best way to know how much current is needed for each intensity level, is to measure it. You can use your multimeter for this task!

I tried to measure the current used by one LED at full brightness (255, 255, 255) and my multimeter shower only 30 mA!!!! Also could you tell me please, in the datasheet I found the following:

"Also include a precision internal oscillator and a 12V voltage programmable constant current control part"

So it means that current usage can be programmed by 12V somehow, does not it?????

acrobotic (author)  serhiyiv6 months ago

Nah, this is a typo on the datasheet. It is a 5V controller. It's 'programmable' in the same way a shift register is. You set it using the specified protocol to output the levels you want on each LED.

Thank you for the very informative review. I shall order some of these beauties ASAP :-)