[bouLED] LED layout redux and component choice

LED layout

We settled for a layout with 78 LEDs per facet, with a slightly modified border clearance. It looks pretty great on the simulator:

Don’t pay attention to that triangle with white LEDs, it’s coplanar with the z=0 plane, as a reference. You’re seeing the icosahedron from above. The important thing is that the layout looks regular enough, without any weird stuff in the corners, where 5 triangles meet.

Next step: build a paper version of bouLED. Behold !

That thing is HUGE. It was a pain to build using only paper and scotch tape, but it’s really useful to get a better idea of how to design the inner structure. On the flip side, I messed the dimensions up when printing the triangles, they’ve got 21cm sides instead of 18.5cm. The triangles I showed in my last post had the right scale, though (but the LED-to-side margins are slightly different). Notwithstanding my clumsiness while building this, it gives a good idea of what the end result will look like.

Power supply

Choosing a battery

With Lucas, we thought that by limiting the LED brightness, we’d be able to downscale the power supply a bit. The 3D printed prototype triangle (103 LEDs) was already unbearably bright when drawing 1A in white, so we’ll avoid drawing over 20A for all the triangles, at 5V. The main board will run on 3.3V, and 3A is way more than enough for it. That’s 110 watts.

A 4S LiPo battery has a 14.8V output voltage, and for a 110W output it’d spit 7.4A out. That’s a very conservative discharge current for LiPo batteries, a 4S 3000mAh 35C battery like this one can deliver more than 90 amps continuously and its peak current is probably even higher.

With 3Ah, this battery could supply bouLED power (at full brightness !) for 24 minutes. We could have picked one with a beefier capacity, at the expense of its weight. This one weighs 308g.

Voltage regulator choice

Alexis suggested using a small regulator per facet (and another one for the main board), saying that’s it’s way easier than finding a big regulator.

What we need is a buck converter: it reduces voltage but increases current. The part Alexis suggested is a LT1765 from Analog Devices: it’s rated for voltage inputs up to 25V and the output current limit is guaranteed by the datasheet to be above 3A. It has fixed-voltage versions that can output 5V or 3.3V without having to add an external voltage divider.

My previous calculations for LiPo sizing didn’t take into account the fact that a buck regulator transmits constant (without taking efficiency into account, of course) power but at a different voltage. Basically, I did them as if I had a linear regulator. Now, the battery is one third of the price of the one I mistakenly chose, same for the weight.

[bouLED] Choosing a LED layout

I changed the LED layout algorithm to allow us to set a number of LEDs for each row. To improve regularity, the algorithm only takes the bottom row’s number of LEDs, and the row above this has one less LED, and so on. There’s also a “margin” setting for the space between the outermost LEDs and the triangle’s edges.

Here are all the layouts I generated, printed on paper with a 1:1 scale, and a 5 cents coin for scale.

We’d appreciate your feedback on this: which variant is your favourite ? You can click on the images to display them in their full size.

[bouLED] Turning LEDs on

As we want to use led strips for bouLED, trying to turn these LEDs on with our microcontroller would be a good start.

Our STM32L475 luckily happened to have SPI controllers. I used one in the frequency range recommended in the APA102 LED strip datatsheet, that is around 1MHz, to display simple animations on the ribbon. After some playing with the wires and some endianness considerations, I could control almost all of the 133 LEDs (and I’m investigating why some won’t obey). 
Thanks to ChibiOS, the current implementation already makes use of the DMA, so that SPI transactions don’t take up much CPU time.

The next step will be to see if we can increase the frequency. Then we’ll need to consider more LED strips: the SPI controllers can only send data on a few GPIOs, while we might need to plug 20 LED strips (or less if we can put some in series).