mirror of
https://github.com/Makuna/NeoPixelBus.git
synced 2025-08-09 22:04:27 +02:00
Adding more information.
@@ -7,5 +7,14 @@ This is due to the IO Pins on the device are 3.3v and the pixels require +-0.5v
|
|||||||
3) Lower the running voltage to your pixels to within range of the IO pins. Since the pixels need +-0.5v IO, if the primary voltage of the NeoPixel is 3.8v, then the 3.3v of the IO pin are within spec. Some pixels can run just fine at 3.8v and this is often the lowest rated voltage they can run at. The problem with this solution is how do you provide 3.8v at the current requirements the Pixels run at? You will need to get a variable power module and with a good meter you will need to set the voltage output to 3.8v. A lot more effort than just getting a level shifter.
|
3) Lower the running voltage to your pixels to within range of the IO pins. Since the pixels need +-0.5v IO, if the primary voltage of the NeoPixel is 3.8v, then the 3.3v of the IO pin are within spec. Some pixels can run just fine at 3.8v and this is often the lowest rated voltage they can run at. The problem with this solution is how do you provide 3.8v at the current requirements the Pixels run at? You will need to get a variable power module and with a good meter you will need to set the voltage output to 3.8v. A lot more effort than just getting a level shifter.
|
||||||
For this reason I don't suggest this solution except for the bench testing.
|
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.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
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).
|
||||||
|
|
||||||
Here are some other techniques of which I have never tried but may work in a pinch.
|
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).
|
* [Electro Bob WS2812 level translator technique](http://www.electrobob.com/ws2812-level-translator).
|
Reference in New Issue
Block a user