Hello friends, I need to connect 6 multiplexed 7 segment LED display digits to a 9S08QE8CLC MPU. Considering 1 ms per digit on-time ( 1/6 duty cycle common cathode active), is it possible to drive the 7 segments through current limiting resistors for each segment and a MOSFET for switching each cathode to ground ? I thought 27 Ohms limiting resistors for a 60 mA peak current for each segment, considering ~ 1.5 V drop @ 60 mA with 3.00 V power supply, 10 mA regular LEDs. The idea is not to use driver MOSFET's or buffers.
Any comments will be very much appreciated.
I suggest that this approach would grossly overload the MCU. The maximum allowable combined source or sink current for all output pins is 100mA. The segment current would need to be reduced to about 12mA to meet this criterion.
An assumed LED voltage drop of 1.5V seems too small, even for a red display. You would typically need to allow for 1.6 - 1.8 volts for a red display, and more than 2 volts for other colours. For Vdd of 2.7 volts, the source resistance for each output pin will have a maximum value of about 50 ohms (0.5 volts at 10 mA), but there could be considerable variation, maybe 20 - 50 ohms. This resistance would be effectively in series with the external current limiting resistor. With the low values of external resistance that you were proposing, there could be poor matching of segment current.
Thank you Mac. My approach won't work then.
The peak current would be 6 times the total digit mean current, for example 80 mA per digit with decimal point x 6 = 480 mA to obtain good light intensity, and I don't think the MPU will withstand this much peak. Anyway , I don't remember very well but I think that I have seen some application with 4 digits somewhere. I will check.
I guess if a 74HC244 could be used as digit buffer. I used this in the 5 V world and it worked for me perfectly well, as the buffer has its own current limit on top of the series resistors for the segments.
I have done this using a PIC16f54, no resistors at all or any extra parts.
It's also possible to use 74hc595 for the segments, and LCX244 for the sinks.
I'd simply try to connect the display with small resistors, and if the brightness is not enough,
try without the resistors. Reading datasheets it's sometimes
not clear if the current is a built-in limitation, or a margin that must not be crossed.
I did not really see a reason why these small chips would be unable to handle some 10s mA of current.
At 5 volts the SOIC 74hc595 heat up a little, at 3 volts they remain cool.
Some HC chips can work at at less than 5 volts. The LCX family is designed for 3 volts,
even it it is possible ot use it at 5 volts.
Using LED displays or LED matrix at 3 volts, it's often not much sense to inline small resistors.
There is too much brightness loss already.
One circuit I built, even has a bypass. There are 5x 2.2k resistors for the columns, and a switchable bypass, bridging the resistors using a LCX244.
Thank you, I have used P-CHANNEL and N-CHANNEL MOSFET's, logic level ones, and the result is excellent.
In this case I would like to know if the LCX244 @ 3V could boost the port to drive the segments directly without resistors as I have used in 5V logic. These 244's have internal current limiting. The 3 V option , I'd never tested. For the common cathodes I would happily use MOSFET's.
The LCX244 is a logic driver package, and does not appear to provide any constant current limiting at its outputs - there is no current limiting specification. The output resistance will be that of the P-channel or N-channel MOSFET within the device, which is supply voltage dependent, and will have significant unit-to-unit variation between devices, and possibly between the outputs within a single package.
From the datasheet, the worst case resistance may be calculated as about 25 ohms for a supply voltage of 3.0 volts, and 33 ohms for 2.7 volts. The "best case" is not specified, but a unit-to-unit range of 8 - 25 ohms might be typical for 3.0 volt operation.
In addition, there may be unit-to-unit variation of the LED forward voltage. For red LED displays, a voltage range of 1.6 to 2.0 volts may be possible.
Assuming that the MOSFET driver for each digit has a very low output resistance, maybe about 1 ohm, we can calculate the likely unit-to-unit variation of LED current for different values of external series resistance for each segment. Any significant variation will result in different brightness for each digit, and variation of brightness between segments of the same digit.
Using the estimated figures given above, the unit-to-unit varition of segment current can be calculated -
Segment resistor = 0 ohms: 40-170 mA
Segment resistor = 22 ohms: 21-47 mA
The maximum allowable driver output current is specified as 50 mA per pin.
My conclusion would be that the elimination of segment resistors from the circuit board layout would risk a poor, uneven performance of the display, and may risk over-stressing the segment driver.
I guess the current drive capacity is limited, true.
Imagine if 8 phases are used for 4seg display. Average current is 1/2.
At any time, max. 8 segments are on, average 4 segments only.
There is also a more complicated scheme, where at any time, only one segment is on,
however, all digits can be on.
Digital MOSFET is good for sink or also LCX244. I never tried LCX244 to drive segments,
only 74hc164 and 74hc595.
There are some photos here: http://pic.hitechworld.org/16f54pcb.html
At 3 volts brightness difference between "1" and "8" is neglible, it's barely visible.
And it could be compensated in software.
My idea is it to use a small microcontroller only for the display,
to handle all the refresh, and use serial interface.
For your calculation, also LED has internal resistor.
3v-1.6 volts=1.4 volts.
MCU internal resistance 15 Ohms
LED internal resistance 10 Ohms
MOSFET 5 Ohms
25 Ohms -> 56 mA
8 phases multiplex -> 28mA
These numbers are not true, only an estimate. It is possible to drive the display directly,
if you consider, at any time only one digit is on.
It's even possible to use it at 5 volts, permanently.
There can be variation between different displays, or variation between displays within one batch however in reality, so far this has turned out to be totally neglible.
It would be interesting if you can try direct drive for 9S08QE8, and give information about the results.
74HC595 have 120 Ohms equivalent resistance (TI datasheet) built in however I don't think it's an Ohm resistor.
If the voltage drop is less than full Vcc, the resistance might be different.
The conclusion is at 3 volts, using 8 phases multiplex, the brightness for 4digit LED display seems to be reasonable, no overheating can be seen, and brightness variation is barely visible. Why use all the extra parts when they are not required? Sure for professional application long time testing is required, and maybe software compensation for the brightness, but I don't really think there will be issues about that.
Thank you very much tetsu-jp and bigmac.
I have been producing medical equipment for 20 years now and the multiplexed arrangement of 8 digits with a single 74HC244 @ 5V using limiting resistors with each segment works nicely. No difference between segment brightness. I had never serviced equipment because of display failure.
YES, you are right when you say that a logic buffer is just that. It is not intended for driving multiplexed LED displays. But it seems to work over time. The average current is kept at a reasonable value and power dissipation too. Something similar happens when using bipolar transistors for the common cathodes or common anodes. You can use tiny transistors and they will perfectly withstand the peak current of a complete digit.
Proof of that is my old Motorola's MEK68000D2 evaluation kit ( ha ha ha ) from where I first learn this. It multiplexed 6 digits using signal transistors.
I don't have any experience with the X device but I can speak about the HC244. The HC244 can perfectly well work for the 3V world. I think that I will give it a try buffering the port.