Go Down

Topic: 'High' voltage 7-seg LED interface (Read 3660 times) previous topic - next topic

smartroad

Hay all,

I need to interface 3 2.3" 7-seg displays to the Arduino. I'd like to use something like the MAX72xx but the forward voltage of the segments is 9v @ 20mA.

I have been looking around but as yet not found anything that would work. Would it be possible to connect transistors (MOSFET or NPN?) to the MAX72xx to provide the higher voltage needed? Or am I missing the perfect replacement somewhere!

Cheers!

Graynomad

#1
Jul 21, 2010, 12:59 am Last Edit: Jul 21, 2010, 01:20 am by graynomad Reason: 1
Assuming the LEDs are commom anode any driver/darlington type chip will work you just have to raise the voltage they are driven with.

As you say those LEDs have about 9v forward voltage so if you run them from say 12v things should work fine.

If you have a look at my speedo project http://www.robgray.com/grayit/embedded/current/speedo/schem/index.php and check out the schematic you'll see that I'm using TPIC68595 high-current shift regs and the LED's anodes are connected to the pre-regulator (battery) voltage which is a nominal 12v.

At 20mA the high-current drivers probably aren't really required but it seemed like a good idea at the time.
Rob Gray aka the GRAYnomad www.robgray.com

Jeremy1998

I love the ULN2803A chips... There are 8 transistors per chip, so you could power a 7 segment with a decimal with one chip and your controller. Keep in mynd the ULN2803A is only an array of transistors, and that you need to use another chip to actually send the signals. You would need 420mA to power 21 segments, so a 1A power brick (REGULATED!!!) would be more than enough...

This solution ONLY works if the displays are common ANODE (One posotive, and seven negatives, one for each segment.)!

smartroad

Thanks, annoyingly mine are common cathode (sorry should have said). I'll look into other options as well, using these ideas as starting points. But if anyone else knows a solutions I would be more then happy to hear!

smartroad

#4
Jul 21, 2010, 03:59 pm Last Edit: Jul 21, 2010, 04:00 pm by smartroad Reason: 1
If I were to use a MAX72xx, could I use some form of transistor on the output to shift the voltage level? Or alternatively, is there another library for Arduino that would enable multiplexing from the board itself?

Jeremy1998

Well, you CAN do that, but I think Shift Registers are easier. You can use 21 NPN transistors to power the segments from the shift registers... You can probably find something like the ULN2803A, but they show ALL pins. I will also look for these! Basically you needs at least 21 NPN transistors...

Graynomad

#6
Jul 21, 2010, 04:25 pm Last Edit: Jul 21, 2010, 04:35 pm by graynomad Reason: 1
How about this then?



It inverts the logic but that doesn't matter. Off the top of my head mind, I haven't tried it but it should work, write high from Arduino and the 2803 shorts across the segment thus turning it off. Write low and 2803 turns off and the segment lights via the resistor.

Quote
is there another library for Arduino

Library or not you still have to handle the hardware. Anyway the multiplexing is easy once you get your head around it.

Actually why bother, just use three TPIC68595s (high-current version of the 595 SR) and don't mux, three pins, three chips and you're done, or are you short of board space (unlikely with those huge displays).
Rob Gray aka the GRAYnomad www.robgray.com

smartroad

That is the idea I was just fleshing out Graynomad! I was just trying to figure out any reason why it wouldn't work.

Previously had thought of using individual darlingtons:



(Ignore that they are the wrong displays and that I haven't put any resistors in place and they are the wrong model of transistor, this was just to get an overview of the result, not the finished product :))

smartroad

"Anyway the multiplexing is easy once you get your head around it."

Don't exactly have a problem with it, just concerned with the lack of pins on the Arduino and that some are 'reserved'.

Was reading up how to bit-bang the ports and I need a full 8 bit port, but the only one available I am warned of of using as it is the TX/RX pins for programming. I have ideas in place to mix ports but it would just be easier if I could use just that one. As an aside, I am not using serial for the project, would hamper the programming of the chip if used the RX as an output?

Graynomad

#9
Jul 21, 2010, 04:41 pm Last Edit: Jul 21, 2010, 04:44 pm by graynomad Reason: 1
Your post and my edit passed in hyperspace, so just on case you missed it

Quote
Actually why bother, just use three TPIC68595s (high-current version of the 595 SR) and don't mux, three pins, three chips and you're done, or are you short of board space (unlikely with those huge displays).


Solves your pin problem.
Rob Gray aka the GRAYnomad www.robgray.com

smartroad

I can't find TPIC68595 on either Farnell or RS Components, am I being exceedingly dumb here? :LOL:

Graynomad

Oops, my bad.

TPIC6[glow]A[/glow]595

Well it sounds almost the same  :-[

Here's a data sheet

http://www.robgray.com/grayit/embedded/components/datasheets/TPIC6B595.pdf

And I just realised that I've used the

TPIC6[glow]B[/glow]595

That looks almost the same.

Both available at Farnell and Digikey.

Sorry about that, I cut and pasted from my schematic, obviously that's wrong as well.
Rob Gray aka the GRAYnomad www.robgray.com

smartroad

:lol: Graynomad

Ordered a couple of the A's. Now I just need to figure out how to get the info to them!

Cheers for your help guys!

smartroad

Yes! Got one display working just to make sure that it all works and to test out coding.

http://www.youtube.com/watch?v=GE-piyb_hMI So cool to see a 7-seg display connected by only 3 wires!

Next is to figure out how to split an int into its base units. Have to get the minutes from an int var and pull out the 10's and 1's from it. Thinking cap on!

Graynomad

Try

Code: [Select]

tens = value / 10;
units = value % 10;
Rob Gray aka the GRAYnomad www.robgray.com

Go Up