Hallo zusammen :) ---------------------------------------------- Zum Kontext: Ich habe ein System aufgebaut mit einem Raspberry Pi (Master) und mehreren Arduino ProMinis 5V (Slaves), die an unterschiedlichen Orten unterschiedliches tun und miteinander reden. Für die Kommunikation habe ich mich für RS485 + Modbus entschieden mit den vermutlich günstigsten Transceivern-Modulen (MAX485), die es so gibt (s. Anhang). Am Raspberry hängt ein USB-Transceiver. Das funktioniert auch alles soweit (und ich merke an dieser Stelle an, dass ich sowohl das Modbus-Protokoll als auch RS485 noch nicht vollständig durchdrungen habe und ich mich noch zu den Anfängern zähle was Elektrotechnik anbelangt). Die Baudrate beträgt 19200 und die Auslastung ist sehr sehr gering. Das System ist in letzter Zeit gewachsen, und es ließ sich nicht wirklich vermeiden das RS485-Netzwerk auf eine Sterntopologie auszubauen. Daher war der Plan, immer nur einen EINZELNEN RS485-Zweig auf den Raspberry durchzuschalten. Also die zugehörige Schaltung geplant, gemerkt dass Lochraster diesmal ein wenig umständlich wird und daher das Projekt direkt mit meinem ersten selbsterstellten Leiterplatten-Design mit KiCAD kombiniert (s. Anhang). ---------------------------------------------- Problemstellung: Bei der Schaltung sollte mithilfe des Dual-Channel Multiplexers CD4052B jeweils die A- und B-Leitung auf den USB-Transceiver durchgeschaltet werden. [Nebenfunktion war das Abschalten der 5V-VCC_Leitung, die im gleichen Kabel geführt wird. Das ist für Slaves gedacht, die nur selten angesprochen werden und dann nur kurz zum Daten übermitteln hochgefahren werden.] Leider lag mein Verständnis eines Multiplexers wohl ein gutes Stück daneben. Ich dachte nicht, dass R_on im Bereich von 100 Ohm liegt (bzw. dass R_on den Widerstand zwischen Ein- und Ausgang bezeichnet). Kurz gesagt: mit dem MUX dazwischen funktioniert die Kommunikation nicht mehr. Die Freude über die erste professionellere Platine ist erstmal dahin... ---------------------------------------------- Fragestellungen: A) Kann mir jemand erklären oder Referenzen geben, warum der Widerstand eines Mux so "hoch" ist. Ich dachte, dass da ein paar FETs durchgeschalten werden und hatte ein paar Ohm im Sinn. B) Kann mir jemand erklären, warum das mit dem hohen seriellen Widerstand in den differentiellen Leitungspaaren nun nicht mehr funktioniert. (100 Ohm entsprächen bei meinem Kabel so um die 330m. AWG26 CCA Koaxialkabel) C) Gibt es Multiplexer (oder Bauteile die dasselbe tun) mit deutlich geringeren Widerständen? D) Ist die Platine noch zu retten? Ich bräuchte in dem Fall ja ein baugleiches Bauteil (SOP-16), das meine Anforderungen erfüllt. Ein anderer Ansatz ist soweit ich das erkannt habe, TTL-Pegel durchzuschicken. Dabei würde dann wohl RX/TX statt A/B durchgeschalten werden. Folglich würde man für jeden Zweig noch einen weiteren Transceiver benötigen?! Dann müsste ich auf den USB-Transceiver wohl verzichten und direkt auf die GPIO-Pins gehen incl. Pegelwandler, da die RS485-Module und die verwendeten ProMinis die 5V brauchen?! ---------------------------------------------- Verwandte Topics, aus denen ich nicht umfassend schlau wurde: Beitrag "RS485-Multiplexer" ---------------------------------------------- Sorry für den langen Text & vielen Dank für eure Hilfe!
Für was brauchts denn den multiplexer? RS485 einfach alle zusammenhängen, dafür sind die gebaut.
murphy schrieb: > A) Kann mir jemand erklären oder Referenzen geben, warum der Widerstand > eines Mux so "hoch" ist. 125Ohm nach DB. Warum ist 'Eigenschaften raten und mit Wunschvorstellungen annehmen' hier eigentlich so populär? Man sollte ein DB schon lesen und verstehen bevor man sowas einsetzt. murphy schrieb: > B) Kann mir jemand erklären, warum das mit dem hohen seriellen > Widerstand in den differentiellen Leitungspaaren nun nicht mehr > funktioniert. 125R + 125R = 250R im Multiplexer und 120R || 120R = 60R Busabschluss ist eben eine echt dumme Kombination für kräftige Pegel. murphy schrieb: > D) Ist die Platine noch zu retten? Das ganze Multiplexe ist fürn A.... RS485 ist ein BUS. Da kannst Du min 64 Slaves anschliessen und mit komplexer Terminierung und oder niedrigen Datenraten kannst Du denn auch in wilder Stern, Baum, Bus, Spaghettiknäuel Verkabelung nutzen. Also defective by design die PCB. Brück den ganzen Kram raus und benutze den Bus auch als Bus ohne diesen Hickhack.
Da ich nicht sonderlich erfahren bin und eine Sterntopologie nicht empfohlen wird bei RS485 soweit ich das in Erinnerung habe.
murphy schrieb: > mit den vermutlich günstigsten Transceivern-Modulen (MAX485), die es so > gibt (s. Anhang) Die Dinger, die völlig ignorieren, dass zu den Datenleitungen auch der GND gehört...
Die erste Antwort bezieht sich auf Pepe Ts. Frage. Lothar M. schrieb: > Warum ist 'Eigenschaften raten und mit Wunschvorstellungen annehmen' > hier eigentlich so populär? Naja der Widerstand liegt doch in der Größenordnung und zudem hängt der soweit ich das sehe von der angelegten Spannung ab. > Man sollte ein DB schon lesen und verstehen bevor man sowas einsetzt. Das ist korrekt, aber manchmal erschlagen die einen auch und man hat falsche Vorstellungen im kopf. > murphy schrieb: >> B) Kann mir jemand erklären, warum das mit dem hohen seriellen >> Widerstand in den differentiellen Leitungspaaren nun nicht mehr >> funktioniert. > > 125R + 125R = 250R im Multiplexer und 120R || 120R = 60R Busabschluss > ist eben eine echt dumme Kombination für kräftige Pegel. Also zu viel Spannungsabfall. Dann wäre die Frage schon einmal geklärt. > Das ganze Multiplexe ist fürn A.... > RS485 ist ein BUS. Da kannst Du min 64 Slaves anschliessen und mit > komplexer Terminierung und oder niedrigen Datenraten kannst Du denn auch > in wilder Stern, Baum, Bus, Spaghettiknäuel Verkabelung nutzen. > Also defective by design die PCB. > Brück den ganzen Kram raus und benutze den Bus auch als Bus ohne diesen > Hickhack. Hmm ok. Ich bin jedoch kein Profi bin aktuell froh, dass ich die 120 Ohm Terminierung korrekt eingesetzt habe. Ein weiterer Vorteil, weshalb ich den "Zwang zum Stern" nicht so schlimm fand, war, dass ich damit eben gut die einzelnen Arduinos an einem Einzelbus ein und auschalten hätte können. Daher würde ich mich doch noch über die ein oder andere Anregung freuen, ob das System mit mehreren Bussen (es hängen ja teils auch 3 µC an einem Stang) wie es aktuell geplant war zu retten ist. Falls nicht werde ich deinen Tipp gerne umsetzten und alles auf einen einzelnen Bus legen.
> Kann mir jemand erklären oder Referenzen geben, > warum der Widerstand eines Mux so "hoch" ist. Weil die Transistoren darin klein sind. Es gibt natürlich andere geeignete Chips. Du kannst mehrere CD4052 übereinander löten, um den Innenwiderstand zu reduzieren.
Lothar M. schrieb: > Die Dinger, die völlig ignorieren, dass zu den Datenleitungen auch der > GND gehört... Naja GND wird ja mitgeführt, da alle Teilnehmer über die Leitung mit Strom versorgt werden. Aber ja, das hat sich so ergeben mit den günstigen Modulen, da ich es erstmal testen wollte um mich mit der Thematik auseinanderzusetzen. Und da es funktionierte (ohne MUX) blieb es bei den Modulen.
Stefan ⛄ F. schrieb: >> Kann mir jemand erklären oder Referenzen geben, >> warum der Widerstand eines Mux so "hoch" ist. > > Weil die Transistoren darin klein sind. Es gibt natürlich andere > geeignete Chips. > > Du kannst mehrere CD4052 übereinander löten, um den Innenwiderstand zu > reduzieren. Ah ok, gut zu wissen und ein interessanter Lösungsansatz. Ist zunächst mal notiert (ich habe die naive Hoffnung,dass noch eine weitere Lösungsmöglichkeit aus dem Forenhimmel fällt). Danke schon einmal. Dann wären die Fragen A) und B) schon einmal geklärt.
Stefan ⛄ F. schrieb: > mehrere CD4052 übereinander löten Und zur sicherheit parallel dazu ein relais laufenlassen :)
murphy schrieb: > interessanter Lösungsansatz. Ich denke nicht, dass dadurch dein Problem gelöst wird. Hast du alle Geräte (auch den PC) über GND miteinander verbunden? Hast du alle langen Leitungen (>30cm) an beiden Enden mit 120Ω terminiert? Hast du die Signale mal mit einem Oszilloskop gemessen? Wenn ja: zeigen! Wenn nicht: machen! Wenn die Leitung zwischen deinem Multiplexer und dem USB Adapter kurz ist (<30cm) dann brauchst du sie nicht zu terminieren und dann ist der Innenwiderstand des Multiplexers egal.
Stefan ⛄ F. schrieb: > Hast du alle Geräte (auch den PC) über GND miteinander verbunden? Ja. > Hast du alle langen Leitungen (>30cm) an beiden Enden mit 120Ω > terminiert? Der USB-Transceiver ist terminiert und der letzte Busteilnehmer. Teilnehmer dazwischen sind kurz angebunden. Das gilt für alle Einzelbusse. > Wenn die Leitung zwischen deinem Multiplexer und dem USB Adapter kurz > ist (<30cm) dann brauchst du sie nicht zu terminieren und dann ist der > Innenwiderstand des Multiplexers egal. Die ist kurz. Wann genau ist der Innenwiderstand egal? Ich komme mit diesem Gedankengang gerade nicht ganz mit.
murphy schrieb: > Der USB-Transceiver ist terminiert und der letzte Busteilnehmer. > Teilnehmer dazwischen sind kurz angebunden. Das gilt für alle > Einzelbusse. Das ist mir zu unklar, zeichne es auf. > Wann genau ist der Innenwiderstand egal?
1 | _______ |
2 | | | |
3 | Gerät 1 ===========| | |
4 | | | |
5 | Gerät 2 ===========| | |
6 | | MUX |=====USB Adapter |
7 | Gerät 3 ===========| | |
8 | | | |
9 | Gerät 4 ===========| | |
10 | |_______| |
Links lange Leitungen mit Abschlusswiderständen an beiden Enden. Rechts kurze Leitung ohne Abschlusswiderstände.
Ach nee, das geht auch nicht. Damit würde nur die Kommunikation von links nach rechts besser aber nicht in die umgekehrte Richtung. Dann wohl doch mehrere Multiplexer übereinander löten.
Stefan ⛄ F. schrieb: > murphy schrieb: >> Der USB-Transceiver ist terminiert und der letzte Busteilnehmer. >> Teilnehmer dazwischen sind kurz angebunden. Das gilt für alle >> Einzelbusse. > > Das ist mir zu unklar, zeichne es auf. Gerade dabei gewesen --> s. Bild R = 120 Ohm
murphy schrieb: > Verschaltung.jpg Ich glaube da bleibt dir keine andere Möglichkeit, als den Multiplexer zu verbessern.
Stefan ⛄ F. schrieb: > Ach nee, das geht auch nicht. Damit würde nur die Kommunikation > von > links nach rechts besser aber nicht in die umgekehrte Richtung. > > Dann wohl doch mehrere Multiplexer übereinander löten. Jetzt hab ich schon kurz gefeiert. :D Oder doch dieser Ansatz? "Ein anderer Ansatz ist soweit ich das erkannt habe, TTL-Pegel durchzuschicken. Dabei würde dann wohl RX/TX statt A/B durchgeschalten werden. Folglich würde man für jeden Zweig noch einen weiteren Transceiver benötigen?! Dann müsste ich auf den USB-Transceiver wohl verzichten und direkt auf die GPIO-Pins gehen incl. Pegelwandler, da die RS485-Module und die verwendeten ProMinis die 5V brauchen?!"
Stefan ⛄ F. schrieb: > murphy schrieb: >> Verschaltung.jpg > > Ich glaube da bleibt dir keine andere Möglichkeit, als den Multiplexer > zu verbessern. Gibt es denn keine Multiplexer mit größeren Transistoren und geringerem R_on. Vielleicht mal noch ganz grundlegend. Was wäre denn ein besserer Ansatz gewesen drei RS485-Busse auf einen seriellen Eingang zu bringen ohne sie zu einem Bus zusammenzufassen? Den Mux mit einzelnen MOSFETs aufbauen?
murphy schrieb: > Oder doch dieser Ansatz? ... Das wäre ja keine Lösung im Sinne deiner Anfrage. Du wolltest doch die Platine retten.
Stefan ⛄ F. schrieb: > murphy schrieb: >> Oder doch dieser Ansatz? ... > > Das wäre ja keine Lösung im Sinne deiner Anfrage. Du wolltest doch die > Platine retten. Naja dann würde vor dem Mux jeder RS485-Bus bereits zu TTL-Pegeln gewandelt?! Und wenn ich das richtig verstanden habe sind die Eingänge der seriellen Schnittstelle hochohmig, sodass kaum Strom fließt und somit auch kaum Spannung über dem MUX abfällt. Richtig? Würde das funktionieren? Eine Lösung von der bisherigen Schaltung würde ich präferieren. Aber am Ende ist eine Lösung eine Lösung.
murphy schrieb: > Richtig? Würde das funktionieren? Ja, ich denke schon. Dein USB Adapter passt da aber nicht mehr rein.
murphy schrieb: > Ich dachte nicht, dass R_on im Bereich von 100 Ohm liegt Weit weg. Laut TI Datenblatt sind es beim CD4052 und 5V bis zu 1050 Ohm. Erst der 74HC4052 von NXP hat bei 4,5V max 180 Ohm.
Stefan ⛄ F. schrieb: > Ja, ich denke schon. Dein USB Adapter passt da aber nicht mehr rein. Ok. Jup..
Auf jeden Fall schon einmal vielen Dank allen die bis hierhin geantwortet haben. Ich würde mich über weitere Infos und Ideen freuen. Insbesondere fände ich es klasse, wenn mir hierauf noch jemand eine Antwort geben könnte und sein Wissen einbringt: "Vielleicht mal noch ganz grundlegend. Was wäre denn ein besserer Ansatz gewesen drei RS485-Busse auf einen seriellen Eingang zu bringen ohne sie zu einem Bus zusammenzufassen? Den Mux mit einzelnen MOSFETs aufbauen?"
Lösungsstand bisher: - Spagetti-Topologie und einfach mal ausprobieren - R_on reduzieren durch parallel aufgelöteten MUX - Wandlung zu TTL vor dem MUX
Peter D. schrieb: > murphy schrieb: >> Ich dachte nicht, dass R_on im Bereich von 100 Ohm liegt > > Weit weg. > Laut TI Datenblatt sind es beim CD4052 und 5V bis zu 1050 Ohm. > > Erst der 74HC4052 von NXP hat bei 4,5V max 180 Ohm. Oh Entschuldigung, dein Beitrag habe ich überlesen. Ja, das geht jetzt definitiv auf meine Kappe. Ich habe mich da von den angegebenen Ron_typ = 125 Ohm blenden lassen und vergessen, dass ich den Durchlasswiderstand eigentlich (ist schon paar Wochen her) schon mal gemessen habe. Nochmal kurz angesteckt und durchgemessen. R_on sind bei mir 263 Ohm bei 3,3V des Raspberrys. Die 125 Ohm wären bei 15V gültig. Der 74HC4052 ist dann doch deutlich besser. Lohnt sich ein Versuch (da es ihn ja baugleich gibt) oder bin ich auch mit dem 74HC4052 noch auf dem falschen Dampfer? Die Frage nach dem grundsätzlich sinnvolsten Vorgehen bei meiner Problemstellung ist aktuell (für mich) noch ungeklärt. Würde mich freuen wenn sich da noch ein Experte melden würde. Frage am Rande: Wenn im Datenblatt des CD4052 der AUGUST 1998 als Datum angegeben ist, wird der Chip dann immer noch baugleich (bezogen auf die Eigenschaften) wie zu der damaligen Zeit gefertigt?
murphy schrieb: > Ist die Platine noch zu retten? Nein, die Idee mit dem Multipexer ist Unsinn. Nimm für jeden Strang einen MAX3485, direkt am (seriellen-) Port des Raspi, die DE jeweils an einen Portpin. Wenn du die RO-Leitungen der MAXe veroderst kannst du sogar allen Clients gleichzeitig zuhören. (Allerdings dürfen die nicht gleichzeitig senden..) So kannst du die einzelnen Stränge auch korrekt abschließen. In der Praxis haben wir mal in einem größeren Vortragssaal mehrere Bedienpanele mit RS485 (9600Bd) - Sternverkabelung anschließen müssen. Funktioniert erstaunlicherweise problemlos. Uwe
murphy schrieb: > Das System ist in letzter Zeit gewachsen, und es ließ sich nicht > wirklich vermeiden das RS485-Netzwerk auf eine Sterntopologie > auszubauen. Diesen Stern durch Hin- und Rückleitungen in einen einzigen logischen Strang umzubauen ist keine Option?
Uwe B. schrieb: > Nein, die Idee mit dem Multipexer ist Unsinn. > > Nimm für jeden Strang einen MAX3485, direkt am (seriellen-) Port des > Raspi, die DE jeweils an einen Portpin. Wenn du die RO-Leitungen der > MAXe veroderst kannst du sogar allen Clients gleichzeitig zuhören. > (Allerdings dürfen die nicht gleichzeitig senden..) > So kannst du die einzelnen Stränge auch korrekt abschließen. > > In der Praxis haben wir mal in einem größeren Vortragssaal mehrere > Bedienpanele mit RS485 (9600Bd) - Sternverkabelung anschließen müssen. > Funktioniert erstaunlicherweise problemlos. > > Uwe Ich sehe schon, ich hätte hier vor der Platinenerstellung mal nachfragen sollen. Das denke ich nachher mal. Danke! Ich habe zudem, mit dem inzwischen besseren Blick auf die Sache, nochmal nach ICs geschaut und siehe da auch etwas möglicherweise passendes gefunden: MAX4618: R_on um 10 Ohm, gleiches Package und Bauform wie der CD4052B, Vcc bis 6V erlaubt. Könnte das der Königsmacher für das spezifische und hausgemachte Problem sein? [MAX4782: R_on um 1 Ohm, gleiches Package und Bauform wie der CD4052B, allerding Vcc-max = 4.6V, da sind meine 5V dann zu viel. Ich betreibe das Teil mit 5V und schalte mit 3,3V um.] [MAX14778: scheint sogar genau für RS485/RS232 gemacht zu sein, scheinbar gibt es diese Anwendung also doch?! Jedoch ansonsten unpassend.] Keine Sorge, ich höre bald auf zu nerven. ;)
(prx) A. K. schrieb: > murphy schrieb: >> Das System ist in letzter Zeit gewachsen, und es ließ sich nicht >> wirklich vermeiden das RS485-Netzwerk auf eine Sterntopologie >> auszubauen. > > Diesen Stern durch Hin- und Rückleitungen in einen einzigen logischen > Strang umzubauen ist keine Option? Doch notfalls schon. Ich habe es auf der Liste - allerdings bin ich aktuell noch ein wenig hartnäckig um für das angesprochene Problem eine Lösung zu finden (s. Beitrag eins drüber). Ich will ja auch etwas lernen dabei. :)
murphy schrieb: > MAX4618: R_on um 10 Ohm, gleiches Package und Bauform wie der CD4052B, > Vcc bis 6V erlaubt. Könnte das der Königsmacher für das spezifische und > hausgemachte Problem sein? Allerdings sind obige zu den 4052 kompatiblen Schalter nicht für längere Busse gebaut, bei denen schon mal Pegel ausserhalb von -0,3V..VCC+0,3V problemlos verdaut werden sollten. Weshalb das Datasheet Schutzdioden nahelegt. Kein Problem mit dem inkompatiblen MAX14778.
:
Bearbeitet durch User
(prx) A. K. schrieb: > murphy schrieb: >> MAX4618: R_on um 10 Ohm, gleiches Package und Bauform wie der CD4052B, >> Vcc bis 6V erlaubt. Könnte das der Königsmacher für das spezifische und >> hausgemachte Problem sein? > > Allerdings sind obige zu den 4052 kompatiblen Schalter nicht für längere > Busse gebaut, bei denen schon mal Pegel ausserhalb von -0,3V..VCC+0,3V > problemlos verdaut werden sollten. Weshalb das Datasheet Schutzdioden > nahelegt. Kein Problem mit dem inkompatiblen MAX14778. Ok, darf ich fragen wie diese höheren/niedrigeren Spannungen typischerweise zustande kommen? (Bei mir liegt auf jeden Fall alles auf dem selben GND falls das damit etwas zu tun hat). Soweit ich das Datenblatt verstehe, dienen die Dioden dem Fall, dass man etwas anschliest bevor man VCC und GND angeschlossen hat? Ist dies dann derselbe Effekt, da VCC undefiniert ist und somit jeder Pin schnell um 0,3V höheres Potential aufweisen kann? Ist dieser Effekt bei max. 50m Buslänge vernachlässigbar?
murphy schrieb: > Ok, darf ich fragen wie diese höheren/niedrigeren Spannungen > typischerweise zustande kommen? In jedem Haus und im E-Werk sind die Null-Leiter mit dem Erdleiter verbunden, und der Erdleiter ist in den Geräten oft mit GND verbunden. Da Strom durch den Null-Leiter fließt, fällt an ihm Spannung ab. Deswegen hat jedes Gebäude ein anderes GND Potential. Wenn nun deine Steuerung im Bürogebäude steht und die Maschine im benachbarten Gebäude, hast du einen Versatz auf GND. Das können durchaus ein paar Volt sein. Beispiel: Deine Steuerung sendet +3V und das Gerät am anderen Ende der Leitung hat einen GND Versatz von 3VAC. Dann addieren sich die beiden Spannungen zu einer pulsierenden Spannung zwischen -1,2V und +7,2V. Auch innerhalb von Gebäuden ist der Effekt häufig vorhanden. Es fließt immer ein bisschen Strom durch den Erdleiter, alleine schon wegen der Entstörkondensatoren in Netzfiltern. Stromfluss bewirkt Spannungsabfall. Dann gibt's da noch die Masseschleife. Stelle dir vor, dein PC ist geerdet und per USB mit einem ebenfalls geerdeten Drucker verbunden, der abseits deines Arbeitstisches steht. Dann bildet die GND Leitung des USB Kabels und die Erd-Leitung der 230V Versorgung einen Ring. Wenn innerhalb dieses Rings ein elektromagetisches Feld erzeugt wird (z.B. durch einen WLAN Router, oder einen Staubsauger-Motor) dann induziert dieses eine Wechselspannung in der Masseschleife. Auch dann hast du nicht mehr überall GND=GND. GND Versatz und Masseschleifen stören das Signal. Bei einer einfachen digitalen Übertragen von Logik-Signalen (wie bei Drucker mit Parallel-Port) reichen schon 0,5V um die Kommunikation zu stören. Und 1V reichen, um normale CMOS Mikrochips zu zerstören. Differentielle Übertragung mit einer hohen Toleranz für GND Versatz (wie bei RS485 und CAN) oder einer Potentialtrennung durch Übertrager (wie bei Ethernet und ISDN) lösen das Problem.
Uwe B. schrieb: > Nein, die Idee mit dem Multipexer ist Unsinn. > > Nimm für jeden Strang einen MAX3485, direkt am (seriellen-) Port des > Raspi, die DE jeweils an einen Portpin. Wenn du die RO-Leitungen der > MAXe veroderst kannst du sogar allen Clients gleichzeitig zuhören. > (Allerdings dürfen die nicht gleichzeitig senden..) > So kannst du die einzelnen Stränge auch korrekt abschließen. > > In der Praxis haben wir mal in einem größeren Vortragssaal mehrere > Bedienpanele mit RS485 (9600Bd) - Sternverkabelung anschließen müssen. > Funktioniert erstaunlicherweise problemlos. @TO: Mach es so!
murphy schrieb: > Ist dieser Effekt bei max. 50m Buslänge vernachlässigbar? Nein. Vernachlässigbar ist er nur bei Geräten, die direkt nebeneinander stehen und von einer gemeinsamen Steckdosenleiste versorgt werden.
Stefan ⛄ F. schrieb: > murphy schrieb: >> Ok, darf ich fragen wie diese höheren/niedrigeren Spannungen >> typischerweise zustande kommen? > > In jedem Haus ... Vielen Dank für die anschauliche Erklärung. Letzte Frage meinerseits: Wenn an dem Bus tatsächlich NUR Arduinos angeschlossen sind, die alle über das Bus-Kabel mitversorgt werden und somit nirgendwo auf einem lokalen GND liegen, der ein anderes Potential haben könnte, dann dürften doch auch keine Masseschleifen auftreten? Die angeschlossenen Arduinos hätten einen leicht angehobenen GND und ein abgesenktes VCC durch den seriellen Widerstand, ebenso der am Arduino verortete MAX485. Dann dürfte dieser Effekt theoretisch doch keine Rolle mehr spielen? Dann könnten mir lediglich noch elektromagnetische Einkopplungen Probleme machen, wobei ich nicht abschätzen kann wie viel Spannung so etwas induzieren kann. Wie gesagt letzte Frage, da ich vorraussichtlich die Verschaltung von Uwe B. - und von User Push nachdrücklich empfohlene - Schaltung verwenden werde.
murphy schrieb: > (prx) A. K. schrieb: >> murphy schrieb: >>> Das System ist in letzter Zeit gewachsen, und es ließ sich nicht >>> wirklich vermeiden das RS485-Netzwerk auf eine Sterntopologie >>> auszubauen. >> >> Diesen Stern durch Hin- und Rückleitungen in einen einzigen logischen >> Strang umzubauen ist keine Option? > > Doch notfalls schon. Ich habe es auf der Liste - allerdings bin ich > aktuell noch ein wenig hartnäckig um für das angesprochene Problem eine > Lösung zu finden (s. Beitrag eins drüber). Ich will ja auch etwas lernen > dabei. :) Gut, du wirst dabei lernen, daß die von A.K. genannte Lösung die beste ist. Warum kompliziert, wenn es auch einfach geht? Bei der Multiplexerei vergißt du geflissentlich, daß die Leitungen der gerade nicht aktiven Busteilnehmer in der Luft hängen und keinen definierten Pegel haben. Dies kann (und wird) zu unbeabsichtigten Pegelwechseln führen, die der Slave als Signal mißversteht. Du müßtest also an jedem einzelnen Strang BIAS-Widerstände vorsehen, die für definierten Pegel sorgen.
murphy schrieb: > Wenn an dem Bus tatsächlich NUR Arduinos angeschlossen sind, die alle > über das Bus-Kabel mitversorgt werden und somit nirgendwo auf einem > lokalen GND liegen, der ein anderes Potential haben könnte, > dann dürften doch auch keine Masseschleifen auftreten? Schleifen hast du dann nicht, aber evtl. unterschiedlichen Spannungsabfall, wenn die Arduino unterschiedlich viel Strom aufnehmen oder die USB Kabel unterschiedlich gut leiten. Wie gesagt sind RS485 Treiber dafür ausgelegt, einen gewisse Masse-Versatz zu tolerieren.
Stefan ⛄ F. schrieb: > Wie gesagt sind RS485 Treiber dafür ausgelegt, einen gewisse > Masse-Versatz zu tolerieren. Die meisten erlauben -7 bis +12V aber es gibt auch mehr. Z.B. https://www.renesas.com/eu/en/products/interface-connectivity/rs-485-rs-422-rs-232/rs-485rs-422/rs-485422-overvoltage-protection/isl32496e-60v-fault-protected-5v-rs-485rs-422-transceivers-25v-cmr-and-esd-protection mit +/- 25V. Innerhalb eines Hauses sollte das aber nicht notwendig sein, eher im Freien und Leitungslängen > 1000 m.
Blechbieger schrieb: > Die meisten erlauben -7 bis +12V aber es gibt auch mehr. Bei den 13V sind die 5V Signale schon einkalkuliert. Also maximal 7V DC GND Versatz, bzw. 5V AC. Ich stimme zu, das reicht normalerweise innerhalb eines Gebäudes.
Icke ®. schrieb: > Gut, du wirst dabei lernen, daß die von A.K. genannte Lösung die beste > ist. Warum kompliziert, wenn es auch einfach geht? Warum kompliziert, wenn es auch einfach geht? Das muss ich erst noch lernen. :D Aber es mir schon auch darum zu erfahren, WARUM meine angestrebte Idee keine gute war. #GenerationY > Bei der Multiplexerei vergißt du geflissentlich, daß die Leitungen der > gerade nicht aktiven Busteilnehmer in der Luft hängen und keinen > definierten Pegel haben. Dies kann (und wird) zu unbeabsichtigten > Pegelwechseln führen, die der Slave als Signal mißversteht. Du müßtest > also an jedem einzelnen Strang BIAS-Widerstände vorsehen, die für > definierten Pegel sorgen. Ein Arduino bildet ja stets mit einem Transceiver eine Einheit. Und die Module haben soweit ich das erkennen kann diese BIAS-Widerstände (20k) bereits an Bord? (s. Anhang). Sehe ich das richtig, oder meinst du damit etwas anderes?
Ich denke, ein bißchen Grundlagenbetrachtung kann nicht schaden, der Artikel über RS485 scheint ja ein paar Lücken zu haben. Auf elektrischen Leitungen gibt es Reflexionen am Ende der Leitung und wenn man binäre Daten überträgt wird es kritisch, wenn diese Reflexionen zurücklaufen und eine halbe Bitzelle ausmachen. Die Signallaufzeit ist etwa 5ns/m, bei insgesamt 50m Leitungslänge also ca.250ns. Bei Baudrate 19200 ist die Bitzelle aber bei 50mikrosekunden, also einen Faktor 200 entfernt vom gefährlichen Bereich. Da ist die Terminierung einfach nur nette Dekoration, sonst nix. Und auch die Busstruktur ist eher hinderlich, da sie die Leitungslänge in diesem Fall erhöht. Hat man 5 Stränge a 10m in Sternkopplung, so ist die maximale Leitungslänge für die Laufzeitberechnung 20m. Dementsprechend kann man ohne Probleme bis 100KBaud Bitrate drauf arbeiten, ohne an Terminierung denken zu müssen. Wichtig ist aber die Vorspannung der Datenleitungen für alle Baudraten, da bei falscher Ruhelage eventuell das erste Startbit nicht erkannt wird. Das kann man auf dem Modbus aber auch per Software überspielen (3,5 Bytes Dauer den Transmitter mit Ruhepegel aktivieren = Modbus Timeout). Zur Ground-Problematik kann ich nur Lehrbücher nachplappern, da ich auch im Bastelbereich immer galvanisch trenne. (Kostet 10 Euro mehr und spart 10 Tage Fehlersuche :-) Just my 2 cents
murphy schrieb: > Warum kompliziert, wenn es auch einfach geht? > Das muss ich erst noch lernen. :D Aber es mir schon auch darum zu > erfahren, WARUM meine angestrebte Idee keine gute war. #GenerationY Also Lernen durch Schmerzen, OK. Natürlich kann und darf man alle Fehler selbst machen und danach den richtigen Weg einschlagen. Aber sinnvoll ist das nicht immer. Ich arbeite stets nach dem KISS-Prinzip und bin bisher immer gut damit gefahren. Nein, das hat nichts mit Knutschen zu tun. KISS bedeutet Keep It Simple and Stupid. Also von allen möglichen Lösungen jene wählen, die am einfachsten und am wenigsten fehleranfällig ist. An deinem Beispiel ist eine Drahtschleife eben sehr viel einfacher und sehr viel weniger fehleranfällig als eine aktive Schaltung. Über komplexere Lösungen würde ich nur nachdenken, wenn sie unvermeidbar sind, z.B. weil nicht genügend Leitungsadern vorhanden sind und Nachverkabelung nicht in Frage kommt. > soweit ich das erkennen kann diese BIAS-Widerstände (20k) > bereits an Bord? In diesem Fall ja.
Jetzt mal ganz abgesehen von den RS485 Problemen. Bist du sicher, dass der CD4052 richtig beschaltet ist? Zum USB-Transceiver gehen die beiden Anschlüsse des 4052, die für die Kanal-Auswahl vorgesehen sind (A und B). Die durchgeschalteten RS485 Signale gehen auf den Anschluss J2, der mit Channel bezeichnet und offensichtlich für die Kanalauswahl vorgesehen ist. Meiner Meinung nach müsste der USB-Transceiver an J2 angeschlossen werden. Oder interpretiere ich die Beschriftung falsch?
McMix schrieb: > Jetzt mal ganz abgesehen von den RS485 Problemen. > Bist du sicher, dass der CD4052 richtig beschaltet ist? > Zum USB-Transceiver gehen die beiden Anschlüsse des 4052, die für die > Kanal-Auswahl vorgesehen sind (A und B). Die durchgeschalteten RS485 > Signale gehen auf den Anschluss J2, der mit Channel bezeichnet und > offensichtlich für die Kanalauswahl vorgesehen ist. > Meiner Meinung nach müsste der USB-Transceiver an J2 angeschlossen > werden. > Oder interpretiere ich die Beschriftung falsch? Nein, da hast du recht, da habe ich die Beschriftung in der Skizze vertauscht (A/B-Verwechslungsgefahr). Entschuldigung für die Verwirrung. Die reale Beschaltung habe ich jedoch korrekt umgesetzt. Die korrigierte Skizze hänge ich vollständigkeitshalber mal an.
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.