ich habe für meine Modelleisenbahn ein Bedienpanel erstellt, siehe attached Bild. Dieses enthält:
38 Drucktaster zum Stellen der Signale
38 Duo-LEDs zur Anzeige der Stellung der Signale, rot oder grün
20 Drucktaster zum Stellen der Weichen
40 grüne LEDs zur Anzeige der Stellung der Weichen
Die LEDs benötigen nur einen Strom von ca. 3mA.
Frage:
Ich möchte diese Tasten und LEDs mit einem 8-Bit Atmel AVR Controller ansteuern, bzw. auslesen. Habt ihr Ideen, wie man sowas implementieren kann ?
...und man kann auch beides miteinander kombinieren und noch mehr Pins sparen, indem man die Spaltenleitungen für beide Matrizen nutzt.
Du brauchst 58 Taster und 116 LEDs. Das ginge mit z.B.
8 kombinierten Spalten,
8 Zeilen für die Taster -> max. 8x8=64 Taster
16 Zeilen für die LEDs -> max. 16x8=128 LEDs.
Der ATmega2560 hat mehr als genug Pins dafür und ist gut erhältlich - bei Bedarf auch auf Lochraster-freundlichen Boards.
Softwarelastige Lösung: 10x12 Matrix (brauchst wsl Spaltentreiber mit nem n-mos)
Hardwarelastige Lösung: Schieberegister oder Portexpander hintereinander hängen
Für einen Mix könntest du die LEDs auch durch addressierbare (findet man unter ebay als "ws2812 5mm") Versionen ersetzen und nur die Taster in ner Matrix lesen
Für einen Mix könntest du die LEDs auch durch addressierbare (findet man
unter ebay als "ws2812 5mm") Versionen ersetzen und nur die Taster in
ner Matrix lesen
Das finde ich eine gute Lösung.
Falls das nicht möglich/nicht gewünscht ist kann ich den MCP23017 als I2C Portextension empfehlen, da jeder IO Pin einzel als Input oder Output konfiguriert werden kann und so die Verkabelung wesentlich einfacher werden kann.
Falls das nicht möglich/nicht gewünscht ist kann ich den MCP23017 als
I2C Portextension empfehlen, da jeder IO Pin einzel als Input oder
Output konfiguriert werden kann und so die Verkabelung wesentlich
einfacher werden kann.
Ich würde auch die Portexpander nehmen. Da braucht man keine zeitgenauen Schleifen, sondern setzt einmal die LED, und gut ist es.
Bei der Eingabe-Seite kann man sich einen Input erzeugen lassen, falls ein Taster gedrückt wurde. Und braucht auch nur dann reagieren.
Der MCP23017 hat 3 Adressleitungen, man kann also 8 Stück an einen I2C Bus hängen. Das wären 128 IOs.
Den Chip gibt es auch als SPI-Version. Da könnte man endlos verlängern.
Acht Achtbitschieberegister Parallel rein, seriell raus.
40 grüne LEDs zur Anzeige der Stellung der Weichen
38 Duo-LEDs zur Anzeige der Stellung der Signale, rot oder grün
pro Duo-LED brauchst du zwei Ausgänge, auch wenn die nur zwei "Beinchen" haben. Dreibeinige könnten auch noch eine dritte Farbe darstellen.
WS2811-LED-Control lassen sich ziemlich gut für sowas "missbrauchen".
Damit könnte man pro Baustein drei LEDs ansteuern.
Die gibt es fertig auf Platinen verlötet nachgeschmissen.
Es gibt auch vierkanalige LED-LED-Controller (für RGBW-LEDs) - die sollten auch gehen.
Meine Häuser (und anderen Beleutchtungsartikel inkl. LED-Signalen) auf der Modellbahnanlage werden mit WS2811 problemlos angesteuert.
Für das Stellpult ("Bedienpanel") nutze ich noch das Rückmeldesignal der Weichen - geht bei Servoantrieben nicht unbedingt.
Bei der Eingabe-Seite kann man sich einen Input erzeugen lassen, falls
ein Taster gedrückt wurde. Und braucht auch nur dann reagieren.
s/Input/Interrupt/
Ein überaus nettes Feature der meisten Port-Expander. Da kann keine Matrix mithalten. Eine Matrix vereinfacht auch nicht die Verdrahtung, wenn die einzelnen Taster weiter entfernt sind.
Die LEDs würde ich zwecks EMV statisch ansteuern, mit LED-Treibern wie z.B. IS31FL3265A oder PCA9955. Das ist immer noch per I2C, aber Daten werden nur bei Änderungen übertragen. Bonus: programmierbarer Konstantstrom (Signale nachts dunkler), Diagnose gegen Kurzschlüsse und Unterbrechungen, I2C Broadcast, können auch viele LED in Reihe treiben.
Für einen Mix könntest du die LEDs auch durch addressierbare (findet man
unter ebay als "ws2812 5mm") Versionen ersetzen und nur die Taster in
ner Matrix lesen
Kommen denn die ws2812 mit den genannten 3mA aus?
Ich nehme ja gerne den MM5450 mit 34 Konstantstromausgängen.
Ganz schlecht, denn wenn 1x eine Übertragung schief geht, dann wird das bis zur nächsten Änderung nicht wieder korrigiert. Ich halte das Prozessabbild im Speicher meines µC und sorge durch ständiges Schreiben der Ausgänge und Einlesen der Eingänge dafür, dass mein Prozessabbild mit der Realität übereinstimmt.
Nimm Schieberegister. Da kannst du mit kleinen Platinchen hinter der Platte jeweils 8 Ein- bzw. Ausgänge gruppieren und mit jewils nur kurzen Leitungen verdrahten.
pro Duo-LED brauchst du zwei Ausgänge, auch wenn die nur zwei "Beinchen"
haben. Dreibeinige könnten auch noch eine dritte Farbe darstellen.
Auch 2-beinige LED können die dritte Farbe darstellen, wenn man sie schnell genug umschaltet.
Für das Stellpult nutze ich noch das Rückmeldesignal der Weichen
Das erscheint mir sinnvoll, denn dann zeigt die LED nicht nur an, wie mal will, dass die Wiche gestellt ist, sondern wie sie tatsächlich steht. Und wenn nach 10-maligem Knopfdürcken die LED immer noch nicht umschaltet, dann reagiert die Weiche nicht.
[OT]
Das Bild ist angehangen ober beigefügt. Schon mal was davon gehört?
"angehangen"? Wohl eher "angehängt", "im Anhang"; aber irgendwelchen
Dialekt muss auch nicht jeder verstehen. ;)
Es ist kein Problem mit dem Dialekt, sondern mit den starken und schwachen Verben.
Von Holtek der HT16K33 ist als als Displaytreiber für LED Anzeigen bekannt, kann aber mehr. Neben 16x8 Matrix LED kann er auch noch einen Haufen Tasten abfragen. Wenn das immer noch nicht reicht, ist er auch noch kaskadierbar. 8 Stck lassen sich über I2C unterschiedlich adressieren. Das sollte wohl langen.
https://cdn-shop.adafruit.com/datasheets/ht16K33v110.pdf
"Ich habe angehangen" ist üblicherweise die Vergangenheit (z.B. mal
einer Gruppierung angehangen zu haben) und "ich habe angehängt" ist die
Gegenwart.
Dialekt im Sinne von regionalem "Slang" / Mundart.
Hier im Echten Norden, wird höchtens von Zugereisten / Zugezogenen so gesprochen.
"ich habe angehängt" ist die Gegenwart.
"ich hatte angehängt" ist die Vergangeheit.
Hat aber nichts mit einer Gruppenzugehörigkeit zu tun (zumindest für mein Sprachverständnis; und ich bin schon mit einer Frau aus einem "interessanten" Sprachkreis (Pfalz) verheiratet...)
[/OT]
Auch 2-beinige LED können die dritte Farbe darstellen, wenn man sie
schnell genug umschaltet.
Aber nicht bis 0Hz runter... ;)
Außerdem braucht man Push-Pull-Ausgänge. Dreibeinige kann man mit Open-Collector-Ausgängen (wie bei vielen / den meisten / allen Lokdekodern üblich) dreifarbig schalten.
Das erscheint mir sinnvoll, denn dann zeigt die LED nicht nur an, wie
mal will, dass die Wiche gestellt ist, sondern wie sie tatsächlich
steht
Um die Information dann auch einem Stellpult-Controller (µC oder PC) zur verfügung zu stellen, kann man das Signal dann noch an einen Optokoppler weiterleiten.
Somit kann man sie mit 20mA für 1/8 der Zeit bestromen für dieselbe Helligkeit. Das ist gut, weil es Matrixverschaltung erlaubt und 20mA schafft ein Atmel AVR direkt, du brauchts also keine zusätzlichen ICs nur 27 I/O Pins.
LED Matrix heisst an jedem Knotenpunkt der 8 Zeilen und 15 Spalten je eine LED von Zeile nach Spalte, und Tastenmatrix heisst an jedem Knotenpunkt je ein Taster (falls mehr als 1 Taste gleichzeitig gedrückt werden können soll jeweils in Reihe mit einer Diode) der (wenn gedrückt) Zeile und Spalte verbindet.
8 Ausgänge des uC 4 Eingänge des uC 15 Ausgänge des uC
Falls der uC keine 27 I/O Pins übrig hat, kann man einen SCT2210 / DM13C / ST2221C / TLC5921 / DM13A / A6282 / TLC5923 für die 15 LED Ausgänge nutzen der 20mA strombegrenzt liefert und spart sich die 150 Ohm Widerstände und kommt mit 15 I/O Pins aus. Und wenn das noch zu viel ist kann ein HT16K33 die ganze Schaltung übernehmen.
Der ganze Quatsch mit MCP23017 und WS28xx kommt von Leuten die noch nie so viele Bauteile zusammengelötet haben. Niemand will freiwillig 1000 Lötverbindungen an so einem Stellpult machen.
Ich möchte diese Tasten und LEDs mit einem 8-Bit Atmel AVR Controller
ansteuern, bzw. auslesen
also früher (tm) hat man sowas mit Relais gemacht (nach der mechanischen Lösung).
inkl. Verriegelung der Fahrstraßen.
das war dann halt für ein Stellpult dieser Größe schon mal ein ganzer Raum bis hin zu einem ganzen Stockwerk ;-)
und man hätte/hat das ganze auf mehrere Stellwerke aufgeteilt...
und nein, ich rede nicht von einer Modellbahn, sondern von der Realität ;-)
zum Thema:
ich würde auch Portexpander nehmen, diese ggf. gruppenweise zusammenfassen
Eine Matrix würde ich vermeiden, weil dadurch die Verkabelung schwer durchschaubar wird. Lieber ein paar Schieberegister oder I²C Portexpander unter dem Bedienpult verteilen.
Mir wäre eine Lösung mit Portexpandern/Schieberegistern hardwareseitig zu aufwändig. Zum einen muss man die zusätzlichen Bausteine unterbringen, zum anderen sind es auch viel mehr Kabel.
Nachteile der von mir favorisierten Matrixlösung:
1.) Die Verdrahtung ist unübersichtlicher. Das stimmt. Wenn man das aber sorgfältig plant und dokumentiert, sollte es trotzdem ohne weiteres machbar sein. Man macht das ja nur ein einziges mal, und man kommt auch an die LEDs und Taster besser heran, weil es in Summe weniger Leitungen sind als mit der Portexpanderlösung.
2.) Die Software muss nichts multiplexen. Das stimmt auch, aber ich sehe das nicht als Nachteil. Auch hier: einmal gründlich darüber nachgedacht und in einer Timer-ISR verpackt, muss man sich anschließend nie wieder darum kümmern und kann den Rest der Software genauso unkompliziert schreiben wie mit Portexpandern.
Der ganze Quatsch mit MCP23017 und WS28xx kommt von Leuten die noch nie
so viele Bauteile zusammengelötet haben. Niemand will freiwillig 1000
Lötverbindungen an so einem Stellpult machen.
WS28xx hätte aber wirklich gravierende Vorteile: Billig, in LED-Streifen verfügbar, man muss die Farben nicht vorher festlegen, Verdrahtung sehr unkompliziert. Mit in die Streckenzüge eingelegten LED-Streifen könnte man später noch nach und nach zusätzliche Dinge Umsetzen: Belegtanzeigen für die Strecken, oder auch Fahrwegplanung.
Manfred L. hat aber sein Bedienpanel schon fertig mit Tastern und LEDs bestückt und es sieht toll aus. Ich nehme nicht an, dass er das nochmal wieder ganz anders machen möchte.
Manfred L. hat aber sein Bedienpanel schon fertig mit Tastern und LEDs
bestückt und es sieht toll aus. Ich nehme nicht an, dass er das nochmal
wieder ganz anders machen möchte.
Darum wird in der Praxis oft an alten Lösungen festgehalten, weil die Anpassung komplizierter ist, als ein Neubau.
Wenn er das nicht von Grund auf neu konzipieren und verdrahten will, dann läuft es letztendlich auf ein "Grab" aus Portexpandern bzw. Schieberegistern hinaus.
Aber ich könnte mit einem zusätzlichen Inverter dann auch zweibeinige
LED mit nur 1 Ausgang ansteuern... ;-)
Die Lösung war mir klar. Ohne weitere Bauteile geht es nicht.
Ich hätte jetzt gerne eine Lösung mit nur EINEM Portpin (ohne weitere Bauteile, die auch in einem weiteren Ausgang stecken) gesehen.
Manfred L. hat aber sein Bedienpanel schon fertig mit Tastern und LEDs
bestückt und es sieht toll aus.
Wenn er das nicht von Grund auf neu konzipieren und verdrahten will,
dann läuft es letztendlich auf ein "Grab" aus Portexpandern bzw.
Schieberegistern hinaus.
...oder eben auf die Matrixlösung. Zu hoffen wäre natürlich, dass er die LEDs und Taster zwar eingebaut, aber noch nicht verdrahtet hat.
Hm, wenn ich mir das so überlege... Ich glaube ich würde einen schönen Kabelbaum dafür bauen, mit Wachsgarn, wie wir das mal in der Ausbildung gelernt haben. (siehe ggf. hier Beitrag "Kabelbinden mit Wachsband" )
Dann spielt auch die auf den ersten Blick etwas chaotisch wirkende Matrixverkabelung gar keine Rolle mehr, die Fehlerwahrscheinlichkeit ist sehr gering, der Aufwand hält sich in Grenzen, und das Ergebnis sieht wunderbar aufgeräumt aus! :-)
Ich hatte nicht von "lötlastige Lösung" geschrieben, sondern explizit von einer Lösung, die "verdrahtungslastig" ist. Und dass eine Matrix auf dieser Tafel einen unheimlichen Drahtverhau mit sich bringen wird, dürfte wohl klar sein.
Die tatsächlich noch herzustellenden immergleichen Schieberegisterplatinchen können aber leicht dort hingeschraubt werden, wo die Leitungen zu den Bauteilen kurz sind.
116+116+10+12 Lötverbindungen dazu aber die Taster mit 58+58+8+8
Lötverbindungen, macht 386.
Und zwar ganz exakt. Glaub keiner Statistik, die du nicht selbst gefälscht hast.
Selbst wenn die Platinchen z.B. mit 75HC595 und 8 Vorwiderständen und
Abblockkondensator vorgefertigt sein sollten
Selbst wenn die Platine mit der Matrixansteuerung shcon fertig sein sollte...
Merkst du was oder merkst du nichts mehr ?
Was für eine unötig blödsinnige Bemerkung ist denn das?
Man überlegt sich vorher sehr genau, welcher Draht von wo nach wo gehen muss. Das kann man dann (auf dem Papier) x-mal kontrollieren. Beim Bauen des Kabelbaums muss man nur noch stumpf das machen, was auf den Papieren steht. Und beim einbauen braucht man so gut wie gar nicht mehr nachdenken, weil ja an jedem Taster und jeder LED genau die Drähte rauskommen, die man da anlöten muss. Gut wäre zudem, wenn man Drähte mit vielen exotischen Farben zur Verfügung hat. (Der ganze Kabelbaum mit nur einer Farbe sähe zwar gut aus, wäre aber in der Tat dann fehleranfällig)
Und am besten noch dazu "die Fehlersuche ist einfach"... ;-)
Nee, da hilft dann oft nur noch "durchklingeln". ;-)
176 Leitungen um alle 116 LED und 58 Taster anzuschliessen (und dazu 8 x 5 Leitungen um die Schieberegisterplatinen zu verdrahten) ist deutlich mehr Verhau
als 27 Leitungen in einer Matrix zu verlegen.
Aber du merkst nix mehr, die Frage war überflüssig.
Man überlegt sich vorher sehr genau, welcher Draht von wo nach wo gehen
muss.
Nee, da hilft dann oft nur noch "durchklingeln". ;-)
Pragmatiker-Ansatz:
Bei einer 8×8 Matrix kommen an jeden der 8 Ausgänge jeweils 8 grüne Kabel. An jeder der 8 Eingänge jeweils 8 gelbe Kabel.
Dann nimmt man jeweils einen beliebigen grünen und einen beliebigen gelben Draht und lötet sie an einen beliebigen Taster.
Danach einmalig ein Softwarelauf, welcher die völlig wild verdrahteten Taster per einmaliger Bedienung in einer Mini-Tabelle sortiert. Die kann dann zB. ins EEPROM.
Pragmatiker-Ansatz:
(...)
Dann nimmt man jeweils einen beliebigen grünen und einen beliebigen
gelben Draht und lötet sie an einen beliebigen Taster.
(...)
Danach einmalig ein Softwarelauf, welcher die völlig wild verdrahteten
Taster per einmaliger Bedienung in einer Mini-Tabelle sortiert.
Auch eine coole Idee!
Bei der Laberkopp-Schaltung (die etwas verwirren kann, weil er die LEDs zeilenweise und die Taster Spaltenweise multiplext, dafür aber mit weniger Controller-Pins auskommt) würde man auch nur drei Kabelfarben brauchen:
Je 15 graue Litzen an die 8 LED-Zeilenleitungen.
Je 15 gelbe Litzen an die 4 Taster-Zeilenleitungen.
Je 8+4=12 grüne Litzen an die 15 Spaltenleitungen.
Und dann:
LEDs: grau = Anode, grün = Kathode.
Taster: gelb und grün, egal wie herum.
Der Kabelbaum wird dicker als er müsste, dafür muss man pro LED-und Tasterbeinchen nur eine Litze anlöten, und kann ansonsten sowohl bei der Planung, als auch bei der Ausführung dann komplett das Hirn ausschalten.
Nicht schlecht! :-)
(Achtung: die Duo-LEDs sind dabei etwas tricky. Über die muss man nochmal extra nachdenken und braucht noch eine bis max. drei zusätzliche Farben)
Hm, wenn ich mir das so überlege... Ich glaube ich würde einen schönen
Kabelbaum dafür bauen, mit Wachsgarn, wie wir das mal in der Ausbildung
gelernt haben.
Na ja, es gibt inzwischen auch kleine Kabelbinder. Das sieht auch nicht schlechter aus, geht schneller und ist auch schneller geändert, falls mal erweitert werden soll
Gut wäre zudem, wenn man Drähte mit
vielen exotischen Farben zur Verfügung hat. (Der ganze Kabelbaum mit nur
einer Farbe sähe zwar gut aus, wäre aber in der Tat dann fehleranfällig)
Kann man mit einem Edding auch Ringe aufs Kabel malen. Mit Binärcode bleibt das sehr übersichtlich. Wenn man dann noch den ersten Ring dicker malt, weiß man auch wie rum man lesen muß.
WS28xx: Dann doch lieber APA102, einfacher anzusteuern ohne die allseits
beliebten Timingprobleme. (Oh, ich habe Jehova gesagt)
Nur aus Interesse: Gibt es den Controller auch einzeln, so wie den
WS2811?
LEDs sind ja schon vorhanden, nur fehlt ein "busfähiger" LED-Controller.
Den WS2811 bekommt man busfähig, indem man ihm RS 485 Treiber vor- und nachschaltet. MAX485, oder was baugleiches. Ein Bustreiber kommt an den Ausgang, und einer an den Eingang, direkt neben den WS2811. Statt weniger cm dürfen die RS485 Leitungen theoretisch bis zu 500m lang sein.
Habe ich mit WS2814 (rgbw) als 3W "Powerpixel" mit 4 KSQs so praktiziert. 7 Stck davon sind in einer abgehängten Decke in MR16 Spots verbaut.
"Ich habe angehangen" ist üblicherweise die Vergangenheit (z.B. mal
einer Gruppierung angehangen zu haben) und "ich habe angehängt" ist die
Gegenwart.
Oh, oh.
Erstens mal ist "ich habe + Verb" immer Vergangenheit ("ich habe gesagt"). Gegenwart ist "ich habe + Substativ" ("ich habe einen Computer").
Zweitens vermischst du zwei völlig unterschiedliche Bedeutungen, der Unterschied spiegelt sich in der Beugung (stark oder schwach) wider. Genau das ist ja hier der Knackpunkt.
"Mein Bruder hat früher mal dem Fußballverein Schienbein 04 angehangen, an seine Zimmerwand hatte er ein Poster von denen angehängt."
1 an|hän|gen <st.V.; hat> (geh.):
(...)
sich jmdm., einer Sache verschrieben haben, zugehörig fühlen: einer Sekte, der neuen Mode, einer Lehre, einem Glauben a.
2 an|hän|gen <sw. V.; hat>:
a) etw. an etw. hängen: ein Schildchen [an die Tür] a.; den Mantel [an einen Haken] a.;
Pragmatiker-Ansatz:
(...)
Dann nimmt man jeweils einen beliebigen grünen und einen beliebigen
gelben Draht und lötet sie an einen beliebigen Taster.
Auch eine coole Idee!
Korrektur:
Das klang wunderbar verlockend, aber leider klappt das doch nicht. :-(
Mit der Methode kann man nicht sicherstellen, dass es wirklich eine Matrix wird. Stattdessen ist leicht möglich, dass man die selbe Kombination aus einzelner Zeilen- und Spaltenleitung am mehrere Taster anschließt (und andere Kombinationen dafür gar nicht).
Also braucht man doch für die Matrixlösung eine wohlüberlegte Verkabelung mit am besten vielen verschiedenfarbigen Drähten!
Wie groß ist die Tafel eigentlich? Ich habe vom Bild bei Annahme von 5mm LEDs ca. 450x200mm interpoliert. Das könnte man in dem Fall ja hervorragend als Platine ausführen, weißer Stoplack, schwarzer Bestückungsdruck, LEDs reverse Mount von hinten mit Loch in der Platine. Tasten als Sandwich-Platine dahinter. 74HC165 für die Tasten und 74HC595 für die LEDs. Kommt man mit 5..6 Leitungen von der Platine runter.
Oder alles auf eine Platine, Taster und normale SMD-LEDs, dann Frontpanel mit 5..10mm Abstand davor. Lightpipes für die LEDs und die Taster schauen durch.
Mit der Methode kann man nicht sicherstellen, dass es wirklich eine
Matrix wird. Stattdessen ist leicht möglich, dass man die selbe
Kombination aus einzelner Zeilen- und Spaltenleitung am mehrere Taster
anschließt (und andere Kombinationen dafür gar nicht).
Korrekt. Gut gesehen! Diese Problemstellung hatte ich wohl irgendwie bequemerweise ausgeblendet. Man muss also zumindest ein wenig aufpassen. Also immer erst ein Achter-Bündel (row) und dazu acht separate (col) verwenden.
Nur gut das ich das nur ›ins Unreine‹ gedacht hatte. ;-)
Wie groß ist die Tafel eigentlich? Ich habe vom Bild bei Annahme von 5mm
LEDs ca. 450x200mm interpoliert. Das könnte man in dem Fall ja
hervorragend als Platine ausführen,
Ich schätze eher 50 cm x 100 cm, die Taster haben 1cm.
Würde mich mal interessieren was so eine Platine kostet, als Einzelstück, mit Porto und Verzollunggebühren.
jlcpcb liefert ja immer 5 Stück, die kosten dann 907€, Europacket geht nicht mehr, also DHL Expess Abzocker.
Was mir dazu noch einfällt, um den Verdrahtungsaufwand zu minimieren:
Eine kleine Platine mit einem I2C-16bit-Portexpander entwerfen und alle IO auf z.B. JST-PH Steckverbinder legen. Vorwiderstand für die LED in jede Leitung, für einen Tastereingang stört der nicht. Weitere Steckverbinder vorsehen für VCC und GND, jeweils für die Tasten (gegen GND) bzw. LEDs (gegen VCC).
Versorgung und I2C ebenfalls auf Steckverbinder. Davon benötigt man hier 9..10 Stück, je nach Aufteilung
Was spart das jetzt? Fertig gecrimpte Leitungen für JST usw. kann man bei Aliexpress für sehr kleines Geld bekommen. Entweder mit verzinnten abisolierten Enden oder selber durchschneiden. Für die I2C-Verkabelung und Versorgung ebenfalls auf fertige Leitungen zurückgreifen. Ggf. noch ein Zentralboard entwerfen, wo Versorgung und I2C zusammenlaufen. Minimiert jedenfalls deutlich den Aufwand und muss noch nicht einmal schlecht aussehen.
Mit so vielen tollen Vorschlägen für mein Problemchen habe ich wirklich nun nicht gerechnet. Also erst mal ein ganz dickes DANKE an alle !!!
Bevor ich mich entscheide, mit welchem Konzept ich das Ganze dann umsetze, muss ich jedoch erst mal Eure Vorschläge richtig verdauen.
So wie ich das jetzt auf die Schnelle sehe, kommt für die Tasten eine Matrix-Architektur und für die LEDs die Variante von PeDa mit den seriellen MM5450 ICs mit 34 Ausgängen in Frage.
Egal wie man es dreht oder wendet, es war mir bewusst, dass der Verdrahtungsaufwand schon erheblich sein wird und sich da und dort bestimmt der eine oder andere Fehler einschleichen wird. Aber damit muss ich wohl leben.
Wie üblich werde ich bei den Tasten die PeDa Debouncing Software verwenden, die bei all meinen bisherigen Projekten immer hervorragend funktioniert hat.
Zur Info:
Das Panel hat eine Größe von 270 x 130 mm und ist mit 3mm LEDs bestückt.
Den WS2811 bekommt man busfähig, indem man ihm RS 485 Treiber vor- und
nachschaltet. MAX485, oder was baugleiches. Ein Bustreiber kommt an den
Ausgang, und einer an den Eingang, direkt neben den WS2811. Statt
weniger cm dürfen die RS485 Leitungen theoretisch bis zu 500m lang sein.
Habe ich mit WS2814 (rgbw) als 3W "Powerpixel" mit 4 KSQs so
praktiziert. 7 Stck davon sind in einer abgehängten Decke in MR16 Spots
verbaut.
Der WS2811 ist doch von sich aus busfähig: als daisy chain.
Die letzte Variante dort funktioniert leider ausgesprochen schlecht mit 5V und zieht, abgesehen vom genannten Kurzschluss bei Bedienung beider Tasten, zusätzlich einen ziemlich hässlichen Querstrom.
Es ist zwar etwas sperrig übersetzt (vermutlich aus der antiken tibetanische Sprache des 7. Jahrhunderts über viele Umwege in eine Art Chenglish), aber das – nennen wir's mal – Datenblatt vertritt dazu die folgende Meinung:
Worldsemi – WS2812B – Intelligent control LED integrated light source
Cascading port transmission signal by single line.
Any two point the distance more than 5m transmission signal without any increase circuit.
Mehrere Taster kann man auch an einem analogen Input per Spannungsteiler
abfragen.
Der erste vernünftige Vorschlag für die Taster!
Na gut, Port-Expander mit Interrupt geht auch noch. Aber ich werde wohl nie verstehen, warum hier Pins-sparen immer die höchste Priorität hat.
ich werde wohl
nie verstehen, warum hier Pins-sparen immer die höchste Priorität hat.
Weil das gleichzeitig den Verdrahtungsaufwand minimiert.
Wie sich jetzt herausgestellt hat, ist das Teil so klein, dass die Art der Verdrahtung meines Erachtens nach eine immer größere Rolle spielt. Ich käme nie auf die Idee, hinter ein nur 27cm x 13cm großes Bedienfeld noch etliche kleine Portexpander-Platinchen fliegend zu verdrahten. Selbst der von mir vorgeschlagene gebundene Kabelbaum (mit den früher in der Fernmeldetechnik üblichen starren Drähten mit 0,6mm Leiterdurchmesser) würde bei dieser Größe eine ziemliche Fummelei werden.
Wahrscheinlich hätte ich es für diese Größe dann auch mit einer Platine hinter der Frontplatte gelöst, auf der die Taster und LEDs schon an den richtigen Positionen sitzen, und dann vorn durch die Frontplatte durchschauen. Dann ist es auch nur noch eine Kosten- und Geschmacksfrage, ob man es mit einem Mikrocontroller mit ausreichend Ports und Multiplexing in Software, oder mit zusätzlichen Schieberegistern/Portespandern/LED-Treibern und dann Buskommunikation lösen möchte.
Aber wie gesagt: Die Frontplatte ist fertig und muss nun noch irgendwie verdrahtet werden. Ich würde jetzt über lötbaren Kupferlackdraht nachdenken. Da darf man sich aber dann beim Aufbau möglichst keinen Fehler erlauben.
Die brauchst Du hier nicht weil Du die vielen Eingänge (egal mit welcher hier bisher vorgeschlagenen Lösung) ohnehin nur in diskreten Zeitabschnitten sampelst. Diese Zeitabschnitte macht man jeweils länger als die maximal zu erwartende Prellzeit, und braucht so keine zusätzliche Entprellung in der Software mehr.
Das Panel hat eine Größe von 270 x 130 mm und ist mit 3mm LEDs bestückt.
Was sind das für Duo-LEDs? Gemeinsame Anode oder gemeinsame Kathode? Oder gar antiparallel mit nur zwei Beinchen?
Und hast Du mal geschaut, ob auch die nur mit den 3mA auskommen, und idealerweise für alle LED-Typen und -Farben der gleiche Vorwiderstandswert benutzt werden kann, damit es gut aussieht?
Und zuletzt noch die Frage: Wie soll der Mikrocontroller eigentlich die Signale und Weichen (und vielleicht auch die Züge?) auf der Modellbahnanlage ansteuern? Und gibt es nicht auch noch sowas wie "Gleis-belegt-Melder"?
Diese Zeitabschnitte macht man jeweils länger
als die maximal zu erwartende Prellzeit, und braucht so keine
zusätzliche Entprellung in der Software mehr.
Mehrere Taster kann man auch an einem analogen Input per Spannungsteiler
abfragen.
Kommt halt auf die Menge an ... hier ist von 58 Tastern die Rede.
Da wird man wohl eine ganze Handvoll Inputs brauchen; mehr als acht an einem halte ich für mutig. Also werden mindestens 8 ADC-Kanäle dafür erforderlich.
Diese Zeitabschnitte macht man jeweils länger
als die maximal zu erwartende Prellzeit, und braucht so keine
zusätzliche Entprellung in der Software mehr.
Und was ist mit Störimpulsen?
Rechnest Du da bei diesem Projekt hier wirklich damit?
Ich empfehle ja Matrixlösung für LEDs und Taster, und da wäre beides auch noch automatisch synchronisiert (d.h. keine Einstreuung durch Stromflanken der LEDs im Moment des Samplings zu erwarten). Stärkere Pullups/Pulldowns können notfalls mögliche Einstreuungen von woanders her reduzieren. Und wenn das alles noch nicht reicht, kann man auch noch per Software entstören (erst bei X mal identisch gesampelten Zustand passiert etwas).
Aber ganz ehrlich: ich hab' sowas bisher nie gebraucht. Bei einer so störverseuchten Umgebung sollte man dann vermutlich eher dagegen etwas tun.
Wie soll der Mikrocontroller eigentlich die
Signale und Weichen (und vielleicht auch die Züge?) auf der
Modellbahnanlage ansteuern?
Die Signale sind Marke-Eigenbau aus dem 3D Drucker mit drei 3mm LEDs - rot grün gelb und werden über Digital-Transistoren vom Typ BCR108 angesteuert.
Die elektrischen C-Gleis Weichenantriebe von Märklin werden über MOS-FETs vom Typ IRLML0040 mit 15 Volt und einem Puls von 100 ms gestellt. Damit brennt nix durch !
Die Loks werden von einem ATmega32 gesteuert. Die S/W erzeugt das CAN-Bus Protokoll, das über ein CAN-Bus Shield von JoyIt an die Märklin Mobile Station 2 geschickt wird.
Und gibt es nicht auch noch sowas wie
"Gleis-belegt-Melder"?
Als Gleis-Besetzt-Melder sind ca. 13 cm vor jedem Signal mittig in die C-Gleise IR-Reflex Sensoren vom Typ CNY70 eingebaut - d.h. nur wenn der Lok-Schleifer drüber fährt, gibts eine Besetzt-Meldung. Mit Hilfe dieser Sensoren (zur Unterdrückung von Tageslicht gepulst mit 1 KHz und gelesen mit einem Sallen-Key Hochpass-Filter) werden die Loks dann abgebremst, sodass sie exakt vor einem auf Rot gestellten Signal anhalten - und das unabhängig von der aktuell eingestellten Lok-Geschwindigkeit.
Selbst bei Mehrzugbetrieb könnten die Weichenpaare
W 7/8
W 9/10
auf einen Taster und eine LED zusammengelegt werden.
Ja ok, erleichtert den Verdrahtungsaufwand jetzt nicht großartig...
Wär beim Betrieb der Anlage aber auch ein gewisser Komfort.
Beim Einzugbetrieb könnte man zusätzlich weitere Weichenpaare zusammenlegen:
W 4/18
W 5/19
W 13/14
W 16/17
So zumindest hatte ich in den 1970er Jahren meine (kleine) analoge Anlage verkabelt... ;-)
Würde man das heute ebenso machen?
Hätte der TO gerne ein echtes 1:1-Feeling beim Betrieb und jede Weiche wird (muss?) einzeln bedient werden?
Ich wurde von Euch missverstanden, oder habe mich unverständlich ausgedrückt (tschuldigung dafür...).
Meine Frage war ja, ob man heute "Weichenpaare" einzeln ansteuert oder sie gemeinsam (zeitgleich) bedient?
Betrifft sowohl die Modellbahn als auch die echte Bahn.
Ich oute mich:
Würde nicht verstehen, wieso ein Weichenpaar nicht parallel angesteuert wird.
Ist aber ot, nicht wichtig, und soll jetzt dieses Thema nicht verunstalten.
Würde nicht verstehen, wieso ein Weichenpaar nicht parallel angesteuert
wird.
Zum Beispiel wäre ein möglicher Grund, dass der Trafo nicht genug Strom für die Parallelschaltung hergibt. Oder die Leitungen dafür zu dünn sind (Spannungsabfall).
Würde nicht verstehen, wieso ein Weichenpaar nicht parallel angesteuert
wird.
Zum Beispiel wäre ein möglicher Grund, dass der Trafo nicht genug Strom
für die Parallelschaltung hergibt. Oder die Leitungen dafür zu dünn sind
(Spannungsabfall).
Wenn das so ist (spräche für ein sehr schlechtes Design der Anlage), dann kann man das Problem auf dem Master lösen. Es spielt dabei allerdings überhaupt keine Rolle, ob die Aktoren dann letztlich per Multiplex oder seriellen Porterweiterungen angesteuert werden.
am EINEM Port für rot/grün LED braucht es keine Taster,
Mein Kommentar bezog sich auf die letzte Schaltung auf der von DIR zittierten Website. Was hat das jetzt wieder mit den Tasten hier zu tun.
Taster gehören an anderen Ports!
Warum eigentlich? Wenn die LED regelmäßig für z.B. 1ms ausgeschaltet wird, um den am gleichen Port angeschlossenen Taster zu lesen, stört das niemanden.
Hätte der TO gerne ein echtes 1:1-Feeling beim Betrieb und jede Weiche
wird (muss?) einzeln bedient werden?
Zeitgemäßer wäre wohl, komplette Weichenstraßen zu schalten, d.h. sich bei der Bedienung gar nicht mit den einzelnen Weichen zu beschäftigen, sondern Ausgangs- und Endposition eines Fahrtabschnittes festzulegen und dann kann der Rechner machen.
Wenn das so ist (spräche für ein sehr schlechtes Design der Anlage),
dann kann man das Problem auf dem Master lösen.
Schlechtes Design wäre es, wenn wegen strohdoofer Steuerung völlig überzogene Spitzen der Stromaufnahme erzeugt werden, auf die das Netzteil dann ausgelegt werden müsste. Sonst hätte man den Worst-Case mit Anlaufstrom aller Stellmotoren zum gleichen Zeitpunkt als Auslegungskriterium für das Netzteil. Da lohnt es sicher, das detaillierte Timing der Steuerung zu überlassen und zumindest die Motoren zeitversetzt anlaufen zu lassen.
Meine Frage war ja, ob man heute "Weichenpaare" einzeln ansteuert oder
sie gemeinsam (zeitgleich) bedient
Man legt Fahrstrassen fest.
Im Gleisbildstellwerk gibt es also einen Knopf für Startpunkt und einen für Zielpunkt. Weichen, abweisende Weichen und Signale werden dann automatisch gestellt. Dann werden Fahrstrassen noch verriegelt so lange ein Zug sie benutzt.
Mit gemeinsamer Kathode, Reichelt: EVL 209SURSYGW, alle LEDs mit 5V über
1K gespeist.
Super, danke. Das Datenblatt ist zwar etwas dürftig, aber die haben dort die Kennlinien für die Intensität auch mit 1/10 Duty-Cycle aufgenommen, daher sollte 1:8 Multiplexbetrieb gehen.
Signale (..) Transistoren vom Typ BCR108
Weichenantriebe (...) MOS-FETs vom Typ IRLML0040
Loks (...) ATmega32 (...) CAN-Bus
Gleis-Besetzt-Melder (...) IR-Reflex Sensoren vom Typ CNY70
Sehr schön, danke, da hast Du ja offenbar schon einiges an Elektronik & Software am Start. :-)
Hintergrund meiner Fragen dazu war, ob der im Ausgangspost von Dir gewünschte 8-Bit Atmel AVR Controller ggf. noch mehr machen soll als das Bedienfeld ansteuern, und falls noch andere Mikrocontroller beteiligt sind, wie er mit denen kommunizieren soll.
Oben erwähnst Du einen ATmega32 für die Loks. Soll das Bedienfeld da auch mit angeschlossen werden? Oder soll es einen eigenen Controller für das Bedienfeld geben und wenn ja, wie soll der mit den anderen Controller(n) reden?
Meine Frage war ja, ob man heute "Weichenpaare" einzeln ansteuert oder
sie gemeinsam (zeitgleich) bedient
Man legt Fahrstrassen fest. (...) einen Knopf für Startpunkt und
einen für Zielpunkt. Weichen, abweisende Weichen und Signale
werden dann automatisch gestellt. (...)
Also ganz anders als Modellbahnknöpfchen.
Wenn er möchte, kann Manfred L. sowas auch mit seinem Bedienfeld realisieren. Die gelben Taster müssen nicht ausschließlich dafür da sein, die Signale direkt zu schalten, sondern können auch als Start/Ziel der Fahrstraße dienen. Über die Gleismelder "weiß" seine Software auch, vor welchen Signalen gerade Züge stehen, und welche Blockstellen daher belegt sind.
Ablauf könnte so aussehen:
1.) Zusätzliche Taste "Fahrweg wählen" drücken.
-> Die Anzeige wechselt in den "Fahrweg-wählen-Modus". Alle grünen Weichen-LEDs gehen aus. Die Signal-LEDs zeigen gelb für belegte Blöcke und grün für freie.
2.) Startblock wählen mit gelber Taste an einem Signal, an dem auch ein Zug steht (d.h. dort muss es gelb leuchten)
-> Rückmeldung: die betreffende Signal-LED blinkt gelb.
3.) Zielblock wählen mit gelber Taste an einem Signal, an dem noch kein Zug steht (d.h. dort muss es grün leuchten)
-> Software sucht eine freie Fahrstraße dahin, stellt die Weichen entsprechend. Anzeige wechselt wieder in den "Übersichts-Modus". Eigentlich kann die Software jetzt auch noch gleich den Zug ans gewünschte Ziel fahren. :-)
falls noch andere Mikrocontroller beteiligt
sind, wie er mit denen kommunizieren soll
Es gibt einen Main-Controller als Master (ATmega1284P) der mit drei weiteren ATmega32 Controllern (als Slaves) über TWI kommuniziert. Einer für das Bedienpanel, einer für die Einstellung der Geschwindigkeit von 8 Loks mittels Potis und der Fahrt-Richtung und einen für die Erzeugung der Kommandos via CAN-Bus an die Märklin Mobile Station 2.
Darüber hinaus gibt es für jede der 19 Blockstrecken auf der Anlage einen ATmega8 (als Slave), die mit dem Main-Controller über I2C mit Bus-Treibern vom Typ PCA9600 kommunizieren. Das geht mit 6-adrigem Flachband-Kabel über 15 Meter mit 50Kbit/s ohne Probleme.