mirror of
https://github.com/Makuna/NeoPixelBus.git
synced 2025-08-09 22:04:27 +02:00
Updated FAQ #2 (markdown)
@@ -8,13 +8,13 @@ This is due to the IO Pins on the device are 3.3v and the pixels require +-0.5v
|
||||
For this reason I don't suggest this solution except for the bench testing.
|
||||
|
||||
----
|
||||
The acceptable driving voltage of pixels depends on the chip. For example, with the WS2811, the specified thresholds are >= 0.7 * VDD for high, and <= 0.3 * VDD for low. Using 5V pixels, that's above 3.5v for 1 and below 1.5v for 0. As you can see, a 3.3v uC can put out a 0 easily, but is out of spec for a 1. Luckily, the pixels often work a bit beyond spec anyway, at least if the pixel is close to the uC.
|
||||
The acceptable driving voltage of pixels depends on the chip. The above voltages may be correct for some pixels, but others differ. For example, with the WS2811, the specified thresholds are >= 0.7 * VDD for high, and <= 0.3 * VDD for low. Using 5V pixels, that's above 3.5v for 1 and below 1.5v for 0. As you can see, a 3.3v uC can put out a 0 easily, but is out of spec for a 1. Luckily, the pixels often work a bit beyond spec anyway, at least if the pixel is close to the uC, but sometimes the pixels don't work reliably (other chips will have their own specified, and actual, thresholds; the actual thresholds may vary by batch even within the same pixel chip type).
|
||||
|
||||
There are several techniques that can be used to address this, if necessary (ie: if direct driving doesn't work). As described above you can use a level shifter; or you can use a buffer chip since the drive is one directional. You could use a 5V "null pixel" chip close to the 3.3v uC; it's close so it may work fine, and its output will drive the next (displayed) pixel just fine even if it's further away. Just adjust your software to insert a black logical pixel before the first displayed pixel.
|
||||
|
||||
Alternately, you could insert two null pixels like this, but use a diode to drop the power to the first by a nominal 0.7v to 4.3v (input high threshold = 0.7*4.3=3.0v), then run the second null pixel at 5V and you're good from there. See below for a link to this technique.
|
||||
Alternately, you could insert two null pixels like this, but use a diode to drop the power to the first by a nominal 0.7v, to 4.3v (input high threshold = 0.7*4.3=3.0v), then run the second null pixel at 5V and you're good from there. See below for a link to this technique.
|
||||
|
||||
Yet another approach is to use a diode between the uC ground and the pixel ground (anode at the uC ground). This has he effect of raising the uC output by a nominal 0.7V as seen by the pixel, so the uC outputs 0.7 .. 4.0 V as seen by the pixel, which is within the specified thresholds. If you do this, be sure to remember that the two grounds are different, and don't short them together accidentally (it won't cause any lasting harm if you do, but the pixels may stop working while the diode is effectively shorted out).
|
||||
Yet another approach if your pixel power supply is independent of the uC power supply, is to use a diode between the uC ground and the pixel ground (anode at the uC ground). This has the effect of raising the 0v .. 3.3v uC output by a nominal 0.7V as seen by the pixel, so the pixel input sees 0.7 .. 4.0 V, which is within the specified thresholds. If you do this, be sure to remember that the two grounds are different, and don't short them together accidentally (it won't cause any lasting harm if you do, but the pixels may stop fully working again while the diode is effectively shorted out).
|
||||
|
||||
Here are some other techniques of which I have never tried but may work in a pinch.
|
||||
* [Electro Bob WS2812 level translator technique](http://www.electrobob.com/ws2812-level-translator).
|
Reference in New Issue
Block a user