Duggle Posted August 12, 2013 Report Share Posted August 12, 2013 What is your problem? Is it that the RGB backlights for your LCD modules are not bright enough? Quote Link to comment Share on other sites More sharing options...
endernoumea Posted August 12, 2013 Author Report Share Posted August 12, 2013 yes exactly. On the picture they are ok but it was before i use the dout matrix. They were connected directly to 5V at this time to "test" the colors. The RGB matrix is working very well. I can change the color using the rgb=rr:gg:bb in my led event but it's definatlly not bright enought to be workable by day. Quote Link to comment Share on other sites More sharing options...
Duggle Posted August 12, 2013 Report Share Posted August 12, 2013 What is the matrix wiring? If 16 displays means 16RGBs, then have you tried 1x16RGB matrix configuration? I think this should give you a maximum LED output the same as with constant supply. Did you say ULN2803 was more (or less?) bright than the HC541? Did you ground the ULN2803 properly? The ULN2803 has an output low of around 1V which implies that a lower series resistance be used to get higher output. Quote Link to comment Share on other sites More sharing options...
endernoumea Posted August 13, 2013 Author Report Share Posted August 13, 2013 I actually setup only 16 screens but I will have 22 of them at the end so the 1 row matrix cannot fits my requirements. The LCD are common anode. The data sheet can be found here : http://www.ebay.com/itm/16x2-Character-LCD-5V-RGB-Backlight-Negative-Mode-RGB-on-Black-2x16-Row-USA-/150826420761 So i declare my matrix like this : DOUT_MATRIX n=1 rows=4 inverted_sel=1 inverted_row=1 sr_dout_sel1=1 sr_dout_r1=2 sr_dout_g1=3 sr_dout_b1=4 led_emu_id_offset=1001 The wiring is inspired from the "hacked dout" of the protodeck project but without any resistance nor resistance array. Quote Link to comment Share on other sites More sharing options...
Duggle Posted August 13, 2013 Report Share Posted August 13, 2013 The emitter follower (BC547) will have a voltage drop of >=0.7V and the output of ULN2803 will drop another say 1.0V. This leaves only (5-0.7-1)=3.3V to drive the LEDs. The ULN2803 low side drivers only ever drive 1 LED at a time. If you remove the ULN the pin from the HC595 can still drive the load but with less voltage drop. Have you tried reducing the 100, 150R resistors? Your drawing is labelled with "8x8" but declared with rows=4. If you add another 6 SR's you could drive up to 24RGB LEDs in an unmutiplexed way (rows=1). You'd need more than 1 RGB matrix defined. Is this supported? If so, it will be 4x brighter due to the increased duty cycle. Quote Link to comment Share on other sites More sharing options...
endernoumea Posted August 13, 2013 Author Report Share Posted August 13, 2013 The picture is from the original post of the protodeck project : http://julienbayle.net/works/creation/protodeck-midi-controller-for-ableton-live/ I use it as a model to describe what I am using here. I have 2 differences : - I use no resistance nor resistor array. - I will have 22 RGB at the end, so 3x8 (not 8x8) I just setup what you said on a breadboard and the led still not bright. I cannot test the rows=1 because it generate an error in mios : [839542.973] [MBNG_FILE_C:10] ERROR invalid row number for DOUT_MATRIX n=1 ... rows=1 (only 4 or n*8 allowed) Quote Link to comment Share on other sites More sharing options...
Duggle Posted August 13, 2013 Report Share Posted August 13, 2013 (edited) Can you check the duty cycle of the matrix with an oscilloscope? With rows=4 it should be 25%. If you don't have a CRO, then don't worry about it. Set up special config that allows you to manually turn on/off individual row and column driver lines. Can you determine the voltage drops through the LEDs, resistors, drivers under static conditions (i.e the drivers are in steady state rather than scanning the matrix). This allows you to determine the LED current when they are 100% on. Also allows to identify what is creating the dimming i.e where the voltage drops are worst. Note that when the matrix is scanning (rows=4) they will be only 25% as bright. Edited August 13, 2013 by Duggle Quote Link to comment Share on other sites More sharing options...
endernoumea Posted August 13, 2013 Author Report Share Posted August 13, 2013 (edited) No I have no OSC sorry :/ Is there any way to drive RGB led without matrix ? because it seems that it's not allowed to use rows=1 in the matrix definition. Edited August 13, 2013 by endernoumea Quote Link to comment Share on other sites More sharing options...
Duggle Posted August 13, 2013 Report Share Posted August 13, 2013 I edited my last post. Manually energising row/column "manually" is just a way of investigating what is happening with the drivers, resistor, LED to see where the current is limited. I think your final design will run with rows=4. Quote Link to comment Share on other sites More sharing options...
endernoumea Posted August 13, 2013 Author Report Share Posted August 13, 2013 Note that when the matrix is scanning (rows=4) they will be only 25% as bright. I think this is the answer. It might be ok for a led but it's not enought for a LCD blackscreen. (at least not those like mines) I was wondering something but I don't know if this can works: 1- Setup 3 differents dout matrix to separate my 3 rows on 3 differente boards. 2- the replace the driver by a constant 5V This should allow me to use the rgb=r:g:b instruction from the matrix function and avoid the scanning effect right ? (I have spare dout I could use for that) Quote Link to comment Share on other sites More sharing options...
Duggle Posted August 13, 2013 Report Share Posted August 13, 2013 Yes, I think you need to be able to have rows=1, so that there is 100% duty cycle and remove need for high side driver. Quote Link to comment Share on other sites More sharing options...
endernoumea Posted August 13, 2013 Author Report Share Posted August 13, 2013 It's working :) Quote Link to comment Share on other sites More sharing options...
endernoumea Posted August 14, 2013 Author Report Share Posted August 14, 2013 (edited) I setup 3 radio buttons that represente 3 functions i can assign to my encoders. The objective is to change to color of the screen according these 3 buttons when i move an encoder. here is how i do that : EVENT_BUTTON id= 35 type=CC chn=1 cc=16 button_mode=OnOnly range= 0:0 radio_group=1 EVENT_BUTTON id= 39 type=CC chn=1 cc=16 button_mode=OnOnly range= 1:1 radio_group=1 EVENT_BUTTON id= 40 type=CC chn=1 cc=16 button_mode=OnOnly range= 2:2 radio_group=1 DOUT_MATRIX n= 2 rows=4 inverted_sel=1 inverted_row=1 sr_dout_sel1= 0 sr_dout_r1= 5 sr_dout_g1= 6 sr_dout_b1= 7 led_emu_id_offset=1501 EVENT_ENC id= 1 hw_id=1 bank= 1 fwd_id=LED_MATRIX:1 fwd_to_lcd=1 type=CC chn= 1 cc= 16 range= 0:127 offset= 0 ports=1000100000001000 lcd_pos=1:1:1 label="ENC #%3i %3d@(1:16:1)%B" EVENT_ENC id= 1001 hw_id=1 bank= 1 if_equal=Button:40:2 fwd_id=LED:100 EVENT_ENC id= 1002 hw_id=1 bank= 1 if_equal=Button:39:1 fwd_id=LED:102 EVENT_ENC id= 1003 hw_id=1 bank= 1 if_equal=Button:35:0 fwd_id=LED:101 EVENT_LED id=100 fwd_id=LED:1502 rgb=15:0:0 EVENT_LED id=101 fwd_id=LED:1502 rgb=0:0:15 EVENT_LED id=102 fwd_id=LED:1502 rgb=0:15:0 My problem here is that the led are activated only when the encoder value is > 63. I want it to be activated everytime i move the encoder. Can i force it ? Edited August 14, 2013 by endernoumea Quote Link to comment Share on other sites More sharing options...
Duggle Posted August 14, 2013 Report Share Posted August 14, 2013 It's working :smile: That's great to hear. But what was wrong? How did you fix it? Quote Link to comment Share on other sites More sharing options...
endernoumea Posted August 14, 2013 Author Report Share Posted August 14, 2013 (edited) I did what we supposed at the end : 1 - I setup the RGB matrix with driver connected to 5V permanentely. (so i only need 3 SR per matrix) i declare it like this : DOUT_MATRIX n= 2 rows=4 inverted_sel=1 inverted_row=1 sr_dout_sel1= 0 sr_dout_r1= 5 sr_dout_g1= 6 sr_dout_b1= 7 led_emu_id_offset=1501 DOUT_MATRIX n= 3 rows=4 inverted_sel=1 inverted_row=1 sr_dout_sel1= 0 sr_dout_r1= 8 sr_dout_g1= 9 sr_dout_b1= 10 led_emu_id_offset=1801 note : the sr_dout_sel=0 (i think this is the dummy SR because i read it in many settings) so for 2 RGB matrix i only need 6 SR. (5 to 10 in my case here.) The Blackscreen are now as brighter as they can and i can control them with the rgb=r:g:b command. Of course this means that my RGB matrix are only 1 row maximum. Edited August 14, 2013 by endernoumea 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.