|
|
View previous topic :: View next topic |
Author |
Message |
valemike Guest
|
PIC to drive 7segment LED |
Posted: Wed Jun 02, 2004 8:19 am |
|
|
I want to drive a Common Anode 7 segment LED(s) with a PIC. Each segment would likely sink up to 15mA each into the port pin if i connected each segment to a PIC port pin through a current limiting resistor. E.g. 5V/330ohms = 15mA.
Now imagine 7 of these segments being on at the same time, not to mention a decimal point -- thus a total of 8 segments. Thus 8x15mA=120mA being sunk into the PIC, and thus Vss sees 120mA of sink current from the LEDs alone!! A PIC can only take 200mA of sink current total
This is something I overlooked in the past and all was fine (except of course perhaps some occasional unknown erratic behaviour
I can think of a few ways to overcome the sink current crisis. What have you guys done in the past? This is what i'm thinking...
1. I can just use a common cathode LED display. Thus all the current will be sourced and each pin can source up to 25mA.
OR
2. Hook the display up to the unregulated input of the 5V regulator. Then use a darlington transistor array (e.g. ULN2004)
OR
3. Use a darlington transistor array as in (2) but hook up the display to the regulated 5V rail. (I'll definitely have to prepare myself for a HOT heatsink.)
Any suggestions? |
|
|
Ttelmah Guest
|
Re: PIC to drive 7segment LED |
Posted: Wed Jun 02, 2004 10:42 am |
|
|
valemike wrote: | I want to drive a Common Anode 7 segment LED(s) with a PIC. Each segment would likely sink up to 15mA each into the port pin if i connected each segment to a PIC port pin through a current limiting resistor. E.g. 5V/330ohms = 15mA.
Now imagine 7 of these segments being on at the same time, not to mention a decimal point -- thus a total of 8 segments. Thus 8x15mA=120mA being sunk into the PIC, and thus Vss sees 120mA of sink current from the LEDs alone!! A PIC can only take 200mA of sink current total
This is something I overlooked in the past and all was fine (except of course perhaps some occasional unknown erratic behaviour
I can think of a few ways to overcome the sink current crisis. What have you guys done in the past? This is what i'm thinking...
1. I can just use a common cathode LED display. Thus all the current will be sourced and each pin can source up to 25mA.
OR
2. Hook the display up to the unregulated input of the 5V regulator. Then use a darlington transistor array (e.g. ULN2004)
OR
3. Use a darlington transistor array as in (2) but hook up the display to the regulated 5V rail. (I'll definitely have to prepare myself for a HOT heatsink.)
Any suggestions? |
Realistically, most users would add a driver IC, for this situation. You talk about the Vss limit, as though it is fixed for all PIC's. It is not. For instance, the 16F877, can draw 300mA on Vss, but a maximum on the combination of various ports, of 200mA. Your total dissipation when using the unregulated input to the voltage regulator, will be equal to that expected on the regulator in the latter case, but will occur in the dropper resistors instead. You don't say what your incoming voltage is, but assuming 12v, and a total demand of 250mA, you only need to dissipate 1.75W in the regulator. Even a 'clip on' 20C/W heatsink will only give a 35C heat rise above ambient. Personally, I'd use a switch mode supply instead.
Best Wishes |
|
|
Kenny
Joined: 07 Sep 2003 Posts: 173 Location: Australia
|
|
Posted: Wed Jun 02, 2004 6:23 pm |
|
|
A seven-segment led display driver is the first choice - I usually use the SAA1064 i2c chip. It does display multiplexing and the current in the segments is settable in 3mA increments.
I have done it along the lines you mentioned for eight digits, but doing the multiplexing with the pic. A ULN2803 was connected to all the led segments and decimal points via eight resistors (the corresponding led cathodes of each digit were joined together).
The common anodes were each switched in turn to +5V with a 2N2907A PNP transistor. Because the display was multiplexed, there was time for
data to be taken from a shaft encoder ic on the same port as the ULN2803, scan switch states, scale the data, etc. |
|
|
yerpa
Joined: 19 Feb 2004 Posts: 58 Location: Wisconsin
|
Driving 7-segment LED from PIC |
Posted: Fri Jun 04, 2004 1:44 pm |
|
|
There are lots of good seven-seg numeric displays that are plenty bright on three or four milliamps per segment. Look for high-efficiency red displays. |
|
|
Guest Guest
|
Try the MAX |
Posted: Tue Jun 08, 2004 7:26 am |
|
|
Little late on this, but I have had good luck with the Maxim MAX7219 and MAX7221 parts for driving up to 8 (eight) 7-segment LEDs. They talk to the PIC using SPI, and about the only external component needed is a current-limiting resistor. Brightness can be controlled by setting a register. To minimize current draw, use some "super bright" red LEDs, as already suggested.
You probably already know this, but if you register with Maxim/Dallas (or is it Dallas/Maxim?) you can get free samples for your prototyping in small quantities. Sent by FedEx, no less. Lets you try before you buy.....
Mike |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|