weasel

LRE 4x1 breakable RGB LED-Ring/Rotary-Encoder PCB bulk order

51 posts in this topic

Hey people,

we could need some help on this project.

So far the pick and place machine did a great job and the reflow oven as well. So I now have a few boards to test.

But I already run into a problem. In the firmware I set WS2812_NUM_LEDS to 144, because one prototype board is made from 4x36 LEDs => 144. Compiled and flashed. The core boots up nicely.
As stated in my previous post, the last 5 or 6 LEDs are slightly flickering. I've tested inserting 5V at the end of the LEDs again but this doesn't change anything. So it doesn't seem to be a power-related problem.

Things start to get crazy if I connect another LED-ring-board in series with the first. I set WS2812_NUM_LEDS to 180 (with 190 the core doesn't boot anymore), compiled and flashed. I think a video can describe better what happens here:

https://www.dropbox.com/s/b5phnsji4k9wjhs/YI051501.mp4?dl=0

Does anyone know where this could come from?! Also does someone has an idea why the cores do not boot anymore as soon as I set WS2812_NUM_LEDS to 190 and more?

Any help would be very appreciated.

Thanks,
Chris

 

 

Share this post


Link to post
Share on other sites

Hi,

STM32F4 was running out of memory - and due to an wrong linker file entry you haven't got an error after the 128k boundary of the "normal RAM" has been touched.

However, this chip has some additional 64k as a so called "core coupled memory", which is located at 0x10000000

I changed the linker file and preload code to support this memory.
In addition, in the MBNG application I moved the heap memory into this CCMRAM, giving us about 10k more space.

Updates are available at github: https://github.com/midibox/mios32/commit/9dc48579c31766815997b0ce3eac88f9d772578a

I havent't checked if this has a new negative side effect, but at least MBNG is booting and RGB LEDs are working

Best Regards, Thorsten.

 

Share this post


Link to post
Share on other sites

Hey Thorsten,

Great! I'll test it tomorrow with the rings. 

So, what do you think is the limit regarding led-count?

Thank you very much!

Chris

 

Share this post


Link to post
Share on other sites

Yes, each RGB LED will consume 48 bytes. With the latest changes up to 390 RGB LEDs can be defined, and you will get a proper RAM error message if there are too much, such as:

/opt/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/bin/ld: project_build/project.elf section `.bss' will not fit in region `RAM'
/opt/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/bin/ld: region `RAM' overflowed by 424 bytes
collect2: error: ld returned 1 exit status

Best Regards, Thorsten.

Share this post


Link to post
Share on other sites

Wow this is amazing news, the OG just blessed us with a firmware update! I am pretty sure @FantomXR will get them running just fine now!

Thanks so much @TK. this will help alot and we should get at least 2-4 LED-Ring-Boards going. I'll send you some for reference once i have the production run!

I read through the mios32 ws2812 documentation and realized you need to use 48bytes per LED for the PWM DMA solution. I do understand the motivation behind this, saving CPU power, but is there a somewhat easy way to go back to other methods as described in the uC.net article you linked? Thinking of the "average" midibox tasks, i doubt it pushes an STM32f4 to it's CPU limits? Guess using the flash memory would wear it out too fast? I would love to implement it myself but that's way beyond my knowledge and time constraints, and at the same time i assume there is little need for other people to go beyong 300-400 LEDs. But how do other ie. arduino ws2812 drivers get away with just using 3 bytes per LED, on a much slower CPU?

Since for 40-50 encoders i need to adress between 1500 and 1800 LED - 72kb at 48bytes, ca 5kb at classic adressing - i guess i might have to just add a little arduino or similar MCU to control the ws2812. even the smallest UNO can handle 500 ws2812 at 60Hz, and the Due with its 3-4 serial lines should be able to run all 50 encoder-LEDs i need.

 

 

Share this post


Link to post
Share on other sites

Hey people,

thanks to @TK.! It's working great.

Anyway I had still some flickering on the LEDs. As I stated above I left away the caps ... and this was the reason. I know have added a 10uF on the input and on the output-connector of the LED-rings and the flickering is completely eliminated! Great!!

So, one core can handle a total of 10 LED (10*36=360) rings.... 

IMG_21052019_135000.thumb.jpg.eb65b537f7

 

IMG_21052019_142558.thumb.jpg.1d657f3f93

Share this post


Link to post
Share on other sites

Posted (edited)

Great work @FantomXR that picture looks absolutely terrific.

we will evaluate the design for a couple more days and run some more tests and then finalize the bulk order with updated prices, anybody interested can PM me now.

 

 

edit: fwiw, alternative method of driving ws2812 on the F7DISCO:

https://stm32f4-discovery.net/2018/06/tutorial-control-ws2812b-leds-stm32/

Edited by weasel

Share this post


Link to post
Share on other sites

@TK. thanks for the coding efforts! This will be very helpful in other projects too.

The rainbow rings look very pretty :)

Share this post


Link to post
Share on other sites

Posted (edited)

here's a cute little video with a prototyping frontplate. bottom 5 LEDs are blacked out intentionally for classic "fake poti" use.

this right now is controlled via arduino, not midibox, since there were more convenient demo routines available.

frontplate is 3mm mdf, sitting more or less directly on the ws2812. top row has slightly bigger holes than bottom row. ws2812 running at 25% brightness....

 

Edited by weasel

Share this post


Link to post
Share on other sites

Yay, Vegas Mode is already implemented!

Share this post


Link to post
Share on other sites

Posted (edited)

On 5/28/2019 at 11:34 AM, ilmenator said:

Yay, Vegas Mode is already implemented!

of course, first things first!!

 

the manufacturer seems to currently have a discount on the assembly parts of the job, so prices will go down a bit! will update asap!

 

here's some basic music functionality tests:

 

 

Edited by weasel

Share this post


Link to post
Share on other sites

@weasel
I received you message. Tell me what you need to know here as everybody can access it too. If I can answer to your question about what I did for the OLRE16 ring mask and window I will do.
Best
 

Share this post


Link to post
Share on other sites

Posted (edited)

Hey @Antichambre, thanks a lot, good call on the forum post! I feel like this doesn't belong in the bulk order thread though so lmk if you want me to move this to a new thread before you or anyobdy else answers...

So i am currently investigating frontplate options and i realized some small issues with these 2020 LEDs: they are in a completely transparent housing, as opposed to the white housing with a top lense of the 5050 2812s. So naturally i get quite some cross bleed between the neighbouring LEDs, at highest brightness setting even up to 2-3 LEDs far. In real life it is not nearly as noticeable as on those videos i posted but i am still trying to optimize it.

Then of course i remembered your own glorious LED rings and the transparent inlays you sent me a picture of once. Would you mind in explaining in detail a bit more how you did them and if you think they are viable for my situation?

Following are some sketches of what i have so far and some ideas. The "light channel" drill holes got pretty long, 3.5-5mm over all, but that actually makes frontplate assembly super convenient and also should reduce the cross bleeding by creating a more narrow viewing angle. any input is welcome!

1. This is a description of what you see on the videos, what i started out with. just a 3mm mdf with 1.25mm holes for each LED, and another 1.6mm acrylic layer on top, same holes. they align nicely and sit right on top of the middle of the LEDs. The thin arrows show where i think most of the crossbleed comes from. the whole housing of the LED is transparent resin so the 3 tiny R G B LEDs all emit light in any direction of almost half a sphere.

5cfc30984ac6b_ScreenShot2019-06-09at12.0

 

2. So the first thing i tried to improve it was to cut a negative mask out of MDF to enclose each LED, leaving room for the condensators and solder points.

5cfc309e38c4e_ScreenShot2019-06-09at12.0

5cfc201f1db72_ScreenShot2019-06-08at10.55cfc206fe9f1b_ScreenShot2019-06-08at10.5

its black coated MDF and obviously the details are a good bit too much for the laser. but i am sure i could still improve on these first tries. it did improve the bleed a little but not to the extend i hoped for.

 

3. i tried the same technique but with black cardboard instead of the MDF, and the little bridges betwees the LEDs came out even better.

5cfc30a2ee4c1_ScreenShot2019-06-09at12.0

5cfc330833806_ScreenShot2019-06-09at12.1

 

4. the next thing i want to try is different materials. i did a first cut of the same negative mask as above in solid acrylic but didn't get to test it yet. i have to play with the lasercutting margins and measures to make the fit as good as possible, eg. i left space for the extra solder points but not for the blobs of solder around the LED connectors. but right now i am more interested in alternative methods. what about using milliput or some other thick epoxy stuff, press it on the LED pcb so the top stays somewhat clear, and carve off remainders after hardening? something like this: (note: most likely my final front-frontplate will be aluminum..)

5cfc2178be7ae_fp4epoxy.thumb.png.fc5e376

anybody has experience with using milliput/expoy like this?

another thing to try is the resin-based 3d printer in my local fablab which might be detailed enough to get a better mask going.

and yet one more idea is to get some thick lightproof acrylic paint and a tiny brush and try to paint the sides of the LEDs, or even spray paint it with circular masking tape on the top?

 

also i am not sure about how to fill the light channels in the frontplate, what you, @Antichambre did so beautifully with those inlays. i was also gonna try just fill them with epoxy and razer off any residue on the outside? or maybe get some 1.25/1.5 mm optical fibre, and stuff each LED hole with a 3-5mm piece that ends directly on the LED enclosure? might also help reduce bleeding.

 

Here are some more pics of @FantomXR's beautiful prototype SMD assembly job, you can see the shape of the LEDs really good. in before questions: shot on iphone with a 10$ hama macro lens i just bought on impulse at the local electronics megastore. keep in mind these LEDs you see are 2x2.2mm small...

IMG_5145.thumb.jpg.0f295aba1ed5d456e49b2

IMG_5154.thumb.jpg.28e8048aec2ea04484ae1

IMG_5160.thumb.jpg.904b765060fc06ae205af

IMG_5157.jpg

5cfc29d57bad2_ScreenShot2019-06-08at11.3

5cfc256093088_ScreenShot2019-06-08at11.1

5cfc31d420f7e_ScreenShot2019-06-09at12.0

5cfc31d09529f_ScreenShot2019-06-09at12.0

 

 

and to lighten things up here's another video, this time i added some shift functions.

 

Edited by weasel

Share this post


Link to post
Share on other sites

Thanks for your explanation, pictures and videos.

Well, as I told you in an email already you really should think about, going down with the LED-count while keeping the diameter as is now. This will give you some space between the LEDs and it should be very easy creating a mask for it so you don't have any crossbleeding ;-)

 

Share this post


Link to post
Share on other sites

Posted (edited)

6 minutes ago, FantomXR said:

 going down with the LED-count while keeping the diameter as is now.

haha man i keep coming back to that solution but i wanna try everything first to avoid it. i know i wanted 32 LEDs to start out with, but now that i got used to the higher resolution, i'd miss it. if i keep the same 5 bottom LEDs covered which i have to, it would only be left with a real life resolution of 26-27 LEDs... shoulda went with 0603 APAs maybe lol

 

seriously though, we might have to walk the 32 LED way.. give me a couple more days.

Edited by weasel

Share this post


Link to post
Share on other sites

Impressive work!

The WS2812 driver was only a quick hack, I was already satisfied after it was working and haven't expected that somebody would ever drive more than 50..100 LEDs.

It shouldn't be a big deal to optimize the memory consumption. There are various places in MIOS32 where I already used DMA double buffers (e.g. I2S audio output). Nothing needs to be explored, just translation :)

Best Regards, Thorsten.

Share this post


Link to post
Share on other sites

Posted (edited)

Hi guys,

I don't know the best for your project but I can explain what I did for the OLRE16.

First is the MASK, it's black PMMA.
Both sides are milled.
I let some space between the leds on the pcb to keep some matters between the leds housing. Led size is 1.5x2mm

On the other side(front side) there's some stripes which will fit inside the translucent PMMA, they will block the light between the leds, between the rings and between the rings and the oleds. .
Note: the olre16 top pcb(ring) has no component on the top except the leds and the oleds.

mask_cut.png?raw=1
In blue are the back leds housing.
In Red there are the holes.
In Yellow, some stripes to block the light on the front, those stripes will fit inside the back of the translucent PMMA.
IMG_0198.jpeg?raw=1

The second part is the 'WINDOW', in translucent white PMMA, it's a LED special one, the same I used for the beat led window of the Seqv4+.
The back part will fit inside the MASK, in other word the base of the WINDOW will receive the MASK's stripes, of course the WINDOW's pipes are in front of the MASK's holes.
Then the Aluminum front panel comes to finish blocking the light and the pipes of the WINDOW will fit inside the panel, flush the surface.
IMG_0200.jpeg?raw=1
Fichier%2025-05-2017%2009%2024%2000.jpeg

When they are coupled
IMG_0201.jpeg?raw=1

When coupled , assembled the thickness without the pipes height(front panel thickness) doesn't exceed 2.5mm
IMG_0204.jpeg?raw=1
IMG_0205.jpeg?raw=1

Voilà! I don't know if it will help you and It's surely an "over-engineered" thing but this is the only solution I found, and it works.

Best regards
Bruno

Edited by Antichambre
1 person likes this

Share this post


Link to post
Share on other sites
3 hours ago, TK. said:

It shouldn't be a big deal to optimize the memory consumption. There are various places in MIOS32 where I already used DMA double buffers (e.g. I2S audio output). Nothing needs to be explored, just translation :)

That sounds great! And... are you willing to do so? :-D 

Awesome work @Antichambre. Looks fabulous. Could you tell us where you have the translucent PMMA from? I buy my materials at TroTec. They have also awesome stuff! 

Share this post


Link to post
Share on other sites
6 hours ago, FantomXR said:

That sounds great! And... are you willing to do so? :-D 

It's unclear if I should really spend some more time to work on this.

If I understood @weasel correctly, he sees a path via Arduino based solutions which he would prefer. In this case my contribution wouldn't add any value... just follow him.

Best Regards, Thorsten.

Share this post


Link to post
Share on other sites

If I understood him correctly he wants to avoid the Arduino solution. It will make things a lot more complicated. But an Arduino can drive tons of LEDs without problems. That's why he uses it. 

Let's see what he says :-)

Share this post


Link to post
Share on other sites

Posted (edited)

@Antichambre man that finished frontplate looks so incredibly amazing, insane job, congratulations again. what kind of router & bit did you use to mill the PMMA? not sure the CNC at my fablab is fine enough.. not only are my measurements a good bit smaller but also i start realizing the laser cutter with its convexed cutting edge is not really precise enough for light channels like that.. so the biggest issues of translating your approach would be the holes in the black MASK layer, or rather the walls between the holes. @FantomXR i did some quick maffs, if we go 36>32 that will give me an additional width of the radial gap between each of the LEDs of 0.2-0.3mm, at the smallest most inwards point. so almost double what it is right now, i would have around 0.5mm at the smallest point which should make the masking much easier. might still have to CNC and not laser cut. oh and trotec FTW, they were the easiest and nicest to deal with too. innograv almost didn't take my business lol.

oh bruno if there is any chance you have some pictures of the MASK and WINDOW layer combined with the LEDs stuck through? or any more close up/side shots of the all-layer frontplate. that would be formidable oui oui.

i ordered a bunch of different epoxy/milliput/sealer combinations too though and still wanna try just casting/filling the whole 0.84mm height around each LED. anybbody ever tried filling frontplate LED holes with epoxy or similar?

EDIT: epiphany? what if i make a silicone negative of the fully assembled LED ring board, and then cast a theoretically perfect resin/epoxy mask from it? where do i learn about this haha. oh wait. i need a double negative casting shape. prolly all too much effort, i wanna make music not get into plastic manufacturing.

also i will try some ready made light pipes - anyboby has a good source for those? mouser etc start at 50ct/piece for the 1mm ones, that would be 70EUR per 4x1 board lol. have some regular 1mm and 1.5mm optical fibre cable coming too but i assume that will be hard to cut to size precisely and make it perfectly flush with the frontplate?

made some more lasercut cardboard masks last night, i think they came out better but probably not perfect. will test and report tonight.

 

@TK. thanks, yeah i somehow was sure you would consider expanding the code after we approached this barrier... i know you'd do that "im schlaf" basically. but here's my opinion: other than RGB LED rings probably nobody would ever want to connect that amount of WS2812 to a midibox. i personally would LOVE to be able to avoid the extra arduino, i just went there lacking an easier alternative, i didn't prefer it at all! so of course, midibox support would be great, but if i understood it correctly you want to reduce the amount of work you personally put in on midibox, and given that, i am also not sure if it is worth your time to work on this this driver. maybe you should save your much appreciated midibox time for someones more urgent problems? would love to hear other people's opinion on this. cause on the other hand the WS2812 is such a stable in the DIY world by now.

i'd very happily send you whatever display/mapping/ring-style code i have if you end up doing something. for you to laugh at, delete and redo properly.

 

 

EDIT 2 i can't stop staring at your frontplate bruno haha so beautiful you need to sit your ass down and finish these.

 

Edited by weasel
rephrased for clarity

Share this post


Link to post
Share on other sites

Posted (edited)

46 minutes ago, weasel said:

what kind of router & bit did you use to mill the PMMA? not sure the CNC at my fablab is fine enough

All is made with my cheap and Chinese CNC, but it's a solid one with powerful motors, after it's a question of production and method...
...For example, to mill both side of the mask you have to think how you will reverse the material in the exact symmetrical position etc...
I use 1 tooth bit from 0.8mm to 2mm, speeds depend on the plastic you use, best is cast acrylic. I always use water+soap it avoids plastic melting(not sure of the English word), I put some every 5min with a syringe.
 

46 minutes ago, weasel said:

oh bruno if there is any chance you have some pictures of the MASK and WINDOW layer combined with the LEDs stuck through? or any more close up/side shots of the all-layer frontplate. that would be formidable oui oui.

Everything is disassembled, out of dust in a closed box, I will not work on this for the moment, sorry.
 

46 minutes ago, weasel said:

anybbody ever tried filling frontplate LED holes with epoxy or similar?

Yes I experimented that, with epoxy, I don't know if I used the right method but this was difficult and not a good result. this kind of operation needs the precision of a machine, to respect the right dose with repetitive same movement. By hand  with a syringe I put too much in some holes, not enough in others, difficult to protect the front plate too.

 

46 minutes ago, weasel said:

EDIT: epiphany? what if i make a silicone negative of the fully assembled LED ring board, and then cast a theoretically perfect resin/epoxy mask from it? where do i learn about this haha. oh wait. i need a double negative casting shape. prolly all too much effort, i wanna make music not get into plastic manufacturing.

lol, yes I also thought to adapt a syringe dispenser to my CNC, a lot of work for an hypothetical result :)

Edited by Antichambre

Share this post


Link to post
Share on other sites

Posted (edited)

thank you so much, great advice! will get back later with results and thoughts! i'll order some troLED and get that fablab CNC going..

 

what do you think about the idea of just casting 0.84mm (LED height) of black resin or epoxy directly on the LED PCB, to surround the LEDs and thereby cover the sides, only leaving the top side open? either cast a thin liquid expoy or use something more gluey pasty and press it in/scrape off the top? i think the direct 90 degree side-to-side bleed between two neighbouring LEDs is my biggest culprit right now.

 

edit: what router bits are you using? dremel/proxxon stuff? i assume you run through a lot of them, breaking? any recommended brand?

Edited by weasel

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now