Issue daisy-chaining NeoPixel Rings

EL Wire/Tape/Panels, LEDs, pixels and strips, LCDs and TFTs, etc products from Adafruit

Moderators: adafruit_support_bill, adafruit

Please be positive and constructive with your questions and comments.
Locked
User avatar
rubidium
 
Posts: 43
Joined: Sun Nov 18, 2012 10:36 am

Issue daisy-chaining NeoPixel Rings

Post by rubidium »

I have an application for which I need to control 8 of the 16-pixel Rings for a total of 128 pixels. I'm using a Due to get the processing power needed for doing a lot of DSP on an audio signal. Just as a test, I hooked up 1 NeoPixel Ring and simply "ramped up" all pixels with single colors (let's say red) from 0 through 255, e.g.:

Code: Select all

#define NUM_NEO_PIXELS 16
#define PIN 53
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_NEO_PIXELS, PIN, NEO_GRB + NEO_KHZ800);
int m,n;
uint8_t rr, gg, bb;

void setup() {
  strip.begin();
  strip.show();
]

void loop() {
  for (m=0; m<256; m++) {
    rr = m; gg = 0; bb = 0;
    for(n=0; n<NUM_NEO_PIXELS; n++)
    {
      strip.setPixelColor(n, rr, gg, bb);
    }
   strip.show();
   delay(50);
  }
}
and all looks fine. When I added a second ring, changed the definition of NUM_NEO_PIXELS to 32, and try the same simple code, all looks fine until the LED intensity reaches a particular level for which an 'arc' of contiguous pixels begins to form on the second (upper) Ring that are wildly deviating from red. The 'arc' increases in scope as the intensity increases toward maximum (i.e. m->255 in the above code). By adding a third ring, and defining NUM_NEO_PIXELS to be 48, the severity of the problem increases, beginning as a small 'arc' of 'deviant' pixels on Ring #3, passing through a point whereby all 16 pixels on Ring #3 are 'deviant', and enentually ending with a small 'arc' of 'deviant' pixels propagating into Ring #2 as well, as m->255.

I took at pin 53 with a logic analyzer and the traffic appears to be all there, although there appears to be a +/- 5% variation in frequency from the expected 800KHz. Should I be digging harder for a timing issue, or could this perhaps be a +5V supply problem to the Rings?

Jim
Last edited by adafruit_support_bill on Fri Dec 13, 2013 7:03 am, edited 1 time in total.
Reason: Please use the 'code' button when submitting code - click 'code' and paste your code between the tags.

User avatar
michaelmeissner
 
Posts: 1821
Joined: Wed Aug 29, 2012 12:40 am

Re: Issue daisy-chaining NeoPixel Rings

Post by michaelmeissner »

You might mention exactly how you are powering the rings and give a picture or schematic of the layout. Are you powering the rings externally from the Due or using the VIN pin or using the normal power pins on the Due. Remember the Due runs at 3.3v and the rings would prefer 5v. You also need more serious amps as you use more lights, and increase the brightness.

User avatar
rubidium
 
Posts: 43
Joined: Sun Nov 18, 2012 10:36 am

Re: Issue daisy-chaining NeoPixel Rings

Post by rubidium »

Well indeed you have it - I do believe it's a power issue. I was drawing 5V from what is essentially the USB connection to the Due's programming port. I just wanted to do a quick test and thought that would be sufficient to drive 2, possibly 3, 16-pixel rings. Wrong! Driving 2 rings that way - with even just 1 color per pixel - appears to be marginal when the intensities approach maximum! In principle that should max out at about 640mA per the spec, but I guess that's more than my PC's motherboard run-of-the mill USB connection can support.

So I went to my shelf and pulled down an old PC power supply and took the 5V from there, and established a common ground and all that. All works well now. For my final application, I'll need 12V for other hardware controlled by the Due, and so I'll consider getting 5V @ ~8A (max for my 8 NeoPixel Rings) from the 12V supply - say with a LM7805 and power transistor.

Jim

Locked
Please be positive and constructive with your questions and comments.

Return to “Glowy things (LCD, LED, TFT, EL) purchased at Adafruit”