Bombproof battery-powered LED strip drivers (but not playa-proof)

Goal

I wanted to give my Burning Man camp-mates LED strips for their bikes/clothes, running unique patterns, so I could find them in the dark. I wanted these to be bomb-proof and to last all night.

Results

They were bomb-proof. You could kick these across the room and you’re more likely to hurt your foot than the drivers. There were not, however, sufficiently dust-proof. The two that were used in people’s pockets or bags worked fine; the three that were on bikes all died due to dust in the switch.

Design specs

  • Power a metre of LED strip, 30 LEDs on the strip, at low brightness for eight hours, so about 10 Watt-hours of battery.
  • Simple battery management, so protected Li-ion cells, Nitecore 16340 cells, three off.
  • Display FastLED noise8 patterns from a physically small microcontroller, so a Teensy 3.1.
  • Run strips reliably, so power the strips with a steady 5 Volts from a dinky UBEC and feed data to the strips at 5 Volts so a 74LVC245 level shifter.
  • Bomb-proof, so a metal case and locking mini-XLR connectors with cable clamps.


What worked

  • Mechanically, these were solid. Metal boxes rule.
  • The cables survived unscathed. The REAN mini-XLR connectors have the best cable clamps that I have found. If you want, you can use these drivers as poi, the connection is that good.
  • The strips survived unscathed. For the joints between cable and strip, two things work for me. Firstly, cover the solder joints in flexible, rubbery adhesive. I used silicone bathroom sealant, other people use E6000. Secondly, cover the glue in lots of heat-shrink. Preferrably the adhesive-lined stuff. I like to build up the diameter of the cable to match the strip, so the outer heatshrink can grip both cable and strip. And do this before the sealant sets, so the shrinking squeezes around the solder joints.

What needs to be improved in the next version

(Of course there will be a next version.)

  • Dust-proofing: I’ll put them in a zip-loc plastic bag.
  • Better charging: These require the cells to be removed for charging. That’s a pain with one driver and I made five. I’ll be exploring charging in place via USB (e.g. using Onehorse’s high power Teensy add-on charger should allow for charging in three hours). This would also allow the use of power from an external USB battery.

  • Better power architecture: UBECs are good if you want to run the 5 Volt strips at full whack, but for anything wearable or battery powered, I’m always dropping the brightness down. Hence putting all the cells in parallel and driving the strips directly is the way to go.
  • Making sure the microcontroller is always controlling the LED strip: A frequent failure mode for me in other projects runs like this: on startup, the microcontroller takes 100 milliseconds to power on, set up all the software objects in sequence, and start issuing commands to the LED strip. The LED strip starts instantly on power up and flashes to fully power, drawing enough power to damage the UBEC or sag the battery to the power where the microcontroller browns out. This is more of a problem with longer strips than this application, but I find myself holding my breath each time I turn one of. The solution is a MOSFET between battery and strip, controlled by the microcontroller. That way, the strip is not powered up until the microcontroller is ready to control it.
  • A better switch: Dust-proof, of course, but also less prominent. These large switches were easy to find with your fingers if they were deep in a pocket. They were also far too easy to switch accidentally, just by random jostling.
  • A better indicator LED: Using an indicator LED in the switch has an unexpected failure mode – the indicator LED can come on when power is reaching the switch but not getting past it. Thus the switch lights on when everything but the switch off. Also, illuminated switches are annoyingly large. I’m thinking that the indicator LED should be separate from the switch and controlled by the Teensy. If I use a red & green combined LED, then that could also report battery status.

  • Better sockets: I’m in two minds about this. I love the mini-XLR form factor. It’s small, the connectors are grabbable, and they lock, meaning you can’t pull them out accidentally. However, they lock, meaning if you do catch the cable on something, they won’t release and something else will break. And the female sockets are huge. I’ve yet to find the perfect connector here.
  • Easier manufacturing: Separate sockets and switches are a pain. Making up the flying leads and fitting those into screw terminals is far more effort and time than just mounting the sockets directly on to the PCBs. Mounting the switch and status LED to the PCB should be easy. However, I’ve yet to find a mini-XLR socket that is board-mounted. And there’s a few other spots where tolerances are to tight for easy assembly. This was fiddly.

What would be nice to have

  • Wirelessly synchronising patterns between drivers when the people wearing them are close. We kept in synch by just turning them on at the same time. The patterns run a random sequence that’s actually the same each time. Clock drift was negligible over a night, but it did mean that if one driver accidentally got turned off, that one ended up out of synch.
  • Audio responsive. Onehorse’s digital microphone shield looks worth a try.

Building your own

I wouldn’t use this design again. Or rather, I’ve learnt enough from building these that I can see all the better ways to do it. But the info here may provide some inspiration and guideance.

Diptrace schematic and board

Order this board from OSH Park, if you must. It’s all through-hole, for easy assembly.

Bill of Materials
The case and switch came from Jaycar; the 16340 PCB-mount cell holders from Mr Positive; the UBEC from Hobby King; the rest was E14.

Drilling the case

  • Use the PCB as a template for locating where to drill the PCB mounting holes. Fix the mounting screws in place with nylon nuts between the PCB and the metal case. There isn’t room to turn the nuts to hold the PCB in place where the screws are next to the cell holders. I used spacers on the mounting screws so that the nuts where above the cell holders. This does mean you’ll need 25 mm long mounting screws. I used counter-sunk heads so the bottom of the box could be flat.
  • Mounting the socket needs careful alignment if the screw holding the socket isn’t to clash with the screw holding down the lid. I made up a quick drilling guide but it was still tight. And the lip of the lid needs filing to clear the retaining ring on the switch.

  • The lid has just enough space underneath that there’s room for the cells to pop out of their holders if you whack the box hard enough. Two layers of thin yoga mat foam glued under the lid prevent this from happening by keeping the cells in place.

3 thoughts on “Bombproof battery-powered LED strip drivers (but not playa-proof)

  1. As of 2015 you’ve got a few more options which might not have been around when you started this design:

    * A Teensy 3.1 is way overkill for 30 LEDs. These will run fine (even plasma!) off a DFRobot Beetle—which has the advantage of being 5V “native” and even smaller than a Teensy
    * If you still want to go Teensy, check out the TeensyLC. It has one 5V capable pin specifically for driving LEDs, and as of recently is fully supported by FastLED

    Either of these two options gets you out of needing the level shifter.

    * 2x18650s at 3500mAh each is plenty to last overnight at full brightness if you’re not running them full white the whole time. You’ll probably even get away with one 18650 if you’re not running dense patterns. Pololu.com have the best range of buck and boost converters, and they’re really really small and cheap for what you get. Ditch the UBECs!

    1. Cheers for the suggestions. I’m at the stage of exploring options for the next version:

      That Beetle is indeed pretty dinky. I might have to explore it more.

      I’ve always been in two minds about the Teensy LC. The 5 Volt output is nice, but I’m using APA102 strips, so I’d need two. And the reduced cost (US$10 versus US$19) is pretty small compared with the ease of just using a 3.1 for everything I make.

      The 3.1 is certainly overpowered though – I’m using one to run the Mitochondrion which has strips of 200 LEDs with a 3 ms update rate. But I’m ok with having some headroom, especially as I’m using the FastLED dithering to keep patterns smooth as I dip the brightness down, hence pretty frequent updates to the strips.

      Another option for saving space might be a smaller level shifter. I’m yet to try the TXS02 with APA102 strips, but it does come with only the two channels that I need and in a DIP for easy soldering.

      Trying this with one 18650 is definitely on the list. Putting a second one in series means a step-down, but it also means that charging off USB is much harder. However, putting a second one in parallel means the design can still use USB charging. And then a third, and then…

  2. I’m making some blinkies using NeoPixel strip (no clock) and Moteino CPUs.

    The NeoPixel strips will run happily off a 3.3v AVR with a resistor (mostly to cope with hot socketing one side or the other).

    I use one of those USB power banks (4000mAh @ 5v, $35 from Ascent) for power. Charges off a regular USB. I did get one with a *stoopid* power-down-on-no-drain controller, so I had to fix this by soldering the on switch closed (hey, burner tech, right). You can get them without this, and in a smaller (18mm2 x 50mm) form factor.

    Also, most AVRs can have touch switches in software on any analog in – pretty dust proof I would hope. You still have a small amount of sleep current as you need to do a wake/poll loop.

Leave a Reply

Your email address will not be published. Required fields are marked *