Go Down

Topic: Is there any way to make Multiplexer shield output conditionally constant (Read 866 times) previous topic - next topic

sadoo

Hello,
I am kind of newbie in arduino development and has a limited knowledge on electronic circuits.
I'm using an arduino uno and a multiplexer shield to multiply its output.However, as you may know multiplexer shield
losses the state when another port is selected. Is there any way to change the situation other then programing other microcontroller?
For example, a relay or flip flop like a thing, that when I gave a signal to the multiplexer shields any port first time it goes high and
second time I gave a signal to the same port it turns low?

johnwasser

Are you multiplexing outputs?  If so, a serial-in/parallel-out shift register is a good solution for increasing the number of digital outputs.

An analog multiplexer isn't a good solution for outputs for the reasons you have discovered.
Send Bitcoin tips to: 1L3CTDoTgrXNA5WyF77uWqt4gUdye9mezN
Send Litecoin tips to : LVtpaq6JgJAZwvnVq3ftVeHafWkcpmuR1e

sadoo

I checked the shift registers concept and couple of data sheets. It's probably wouldn't work. I need to directly address which outlet I want to turn on and off.

johnwasser


I checked the shift registers concept and couple of data sheets. It's probably wouldn't work. I need to directly address which outlet I want to turn on and off.


In general you do that by keeping track of which bits are on and which are off, then send all 8 bits each time.  The effect is the same as controlling each bit individually.

If you need a mixture of input bits and output bits there is a device called an I/O Expander.  You put it on the I2C bus.
Send Bitcoin tips to: 1L3CTDoTgrXNA5WyF77uWqt4gUdye9mezN
Send Litecoin tips to : LVtpaq6JgJAZwvnVq3ftVeHafWkcpmuR1e

DanDare

Hello Sadoo,

Like John pointed out, you can really use a shift register and keep track of each bit state, changing ones you want. It's easy doing so declaring a byte variable that stores these bit states. You said that you checked some datasheets and didnt found it would work. Maybe because you checked non-latched shift registers? A non-latched one will just propagate each bit on the outputs, it means that when you update all the 8 bits, each output will flip LOW or HIGH accordingly the sequence of bits, this is true for shift registers like 74HC164. To avoid this you can use latched ones, like 74HC595 from arduino tutorial http://arduino.cc/en/Tutorial/ShiftOut . This way the output will be refreshed just after all the bits are set (or you can control this using the latch line), avoiding flickering the outputs.


I hope it helps

sadoo

Thank you DanDare.

It will help definitely, but I solved it with programming and connecting 3 8051 micro-controllers. I know they are a little outdated but does the job.

Again thank you 

Docedison

Sometimes you have to wonder which universe communications? like that 'last' one came from
Gee just think... "Only 3 8051's... I'm Glad it wasn't serious... He Might have had to use a ... "6502"...
--> WA7EMS <--
"The solution of every problem is another problem." -Johann Wolfgang von Goethe
I do answer technical questions PM'd to me with whatever is in my clipboard

Grumpy_Mike

Quote
but I solved it with programming and connecting 3 8051 micro-controllers.

It would do you more good to learn how to solve the problem correctly. This solution gives overkill a bad name.

Go Up