8 zu 3(1) zu 8 Multiplexen

Gast #4565185
Lesenswert?

Hallo zusammen,

ich bräuchte eine Lösung/Empfehlung für folgende Situation:

Ich habe 8 analoge Schalter und möchte über eine Leitung mit max 3 Adern
ein kodiertes Signal schicken dass am Ende 8 Relais ansteuert.
An die Schalter kann ich eine relativ beliebige Spannung anlegen.
(preferiert 9 oder 5 V)

So wie ich das verstehe, ist das ein klassischer Fall für
Multiplexer/Demultiplexer.

Bin neu auf diesem Gebiet und leider recht unerfahren.

Muss ich die Schalter so verdrahten, dass jeder einen binären
Zustand ausgibt (also z.B. Schalter 1 schaltet 5V/0V/0V auf die 
Adresspins
usw.) und dann über eine "gemeinsame" Datenleitung zum Demultiplexer 
schicken wo dann z.B. der Input 1 vom Multiplexer auf den Output 1
vom Demultiplexer geschalten wird?

Oder gibt es da vielleicht eine einfachere Lösung bei der ich nur eine
oder max drei Leitungen habe und einen IC der erkennt wenn z.B Input 1
high ist dann schalte ich Output 1 high usw...? Also sprich ohne
Adresspins...?

Ich hoffe ich hab mich nicht zu missverständlich ausgedrückt,
fall ja, verzeiht es mir, ist wie gesagt recht neu das Ganze für mich..

Vielen Dank im Voraus schonmal für die Antworten.

Cheers
#4565231
Lesenswert?

Frank M. schrieb:
> Frank M. schrieb:
>> 8to3 encoder: 74HC148
>> 3to8 decoder: 74HC138
>
> Sorry, das funktioniert nur, wenn nur ein Taster/Schalter aktiv wird.
> Bei mehreren aktiven Tastern funktioniert das nicht.

Dann willst du keine Multiplexer/Demultiplexer sondern musst die 
Schalterpositionen als Datenpaket serialisieren/deserialisieren wie 
Blinky beschrieben hat.

Muss über die 3-adrige Leitung auch die Stromversorgung laufen ?
Gast #4565236
Lesenswert?

Ok. Danke schonmal für die Antworten!

Das heißt wenn ich mehrere Schalter gleichzeitig aktiv haben will,
brauche ich ein Schieberegister. Womit ich mich natürlich gar nicht
auskenne ;-) Kann man da solch eines verwenden?

http://www.produktinfo.conrad.com/datenblaetter/1000000-1099999/001074782-da-01-en-IC_8BIT_SHFT_REG_SN74AHC595N_DIP_16_TID.pdf

oder gibt es andere Empfehlungen?

Und dabei würde ich dann meine Schalter an QA-QH legen und
die SER und SRCLK Pins benutzen um dann ein Signal auf einen
weiteren solchen IC zu senden wo das Prinzip genau umgekehrt 
funktioniert?
#4565247
Lesenswert?

Wenn man maximal 3 Adern für die Verbindung hat, dann geht kein 8-zu-3 
Encoder. Dafür braucht man mindestens eine 4. Ader für GND. Auch 
gewöhnliche Schieberegister brauchen 3 Logiksignale (Clock, Daten, 
Latch) und somit 4 Adern.

Man kann jetzt entweder tricksen und die Schieberegistersteuerung mit 
nur 2 Signalen hinbekommen. Z.B. könnte man bei Relais auf ein extra 
Latch-Signal verzichten; wenn man schnell genug schiebt, dann klappern 
die Relais beim Durchschieben der Daten nicht weil sie zu langsam sind.

Oder man nimmt etwas, das mit 1 oder 2 Signalen auskommt. I²C. 1-Wire 
Bus. UART. Oder irgendwas handgestricktes. Sobald man sich hier 
festgelegt hat, kann man über die Realisierung nachdenken. Aber nachdem 
wir hier in einem µC-Forum sind, würde wohl ein µC mit hinreichend 
vielen Pins für 8 Eingänge (bzw. 8 Ausgänge am anderen Ende) mit einer 
unidirektionen UART Verbindung passen. Braucht sogar nur 2 Adern bzw. 3 
wenn man die Betriebsspannung mit zur Tasten-Einheit übertragen will.
#4565259
Lesenswert?

row-she schrieb:
> Axel S. schrieb:
>> Wenn man maximal 3 Adern für die Verbindung hat, dann geht kein 8-zu-3
>> Encoder. Dafür braucht man mindestens eine 4.
>
> Sorry. Hab mich dumm außgedrückt. Ich hab max. 3 Adern PLUS GND...
> ...also 4

Und du musst keine Versorgung über die Leitung bewerkstelligen ? Über 
welche Leitungslänge reden wir ?
Gast #4565295
Lesenswert?

Ok... mal angenommen ich würde einen MC programmieren.
Kann ich dann mit den 3 plus Masse Adern eines XLR Kabels arbeiten?

Also Vcc/D-Gnd/Data und A-Gnd ?

Dann müsste es auch möglich sein, dass ich bei der Steuereinheit
mit temporären Tastern arbeite und hinten raus die Relais permanent
schalten kann, oder? Dann könnte ich mir nämlich den FlipFop-Aufwand 
auch noch sparen...

Wenn das so geht wie ich mir das vorstelle, habt ihr eine Empfehlung
wie ich da am besten rangeh. Hab noch nie einen MC programmiert
geschweige denn mich damit auseinander gesetzt.

Ein einfaches Tutorial  ein Beispielprogramm für eine solche Schaltung 
etc.

Hab einen Arduino Uno daheim rumliegen...

Wäre alles hilfreich! (Ich weiß ich könnte jetzt natürlich auch
die Suchfunktion nutzen, aber vielleicht kennt ja jemand was,
was einigermaßen auf meine Bedürfnisse zurecht geschneidert ist...)

Danke schonmal!
#4565305
Lesenswert?

row-she schrieb:
> Ok... mal angenommen ich würde einen MC programmieren.
> Kann ich dann mit den 3 plus Masse Adern eines XLR Kabels arbeiten?
>
> Also Vcc/D-Gnd/Data und A-Gnd ?

Wozu A-GND ?

>
> Dann müsste es auch möglich sein, dass ich bei der Steuereinheit
> mit temporären Tastern arbeite und hinten raus die Relais permanent
> schalten kann, oder? Dann könnte ich mir nämlich den FlipFop-Aufwand
> auch noch sparen...

Ja, die Taster könnte der uC erfassen und "hinten raus" in 
Schaltzustände umwandeln.

>
> Wenn das so geht wie ich mir das vorstelle, habt ihr eine Empfehlung
> wie ich da am besten rangeh. Hab noch nie einen MC programmiert
> geschweige denn mich damit auseinander gesetzt.
>

Dann ist das Ding erstmal ein oder zwei Nummern zu gross, egal wie du es 
machst (auch bei diskretem Aufbau). Tutorials gibts genug. Lektion 1 : C 
lernen und eine LED auf dem Steckbrett mit uC zum blinken bringen.

> Ein einfaches Tutorial / ein Beispielprogramm für eine solche Schaltung/
> etc.
>
> Hab einen Arduino Uno daheim rumliegen...

Pssst ... sag das nicht laut. Unbeliebt hier.

>
> Wäre alles hilfreich! (Ich weiß ich könnte jetzt natürlich auch
> die Suchfunktion nutzen, aber vielleicht kennt ja jemand was,
> was einigermaßen auf meine Bedürfnisse zurecht geschneidert ist...)
>
> Danke schonmal!
Gast #4565307
Lesenswert?

Falls du Platz und Geld für einen Mikrocontroller hast, wäre das 
wirklich die beste Lösung. Man kann den Controller über zwei Leitungen 
versorgen und die 3. Leitung für eine halbe serielle Verbindung nutzen. 
Das Programmieren ist wirklich sehr einfach, wenn man z.B. ein fertiges 
µC-Board nimmt braucht man nix löten und es gibt entsprechende 
Programmbeispiele für Schalter einlesen, Serielle Schnittstelle etc.

Für 8 Schalter reicht es, immer wieder nur ein Byte zu übertragen, da 
braucht man nicht mal ein Protokoll o.ä. (wenn es nicht 
sicherheitsrelevant oder besonders fehleranfällig ist). Einfach in einer 
Schleife die Schalter abfragen, zu einem Byte verODERn und absenden. 
Dazwischen ein Delay, damit der UART-Puffer nicht überläuft (für 
handbetätigte Schalter z.B. 20ms).

Ja, und ich gebe es zu, mit fertigem Board meine ich z.B. ein Arduino. 
Lebt halt damit.
#4565324
Lesenswert?

Captain Albern schrieb:
> ...
> Das Programmieren ist wirklich sehr einfach, wenn man z.B. ein fertiges
> µC-Board nimmt braucht man nix löten und es gibt entsprechende
> Programmbeispiele für Schalter einlesen, Serielle Schnittstelle etc.

Wenn man keine Programmiererfahrung hat und erstmal C lernen muss, dann 
ist das eine SEHR große Aufgabe, selbst wenn vieles auf dem Arduino 
vereinfacht ist.
>
> Für 8 Schalter reicht es, immer wieder nur ein Byte zu übertragen, da
> braucht man nicht mal ein Protokoll o.ä. (wenn es nicht
> sicherheitsrelevant oder besonders fehleranfällig ist). Einfach in einer
> Schleife die Schalter abfragen, zu einem Byte verODERn und absenden.
> Dazwischen ein Delay, damit der UART-Puffer nicht überläuft (für
> handbetätigte Schalter z.B. 20ms).

Ich würde trotzdem ein Protokoll einsetzen, um das Front- und Backend 
synchron zu halten (sonst sind die sich irgendwann uneins über den 
Sollzustand wenn immer nur Deltas übertragen werden).
(Firma: Vescomp) #4565328
Lesenswert?

row-she schrieb:
> Dann müsste es auch möglich sein, dass ich bei der Steuereinheit
> mit temporären Tastern arbeite und hinten raus die Relais permanent
> schalten kann, oder? Dann könnte ich mir nämlich den FlipFop-Aufwand
> auch noch sparen...

 Bei deinen Kenntnissen (ist nicht böse gemeint) und nur 3m Lange ist es
 am Besten wenn du ein 10-Adriges Kabel nimmst. Geeignete Kabel gibt es
 zu günstigen Preisen überall zu kaufen.
 GND ist gemeinsam und jedes Relais wird einzeln über einen Schalter
 ein- und ausgeschaltet.
 In der Zwischenzeit etwas über uC lernen ;)
Gast #4565334
Lesenswert?

The D. schrieb:
>> Hab einen Arduino Uno daheim rumliegen...
>
> Pssst ... sag das nicht laut. Unbeliebt hier.

Ist ein Stück Hardware, mehr nicht.
Es ist die Einstellung einiger Arduino Anfänger, welche Anstoß erregt.
Den Boards darf man das nicht anlasten.

row-she schrieb:
> Ok... mal angenommen ich würde einen MC programmieren.
> Kann ich dann mit den 3 plus Masse Adern eines XLR Kabels arbeiten?
Jawoll!
Das sollte gehen.
Gast #4565363
Lesenswert?

So... danke zusammen!

Ich will mich sowie so schon lange mal in die düstere C-Welt des
AVR-Programmierns wagen ;-)

Vielleicht ist das hier mal der richtige Anlass.

@thedaz: Danke für den Link - werd ich auf jeden Fall mal studieren.

Ich meld mich dann wieder bei euch wenn ich auf die ersten Probleme,
welche mich in den Wahnsinn treiben werden, stoßen sollte...

derweilen... Cheers
#4565370
Lesenswert?

row-she schrieb:
> Ok... mal angenommen ich würde einen MC programmieren.
> Kann ich dann mit den 3 plus Masse Adern eines XLR Kabels arbeiten?
>
> Also Vcc/D-Gnd/Data und A-Gnd ?

3 Adern reichen. Vcc, GND, Daten.

> Dann müsste es auch möglich sein, dass ich bei der Steuereinheit
> mit temporären Tastern arbeite und hinten raus die Relais permanent
> schalten kann, oder?

Sicher doch. Ich denke mal, du willst 8 Taster und bei jedem Druck auf 
einen Taster soll das zugehörige Relais umschalten (von aus zu ein bzw. 
umgekehrt). Korrekt?

> Wenn das so geht wie ich mir das vorstelle, habt ihr eine Empfehlung
> wie ich da am besten rangeh. Hab noch nie einen MC programmiert
> geschweige denn mich damit auseinander gesetzt.

Dann fang damit an. Die Zeiten dafür sind günstig wie nie. Von der 
Hardware mehr als ausreichend und außerdem noch spottbillig sind Arduino 
nano Module aus China. Stückpreis um die €2,- bei ebay oder AliExpress. 
Da tickert ein ATmega328P drauf und ein CH340 für USB. Stabilen Takt 
haben sie auch. Auf der Relais-Seite brauchst du noch 8 Transistoren 
(oder einen 8-Kanal Treiber a'la ULN2803).

Die UART-Verbindung läßt du einfach mit niedriger Geschwindigkeit (z.B. 
1200Bd) und 5V CMOS-Pegel laufen. Nur noch ein 100R Serienwiderstand auf 
der Senderseite und fertig. Bei 3m Leitungslänge reicht das.

> Ein einfaches Tutorial / ein Beispielprogramm für eine solche Schaltung/
> etc.
>
> Hab einen Arduino Uno daheim rumliegen...

Na bitte. Arduino-IDE installieren und Beispiele/Tutorials zu Digital-In 
und Digital-Out ansehen. Dann noch UART. Und du bist fast fertig. An 
sich bin ich ja kein Fan des Arduino-Zeugs, aber du bist doch voll in 
der Zielgruppe. Also ran an den Feind!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren