Power supply/injection for 600 Neopixels (WS2812B)

Hi all, I'm planning on making a 9x64 LED matrix from two 5m WS2812B strips, each containing 300 Neopixels. I have a couple questions regarding setup and safety.

I'll be using 576 Neopixels, which I believe draw 60mA at 5V per Neopixel at full brightness. That comes out to a total of 34.56A required, so I'll need to buy a 5VDC power supply that can supply at least that amount of current.

  1. Do I only need to connect the ground and data pin from the LEDs to my Arduino Uno, and then inject power to the LEDs from a single power supply unit?

  2. If I'm using a single power supply unit, say this one, is the current split equally among each terminal? (For example, if that power supply supplies 100A total, each of the 3 terminals outputs 33.3A?)

  3. I just started doing research on ampacity, is the wire gauge important for this application? Or do I just need to purchase a wire of the same gauge as the power wires on the LED strips.

  4. Would a fuse be necessary?

Any other suggestions or direction would be extremely appreciated, thank you for taking time to read my post.

With the power disconnected, use a meter and confirm to yourself that the power pins are all connected together, and the same for the grounds.

Only the Gnd needs to be connected to the Arduino and to the LED strips.

You will be having 9 strips? I would connect power/Gnd to the end of each strip, and possibly both ends if you are seeing different colors at one of the strip vs the other. I don't know how well a 64-LED strip will do with power loss along it's length. The longest I've made/used is 43 WS2812Bs in a row. That had two 118mil (3mm) wide rings for power & Gnd that all the LEDs connected to.

Youtube video of them in action:

I think I used a 10A supply to demo four of them working. Power/Gnd was daisy chained from one to the next, while each had its own signal line (so four instances of signal in Fastled.h vs just 1 for all four strings) and a Gnd to the Arduino.

A chart such as on this page suggests that 16 AWG wire would be sufficient for up to 5A of current for up to 50 ft between the source and the load.

https://www.bluesea.com/support/articles/Circuit_Protection/1437/Part_1%3A_Choosing_the_Correct_Wire_Size_for_a_DC_Circuit

A fuse per line might be overkill. The supply itself might be used already. Look thru the different openings and see what you can see. Or check it's spec sheet.

Yes you must have a COMMON GROUND back to the Arduino so you are correct.

On almost all power supplies the load is spread across the outputs as you correctly surmised.

I always tend to go up a gauge in wire myself and as for the fuse that may depend on the country.

Some have them in the mains plug or as with most of North America nothing at all

Your topic was Moved to it's current location / section as it is more suitable.

Could you also take a few moments to Learn How To Use The Forum.
Other general help and troubleshooting advice can be found here.
It will help you get the best out of the forum in the future.

CrossRoads:
You will be having 9 strips? I would connect power/Gnd to the end of each strip, and possibly both ends if you are seeing different colors at one of the strip vs the other. I don't know how well a 64-LED strip will do with power loss along it's length.

Hi, thank you so much for the reply. I think you may have misunderstood what I'm planning on doing, which is my bad, I don't think I explained it well.

Anyway, this is what I'm trying to build (9 LEDs per column, 64 columns). Each 5m strip is enough for 32 columns, so I'm going to have to daisy chain them. I was just hoping for some guidance regarding the logistics for power requirements, as this is my first ever electronics project and I want safety to be a priority.

Thank you for the reply, and I have read through the forum rules as you suggested.

ballscrewbob:
Yes you must have a COMMON GROUND back to the Arduino so you are correct.

Thank you, I did not realize how important common ground was.

ballscrewbob:
On almost all power supplies the load is spread across the outputs as you correctly surmised.

Even if one of the outputs is unused? Say I have three outputs but I only needed to use two to power my LEDs, if total supply is 100A would there be 50A or 33.3A supplied per output?

ballscrewbob:
I always tend to go up a gauge in wire myself and as for the fuse that may depend on the country.

Some have them in the mains plug or as with most of North America nothing at all

Thanks for the wire gauge suggestion. I live in Canada, so would you recommend that I implement a fuse?

I understood what you were saying. You can try with power/gnd just on one end.
If you set all of a strip to one color, and the far end looks different from the near end, that's a sign the far end is not getting enough power, and you need to connect power/gnd to the other end as well. With longer strips, sometimes even the middle needs a power juncture. The traces on the strip will get warm from all the current, as they heat their resistance goes up, and voltage drops for devices farther down the line.

As you are daisychaining two strips to get to 64 LEDs, you'd have a convenient place to connect power in the middle as well. Perhaps one end and the middle would be sufficient, and you could add the far end connection if needed.

I think I would find coding where the ends are flip-flopped like that for data kind of awkward. Maybe it's just me.

I'd be interested to see if you find all 3 outputs from the supply are connected in parallel, or if each is individually regulated.

Are you asking about a fuse on the mains input to the supply? Or on each of the 3 outputs, with each output powering 3 strips? Either would be easy to implement.

CrossRoads:
Are you asking about a fuse on the mains input to the supply? Or on each of the 3 outputs, with each output powering 3 strips? Either would be easy to implement.

I haven't figured out what power supply I'm going to buy yet, but in this adafruit article on power distribution I found this diagram, and I'm not sure if I need to implement a fuse on the outputs.

But yes, so far I'm thinking I will power both daisy chained LED strips from 2 outputs on the same power supply. One injection will be at the start of the strip and another injection would be in the middle where the strips are daisy chained together.

In the power supply, the three grounds are connected together and the three +5 V terminals are connected together. Three are supplied simply to allow you to distribute the current over more than one terminal to reduce resistance and you should indeed split the load evenly among them, both +5 V and ground of course. If you figure a maximum of 35 A, then you need a 40 or 50 A power supply just in case.

In your array, at each end, power and ground must be connected across all strips and you need to feed power and ground to the parallel connections along both ends. The zig-zag data arrangement is actually catered for in the NeoPixel library as I understand it. Of course, wherever data runs from one strip to another, the ground must connect as well, so your diagram as shown is clearly wrong even aside from the power considerations.

Finally, where the data is fed into the array from the Arduino, you obviously should run the 5 V power back to feed the "5V" terminal on the Arduino (preferably a Nano, not a UNO) to power it. You must always run power and ground wires together as a pair in the same cable and the same for data and ground, so you have a (short) set of three wires between the Arduino and the strips.

Paul__B:
In your array, at each end, power and ground must be connected across all strips and you need to feed power and ground to the parallel connections along both ends.

I'm a bit confused regarding this part. The red (power) and blue (ground) horizontal lines connect the LEDs, do they not? Also, why would I have to feed power and ground to the left side as well?

Another wiring arrangement I've considered is to have all of the data directions aligned, I would just need longer wires to run from the top of the LED column down to the bottom of the next LED column. But based off my knowledge this would be suboptimal, since a longer wire would mean more voltage drop, if I'm not mistaken.

Paul__B:
Finally, where the data is fed into the array from the Arduino, you obviously should run the 5 V power back to feed the "5V" terminal on the Arduino (preferably a Nano, not a UNO) to power it. You must always run power and ground wires together as a pair in the same cable and the same for data and ground, so you have a (short) set of three wires between the Arduino and the strips.

I read somewhere that it would be preferable to use an external power supply and not the Arduino Uno 5V supply, since the large current draw from the LEDs exceed the Uno's specifications. Another poster mentioned that I must have a common ground, so I was thinking to setup the wiring connections like this:

You need a large capacitor across the power and ground of the strip, say 1000uF. I would also put another large capacitor at the far end of the run as well. And even one in the middle of the run.

You can not rely on the capacitors inside the power supply, they will not be big enough for this job.

This is not an easy project for a beginner because it involves scaling up, which is a whole other skill set than just geting a few LEDs working.

matledoublev:
I'm a bit confused regarding this part. The red (power) and blue (ground) horizontal lines connect the LEDs, do they not? Also, why would I have to feed power and ground to the left side as well?

Yes, they are connecting power to the LEDs at one end of each strip but as has been explained, the foil in the strip is not very substantial and you tend to lose voltage by the other end of the strip.

So you want power to connect to the other end of each strip - the top end in your diagram, so you need them all connected together just as the bottom, and power fed to that common connection as well. Even if you did not take the power to the top common, there would be some beneficial cross-feed from strips which were not illuminated and thus not taking power.

matledoublev:
Another wiring arrangement I've considered is to have all of the data directions aligned, I would just need longer wires to run from the top of the LED column down to the bottom of the next LED column. But based off my knowledge this would be suboptimal, since a longer wire would mean more voltage drop, if I'm not mistaken.

I do believe the NeoPixel library provides support for the "zig-zag" arrangement in an array.

It is not that you lose voltage in long data lines between strips, but you risk picking up interference because the PWM operation induces currents in the ground and power lines along the strips so the voltage at one end is not the same as the other. Best to have the data and ground connected by the shortest possible path.

matledoublev:
I read somewhere that it would be preferable to use an external power supply and not the Arduino Uno 5V supply, since the large current draw from the LEDs exceed the UNO's specifications. Another poster mentioned that I must have a common ground, so I was thinking to setup the wiring connections like this:

The current for the NeoPixels should never pass through the Arduino. The only time it might would be if you powered just a few (perhaps five) NeoPixels from the "5V" pin when power is supplied through the USB connection.

But you should power the Arduino from your regulated 5 V supply - which you already have for the NeoPixels, so you take that back from where the data connects to them, to the Arduino together with the data. This carries only the current required by the Arduino.

You might however wish to put a 1 Amp fuse on this 5 V line just in case you accidentally short it on the Arduino which might otherwise go up in smoke if that happened. :astonished:


Did someone mention? A UNO/ Nano will only control about 300 NeoPixels. :grinning:

Grumpy_Mike:
You need a large capacitor across the power and ground of the strip, say 1000uF. I would also put another large capacitor at the far end of the run as well. And even one in the middle of the run.

You can not rely on the capacitors inside the power supply, they will not be big enough for this job.

These capacitors are for protecting the LEDs against sudden changes in current draw, correct? I read someone's reply against the advice given by this adafruit guide, and he suggests to simply use a thicker wire instead of an array of ceramic capacitors.

Would there be anything else to consider in a project of this scale?

Thank you for all this information Paul, you have no idea how helpful this was :slight_smile: I'll continue to do research and will definitely take all of your suggestions into consideration

Paul__B:

Did someone mention? A UNO/ Nano will only control about 300 NeoPixels. :grinning:

Oh no, you're right :sweat_smile: I definitely skipped over this part... I believe 300 NeoPixels will take 900 bytes of SRAM? And please correct me if I am wrong, but I need to consider this with my program size, which the IDE says that 1500 bytes of dynamic memory of 2048 is already in use... and I haven't even coded the NeoPixel animations yet, all this memory is taken up by the FFT library. Would upgrading to a Mega (4k) be sufficient to drive 300 Neopixels, or is my current information incorrect?

I'm going to continue to research... one problem at a time :smiley:

The IDE does not know how much RAM will be required to run the program, it only knows how big the program is.

A Mega should handle 576 NeoPixels OK, but is a bit cumbersome - and expensive (though I suppose so are that many NeoPixels :grinning: ).

I like the ESP8266 - powerful and cheap. You need a 74HCT14 to convert its 3.3 V data output to 5 V and you have to code to temporarily cancel WiFi to send data to the NeoPixels - if you want to use WiFi that is; you can just use it as a cheap and powerful microcontroller - but it does have the option of WiFi into the bargain. :sunglasses:

Paul__B:
A Mega should handle 576 NeoPixels OK, but is a bit cumbersome - and expensive (though I suppose so are that many NeoPixels :grinning: ).

So considering how 300 NeoPixels would take up 900 bytes of RAM, would you think that my Uno would be sufficient with its 2kb RAM? My code may become fairly complex, as it will run a FFT and have 2-3 modes for different colour and patterns.

"Would upgrading to a Mega (4k)"
Mega has 8 Kbytes SRAM.

'1284P has 16K, and is less money too.

CrossRoads:
"Would upgrading to a Mega (4k)"
Mega has 8 Kbytes SRAM.

'1284P has 16K, and is less money too.

I'm going to cut my project down to 300 NeoPixels, since I'd prefer to keep using my Uno. That would take 900 bytes of the Uno's 2kb RAM, do you think the remaining 1.1kb is sufficient? I haven't finished my code yet so I'm not sure how much RAM is required to run it, but all I will be doing is doing an FFT with 32 bins, with a couple different pattern modes. This is my first Arduino project, so I don't have a very good scope on how much RAM is required.

I don’t know, have never played with FFT code.

I read someone's reply against the advice given by this adafruit guide, and he suggests to simply use a thicker wire instead of .

I thought that you would link to that comment. Any way, what ever, he is an idiot. Have you remembers it correctly? Because the Adafruit advice was NOT to to use an array of ceramic capacitors, it was to use a large value electrolytic capacitor. With out one you could end up frying your ceramic capacitors because they can’t take the current, I will post some pictures when I am back in my lap top.

So considering how 300 NeoPixels would take up 900 bytes of RAM, would you think that my Uno would be sufficient with its 2kb RAM?

Did you not understand what Paul just said?
You have 524 bytes left, how many bytes will be left when you use another 900 bytes?
A Mega has 8K not 4K.

@matledoublev

Other post/duplicate DELETED
Please do NOT cross post / duplicate as it wastes peoples time and efforts to have more than one post for a single topic.

Continued cross posting could result in a time out from the forum.

Could you take a few moments to Learn How To Use The Forum.
It will help you get the best out of the forum in the future.
Other general help and troubleshooting advice can be found here.

I gave you these links once so please take the next 24 hours to read them as that is when the ban will run out.