Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

[AVR] Display Quality Issues for 120x12 Led Sign Board

Status
Not open for further replies.
Also it is better to use Timer Interrupt to do the required task (switching).
 

I see you are using row drivers with ULN2003.. WHat Vcc? any Rs added to column ?


ULN200x specs
Collector-emitter saturation V CE(sat) Figure 12
I I = 250 μA, I C = 100 mA 0.9 1.1V
I I = 350 μA, I C = 200 mA 1 1.3 V
I I = 500 μA, I C = 350 mA 1.2 1.6V

using Nom Vce(sat)
ESR from 200 to 350mA is ((1.2-1.1)/150mA) = 0.67 Ohm ( too high )

using Max Vce(sat)
ESR from 200 to 350mA is (1.6-1.3)/150mA = 2 Ohms

Thus your design is inadequate due to ESR ratios of Source Load.
THe Row driver must be a voltage source of sufficently low ESR to maintain voltage and thus allow column current to be stable regardless of number of column LEDs enabled. I choose 5% with a suitable FET of < 100mA

Since the ESR of your column max load is 2 Ohms and your Driver ESR max is 2 Ohms , the brightness will modulate 50%.

This can only be improved with all R values and Vcc and LED part number, otherwise start over
 

Hi,

i can´t see how you handle pin12 = RCLK now.

Klaus
 
The fault in post #19 code is to pulse the store clock (RCLK) once after each byte of data. It should be pulsed only pulsed once after sending all data for specific row.

I agree with SunnySkyguy that ULN2803 isn't suited to operate the LED display with high intensity. The problem has been discussed in previous threads before. But achieving a flicker-free display is a different topic.
 

If the display is dynamic, the high ESR row driver will cause flicker at a slower rate due to dynamic content of # of LEDs active in a row and at least 50% overall intensity.. agreed later.... after the Serial to parallel problem is fixed.

Then the efficacy is dim due to 12:1 ratio exceeding LED requirements which may risk fusing out the LED gold wirebond, when peak current is increased and not limited to LED MAX of say 100mA. Thus assuming 5mm LEDs you should limit this to 100mA with Ohm's law and Rs of each part including ULN200x then with . 5mm LED's are around 15 Ohms at 20mA and ~ 10 Ohms at 100mA. This must be included in OHm's law calc of current of Column to 8mA average and 100 mA peak with duty cycle 1/12.

Then you can keep the ULN200x but still need to choose Imax correctly. and expect only 40% brightness at 8mA /20,

- - - Updated - - -

A brighter display would have to limit the current to 5:1 Pk:rated average or push it to 6:1 but require another string of SIPO registers. for 6 rows and send data out two rows simultaneously. then mux 6:1. with an average current of 100/6 or 17mA.

- - - Updated - - -

In that case a 16 bit SIPO would reduce the number of chips in half vs a 8 bit SIPO
https://www.digikey.com/product-detail/en/M74HC4094TTR/497-7383-1-ND/1883913
 
Hi Klausst,

Thanks for explaining the procedures. I was rewriting the whole code and is half way but till now it seems to be promising both flicker free and much brighter (not brightest) than before. I will paste the code soon after the completion. Thanks again.
 

Regarding intensity and reasonable mux ratios of LED matrix displays, we need to know first if the intended usage is indoor or outdoor. Indoor LED modules are often using 1:8 or even 1:16 mux schemes. Outdoor modules with large LEDs mostly use static drive.
 
From what I understand is that the column is driven from the shift registers (source), and the rows are driven from the MCU (sink). If that is corrct, I can't see why the shift register needs to be shifted 120 bit for each row?
If you rearrange your program and circuit so the column is common, you may shift 1 column at the time, without rewriting the whole 120 bits register. Load the register with the leftmost bit set, display that column and clk the shift register 1 cycle, and display the next 12 LEDs in the next column. This way you need a higher display rate, but only 1/12 frequency of the shift register. This will be very easy to implement in bit-banging and give you more time to adjust the blanking between columns, if that is neccesary.

The ULN2003 is a very slow driver, due to it's darlington structure. A single transistor(+ base resistor) would be better and faster to control. To implement a column common drive you will need a transistor in each column.

If you want to have greater control over the brightness of the display, you will need drivers both in columns and rows anyway.
 
Hi Gorgon,
That is not possible because for all 12rows I have only one set of shift register array. If I sent data for the 1st row to the shift register then for the second to i should sent another fresh set of data to shift register. What you had said is possible only when each row have individual array of shift register.

I know ULN2003 is for slow process. But to reduce my wiring effort I choose ULN 2003. If I use transistors it may have 25ma of current capacity I use about 15ma for each led which means I need around 1 transistor for tow led which makes my work 10 times harder with wiring. I also looked for power transistors but most of them are used for low speed applications. So, finally I choosed ULN 2003.

- - - Updated - - -

Hi,



This is a misunderstanding - i think. Not pin 13 , but pin12 = RCLK.

Example:
* shift in 120 bits data for line1
* now give RCLK a positive edge, to send the data for line1 to the outputs.
* now enable the driver for line1 (line1 LED are active)
* now you may shift in 120 bits of data for line2 (still data for line1 are on the outputs of HC595 and the LEDs on line1 are still active)

--> switch from line1 to line2
* now disable driver for line1
* now give RCLK a positive edge, to send the data for line2 to the outputs.
* now enable driver for line2
--- (the three lines above need only some us of time. so the display is about 99% active)
* now you may shift in 120 bits of data for line3 (still data for line2 are on the outputs of HC595 and the LEDs on line2 are still active)

--> switch from line2 to line3
* now disable driver for line2
* now give RCLK a positive edge, to send the data for line3 to the outputs.
* now enable driver for line3
---
* now you may shift in 120 bits of data for line4 (still data for line3 are on the outputs of HC595 and the LEDs on line3 are still active)
... and so on.

the benefit is, that
* the display is 99% active, giving the most brightness
* there is no need to disable the display during transmit of 120 bits (same as above)
* there is no garbage on the LEDs during transmit
* you have plenty of time to slowly transmit the 120 bits (i recmmend to transmit faster than 120 bits per 1.6ms, for flickerfree display)
Slowly means, there is no need for 1Mbits/s, but at least 120bits/1.6ms = 75k bits/s = 13us/bit )

Klaus


Hi Klaus,

I have tried like the way you have said. It worked now. The display is much prettier than ever there is no flickering and it is also giving out a good brightness which I didn't got previously by sending out 120 bits of data. What my mistake was:

previously in my code is the row is switched off soon after the row is switched on which made the led to glow for a least time.

what I did is I changed the switching off task before the switching ON and that too for the previous row as you said. Which worked well and now the display is flicker free and has a good brightness.

Even though the display is not having the maximum brightness it has a good brightness than before. It may be due to the hard ware I'm using which is for low speed running operations. I believe some more fixes can do it much more better. Anyway Thank you very much for your guidance. I thank all of the tech experts replied here for your time and knowledge which I can make use for the next Led display board. Thank you.
 

Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top