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
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.
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
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