Hallo zusammen!
Ich stehe vor folgendem Problem:
Zur Zeit suche ich nach einer Lösung um viele Schaltimpulse von dem
Weichenbildstellpult unserer Modellbahnanlage über möglichst wenige
Adern zu den Weichen zu führen. Bis jetzt hat jede Weiche ihr eigenes
Kabel vom Schaltpult, was sich jedoch als äußerst unpraktisch erwiesen
hat.
In dem derzeitigen Stadium noch auf Märklins Digitalsystem umzusteigen,
scheidet wegen den hohen Kosten für mich aus.
Daher kam ich auf die Idee, die Eingangsimpulse über ICs 4021 zu
"codieren" und über angefügte Schaltung mit 4094 (jede Leitung noch über
4,7V ZD auf GND gezogen) wieder zu decodieren und die Weichen (über
Transistoren) anzusteuern.
Ist dies prinzipiell derart möglich oder funktionieren oben genannte ICs
nur mit der Seriellen Schnittstelle? Gäbe es andere Lösungen?
Danke im Voraus!
idee: gut
ausführung: wird nicht klappen.
da die anlage scheinbar größer ist, wirst du um eine
differentiell-wandlung nicht herumkommen, um die distanz fehlerfrei
überbrücken zu können.
tipp: billigerer wandler als die bekannten von maxim ist der SN75176
ich würde auch nicht direkt von der RS232 auf die schieberegister gehn,
sondern einen mikrocontroller zur kopplung zu verwenden. allein schon,
ums der PC-software einfacher zu machen.
vielleicht wäre es auch eine überlegung wert, "intelligente"
weichenknoten zu bauen.
z.b. 8 weichen zu einem knoten zusammenfassen und diesen knoten einem
einzelnen mikrocontroller überlassen. diese controller werden über ein
differenielles bussystem (z.b. uart -> 2 adern) an einen master
angeschlossen, der mit dem (scheinbar vorhandenen) pc verbunden ist.
der ansatz hätte den vorteil, dass du weniger adern brauchst und nicht
bei jeder änderung alle register neu durchladen musst.
Ich würd' mal sagen, probier's aus. Ich hab' mal vor ewigen Zeiten so
was ähnliches gebaut und hat eigendlich ganz gut funktioniert. Ich hab'
aber nur TX verwedet, CLK hab' ich einfach über ein Verzögerungsglied
realisiert und das Datenbit als 0xff oder 0x00 gesendet. CLK kam
Zeitversetzt irgendwann im Datenbyte :-)
Bei deiner Schaltung solltest nur OE explizit setzen können ...
Hallo,
am konsequentesten wäre die Verwendung eines 8poligen
mimimicroprozessors pro Weiche z.B. von Microchip oder Atmel. Der müsste
bloss 1 serielles Byte analysieren und feststellen "ich bin gemeint" und
dann einen Impuls für rechts oder links ausgeben (über je einen
Schalttransistor). Das reicht dann für 128 Weichen, und man muss nur
Versorgungsspannung plus 1 Datensignal direkt von Weiche zu Weiche
weiterleiten. Weniger Aufwand ginge nur mit einem Spezial-Weichenchip.
Gruss Reinhard
Reinhard Kern schrieb:
> mimimicroprozessors pro Weiche z.B. von Microchip oder Atmel. Der müsstehttp://www.atmel.com/dyn/products/product_card.asp?part_id=4605 =)
> Versorgungsspannung plus 1 Datensignal direkt von Weiche zu Weiche
nicht differentiell? hmm...
Schonmal vielen Dank für eure wirklich schnellen Antworten!
Ein PC ist leider nicht vorhanden. Ich dachte, dass man von den Tastern
des Stellpults an die Eingänge der 4021 geht, diese dann die "Daten"
codieren und durch die Gegenseite mit 4094 wieder an die Ausgänge
gegeben werden. Scheint jedoch wegen der Leitungslänge (?) nicht zu
funktionieren (s. oben).
Ich bin leider nicht so bewandert in diesem Gebiet, darum Fragen vorweg:
Was ist die differentielle Wandlung?
Was ist der Unterschied zwischen RS232 und RS485, da der SN75176 wohl
ein solcher Wandler zu sein scheint?
Mit Mikrocontrollern habe ich mich zwar schon mal kurz befasst,
allerdings bin ich nicht in der Lage mir die Software für so einen µC
selbst zu schreiben. An eine solche Lösung dachte ich nämlich auch
schon, bis ich auf den 4021 gestoßen bin …
>Der ansatz hätte den vorteil, dass du weniger adern brauchst und nicht bei jeder >änderung alle register neu durchladen musst.
Auf die paar Adern käme es jetzt auch nicht an. Zur Zeit stören nur die
großen Kabelbüschel, von 25-poligen Sub-D-Kabeln, da jede Weiche einzeln
angesteuert wird. Wie viel Zeit benötigt denn das vollständige
Durchladen der Register? Unter 2-3 Sek. wäre es noch akzeptabel …
Da die komplette Anlage in Modulen organisiert ist, würde sowieso jedes
Modul eine "zentrale" Steuereinheit bekommen.
OffTopic: Da die Weichen aufgrund verschiedener Ausführungen teils mit
Wechselstrom und teils mit Gleichstrom betrieben werden müssen, ist es
doch notwendig den Schaltstrom über ein Relais (mit Transistor davor)
von den ICs zu trennen oder gibt es eine andere Möglichkeit auch
Wechselstrom mit Transistoren o.Ä. zu schalten?
Ich hoffe die Sache wird nicht zu komplex …
> Was ist der Unterschied zwischen RS232 und RS485, da der> SN75176 wohl ein solcher Wandler zu sein scheint?
Wie du schon gehoert hast kann man ICs nicht einfach mit 10m Kabel
verbinden weil das nicht zuverlaessig genug ist und auch die Gefahr
besteht das ein IC mal durch Potentialunterschiede kaputt geht.
Ein Loesungsansatz dafuer ist RS232. Dort uebertraegt man Information
nicht mit 0 und 5V, sondern mit -12V und +12V. Wegen des groesseren
Abstands ist das sicherer.
Ein anderer Loesungsansatz ist RS422. Da uebertraegt man die Daten mit 0
bis 5V, aber nochmal dasselbe Signal invertiert auf einer anderen
Leitung. Wenn der Empfaenger dann ein Signal invertiert und danach
beides addiert steigt der Rauschabstand auf 10V, sollte es aber bei der
Uebertragung zu einer Stoerung gekommen sein so wurde die ja invertiert
und faellt dadurch weg.
RS485 ist dasselbe wie RS422, aber man verwendet fuer hin und
rueckleitung dasselbe Leitungspaar. Das heisst die Leitungstreiber
muessen in ihrer Datenrichtung umschaltbar sein und die verwendete
Elektronik und ihre Protokolle muessen darauf eingerichtet sein.
Es gibt natuerlich noch viele weitere Moeglichkeiten. Zum Beispiel LVDS
Driver oder 20mA Stromschleifenschnittstelle.
> Mit Mikrocontrollern habe ich mich zwar schon mal kurz befasst,> allerdings bin ich nicht in der Lage mir die Software für so einen µC> selbst zu schreiben.
Es waere aber em effizientesten wenn du dieses Wissen nochmal deutlich
vertiefen wuerdest. Auch wenn viel, auch von mir <BG>, ueber Bascom
hergezogen wird, du bist der anvisierte Kundenkreis. Damit solltest du
nach ein paar Tagen rumprobieren zu einer Loesung kommen und dieses
Wissen wird dir dann in der Zukunft bei anderen Projekten weiterhelfen.
> von den ICs zu trennen oder gibt es eine andere Möglichkeit auch> Wechselstrom mit Transistoren o.Ä. zu schalten?
Das koenntest du z.B mit einem Triac. Es gibt kleine Optotriacs die wohl
leisten was du willst. Eine andere denkbare Moeglichkeit waere es
vielleicht an den Ausgang eines Schalttransistor einen Gleichrichter zu
schalten.
Olaf
>Wenn der Empfaenger dann ein Signal invertiert und danach>beides addiert steigt der Rauschabstand auf 10V, sollte es aber bei der>Uebertragung zu einer Stoerung gekommen sein so wurde die ja invertiert>und faellt dadurch weg.
Stimmt nicht ganz.
Durch die differenzielle Übertragung "sieht" der Empfänger zwischen
seinen beiden Eingangspins einmal eine Spannung mit einem negativen
Vorzeichen und einmal mit einem positiven Vorzeichen (je nach logischem
Bit)
Der Empfänger wertet diese DIFFERENZ aus und nicht den absoluten Bezug
zur Masse.
Dadurch werden zum einen Ptenzialunterschiede zwischen den Teilnehmern
in einem gewissen Rahmen uninteressant und zum anderen werden
Gleichtaktstörungen unterdrückt.
Eine Gleichtaktstörung wäre, wenn auf die Datenleitung eine Störung
einwirkt, die den Spannungspegel (bezogen auf Masse) verändert. Diese
Veränderung würde auf BEIDE Leitungen gleichermaßen wirken und somit
würde die Differenz zwischen den beiden Leitungen unverändert bleiben.
Beispiel:
Leitung A = 0v Leitung B = 5V : Differenz = +5V
Störung verursacht hebt beide Pegel um 3V an:
Leitung A = 3V Leitung B = 8V : Diffenrenz = +5V
Bei sogenannten Single-Ended Übertragungen, wo man mit nur einer Leitung
die Daten gegen Massen bezogen überträgt, funktioniert das nicht, da die
Signalleitung mit einer anderen Impedanz übertragen wird, als die Masse
und die Störung somit auf den Leitungen unterschiedliche Spannungshübe
verursacht.
RS485 ist lediglich eine elektrische Übertragungsform (differenziell).
In welcher Form du dabei Daten überträgst, ist ersmal nicht so wichtig.
Du könntest also den von dir genannten Pegelwandler direkt an Seriellen
Ausgang und Eingang deiner Schieberegister anschliessen.
Über die Geschwindigkeit würde ich mir keine Gedanken machen:
wenn du das Ganze mit nur 1KHZ taktest, dann kannst du bereits 1000 Bit
/ sekunde übertragen. Also Daten für 1000 Weichen :-)