Hallo Zusammen, Ich arbeite gerade an einem Projekt bei dem ein Raspberry Pi mit mehreren Arduinos via RS485 über eine Strecke von 15-20 Metern kommunizieren soll. Ich bin dabei zunächst diesem Tutorial gefolgt, was super funktioniert hat: https://circuitdigest.com/microcontroller-projects/rs485-serial-communication-between-arduino-and-raspberry-pi Das funktioniert selbst mit "normalen" paralleleln, nicht verdrillten Kabeln mit mehreren Verlängerungselementen dazwischen sozusagen als worst-case Verkabelung. Nun zum eigentlichen Problem: Ich habe das ganze um Montageaufwand und Platz zu sparen auf einer eigenen Platine wie eine Art Shield nachgebaut anhand dieses Schaltplans https://arduinoinfo.mywikis.net/wiki/RS485-Modules Die Kommunikationskette sieht dann etwa so aus wie auf dem Foto. Die nachgebaute Version funktioniert super bei kurzen Kabeln von 1-2m schwächelt aber bei meinem worst-case 20Meter Verlängerungs-Kette. Da kamen mir mehrere Fragen auf: 1. Welchen Einfluss hat bei den Kabellängen der Kabeltyp? Braucht man bei 10-20 Metern vllt. doch schon twisted-pair Kabel oder sogar irgendeine Art von Schirmung? Hatte ich da beim ersten Versuch einfach Glück? 2. Ist diese Ketten-Topologie mit den ganzen JST Steckern eventuell schädlich für die Kommunikation? Ich würde da am Ende gerne 10-15 Slaves anschließen wenn möglich. 3. Auf der Platine sind noch ein paar Andere Komponenten verbaut (Spannungswandler mit Kondensatoren, 3 Transistoren für je eine Lampe und dazugehörige Widerstände etc.) Kann davon irgendetwas einen Einfluss haben? 4. Ist der Einbau auf der Platine selbst relevant? (Leiterbreite, Abstand o.Ä.) Ich hoffe der ein oder andere mag vielleicht seine Erfahrungen teilen. LG und danke im Voraus, Felix
Welche Geschwindigkeit? Sind Terminierung und Bias-Widerstände vorhanden? Stimmt das Timing, damit sich nicht Busteilnehmer gegenseitig stören?
Beitrag #6877801 wurde vom Autor gelöscht.
Also von Modul zu Modul gehen jeweils drei Adern?!
Felix schrieb: > Ich arbeite gerade an einem Projekt bei dem ein Raspberry Pi mit > mehreren Arduinos via RS485 über eine Strecke von 15-20 Metern > kommunizieren soll. Kuck dir EIA-422 an. Da steht alles drin. https://www.ti.com/lit/an/snla044b/snla044b.pdf http://www.interfacebus.com/Design_Connector_RS422.html
Zu den Rückfragen: Geschwindigkeit: 9600 baud (Kann ich noch reduzieren wenn nötig, sind nicht viele Daten) Terminierung und Bias Widerstände sind vorhanden, identisch dimensioniert wie in meinem verlinkten Schema. Von Modul zu Modul gehen 4 Adern: VCC,GND und die zwei Adern des Differenzsignals. Die Links schau ich mir heute abend mal an, danke.
Felix schrieb: > Geschwindigkeit: 9600 Völlig unkritisch, habe ich auch schon über mehrere 100m altes Telefonkabel gefahren. Felix schrieb: > Terminierung und Bias Widerstände sind vorhanden, identisch > dimensioniert wie in meinem verlinkten Schema. Die Bias-Widerstände darin sind mit 20k viel zu gross. Die bilden mit der Terminierung einen Spannungsteiler, für mindestens 0.2V Differenz bietet sich (bei Terminierung mit 120 Ohm) ein Wert von jeweils 680 Ohm an. Natürlich nur 1x pro Bus, nicht für jeden Teilnehmer!
Hmmm schrieb: > Natürlich nur 1x pro Bus, nicht für jeden Teilnehmer! Noch ein Hinweis, falls Du das Verlinkte 1:1 nachgebaut hast: Terminiert wird auch nicht bei jedem Teilnehmer, sondern an den beiden Bus-Enden.
Hmmm schrieb: > Die Bias-Widerstände darin sind mit 20k viel zu gross. Die bilden mit > der Terminierung einen Spannungsteiler, für mindestens 0.2V Differenz > bietet sich (bei Terminierung mit 120 Ohm) ein Wert von jeweils 680 Ohm > an. So ziemlich alle RS485-Leitungstreiber der letzten 20 Jahre haben entsprechend angepasste Schwellwerte, so dass bei nicht allzu stark gestörter Umgebung die Fail-Safe-Schaltung eigentlich nicht mehr erforderlich ist. Sofern der TE wirklich einen Original MAX485 einsetzt, trifft das auch hier zu. > Natürlich nur 1x pro Bus, nicht für jeden Teilnehmer! Ansonsten soll die Fail-Safe-Schaltung ja nicht nur im Normalbetrieb funktionieren, sondern auch bei unterbrochenem Bus ordentliche Ruhesignalpegel liefern. Daher finde ich es sogar besser, wenn jeder Teilnehmer hochohmige Fail-Safe-Widerstände besitzt. Wenn die Widerstände zu gering sind, besteht die Gefahr, dass ein ausgeschalteter Busteilnehmer, der folglich auch keine Fail-Safe-Versorgung bereitstellt, den Bus belastet.
Andreas S. schrieb: > So ziemlich alle RS485-Leitungstreiber der letzten 20 Jahre haben > entsprechend angepasste Schwellwerte, so dass bei nicht allzu stark > gestörter Umgebung die Fail-Safe-Schaltung eigentlich nicht mehr > erforderlich ist. Sofern der TE wirklich einen Original MAX485 einsetzt, > trifft das auch hier zu. Im MAX485-Datenblatt ist zwar von einem Fail-safe-Feature die Rede ("if the input is open circuit"), als Threshold Voltage wird aber weiterhin -0.2V - 0.2V angegeben, so dass ich dafür nicht meine Hand ins Feuer legen würde. Erst bei der MAX3080-Serie kann man wirklich von fail-safe sprechen: > The MAX3080 family guarantees a logic-high receiver output when the > receiver inputs are shorted or open, or when they are connected to a > terminated transmission line with all drivers disabled. This is done by > setting the receiver threshold between -50mV and -200mV. Aber da der TO hier von einer 20 Meter langen "Kommunikationskette" spricht, sehe ich das Problem eher bei den Terminatoren. Vermutlich diverse Busteilnehmer hintereinander, jeder davon mit 120-Ohm-Terminierung. Oder eben die üblichen Firmwareprobleme bei der TX/RX-Umschaltung.
Felix schrieb: > Ich habe das ganze um Montageaufwand und Platz zu sparen auf einer > eigenen Platine wie eine Art Shield nachgebaut anhand dieses Schaltplans > https://arduinoinfo.mywikis.net/wiki/RS485-Modules WTF! Gibt es in Makerstan auch gescheite Schaltpläne und nicht nur die Verdrahtung per Fritzing? > Die Kommunikationskette sieht dann etwa so aus wie auf dem Foto. Foto? Meinst du deine leicht krakelige Skizze? > Die nachgebaute Version funktioniert super bei kurzen Kabeln von 1-2m > schwächelt aber bei meinem worst-case 20Meter Verlängerungs-Kette. Dann ist was faul. > 1. Welchen Einfluss hat bei den Kabellängen der Kabeltyp? Braucht man > bei 10-20 Metern vllt. doch schon twisted-pair Kabel Nicht zwingend, vor allem nicht bei niedrigen Baudraten. >oder sogar > irgendeine Art von Schirmung? Nein. >Hatte ich da beim ersten Versuch einfach > Glück? Kann sein. > 2. Ist diese Ketten-Topologie mit den ganzen JST Steckern eventuell > schädlich für die Kommunikation? Nein. > Ich würde da am Ende gerne 10-15 Slaves > anschließen wenn möglich. Sollte relativ einfach gehen. > 3. Auf der Platine sind noch ein paar Andere Komponenten verbaut > (Spannungswandler mit Kondensatoren, 3 Transistoren für je eine Lampe > und dazugehörige Widerstände etc.) Kann davon irgendetwas einen Einfluss > haben? Eigentlich nicht. > 4. Ist der Einbau auf der Platine selbst relevant? (Leiterbreite, > Abstand o.Ä.) Man kann schon diverse Dinge vermurksen, idiotensicher ist es nicht. > Ich hoffe der ein oder andere mag vielleicht seine Erfahrungen teilen. Dann teile du erstmal einen gescheiten Schaltplan und Bilder von deinem Aufbau.
Felix schrieb: > Zu den Rückfragen: > Geschwindigkeit: 9600 baud (Kann ich noch reduzieren wenn nötig, sind > nicht viele Daten) Total harmlos. > Terminierung und Bias Widerstände sind vorhanden, identisch > dimensioniert wie in meinem verlinkten Schema. Wo denn? > Von Modul zu Modul gehen 4 Adern: VCC,GND und die zwei Adern des > Differenzsignals. Schon mal gut.
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.