Pixie - the 3W Chainable LED Pixel Created by lady ada Last updated on 2016-09-21 01:54:16 AM UTC
Guide Contents Guide Contents Overview Pinouts Design Overview Microcontroller Constant Current Driver Color and Brightness Control Daisy-Chaining Dealing With Supply Noise Power Dissipation and Over-Temperature Protection Loss of Communication Conclusion Assembly Wiring & Test Download Adafruit_Pixie library Load Demo Library Usage Downloads Datasheets Schematic Fabrication Print © Adafruit Industries https://learn.adafruit.
Overview NeoPixels are plenty bright, suuuure. BUT ARE THEY 3 WATTS BRIGHT? No! They are not! That's why you need a Pixie. These chainable smart LEDs are not only super-smart, they are ridonkulously bright with 3W total, compared to 0.2W of a 'standard' NeoPixel. Designed by Ytai Ben-Tsvi, these are the ultimate in LEDs. © Adafruit Industries https://learn.adafruit.
Each Pixie not only contains that aforementioned 3W LED, it also has a Microchip PIC microcontroller. You send it the color you want to appear at standard 115200 baud (1 byte per color). You can send a longer string of pixel data and it will 'forward' along the messages so you can chain them like a shift register. You only have to send the data once per color change. Once set, the microcontroller does all the PWM handling for you.
Since the Pixie uses so much power, there's a risk of the LED heating up so much it damages itself and/or the microcontroller. That's why Ytai added a temperature cut-off. When the PIC detects that the Pixie's temperature is too high, it turns off the LED until it gets back down to a reasonable level. © Adafruit Industries https://learn.adafruit.
Each Pixie comes fully assembled, with big pads for power wires (don't forget, we're talking about max 1 Amp per Pixie!) and mounting holes on the sides. You'll also need thick wires to power each Pixie and a microcontroller that can send 115,200 baud 8N1 data to the Pixie (on its own, it will not do anything, you must send it data for it to light up) Our Arduino library is easy to use, has the same API you're used to with our NeoPixel library, and will get you blasting ROYGBIV in 5 minutes or less.
Pinouts © Adafruit Industries https://learn.adafruit.
Pixie has two 'ports' - one for input and one for output. Both input and output ports have power pins: + Power - This is the positive power and logic pin for the Pixie. Power with 5VDC. - Ground - This is the ground reference for power and logic pin for the Pixie. Connect to power ground on your power supply as well as the ground of your microcontroller. Both power pads have a 0.07" / 1.8mm diameter hole, so you can use very thick wires for connecting (16AWG is recommended).
© Adafruit Industries https://learn.adafruit.
Design The Pixie was designed by Ytai Ben-Tsvi, who joins us below with "how he did it" Don't forget to read the whole thing for a bonus photo at the end! Take it away, Ytai! Overview While having a fairly simple functionality, the Pixie design has more than meet the eye. In contrast to its low-power relatives, the NeoPixels, switching current to a chain of 3W LEDs creates some interesting engineering challenges, which took a few iterations to get right.
Constant Current Driver In order to provide a consistent level of illumination each of the R, G, B LEDs needs a constant current supply of about 350mA. We opted for linear regulation for its simplicity and low-cost, despite it being less efficient (and as such, dissipating more heat) than switching regulation. The constant current circuit is pretty cool. Let’s explain it by first considering the path of the current through the LED.
Color and Brightness Control Different colors are achieved via Pulse Width Modulation (PWM) on each of the R, G, B LED. The PIC has a built-in 3-channel, 16-bit PWM peripheral. This allows us to be fancy and do Gamma correction, which means we are doing a non-linear mapping of the 8-bit color value we are commanded with to a high resolution 16-bit color, resulting in a much more natural color gradient compared to a straight linear mapping. The PWM peripheral runs at about 500Hz.
timing-sensitive operations at the same time, not to mention driving another chain on a different pin… Our solution: stick to the good ol’ 115k.2 asynchronous serial. Almost every microcontroller has a UART peripheral capable of easily generating this protocol without much CPU intervention. Many have more than one. Even a PC with a simple USB-serial dongle can do that fairly easily.
Then, bulk capacitance! A large 22uF ceramic (hence, low ESR) capacitor across the supply on every node is used to absorb voltage transients, especially those caused by wire inductance. Then, that supply gets further filtered using an R/C circuit comprising R7, R9 and C1, the latter being yet another 22uF ceramic and the relatively high resistor values ensure that the C1 reacts very slowly to any change in the supply voltage.
But we wanted to make sure that the LEDs would not get dangerously hot even by accident. For that reason, the Pixie firmware uses the PIC’s on-chip temperature indicator to estimate the board’s temperature and would shut-down the LED when it gets too hot (above about 70 degrees celsius). It will automatically resume operation when it cools down. Getting this temperature indicator to work with reasonable precision was a challenge.
© Adafruit Industries https://learn.adafruit.
Assembly Assembling your Pixies isn't too difficult if you have the right tools and materials. Grab you soldering iron, some thin wire (we like silicone covered 26 AWG) and some thick hefty wire, we used 10AWG stranded. For the power wires, make sure © Adafruit Industries https://learn.adafruit.
to get nice hefty ones that can handle the current draw. Of course, it matters how long they're going to be, and how many Pixies are in the chain, and how much they will be lit up. 16 AWG is the recommended size. With thick wires, you may need to get them in place, then tin them and solder into the pad. Don't get + and - mixed up! We suggest red wires for + and black for - © Adafruit Industries https://learn.adafruit.
You can clip the wires to make them flush, just make sure you dont stress the PCB. © Adafruit Industries https://learn.adafruit.
You can use a thinner wire for data, in this case we have a ~22AWG data line. It's soldered onto the out pin here You may also want a thin wire for your microcontroller ground, especially if you are going to power the Pixies seperately We suggest doing up one Pixie, then testing it.
Once you're done with at least on Pixie, go on to the next step where you'll do your test © Adafruit Industries https://learn.adafruit.
Wiring & Test Wiring is easy, you can use any pin with a Serial or Software Serial output pin. We don't use the input of a Serial connection (since the Pixie is 'write only'). Dont forget to power the Pixie with a good 5V supply that can handle the current draw. Our example code will use digital #6 but you can change this to any pin later Download Adafruit_Pixie library To begin reading sensor data, you will need to download Adafruit_Pixie from our github repository (http://adafru.it/iOa).
Download the Adafruit_Pixie library http://adafru.it/iOb Rename the uncompressed folder Adafruit_Pixie and check that the Adafruit_Pixie folder contains Adafruit_Pixie.cpp and Adafruit_Pixie.h Place the Adafruit_Pixie library folder your arduinosketchfolder/libraries/ folder. You may need to create the libraries subfolder if its your first library. Restart the IDE. We also have a great tutorial on Arduino library installation at: http://learn.adafruit.
Library Usage Start by including both SoftwareSerial and the Pixie Library #include "SoftwareSerial.h" #include "Adafruit_Pixie.h" Two #define's will determine which pin you're using for controlling the Pixie's and how many there are #define NUMPIXELS 3 // Number of Pixies in the strip #define PIXIEPIN 6 // Pin number for SoftwareSerial output Pixie's receive data via Serial. You can use hardware serial as well, but our demo is SoftwareSerial.
You can set the overall brightness, this is a one time 'nonreversable' setting, so once you set pixel colors they will automatically be scaled by the brightness. 0 is all the way off, 255 is all the way on. Default is 255. strip.setBrightness(200); // Adjust as necessary to avoid blinding Then you can set each pixel color with strip.
Downloads Datasheets PIC12(L)F157X (http://adafru.it/iEr) - 8-bit PIC microcontrller processor used IRLML2060 (http://adafru.it/iEs) - Power transistor for each R G B channel 3W RGB LED (http://adafru.it/iEt) Fritzing object in the Adafruit Fritzing Library (http://adafru.it/aP3) EagleCAD PCB files in GitHub (http://adafru.it/rxd) Schematic Click to embiggen © Adafruit Industries https://learn.adafruit.
Fabrication Print Dims in inches © Adafruit Industries Last Updated: 2016-09-21 01:54:15 AM UTC Page 27 of 27