Forum: Mikrocontroller und Digitale Elektronik RS485 - Arduino MKR


von Jeff K. (piratos)


Angehängte Dateien:

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

: Bearbeitet durch User
von Hmmm (Gast)


Lesenswert?

Du hast am MAX485 die Enable- mit den Input/Output-Pins verwechselt.

von Jeff K. (piratos)


Lesenswert?

Sorry, das Bild war falsch. Die Pins sind richtig belegt. Die Schaltung 
funktioniert auch zum Teil.. Nur bei schnellen Antworten nicht.

Ich habe eine neues Bild hochgeladen.

: Bearbeitet durch User
von Hmmm (Gast)


Lesenswert?

An welcher Stelle hast Du gemessen?

von Purzel H. (hacky)


Lesenswert?

Zudem ... A kommt auf A, und B  auf B.

von Frank K. (fchk)


Lesenswert?

Warum nimmst Du keinen RS485-Transceiver, der mit 3.3V läuft? Das würde 
Dein Problem beheben. So was wie MAX3485 oder MAX3487 oder ... es gibt 
da eine große Auswahl von verschiedenen Typen.

fchk

von Stefan F. (Gast)


Angehängte Dateien:

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.

von Hmmm (Gast)


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.

von Veit D. (devil-elec)


Angehängte Dateien:

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.

: Bearbeitet durch User
von Veit D. (devil-elec)


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?

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
Noch kein Account? Hier anmelden.