Maker Pro
Maker Pro

Multiplexing project

Hello this is my first post on this forum, I have a question and I have a diagram which I will let explain my problem (assuming you know somewhat about multiplexing)

T0V5zV5.png


Is there any way around not having to have 9 Control Signals?

I'm using a parallel port, so as few pins as possible is better.

Also I should note that this is a very tiny version of what I am trying to do, my actual full idea is the same but with a grid of 128x128 or bigger.

Also each little dot in the grid is a motor.


thanks :)
 

(*steve*)

¡sǝpodᴉʇuɐ ǝɥʇ ɹɐǝɥd
Moderator
There are many ways of doing this.

For example you could use two 74HC595's to create your 16 control signals, and control them all with 3 logic signals.

I presume you realise that in most sensible cases, you can only have a selection of LEDs (or indeed motors) on in one row (or column) at any one time?

For anything other than LEDs, you'll almost certainly require row and column drivers and for inductive loads, you'll also need to protect them.
 
Right, i realize this, but in this case that is fine.

even if I use two of the 1:16's each have 3 control signals, that still leaves me with 6 control signals, and if I eventually create a bigger system, that would still have allot of control signals.
 

(*steve*)

¡sǝpodᴉʇuɐ ǝɥʇ ɹɐǝɥd
Moderator
Look at the 74HC595.

You could control one set for rows, and another set for columns. It would take 6 pins total regardless of how many rows or columns you might have.
 

(*steve*)

¡sǝpodᴉʇuɐ ǝɥʇ ɹɐǝɥd
Moderator
But wouldn't each 74HC595 have to have control signals?

Yes, there are 3 control signals. With these you can control the outputs of a long string of these devices.

They are a shift register. 2 pins allow you to clock in a bit at a time, and the third pin lets to move these bits to the output.

For multiplexing, assuming you have 8 rows x (say) 64 columns, you use 8 of these chips to control the columns, and 1 to control the rows.

You could do that with 3 wires, but using 6 might be conceptually easier.

Doing it this way, you can turn on a whole row at a time (or any LEDs/motors you want in that row) and then multiplex that across 8 rows.
 

KrisBlueNZ

Sadly passed away in 2015
Bit-banging through a parallel port can be very time-consuming. Assuming you're driving an LED matrix, you may be better off with a serially interfaced driver IC that handles the multiplexing itself, if you only need to update LED control data at a slower rate.

Bit-banging will be very much slower if your parallel port is connected through a USB interface. You might be better off using a micro with a USB interface built in, or one of those dumb endpoint ICs.
 

(*steve*)

¡sǝpodᴉʇuɐ ǝɥʇ ɹɐǝɥd
Moderator
One that I just Googled claims 1.2Mb/s transfer rate.

That's 150,000 characters per second.

In order to set 8 bits by bit banging the port, you need to send 18 characters.

That means about 8300 bits set per second (you could do 6 times this with some tricks, but let's stick to that figure).

If you have an 8 row by 64 column display, you need to set 72 bits for each scanned row (actually you could do less, but keep it simple). that's 1/115th of a second.

If you're multiplexing the entire display it will take 1/14th of a second (so you could scan the display 14 times per second.

That means with bit banging you would consume the entire bandwidth of your interface (assuming you could drive it at the max speed) doing 14 updates per second.

You would almost certainly be able to do it a lot faster with a hardware parallel port, but they don't really exist any more.

But of course, it does depend on how fast you need to update it.

If you're controlling motors, I suspect the rate you need to update is going to be a lot less than 14 times per second.
 
I am using a old hardware parallel port, from a old desktop computer.

@steve, so basically it would be better to use a driver of some sort, otherwise I would have to use alot.. of multiplexers?
 

(*steve*)

¡sǝpodᴉʇuɐ ǝɥʇ ɹɐǝɥd
Moderator
It's probably time that you told us exactly what you're trying to do.

That way we can probably come up with a good (or at least "better") solution.
 
I basically need a grid of 128x128 of tiny little solenoids, controlled by the parallel port and distributed threw something like some 74HC595's each solenoid will be 1/16 of a inch

yes I know that is tiny, however I believe its feesable to create that small of a solenoid, of course I am testing this out first though.
 

(*steve*)

¡sǝpodᴉʇuɐ ǝɥʇ ɹɐǝɥd
Moderator
We need to know how fast you need to switch these things on and off and also how many need to be switched on at one time (is it only 1?)
 
Is there any way around not having to have 9 Control Signals? I'm using a parallel port, so as few pins as possible is better.
Since you have 64 elements, they can be selected individually with 6 bits. You will generally want some sort of clock/strobe so that makes 7 signals.

Also I should note that this is a very tiny version of what I am trying to do, my actual full idea is the same but with a grid of 128x128 or bigger.
128x128=16334 or 14 bits, so with strobe you need 15 signals.

This assumes you will only power one at a time. If you want to energise more than one at a time, you need to add more signals and a lot more multiplexers.
I am not up to date with what's currently available, but common decoders are cascadable, so there is no issue with what size of decoder is available, just cascade as many as you need.
This link may help. http://www.electronics-tutorials.ws/combination/comb_5.html

You don't need to worry about how many bits your parallel port has, since you can expand it by using temporal multiplexing - effectively making it a multi-bit serial port. If you only have 7 bits, you can use 1 bit to select 1 of 2 latches and output a pair of 6 bit signals = 12 bits. Or use 2 bits to select 1 of 4 latches and output 4 lots of 5 bits = 20 bits, or 8 lots of 4 bits = 32 bits, 16 lots of 3 bits = 48 bits, up to 64 bits. If that's not enough, you can repeat this process with your new wider port! But it does get a bit hairy! You have to think very carefully about timing, delays and when the resulting output is valid.



.
 
Last edited:

KrisBlueNZ

Sadly passed away in 2015
Is this for a matrix display using magnetised discs that are black on one side and white on the other side?

Whatever you're doing, I suggest that you describe your whole project. Steve asked you in post #10 of this thread and you avoided the question. We're now up to post #17 on the thread and several people have tried to help you, making various general suggestions that may or may not be relevant to your project. You are actually wasting our time by being secretive about your project.

You have not defined your requirements clearly at all - your first post said that you're driving motors, and now they're solenoids - and from past experience I know that this usually means that you don't _understand_ your requirements very well. If you tell us all what you're trying to achieve, we will be better placed to make suggestions that will get your project working.
 
please dont shoot me :) I am actually changing it from solenoid to ferrofluid valves.

I apologize for not explaining very well.

Basically I need a grid of 64 by 64 made up of these tiny ferrofluid valves.

I only need each to be activated for a short period of time

I was thinking of using 16 74HC595's witch are shift registers. This seems to be the easy/good way to do it.
 
Top