RS485 - Arduino MKR

OP #6888160
Lesenswert?

Hallo,

ich habe ein Problem bei der Kommunikation zwischen einem Messgerät und 
einem Arduino MKR über die MAX485-Halb-Duplex Schnittstelle.

Im Anhang habe ich den Schaltplan meines Anschlusses mitgeschickt
 anschluss.jpg.

Das Sonderbare ist, dass die meisten Funktionen funktionieren. Ich kann 
Daten/Einstellungen an das Messgerät senden. Dieses Übernimmt die 
Einstellungen und antwortet mit "ok\r". Hier habe ich keine Probleme die 
Antwort auszulesen.

Fordere ich allerdings Messwerte an, kommt eine inkorrekte Antwort. Ich 
erwarte 5 Byte+CR = 6 Byte. Die Antwort variiert zwischen 0 Byte 4 Byte. 
Ganz selten erhalte ich den korrekten Messwert zurück.

Anfangs hatte ich die Schaltung ohne Pull-Up/Downs aufgebaut. Dort hatte 
ich ähnliche Ergebnisse. Den Spannungsteiler am Rx benötige ich für den 
3.3V Eingang.

Ich habe eine korrekte und einer Fehlerhafte Antwort mit dem Oszi 
aufgezeichnet (sn_abfrage.png). Die Abfrage gehört allesdings zu einer 
anderen Funktion, die meistens die korrekte Antwort liefert. Zu diesem 
Zeitpunkt hatte ich noch keine Pull Ups/Downs in der Schaltung.

Vielen Dank im Voraus für eure Hilfe!
Jeff
Angehängte Dateien:
Gast #6888444
Lesenswert?

Bist du sicher dass die 380Ω richtig sind?

Ich kenne das nur mit erheblich hochohmigeren Widerständen. Außerdem 
müsste man die 120Ω dazu passend erhöhen damit man insgesamt immer noch 
120Ω hat.

Ich habe mal den Vorschlag von Wikipedia angehängt. Habe aber auch schon 
Schaltungen gesehen, wo mehr als 10kΩ verwendet wurden.
Angehängte Dateien:
Gast #6888469
Lesenswert?

Stefan ⛄ F. schrieb:
> Bist du sicher dass die 380Ω richtig sind?

Ist schon recht wenig, aber stören wird das nicht.

Stefan ⛄ F. schrieb:
> Habe aber auch schon Schaltungen gesehen, wo mehr als 10kΩ verwendet
> wurden.

Das ist aber bei vorhandener Terminierung nicht mehr standardkonform, 
Stichwort Spannungsteiler.

Bei beidseitiger Terminierung mit 120 Ohm ist 680 Ohm ein brauchbarer 
Wert für die Bias-Widerstände.
#6888720
Lesenswert?

Hallo Jeff,

was hast du dir denn bei den vier 10k Widerständen zwischen Rx und RE 
gedacht? Damit hast du dir jedenfalls einen Spannungsteiler gebaut und 
funktioniert natürlich so nicht. Außerdem sind die Verbindungen zwischen 
Arduino und MAX völlig verdreht. Praktisch stimmt am Schaltplan gar 
nichts. Ehrlich gesagt wundert es mich das dabei überhaupt etwas 
funktioniert. Vielleicht weil Tx Daten taktet und dabei zufällig mit DE 
auf den Bus umschaltet. Irgendwie sowas wildes.
Jedenfalls findest du im Anhang eine Schaltung die funktioniert. Einfach 
nachbauen und Freude haben. Die Pinbelegung/Beschriftung ist für/von 
Maxim. Falls abweichender Hersteller Pinnummern prüfen und nach der 
Bezeichnung gehen. Bei ganz kurzer Busleitung reicht auch eine komplette 
Terminierung.
Angehängte Dateien:
#6888753
Lesenswert?

Hallo nochmal,

was mir allerdings noch durch die Birne sackt ist, dein Arduino MKR 
Board hat doch sicherlich einen SAMD21 drauf und der arbeitet mit 3,3V. 
Im Datenblatt finde ich zum µC auch keine I/O 5V Toleranz, alles nur 
3,3V. Du bräuchtest demnach noch zwischen Arduino und dem MAX einen 
Levelshifter. Ansonsten befürchte ich macht das der µC nicht lange mit 
und das wäre Schade um das teure Arduinoboard. Du kannst auch die 
gesamte Schaltung umbauen und auf 3,3V auslegen nur wirst du sicherlich 
am anderen Ende vom Bus 5V benötigen?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren