Continue to Site

Welcome to our site!

Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

  • Welcome to our site! Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

tri-stateable octal line driver "on steroids"

Status
Not open for further replies.

ichrispyl

New Member
Hello!

I am in need of a tri-stateable octal line driver "on steroids". Basically i need something that will drive at least 100mA per pin and have tristate ability . 200-300mA would work even better. I will be using it with an MCU to push more current into an LED matrix.

I cannot use a hi-current shift register because I need tri-state abilities at the anode port of the matrix.

Anyone know a chip that can drive that much current?
 
is this for a touch sensing application by chance?

such a beast does not exist unfortunately... I have a few posts on this forum, looking for a similar solution. if your application is not for touch-sensing, perhaps the MAX6956 from Dallas-Maxim would work... it is a fairly robust (high current) tri-state port exapander, controlled via I2C

the only solution I came up with was to build the gates discretely, which required something like 5 mosfets, per gate, to emulate the high side, low side and high-z

this of course, meant it never was built, the sheer number was too great for my feable skills.

another poster on this forum pointed out his/her method was to scan the array one column over and one row down. I expanded this into thinking the array could be scanned one row up or down and one column left or right of the driven diode... this would allow for 4 sensor readings to take place, with one active diode. this could be further expanded for example every other row in a column could be active, and diodes on either side of that column on non-active rows could be sampled.
 
Robotics to the rescue!

I've seen motor drivers made out of "stacked" 74LS245's....you could use the same application and run the current through them in parallel. Good luck!

-Infamous
 
thats a good idea, and it should work with any of the 'dumb' ics ... I dont think it'd work for fancier I2C units but maybe..

I wonder if the OP needed individual tristate control, or can deal with 'all at once' tristate, like a disable pin
 
justDIY said:
thats a good idea, and it should work with any of the 'dumb' ics

I'm not going to take credit (can't remember where I read it....it was a while ago....) but thanks. :D

justDIY said:
... I dont think it'd work for fancier I2C units but maybe..

It might work for I2C if they're tied together/have the same address....

That'd be interesting.

-Infamous
 
Actually you guessed right... I will be implementing some LED touch sensing with my project. I've gotten to the character displaying portion, not quite to the sensing part yet. I am just planning ahead with the ability to turn the anodes to high-Z.

The problem I am experiencing is that parts of the character displayed on the matrix are brighter, some are dimmer. Rows for example with only two elements on are much brighter than elements in a row with six elements on. I just cannot get enough current out of my MCU to drive all the LEDs are a decent emission, so I need to find a way to a driver that will push more current, yet still have the ability to go high-Z. :shock:

It would be great if I could control individual pins to go high-Z. That way I can control reverse bias one LED and have the neighboring forward biased.
 
attempting to use the display for a dual purpose is going to be a real nightmare ... especially how do you plan to get good resolution and response time on the array, while still having it display data ... a high response time is going to make the array appear solid on, as seen in the NYU videos

as far as having parts of your led matrix appear dim, that is a driving problem... here are my thoughts

the easiest example setup would be like this... your array is N columns by 8 rows (the number of columns isn't important). for the columns, you use ULN2803 (or something like that) darlington current sink drivers... they're good to 500mA per column.

for the rows, you use PNP darlington array or P type transistors (fet or bjt).

you load up all your column data (serial shift registers work best to control the darlington drivers), and then scan your rows 1...8 to keep the current demands on your power supply low.

with this setup, you should be able to build an led sign as big as you want, without overloading your controller.

of course, this doesn't help for touch sensing. as far as I can tell, the two tasks are mutually exclusive.

you might want to look into another application, using leds and sensors, called internally frustrated reflection. you shine tighly focused leds through a plane (like a piece of plexiglas), with detectors opposite the emitters. foreign objects contacting the plane will cause some of the light to escape the plane, registering a change in the detectors. so a clear sheet of plexiglas covering your led matrix would allow you to touch sense, without having to figure out how to multitask the display.

another possiblity may be to use a common cathode bicolor matrix. your data would be displayed using the green diodes, and the touch sensing would be performed using the red diodes... the visual result should be yellow lettering on a red background
 
No go with the raster scan. it's just too dim because the avg current gets smaller with you bang one LED at a time. My ATMega32 maxes out at 20mA/port. It can't drive 20mA on all the pins at once.

So here is are all the problems I need to solve if I want the LED displaying and sensing to work:

1) be able to source 20mA/pin for each anode.
2) be able to sink 160mA/pin for each cathode
3) be able to turn a specific anode pin to high-Z
4) be able to reverse bias cathode
5) be able to turn the cathode into an input and sense the charge you just put on the LED by reverse biasing

I had an idea to use an SN74ABT244 to drive the anodes @ 32mA each, and then use the ULN2803A to sink the current on the one common anode. That would work to display fine and solves #1 and 2.

However, in terms of sensing, there is no way to turn individual pins on the line driver to high-Z. It's either all the pins source/sink or all are high-Z.
So there is no real way to drive one LED on, and then reverse bias the neighboring LED to its corners. There goes #3. BANG.

I can reverse bias the LED by sourcing the darlington. OK to #4.

And even if I could do #3, I cannot sense that charge dissipating from the LED since the darlington is sinking everything. #5 BANG.

I think using the LED matrix as a display and touch sensor is kaput. The only other way I can think of through the raster scanning. I guess find a way to increase the average current 8 fold, and be able to sink it.. while still keeping high-Z functionality on all 8 pins.

IF only there was an MCU that could source/sink 160mA per pin.
 
you could build your own tri-state logic gates from discrete components ... boy would that be a real pain in the keester but you could use a beefy transistors were needed.

I think i asked on this forum some time ago how to build one from discretes, but pretty much just got wise-crack answers

of course, theres always **broken link removed**
 
I thought about that frustrated total reflection in my project(this sensing was only a small component) and figured there would be too much fabrication and ME work. My partner and I are EE and CPE, so that's out of our league. We'd much rather work with electronics and sw so we're going to use a proximity sensor from Qtouch. $2.25 is worth it instead of the pain in the ass we're going to have to do to get the LED sensing working. And in two quarter of work... I'll opt for the easier solution.

So LED matrix, w/ a proximity sensor beneath it, hey there you got your "LED sensing" haha.

Now the question is whether to use a 595 and the darlington w/ a decoder, or the TI power shift register w/ some transistors and a decoder.

I am thinking both methods will be able to deliver enough current? The 595 gives 25mA/pin to 8 anodes, sunk by a darlington on a single cathode per row. I wonder which would be the cheaper easier solution.
 
just a side thought on an led display matrix - you had mentioned you wanted it to be BRIGHT right?

check out these designs I came up with for an LED matrix display

matrix itself:
https://projects.dimension-x.net/archives/48

driver board:
https://projects.dimension-x.net/archives/49

The led matrix is a 12.8 watt matrix, using 64 200mW superflux LEDs.

The driver is setup to have the cathode columns serially driven (shift register), and the anode rows would be driven by pnp or pfet transistors (part of the controller, not the driver)

The display is designed as two boards, the matrix board and the driver board ... I did this mainly to allow for the matrix board to be almost pure copper, with very little taken away, to provide a heatsink for the 12 watts of LEDs. the two boards are lined up and joined via 16 pins, that also serve as stand-offs. the driver board provides daisy-chain connectors for everything, so you can hook up multiple boards to make a larger display

If you want the actual layout and/or schematic files, let me know, they're in Eagle format.

Someone made the comment on my log that there is a chip called the 5841 from Micrel or Allegro that combines the strength of the 2803 darlington sink with the abilities of the 74HC595 register - I looked into it and it cost more than 2x what a 2803 + 595 costs, so I didn't look much further... but thats something you might want to check out - especially if you're just making one of something, maybe some free samples would be all you'd need!
 
Thanks for that idea. It would be nice to be able to make our own LED matrices to do all the stuff we need it to do.. but we only have 6mo to design, develop and implement the project. And the matrix is only a small part of the project. :shock:

We got our matrices free from an alumni.. so got lucky there. I will probably use the 595 and the 2803. My leds max out at 25mA, so the 595 will probably suffice. Maybe I'll use a use a decoder as well to save on pins. The only thing I am hesistant about the 595 is that my spi is already taken by another device, and I can't multiplex it. I'll have to shift every thing manually which will be a pain in the ass.

My other idea was to use the SN54ABT451 to drive the anodes and sunk by the 2803, and keep my code now that drives the anodes in parallel. Or drive with the BC327 and sink with the 2803.

The question is now is if i want do everything manually in serial or drive everything in parallel. hmm.
 
Status
Not open for further replies.

Latest threads

New Articles From Microcontroller Tips

Back
Top