FantomXR Posted May 19, 2019 Report Share Posted May 19, 2019 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 Quote Link to comment Share on other sites More sharing options...
TK. Posted May 20, 2019 Report Share Posted May 20, 2019 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. Quote Link to comment Share on other sites More sharing options...
FantomXR Posted May 20, 2019 Report Share Posted May 20, 2019 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 Quote Link to comment Share on other sites More sharing options...
TK. Posted May 20, 2019 Report Share Posted May 20, 2019 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. Quote Link to comment Share on other sites More sharing options...
weasel Posted May 21, 2019 Author Report Share Posted May 21, 2019 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. Quote Link to comment Share on other sites More sharing options...
FantomXR Posted May 21, 2019 Report Share Posted May 21, 2019 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.... 1 Quote Link to comment Share on other sites More sharing options...
weasel Posted May 21, 2019 Author Report Share Posted May 21, 2019 (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 May 22, 2019 by weasel Quote Link to comment Share on other sites More sharing options...
latigid on Posted May 22, 2019 Report Share Posted May 22, 2019 @TK. thanks for the coding efforts! This will be very helpful in other projects too. The rainbow rings look very pretty :) Quote Link to comment Share on other sites More sharing options...
weasel Posted May 28, 2019 Author Report Share Posted May 28, 2019 (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 May 28, 2019 by weasel Quote Link to comment Share on other sites More sharing options...
FantomXR Posted May 28, 2019 Report Share Posted May 28, 2019 Looks great! :-) Quote Link to comment Share on other sites More sharing options...
ilmenator Posted May 28, 2019 Report Share Posted May 28, 2019 Yay, Vegas Mode is already implemented! Quote Link to comment Share on other sites More sharing options...
weasel Posted May 31, 2019 Author Report Share Posted May 31, 2019 (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 June 1, 2019 by weasel Quote Link to comment Share on other sites More sharing options...
Antichambre Posted June 3, 2019 Report Share Posted June 3, 2019 @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 Quote Link to comment Share on other sites More sharing options...
weasel Posted June 8, 2019 Author Report Share Posted June 8, 2019 (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. 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. 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. 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..) 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... and to lighten things up here's another video, this time i added some shift functions. Edited June 8, 2019 by weasel Quote Link to comment Share on other sites More sharing options...
FantomXR Posted June 9, 2019 Report Share Posted June 9, 2019 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 ;-) Quote Link to comment Share on other sites More sharing options...
weasel Posted June 9, 2019 Author Report Share Posted June 9, 2019 (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 June 9, 2019 by weasel Quote Link to comment Share on other sites More sharing options...
TK. Posted June 9, 2019 Report Share Posted June 9, 2019 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. Quote Link to comment Share on other sites More sharing options...
Antichambre Posted June 9, 2019 Report Share Posted June 9, 2019 (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. 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.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. When they are coupled When coupled , assembled the thickness without the pipes height(front panel thickness) doesn't exceed 2.5mm 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 June 9, 2019 by Antichambre 2 Quote Link to comment Share on other sites More sharing options...
FantomXR Posted June 9, 2019 Report Share Posted June 9, 2019 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! Quote Link to comment Share on other sites More sharing options...
Antichambre Posted June 9, 2019 Report Share Posted June 9, 2019 (edited) Yep it is the Troglass-Led from Trotec. Edited June 9, 2019 by Antichambre Quote Link to comment Share on other sites More sharing options...
TK. Posted June 9, 2019 Report Share Posted June 9, 2019 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. Quote Link to comment Share on other sites More sharing options...
FantomXR Posted June 10, 2019 Report Share Posted June 10, 2019 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 :-) Quote Link to comment Share on other sites More sharing options...
weasel Posted June 10, 2019 Author Report Share Posted June 10, 2019 (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 June 19, 2019 by weasel rephrased for clarity Quote Link to comment Share on other sites More sharing options...
Antichambre Posted June 10, 2019 Report Share Posted June 10, 2019 (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 June 10, 2019 by Antichambre Quote Link to comment Share on other sites More sharing options...
weasel Posted June 10, 2019 Author Report Share Posted June 10, 2019 (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 June 10, 2019 by weasel Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.