Powering and Controlling Separate LED Strips

For background, I am a complete noob with Arduinos and have yet to program one. I am currently completing my major project for my electronics course in high school. I am making a stereo system which includes non music reactive LED effects.

The LED strips purpose is to illuminate the acrylic sheets that will be on the front of my speaker cabinets. I am looking for a bit of guidance and opinions on the circuit design for the LED's. I made a quick design using paint for lack of better software, using information I gathered from other forums and such.

The LED strips will be ws2812b's @30LED/m and the Arduino will probably be a Nano (open to suggestion). I also want to include a switch somewhere to turn the LED's on and off but wasn't sure if the Arduino should be included.

The power and data cables for each is going to have to be around 1m length as the speakers and amp are in different boxes, so I want to try and avoid voltage drop.

Just to add, I am aware that the power consumption of each LED is 60mA at full brightness and have already made sure to consider that on top of the amplifier when buying the power supply.

Also as an extra, is it possible to have programmed pre-set LED effects that can be cycled with an external button hooked up to a data pin rather than changing it through fast LED software? e.g. rainbow cycle -> press button -> blue/purple gradient cycle...

I am confused, when I look up the WS2812B I get a variety of LED products. It can be an individual smart LED chip, but they are also sold as strips with up to 300 LEDs, and panels that has a 16x16 array, maybe more if I kept looking. Perhaps you can provide more detail on exactly what the LEDs will be.

I assume you are using an Arduino to generate the serial data to control the lights, so that control function can effectively act as an on/off switch where the LEDs go dark and draw almost no power. The switch can be used to kill power to the Arduino, but then don't expect it to remember what color pattern or speed it was using. You can input the switch to the Arduino and tell it to drive the lights to dark, and it will still remember what it was doing.

I'm not sure if you have something particular in mind when you write "programmed pre-set LED effects". I assume you want to pre-program them in the Arduino, and in that case you can have your program read switch inputs to determine what pre-set LED program to display. I guess what I really don't understand is your mention of "fast LED software".

As for the programming, you can pretty much get the LEDs to do any patterns you want as long as you learn how to do Arduino programming. I think the challenge will be generating the serial data for the LEDs, but after that it might actually be fun creating color patterns!

Hi, @davidw2
Welcome to the forum.

Please read the post at the start of any forum , entitled "How to use this Forum".

If you google

arduino neopixels

You will find all sorts of tutorials and projects using the WS2812b strips.

Thanks.. Tom.. :grinning: :+1: :coffee: :australia:

The WS2812B in simple terms is a type of LED with a certain chip that allows the LED's to be individually addressable, and in my case I plan on using these in the form of LED strips. Pretty much 2 sets of 1 meters worth of 30 LED's in a single, long line.

The "fast LED software" terminology I mentioned was incorrect, my bad. I was referring to the Fast LED library which can be used on the Arduino to control these LED's, with most of the work already done.

You mentioned killing the power to the Arduino, potentially creating problems, or setting it up so the lights are set to dark/light, which is fair enough. But to me it makes more sense to kill power to the LED's instead, and as soon as they are turned back on they continue to what the Arduino is telling it to do. Or better yet cutting the power to both?

Believe it or not I found a guy who explains how to cycle between different colour pre-sets with a button. Thankyou for the obvious but great suggestion! :australia: :call_me_hand:

OK, so you specify two strips each of one meter with 30 LEDs per metre, so just 30 LEDs in each.

Maximum current draw at 55 mA per LED would be 3.3 Amps. You want a supply rated at 5 Amps to be sure.

If you power down the LEDs, when you turn the power back on, they should be dark. Now when dark, they draw 1 mA per LED, so 60 mA total. Since you are powering this from the mains, it makes no sense to actually switch them off, just use the program to set them to dark. 60 mA is similar to the current drawn by the Arduino. 120 mA total at 5 V is 600 mW - less than a Watt. I think you can afford that power drain. (If you cannot, you should not be using any appliances at all!)

Your "Voltage Dropping Circuit" however needs to be a switchmode "buck" converter, not a linear regulator.

Use at least 2 mm² cable to power the strips and keep both power wires and the data wire together wherever they run. Maybe 1 mm² power cable would suffice.

It is an extremely common desire. :sunglasses:

Appreciate the input :+1:. Just a question about the voltage stuff, my teacher had designed a circuit for a previous student who was also using 5V LED's with a 12V power supply. From memory it had two voltage regulators, can't remember if there was anything else but I assume this is a linear regulator. Why use a a switch mode buck converter instead? From a google search, switch mode buck converters step up the output current rather than dissipate the extra power as heat, so I suppose that's why?

Indeed. Switchmode converters are efficient. (i was about to say "far more efficient" but that is wrong. You simply cannot call linear regulators "efficient" in any respect. :roll_eyes:)

To drop 12 V to 5 V at 3.3 Amps would dissipate 23.1 Watts, you waste much more power in the regulator than the circuit proper uses. And you requite a large heatsink, if not a fan.

Switchmode "buck" converters are now cheap and small. Using a linear regulator is just ridiculous.

Well you learn something new everyday huh. Thanks for that :grin:

Maybe WS2815 diodes directly at 12 volts. Here https://www.derunledlights.com/the-difference-between-addressable-rgb-led-strip-ws2811-ws2812b-ws2813-ws2815-sk6812-sk9822/ is more info.

The way I summarise it for beginners is to say they swap voltage for current; so high voltage low current in becomes low voltage high current out.

Put a switch on a digital pin of the Arduino and when true, set the LEDs to all black.

Instead of "dropping voltage", why not just use a 5V PSU?

Your schematic is questionable because you have two led(0), led(1), etc. The single data line should cascade from string to string- the data out of the first string feeds the data in of the second string. Putting strings in parallel might work, but it would be more reliable to use use one string, one array.

As RDeangelis says, there are many configurations of WS28xx LEDs. The WS28xx only describes the chip that controls each LED.

My go-to board is the Wemos D1 Mini, but any Arduino board will work.

I might try to get a PSU that has 12V and 5V outputs provided the wattage is high enough but I need the 12V because it will also be powering an audio amplifier.

The data lines will have to be parallel as the two strips I have will pretty much be no where near each over, which was why it was one of my questions as I wasn't too sure if it would work but I had seen someone else do it on a another forum so hopefully it works.

This makes no sense. If you go with parallel data lines, I predict erratic behavior. If you need to separate the LED strings, then run the second string from a second data port.

Didn't think of that, makes way more sense that way :+1:t2:.

It makes eminent sense.

He is saying that he does not want to bring the data line all the way back from the end of the first strip, to the controller and then out to the second strip. That would be a grossly excessive distance, even for strips of one metre.

The context is a pair of stereo speakers. While you might wish to have different patterns, the intent is to have them symmetrical - both the same. As such, you feed both with exactly the same data. A single Arduino port is quite capable of feeding the cables and if it were not, you would simply want to use a buffer.

Note however, that an ESP8266 does require a level shifting buffer to drive NeoPixel strips.

And that is a commonly available power supply configuration in the form that SteveMann illustrates.

Using the one data line that splits sounds easier software side with getting them symmetrical and with less memory usage, and I think its safe to say it'll work fine based off of what you said.

Mostly true, but I control WS2811 LEDs from a Wemos D1 Mini all the time with no level shifter. The trick is to put the first LED close to the Wemos.

Certainly not the case here. :astonished:

I am merely reflecting a problem that frequently appears here and aiming to intercept it.

The thing here is that if we are advising on how to do things, we do have to be careful to recommend things that are guaranteed to work, or else explain in nauseating detail how to test whether they are appropriate. We are necessarily answering to people who are already having difficulty determining why what they are doing is not working and lack your diagnostic skills. :sunglasses: