Go Down

Topic: 12V 7 segment LED display (Read 11 times) previous topic - next topic

point5

Hi, I have been looking around for a nice solution to driving 3no. large 7 LED segment displays @ 12V and came across this thread: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1212882269/15 - the last post in the thread is very neat so happy to have found a good solution I headed out to find some Allegro 6278EAT chips for the project..... only to find they are out of production :-(

I'm wondering if anyone can suggest an alterntive chip or an equally nice solution to the problem....

Chagrin


CrossRoads

Are the segments common anode or common cathode?
Designing & building electrical circuits for over 25 years. Check out the ATMega1284P based Bobuino and other '328P & '1284P creations & offerings at  www.crossroadsfencing.com/BobuinoRev17.
Arduino for Teens available at Amazon.com.

point5

Hi, sorry, should have mentioned that... the displays are common cathode.

Thanks Chagrin, I will take a look at the 2 chips you mention.

point5

Hi, looks like the TLC5916IN could be a good option as it can be driven by 3V3 and respects the http://arduino.cc/en/Tutorial/ShiftOut I think?.... which would be a great help :-)  May I ask what other components I should get in the order to make this work?

Chagrin

Crossroads' question applies here; if your digits are common cathode then these chips won't work. Both chips (and the A6278) sink current.

I'm not aware of any chips in the same style as these that source current.

CrossRoads

UDN2981 can control sourcing of current.
Designing & building electrical circuits for over 25 years. Check out the ATMega1284P based Bobuino and other '328P & '1284P creations & offerings at  www.crossroadsfencing.com/BobuinoRev17.
Arduino for Teens available at Amazon.com.

point5

I Don't think I fully understand the current sink issues.... But learning all the time.  Would I be right in thinking the TPIC6B595 could be a good option here?

Chagrin

Source is a positive output and sink is a negative output. As you mentioned your segments were common cathode (they all share a single, negative output) that would mean that the TLC5916 etc. would not work since all of their outputs are negative.

The TPIC6B595 and similar shift register chips would probably be your only option. However, unlike the TLC5916, the TPIC6B595 is not a constant current device so you will need to use a resistor on each output to limit current.

CrossRoads

Here's a way to do it.
Need a High Voltage current sink such as a TPCI6B595 (or 7 discrete transistors, or a ULN2003, with Arduino providing the latching data function), and 3 NPN transistors (or 1 for every digit you have).
The current is provided from 12V thru a current limit resistor to each segment. All digit segment A are connected in parallel, all B's in parallel, etc.
So for digit1, you will control which segments are on by letting the segments be high and taking the common cathode low. Segments you want all have their anodes pulled low by the shift register.
Drive anodes, drive cathode.
Drive anodes, drive cathode.
Repeat for remaining digits.
Cycle thru quick enough to be flicker free.
Designing & building electrical circuits for over 25 years. Check out the ATMega1284P based Bobuino and other '328P & '1284P creations & offerings at  www.crossroadsfencing.com/BobuinoRev17.
Arduino for Teens available at Amazon.com.

point5

Thanks for taking the time to explain Chagrin & CrossRoads, its very much appreciated.... and I am starting to understand a little better.

I can see how your circuit works CrossRoads, this might well be the way forward.

May I check my thinking with you on a couple of points?

- Using a MEGA, I could simply use 3 X UDN2981 with a pin dedicated to each segment of each digit (prefer to use a shift register however so as to learn some more).

- Could one use 3 x 74HC595 shift registers to control 3 x UDN2981 - perhaps a bit long winded but again it might be a simpler project for me in terms of learning :-)

Chagrin


- Using a MEGA, I could simply use 3 X UDN2981 with a pin dedicated to each segment of each digit (prefer to use a shift register however so as to learn some more).

Yes, but in practice you'd find this difficult. It's a lot of wires to connect to the Mega and the code would be much larger and clumsier.


- Could one use 3 x 74HC595 shift registers to control 3 x UDN2981 - perhaps a bit long winded but again it might be a simpler project for me in terms of learning :-)

That would work as well. I'd suggest using the TPIC6B595 or other shift register though so you could eliminate the need for the UDN2981 (the TPIC6B595 is 150ma per output where the 74HC595 is 6ma).

scharkalvin

It may be easier to find and use discrete transistors than to hunt up display driver IC's.

For common cathode displays the segment drivers between the Arduino and the display may be a pair of transistors. The driver is a PNP with it's emitter to the display VCC, the collector to the display digit, and the base connected to the collector of the NPN pre-driver through a resistor.  A 1 meg ohm resistor goes from the driver base to display VCC.  The pre-driver emitter is grounded and the base goes to the Arduino output via a resistor.  The value of the series resistors should be between 1-10k ohms depending on the desired collector current and transistor hfe.  A current limiting resistor is placed between the display and the transistor, it's value based on the display forward drop, supply voltage and desired current limit.  (VCC-VF/I).
The common cathode segment drivers may be NPN transistors, emitter to ground, collector to common cathode, base to Arduino output via a resistor (1-10k).
Transistors need to handle the desired current and voltage.   




CrossRoads

You could lose 1.6 to 1.8V across the PNP drive transistor
From the UDN2981 datasheet page 3, for instance,
Collector-Emitter Saturation Voltage
http://www.futurlec.com/Others/UDN2981A.shtml
which could mean not all of the LEDs in a segment turning on.

With multiple segments and the NPN on the cathode, this could be a lot less drop. WIth N-channel MOSFET, even smaller.
Designing & building electrical circuits for over 25 years. Check out the ATMega1284P based Bobuino and other '328P & '1284P creations & offerings at  www.crossroadsfencing.com/BobuinoRev17.
Arduino for Teens available at Amazon.com.

scharkalvin

#14
Apr 25, 2012, 09:32 pm Last Edit: Apr 25, 2012, 09:38 pm by scharkalvin Reason: 1
I was assuming using a multiplex driver.  The arduino can only drive up to 5v at 20ma per output.  That's why you need external drivers for a 12v display.  The anode driver which is connected to the 12v line would use a PNP transistor driven to saturation  to control the 12v to the anodes of the display.  The NPN predriver inverts the logic and protects the arduino from the 12v present needed to turn OFF the PNP transistor.  The  cathode drivers switch the display cathodes to ground and probably won't see more than 5v so they could be driven directly by the arduino unless more than 20ma of current is required.  In a common anode display this might work, but in a common cathode display an NPN transistor would be needed driven by the arduino to handle more than one segment's current.  The SEGMENT drivers have the current limiting resistors, the DIGIT drivers do not.  I don't think you would have a problem with uneven lighting of the segments in a multiplexed scheme with external transistors handling the extra voltage/current.  Those IC display drivers are bipolar transistors inside don't forget.  (Some us darlington connected transistors to reduce the drive and you can use external discrete darlington transistors as well).

You probably do need to use a high enough driver VCC supply voltage to account for the emitter-collector sat voltage in both the anode and cathode drivers, the display forward voltage, and what's lost in the current limiting resistors.  Also the current limiting resistors have to dissipate the required power.

Go Up