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.

Low Brightness DOt Matrix Leds

Status
Not open for further replies.

garg29

Advanced Member level 1
Joined
Nov 17, 2004
Messages
443
Helped
25
Reputation
50
Reaction score
10
Trophy points
1,298
Activity points
3,593
mic5821 led matrix

hi,

I'm trying to build a Moving message Display(for which discussion has been going on long over here). I took the idea from a elektor issue. The Leds are glowing very Dull, Brightness is very low. As i glow more number of leds per matrix the brightness goes more down. Please see the attachment, it's the circuit diagram i have taken from elektor issue.

With best regards,

Garg
 

low-brightness led

For every display you add there is a proportional decrease in the average led current. You have to decrease the collector resistors proportionaly to keep the same brightness. There is a limit however. You can´t surpass the absolute maximum pulsed current allowed for the leds. When this limit is achieved you have to completely duplicate the circuit to continue increasing the number of displays.
Best regards
 

Thanks pauloynski, but that wasn't a solution. If I glow even one led out of 35 leds(5x7) brightness is poor but when i glow more number of leds it futher decays.

With best regards,
Garg
 

Are you sure you are not having problems with you power supply? Can you measure the current on a led with an oscilloscope?
 

As a general comment, you can expect more than poor brightness with that circuit due to the unfavourable 1:64 duty cycle, which results in an. average LED current of about 0.6 mA. To my opinion, a tenfold value of 5 to 10 mA would be rather suitable.

I assume, you understand that the cathode drivers are the multplex drivers, activated one by one, while the anode drivers are switched on simultaneously. Unfortunately the 2803 voltage drop isn't constant, so the LED current decreases by several 10% when activating 1 to 8 rows.
 

Thanks pauloynski. I don't have an oscilloscope !!!! my bad luck.

Thanks Fvm. I'm sending the colum data serially to ULN2803 ICs then activating the 1st Row thru T1, then the serial data for next row then activating T2...like this.

Please see the code below, I'm using 10 Displays instead of 12 as shown in diagram. From this code I'm trying to display "A" on all the Displays. The code is working fine but the only problem is brightness: -


FvM what circuit do you suggest.

Thanks once again,

With Best Regards,
Garg

Code:
#include	<pic.h>

#include	"delay.h"




#define	PORTBIT(adr, bit)	((unsigned)(&adr)*8+(bit))

static bit	Data  		@		PORTBIT(PORTD,7);
static bit	Clock  		@		PORTBIT(PORTD,6);
static bit	Clear  		@		PORTBIT(PORTD,5);



	
unsigned char i;





void Write74164(unsigned char C1)
{    
	
	unsigned char DV1;
	unsigned char i,d;
	
	
	DV1=C1;
	for (i=1;i<6;i++)
	{
        Data = (DV1 & 0x10) ? 1:0;
		Clock=1;
		d++;
		Clock=0;
		DV1<<=1;
	}
	
	
	DV1=C1;
	for (i=1;i<6;i++)
	{
        Data = (DV1 & 0x10) ? 1:0;
		Clock=1;
		d++;
		Clock=0;
		DV1<<=1;
	}
	
	
	DV1=C1;
	for (i=1;i<6;i++)
	{
        Data = (DV1 & 0x10) ? 1:0;
		Clock=1;
		d++;
		Clock=0;
		DV1<<=1;
	}
	
	
	
	
	DV1=C1;
	for (i=1;i<6;i++)
	{
        Data = (DV1 & 0x10) ? 1:0;
		Clock=1;
		d++;
		Clock=0;
		DV1<<=1;
	}
	
	
	DV1=C1;
	for (i=1;i<6;i++)
	{
        Data = (DV1 & 0x10) ? 1:0;
		Clock=1;
		d++;
		Clock=0;
		DV1<<=1;
	}
	
	
	DV1=C1;
	for (i=1;i<6;i++)
	{
        Data = (DV1 & 0x10) ? 1:0;
		Clock=1;
		d++;
		Clock=0;
		DV1<<=1;
	}
	
	
	
	
	DV1=C1;
	for (i=1;i<6;i++)
	{
        Data = (DV1 & 0x10) ? 1:0;
		Clock=1;
		d++;
		Clock=0;
		DV1<<=1;
	}
	
	
	
	
	DV1=C1;
	for (i=1;i<6;i++)
	{
        Data = (DV1 & 0x10) ? 1:0;
		Clock=1;
		d++;
		Clock=0;
		DV1<<=1;
	}
	
	
	DV1=C1;
	for (i=1;i<6;i++)
	{
        Data = (DV1 & 0x10) ? 1:0;
		Clock=1;
		d++;
		Clock=0;
		DV1<<=1;
	}
	
	
	DV1=C1;
	for (i=1;i<6;i++)
	{
        Data = (DV1 & 0x10) ? 1:0;
		Clock=1;
		d++;
		Clock=0;
		DV1<<=1;
	}
	 
	Clock=1;
		d++;
		Clock=0;

}





void main(void){
	int x;
	
	TRISB=0x01;
	PORTB=0x01;

	TRISC=0x00;
	PORTC=0x00;
	
	TRISD=0x00;
	PORTD=0x00;
	
	TRISE=0x00;
	PORTE=0x00;
	
	
	
	PORTC=0xFF;
	Write74164(0x00);

	
for(;;)
	{
		
		
		//0x1E,0x12,0x12,0x12,0x1E,0x12,0x12
		Write74164(0x1E);
		PORTC=0b11111110;
		DelayMs(10);
		PORTC=0b11111111;
		Clear=0;
		DelayMs(1);
		Clear=1;
		
		Write74164(0x12);
		PORTC=0b11111101;
		DelayMs(10);
		PORTC=0b11111111;
		Clear=0;
		DelayMs(1);
		Clear=1;
		
		Write74164(0x12);
		PORTC=0b11111011;
		DelayMs(10);
		PORTC=0b11111111;
		Clear=0;
		DelayMs(1);
		Clear=1;
		
		Write74164(0x12);
		PORTC=0b11110111;
		DelayMs(10);
		PORTC=0b11111111;
		Clear=0;
		DelayMs(1);
		Clear=1;
		
		Write74164(0x1E);
		PORTC=0b11101111;
		DelayMs(10);
		PORTC=0b11111111;
		Clear=0;
		DelayMs(1);
		Clear=1;
		
		Write74164(0x12);
		PORTC=0b11011111;
		DelayMs(10);
		PORTC=0b11111111;
		Clear=0;
		DelayMs(1);
		Clear=1;
		
		Write74164(0x12);
		PORTC=0b10111111;
		DelayMs(10);
		PORTC=0b11111111;
		Clear=0;
		DelayMs(1);
		Clear=1;
		
		 
		
	

	}

}
Σ
 

FvM hit the nail on the head. That's a poor circuit design. It should have been designed with seven high current P-Fet high-side row drivers with a very low Rds(on) spec' and with eight 74HC595's driving eight ULN2803's for the sinking column drivers.

You would scan rows instead of columns for a 1/8th (12.5%) duty cycle, instead of a 1/64th duty cycle, which reduces 'peak' current requirements in order to improve 'average' current and display brightness. Since you'd be scanning rows, you would move the LED current limiting resistors onto the '2803 sinking column driver outputs.

Your display driver would basically load 64 bits of serial data into the daisy chained 74HC595's and turn on one of the P-Fet row drivers to display a single row.

You could also use a Micrel MIC5821 or a TPIC6C595 or similar 8-bit serial-to-parallel sinking driver IC instead of the 74HC595 + ULN2803 IC combination. Or you could use one of the newer 8-bit or 16-bit serial-to-parallel "constant current" sinking drivers which eliminate the need for LED current limiting resistors.

Regards, Mike
 

Your multiplex scheme isn't as it should be according to the circuit. As Mike also clarified, cause of the anode current limiting resistors, one cathode (column) and multiple anodes (rows) should be switched on at a time. It's not said, that the results are much better then, but it's necessary to get (almost) constant brightness for individual LEDs.
 

Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top