Maker Pro
Maker Pro

Multiplexing signals

T

T

Jan 1, 1970
0
I don't know if I'm going down the right path here. I'm an electronics
hobbyist with no formal training.

I've got an Arduino board and I want to drive an 8x8 LED matrix. The
thing is there are 24 pins on the matrix.

Figured out that with six bits I could control all 24 lines if I could
multiplex it somehow.

I believe what I'm looking for is probably in a 74LS type chip but what
I've run across so far takes eight bits and shoots out a serial signal.
Not what I need at all, I need something with a bit of smarts.
 
N

Nobody

Jan 1, 1970
0
I don't know if I'm going down the right path here. I'm an electronics
hobbyist with no formal training.

I've got an Arduino board and I want to drive an 8x8 LED matrix. The
thing is there are 24 pins on the matrix.

Maybe each LED is a red/green pair with one end (anode or cathode) common?
Figured out that with six bits I could control all 24 lines if I could
multiplex it somehow.

Nope.

First, you need to be able to select any anode and any cathode. If it is
red/green, you could skip half of them and drive 16 lines (8 anodes and
8 cathodes) with 6 bits (3+3) or all 24 with 9 bits (3+3+3), but that
isn't really practical. You would only be driving one LED (or one red
and one green) at a time, so each would only be at 1/64th duty cycle.

LED matrices normally have one axis (row or column) multiplexed and
the other driven directly. E.g. a normal 8x8 with 16 lines (8 rows, 8
columns) would need 11 bits (8+3), with 3 bits driving a 3->8 line
decoder and the other 8 connected directly, resulting in a 1/8th duty
cycle.

For a red/green matrix, you could either use 19 bits (8+8+3) with 1/8th
duty cycle or 12 bits (8+4) with 1/16th duty cycle.
I believe what I'm looking for is probably in a 74LS type chip but what
I've run across so far takes eight bits and shoots out a serial signal.
Not what I need at all, I need something with a bit of smarts.

For decoding an 3- or 4-bit number to one of 8 or 16 lines:

137 (3->8, latching), 138 (3->8), 154 (4->16), 159 (4->16, open-collector).
 
C

Chris

Jan 1, 1970
0
I don't know if I'm going down the right path here. I'm an electronics
hobbyist with no formal training.

I've got an Arduino board and I want to drive an 8x8 LED matrix. The
thing is there are 24 pins on the matrix.

Figured out that with six bits I could control all 24 lines if I could
multiplex it somehow.

I believe what I'm looking for is probably in a 74LS type chip but what
I've run across so far takes eight bits and shoots out a serial signal.
Not what I need at all, I need something with a bit of smarts.

The easiest way to control a lot of I/O with just a few pins is to use
a latching shift register. Data is presented serially (1 bit at a
time) to the data input, and then clocked in with another I/O pin.
These data bits are shifted in one bit at a time until you've got 'em
all. Then you toggle another pin to latch the data to the shift
register output pins. Simple, and you can daisy-chain the latching
shift register chips to allow you almost an unlimited number of
outputs.

Here's a data sheet for an inexpensive IC that will do the job:

http://www.onsemi.com/pub/Collateral/MC74HC595A-D.PDF

The 'HC 595 (or actually three of them daisy-chained together) will
cover your 24 outputs quite nicely. You can just tie a small (.01uF)
cap to Vcc and a 10K pulldown resistor on the other side to have a
good power-on reset signal to ensure the chips all come up with all
zeroes, if you want it. The output enable shouldn't be necessary for
your application, so just tie it low. Be sure to tie SQh of the first
IC to the data input of the second and SQh of the second to the data
input ofthe third IC to daisy chain.

Depending on which Arduino board you have, you've probably got
software commands available to shift out data bytes serially -- Read
The Fine Manual for more info.

Remember that the HC595 outputs can source only 6mA or so with all of
them on, so if you're driving the LEDs directly, choose resistors
accordingly. Either that, or go for greater complexity and get some
driver ICs.

Good luck
Chris
 
T

T

Jan 1, 1970
0
The easiest way to control a lot of I/O with just a few pins is to use
a latching shift register. Data is presented serially (1 bit at a
time) to the data input, and then clocked in with another I/O pin.
These data bits are shifted in one bit at a time until you've got 'em
all. Then you toggle another pin to latch the data to the shift
register output pins. Simple, and you can daisy-chain the latching
shift register chips to allow you almost an unlimited number of
outputs.

Here's a data sheet for an inexpensive IC that will do the job:

http://www.onsemi.com/pub/Collateral/MC74HC595A-D.PDF

The 'HC 595 (or actually three of them daisy-chained together) will
cover your 24 outputs quite nicely. You can just tie a small (.01uF)
cap to Vcc and a 10K pulldown resistor on the other side to have a
good power-on reset signal to ensure the chips all come up with all
zeroes, if you want it. The output enable shouldn't be necessary for
your application, so just tie it low. Be sure to tie SQh of the first
IC to the data input of the second and SQh of the second to the data
input ofthe third IC to daisy chain.

Depending on which Arduino board you have, you've probably got
software commands available to shift out data bytes serially -- Read
The Fine Manual for more info.

Remember that the HC595 outputs can source only 6mA or so with all of
them on, so if you're driving the LEDs directly, choose resistors
accordingly. Either that, or go for greater complexity and get some
driver ICs.

Good luck
Chris

Thanks for the info. Yes, I'm aware of the functionality on the Arduino,
it's the Diecimila board. I had a feeling I'd have to feed it serially.
 
J

John Fields

Jan 1, 1970
0
The easiest way to control a lot of I/O with just a few pins is to use
a latching shift register. Data is presented serially (1 bit at a
time) to the data input, and then clocked in with another I/O pin.
These data bits are shifted in one bit at a time until you've got 'em
all. Then you toggle another pin to latch the data to the shift
register output pins. Simple, and you can daisy-chain the latching
shift register chips to allow you almost an unlimited number of
outputs.

Here's a data sheet for an inexpensive IC that will do the job:

http://www.onsemi.com/pub/Collateral/MC74HC595A-D.PDF

The 'HC 595 (or actually three of them daisy-chained together) will
cover your 24 outputs quite nicely. You can just tie a small (.01uF)
cap to Vcc and a 10K pulldown resistor on the other side to have a
good power-on reset signal to ensure the chips all come up with all
zeroes, if you want it. The output enable shouldn't be necessary for
your application, so just tie it low. Be sure to tie SQh of the first
IC to the data input of the second and SQh of the second to the data
input ofthe third IC to daisy chain.

Depending on which Arduino board you have, you've probably got
software commands available to shift out data bytes serially -- Read
The Fine Manual for more info.

Remember that the HC595 outputs can source only 6mA or so with all of
them on, so if you're driving the LEDs directly, choose resistors
accordingly. Either that, or go for greater complexity and get some
driver ICs.

---
These are handy:

http://www.allegromicro.com/en/Products/Part_Numbers/6275/6275.pdf

http://www.allegromicro.com/en/Products/Part_Numbers/6276/6276.pdf
 
Top