Arduino Nano with 12V WS2815 LED strips

I am building a light cube using WS2815 individually addressable LEDs, which are powered at 12V. There are almost 700 LEDs in total but only max 50 will light up simultaneously. Using an Arduino Nano to drive the strips, with wiring diagram as shown here.

As shown in the diagram, I am using a power supply that gives both 5V and 12V. I am connecting the GND of the B channels on the LED strips to GND. I think I should also connect the GND from the 5V and 12V power supplies to make sure they have the same reference voltage.

My question: do I need to add any precautions anywhere to avoid my Arduino from getting fried or the LED strips from working as intended ?

I am controling the power to some white LED strips using a power supply that looks similar to the one in your photo. It's in my attic with an ESP32 web UI so I can control the lighting from, for example, my phone's web browser.
I put fuses in each of the power lines from the power supply to the LED strips. I didn't want the power supply to be on when none of the LEDs were on, which is 99% of the time in my case. So I put a relay in the mains lead to the power supply which I control from the ESP32. The ESP32 is powered from a 5V phone charger connected to the ESP32 USB socket. Your requirements may well be different if you aren't leaving the power supply unattended and you need it to be always on.

  1. fuses. Yes.
  2. Read a bit about your particular LEDs, there are probably two components you should add. Bulk capacitance close to the start of the LED string, and a series resistor on the data output of the Arduino going to each of the strings.

In various topics I am reading either 220 or 470 Ohm resistor on each data channel. Assuming either one will be OK, but correct me if I am wrong.

What about the capacitor ? Which capacitor and where exactly does it go in the diagram ?

And fuses: what value should they have ?

Sorry for all these newbie questions - my understanding of electronics goes 4,5 decades back when I studied Applied Physics. So basics are OK but I do not know any details from experience - yet.

I use WS2812, so may not be identical, but generally 330 ohm is used. Does two things - satisfies the drive requirements of the LED design, and fortuitously protects your Arduino from inadvertent shorts of either 5V or GND to the data line out there 'in the wild'.
Each capacitor is to provide short term surge power to the individual LED strings, and should ideally be at the start of the string, not at the Arduino. There should be design info available for sizing that, I don't know what it might be for your strings. It also varies depending upon the length of the strings, larger for longer.
That's my guess, anyway. Sorry it's not definitive.

Fuses should be selected to protect against short circuits frying your wiring. So, if you have a string of LEDs that draw a max of 750 mA, I'd aim for a 1A fuse. Wiring should be sized to not overheat at 1A; I generally would go another size higher, to ensure even a nicked wire, or a broken strand or two, won't cause a problem. Obviously, every thing may need scaling up as your current demands increase, but that's the gist.

With 700 LEDs you may run out of RAM (page 66 of the Adafruit NeoPixel Guide).

2 Likes

Nice catch, Doug. Indeed, it pushes the limits. Somewhere I saw someone claim they did 680, but I don't recall the complexity of their code. Since you need 3 bytes per pixel,
2048/3 = 682; but, that presupposes NO other use of memory, and there surely will be some in an application that manages 6 strings.

@4everJang you'll likely have to:

  • reduce the number of LEDs significantly, grow your application, then increase the count until you can't any more
  • change Arduinos(simplest)
  • multiplex the management of the strings(what I would do)
    There is no absolute reason to have all 6 strings in memory, if you're only lighting one at a time, but you'll have to do some hardware rerouting of the output stream depending on which string you want to illuminate.

Not all LEDs are independent - they are divided into 6 groups of 114 and there are 2 different patterns, both serving 3 groups. So no worries there. And if I do decide to switch to completely independent patterns I can switch to an Arduino Mega.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.