Hallo, erstmal vielen Dank für das tolle Forum hier, ich habe hier schon viel nachgelesen und Ihr habt mir, ohne dass Ihr es gemerkt habt, toll weiter geholfen. Jetzt habe ich aber ein Problem, an dem ich nicht weiter komme. Ziel: Ich möchte mit Arduino nano und RS485 MAX485 Bausteinen (die typischen, die man komplett mit Stiftleiste 2 x 4 in der Bucht bekommt, http://www.ebay.de/itm/5PCS-MAX485-RS-485-Module-TTL-to-RS-485-module-for-Arduino-Raspberry-D-/331359788902?hash=item4d26951f66:g:qEcAAOSwGvhT8yic ) ein Netzwerk für die Hausautomation aufbauen. Über ICSC (Inter Chip Serial Communication, siehe GitHub, https://github.com/MajenkoLibraries/ICSC ) sollen Telegramme verschickt werden (Tür offen, Tür zu etc. als Zahlenkombis). Zunächst meine Schaltung: Ganz einfach, Arduino hängt mit SoftwareSerial an Pin D2-4 (D2 = RO/Rx TTL, D3 = DEPin, D4 = DI/Tx TTL. Testschaltung hat auch gut funktioniert, alles schön. Habe mir dann neue Platinen bestellt und alles aufgelötet. Jetzt die Enttäuschung: Sobald Die neue Platine unter Spannung steht, gibt es keinen Widerstand mehr zwischen A und B zu messen. In Ruhe, also stromlos, sind es 120 Ohm. Bei der Spannungsmessung zwischen A und B zeigt es meist 0 V, oder schlägt je nach Treffer auf die Spitze des Signals auf bis zu 3 V Spannungsdifferenz aus. Kurzschlüsse auf den Platinen habe ich ausgeschlossen, mehrmals nachgemessen. DE Pin sollte eigentlich auf low sein, habe es jedenfalls mehrmals so programmiert. Fakt ist jedoch, dass weder in die eine noch in die andere Richtung irgendein Signal gesnifft werden kann. Sobald ich aber Kanal A ausstecke, geht der Bus wieder über den alten Baustein. Wenn ich den DEPin mit dem Voltmeter messe, dann zeigt er zwischen Gnd und D2 0 V an, also Gnd, und springt dann einmal auf 5 V max, wenn er sendet. DE-Pin funktioniert also auch wie gewollt. Jetzt habe ich das alte Prototypmodul nochmal angeschaut, hier zeigte sich, dass ich die Verbindung zum Widerstand 120 Ohm zwischen A und B beim Auslösen der Drahtverbinder beschädigt hatte und somit zwischen A und B keine 120 Ohm Widerstand sind. Mit diesem Modul funktioniert der Bus zumindest in eine Richtung, während mit den neu gekauften und schadfreien Modulen nichts funktioniert.... Was ist der Fehler? Zur Info: Auf 50 cm Kabel habe ich mir die Terminierung gespart, auf 20 m Kabel habe ich tatsächlich die Enden terminiert mit 120 Ohm zwischen A und B und 390 Ohm zwischen V und A resp. B und Gnd. Ich wäre Euch für Tipps sehr dankbar, gerne messe ich noch mal alles nach. Bis bald Kurt
Die GPIO Pins des RaspPi arbeiten IMHO mit 3.3V und deine RS485 Module mit 5V. Wie hast du sicher gestellt, dass die sich einig werden?
Hallo, wie stellst Du sicher, dass die maximale Eingangsspannung an Deinen RS-485-Transceivern nicht überschritten wird? Die MAX485 sind IMHO nicht failsafe. Eine bessere pinkompatible Wahl wäre LT1785. Auch wenn Du DC-Biasing verwendest, so halte ich das mitführen einer GND-Verbindung bei RS-485 für besser. DC-Biasing kannst Du dann an einer einzigen Stelle am Bus machen. Dein Transceiver sollte natürlich die Logikpegel Deiner UART verstehen. Bei 5 V Pegel kann es mit 3,3 V TTL knapp werden (und wird es meist auch). Viele Grüße! Sven
Hallo Wolfgang und Sven, Das ist ein guter Hinweis. Immerhin hat der exakt identische Aufbau im Prototypen funktioniert, ohne 5->3,3 v wandler. Ich arbeite mit dem Arduino nano und SoftSerial, ob dort die Pegel auf 3,3 V liegen weiß ich nicht. Alle Tutorials haben diesbezüglich keine Erweiterungen vorgesehen. Also gehe ich davon aus dass Arduino und Rs485 Module auf 5 V laufen. Ohne Oszi kann ich das ja auch schlecht messen, oder reicht einfach permanent ein Signal zu senden und dann zu messen? Probier ich heute Abend aus. Habt ihr sonst noch eine Idee? Ist doch seltsam dass alles stehen bleibt wenn Kanal A angeschlossen ist. Ist Kanal B ohne A dran, gibt es im Rest vom Bus kein Problem - außer dass natürlich das Modul ohne A nicht dabei ist... Danke und Viele Grüße Kurt
Kurt schrieb: > Ohne Oszi kann ich das ja auch schlecht messen Wenn Du wirklich in die Elektronik-Bastelei einsteigen möchtest, dann kaufe Dir zumindest ein Multimeter mit dem man Spannungen, Stromstärke und Widerstände messen kann. Oszi ist nicht unbedingt notwendig, aber manchmal hilfreich. P.S.: Sehe gerade, Du hast ja ein Voltmeter... Lies Dir mal die Datenblätter Deiner benutzten Bausteine durch, da steht alles drin. Und ja, manchmal werden aus China auch Fakes geliefert, die nicht funktionieren.
:
Bearbeitet durch User
Der Arduino nano sollte mit 5V laufen... Du kannst die RX- und TX-Leitungen direkt ohne Kommunikation messen. Dort sollte als Ruhepegel immer logisch "1" anliegen, also in Deinem Falle 5 V. Vielleicht fängst Du dort erst einmal an? Viele Grüße! Sven
Ich benutze die selben Bausteine. Bei mir sind DE und RE verbunden (gebrückt). Gruß Harald
Hallo, vielen Dank für die Tipps und Anregungen. Also klar, ein Voltmeter habe ich, damit auch alles mal nachgemessen (siehe unten).g Ich habe mich aufgrund der ausgeschlossenen Fehler noch mal mit dem Pinout vom Arduino nano beschäftigt - und da gibt es tatsächlich einen Unterschied zwischen Pin 3 und 4. Bei den Guides von SoftSerial steht zwar immer, man kann jeden Pin benutzen, aber das scheint nicht ganz zu stimmen. Pin D2 und D3 haben eine INT0 resp. INT1 Kennzeichnung, D4 nicht. Außerdem nehmen die meisten Tutorials D2 und D3. Jedenfalls habe ich jetzt die Pinbelegung geändert (schade, Platinen sind schon alle geätzt worden), sodass jetzt RxPin = D2 und TxPin = D3, dePin = D4 (DE und RE sind natürlich verbunden, danke Harald). Also, hier sind die Ergebnisse meiner Messungen: TxLeitung (D3) in Ruhe: 4,6 V, fällt beim Senden ab. RxLeitung (D4) in Ruhe: 4,6 V, bleibt immer, weil empfängt ja nie was... rs485-Kanal A in Ruhe: 1,9 V, beim Senden bis zu 2,9 V rs485-Kanal B in Ruhe: 1,9 V, beim Senden bis zu 1,0 V dePin in Ruhe: 0 V, beim Senden 0,7 V (ich glaube, da ist mein Voltmeter auch nicht schnell genug um die maximale Spitze zu sensen). Also nach Euren Angaben müsste das alles passen. Ist nur die Frage, warum auf der anderen Seite nichts ankommt... Ich habe jetzt auch noch mal verschiedene Baudraten durchprobiert - keine Änderung. Die Terminierung auch 50 cm Länge habe ich mir noch immer verkniffen... Aber irgendetwas sollte auch ohne Terminierung ankommen. Ich werde weiter Lösungen suchen, wenn jemand noch eine Idee hat, gerne. Ich werde auf jeden Fall berichten, was weiter passiert. Zur Illustration habe ich mal die Bilder meines Moduls angehängt, dann hat man wenigstens eine Vorstellung, wie das Produkt aussieht. Viele Grüße Kurt
Steuerst Du auch die DE- und /RE-Pins korrekt an? Bei Halbduplex kann man die verbinden, für 4-Draht RS-422 lässt man Empfänger und Receiver aktiv. Baudrate korrekt eingestellt? Baudratenquarz verwendet? Viele Grüße! Sven
Hallo Sven, hab nachgemessen, RE und DE Pin sind verbunden und sobald ich auf senden gehe, ist die Spannung bei 5 V, sonst bei 0 V. Also Low beim Lauschen, High beim Senden, so wie es sein soll. Ich werde jetzt noch einmal einen Prototyp aufbauen und von da aus weiter auf Fehlersuche gehen. Stutzig stimmt mich noch immer, dass der rs485 Transceiver, den ich "kaputt" gemacht habe (kein Widerstand mehr zwischen A und B, siehe oben) offensichtlich super sendet und empfängt, während alle fehlerfreien Bausteine keine Kommunikation zeigen... Ich habe aber auch noch Teile aus einer anderen Charge, die werde ich auch testen. Ich melde mich dann. Viele Grüße Kurt
>den ich "kaputt" gemacht habe (kein Widerstand mehr zwischen A und B, siehe >oben) Messen an Halbleitern ist anders als Messen an ohmschen Widerständen. Es macht keinen Sinn zwischen A und B zu messen.
Hallo, ich habe die letzten zwei Tage damit verbracht, zwei Teile komplett neu aufzubauen und zu testen. Auch wenn ich vorher schon alles drei mal gecheckt hatte, war es wichtig, alles noch einmal anzuschauen. Zu meiner Schande muss ich gestehen, dass möglicherweise ein Vertauschen der rx tx Pins ausschlaggebend für den Fehler war, wobei ich nach mehreren Stunden natürlich soviele Änderungen gemacht hatte, das nicht mehr klar ist, ob das schon vorher die Ursache war. Ich kann also zusammenfassend für ähnlich geplagte nur empfehlen, dass es sich lohnt, im Zweifelsfall mit einem neuen Baustein komplett von Null zu starten und die Testumgebung ohne Annahme von "hat doch früher auch funktioniert" aufzubauen. In diesem Sinne vielen Dank Euch allen für die wertvollen Tipps, die ich bekommen und auch umgesetzt habe. Außerdem habe ich viel gelernt! Viele Grüße und bis bald, ich bin ja noch am Basteln - und versprochen, ich check zuerst die rx tx Pins ;-) Kurt
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.