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
Warum verschaltest du die Schalter nicht so, dass sie die Schalternummer in BCD übertragen? Schalter 1 - Low, Low, Low Schalter 2 - Low, Low, High Schalter 3 - Low, High, Low Schalter 4 - Low, High, High (...)
Sorry, habe nicht genau gelesen, dass die Schalter gleichzeitig auch verschiedene Relais schalten sollen. Wie wäre es mit Schieberegister und über die 3 Leitungen schickt man Data, Clock und Reset? (letzteres zur Synchronisation)
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.
Parallel -> Seriell Wandler (Schieberegister) 3 Adern (Clock/Sync, Data, GND) Seriell -> Parallel Wandler
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 ?
:
Bearbeitet durch User
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?
Es gab früher mal spezielle Fernsteuer-ICs dafür. Heutzutage würde man 2 MCs entsprechend programmieren, z.B. ATtiny24. Einer fragt die 8 Schalter ab, der andere setzt die Relais entsprechend.
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.
row-she schrieb: > Alles klar. Und ohne programmieren? ;-) Geht, aber dann musst du die Clock-Generierung diskret aufbauen. Der Bastel-Aufwand ist mehr oder weniger identisch, aber die uC Lösung ist deutlich flexibler.
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
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 ?
Ach Mist... Vcc muss natürlich auch noch drüber. Wollte ein XLR-Kabel verwenden (max. 3m). Ich gaub ich muss das Projekt nochmal genauer überdenken... Danke für eure Antworten auf jeden Fall!
> Wollte ein XLR-Kabel verwenden (max. 3m).
RS232C geht auf 3 m noch blendend.
RS485 bis 1200m auch in (elektrisch) dreckiger Umgebung.
Tipp:
DMX512 tut fast das was du willst, und verwendet auch mal XLR.
Da kann man sich viel abschauen.
Braucht noch irgendwas die Spannungsversorgung außer den Schaltern? Man könnte z.B. auch ein Signal auf VCC aufmodulieren, z.B. das Sync der beiden Schieberegister. Dann reichen die 4 Leitungen. VCC (Sync) GND Data Clock
row-she schrieb: > Ach Mist... Vcc muss natürlich auch noch drüber. > Wollte ein XLR-Kabel verwenden (max. 3m). > Ich gaub ich muss das Projekt nochmal genauer überdenken... > > Danke für eure Antworten auf jeden Fall! Geht doch super. Wenn du 2 uCs mit UART verbindest dann reicht dir sogar ein stinknormales 3-poliges XLR Microkabel.
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!
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!
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.
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).
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 ;)
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.
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
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!
Danke für die Tipps a-za-z0-9! Der nano sieht tatsächlich recht interessant aus für so Lainen wie mich :-)
Auf einer Seite den Empfänger weg lassen, auf der anderen Seite den Sender weg lassen ... Ist mit µC allerdings eleganter und 'einfacher'. Gruß Jobst
Jobst M. schrieb: > Auf einer Seite den Empfänger weg lassen, auf der anderen Seite den > Sender weg lassen ... > Ist mit µC allerdings eleganter und 'einfacher'. > > > Gruß > > Jobst Hab nie verstanden warum manche bei 5V Vcc immernoch die 40er Reihe verarbeiten. Schnarchlahm und höllisch empfindlich. Entweder 74HCT oder eben 74HC.
Das kann man ja gerne tun, wenn man möchte. Für diesen Zweck sind sie aber schnell genug. Mittlerweile würde ich das auch machen. Was ich damals tatsächlich verbaut habe, weiß ich aber nicht mehr. Gruß Jobst
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.