Forum: Mikrocontroller und Digitale Elektronik Frage zu MAX3485 Modul


von Pete K. (pete77)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,
ich habe mir ein MAX3485 Modul für TTL<->RS485 Konvertierung besorgt.
Leider habe ich kein Datenblatt bekommen (ist angefordert).

Kann evtl. jemand sagen, wie der Enable-Pin beschaltet wird? Ich habe es 
mit VCC versucht, aber ich bekomme keine Daten aus meinem Stromzähler 
(SDM630) ausgelesen.

Danke,
Pete

von Pete K. (pete77)


Lesenswert?

Nachtrag: Ich arbeite mit einem Wemos-Mini und Tasmota.

von N. M. (mani)


Lesenswert?

Pete K. schrieb:
> ich habe mir ein MAX3485 Modul für TTL<->RS485 Konvertierung besorgt.
> Leider habe ich kein Datenblatt bekommen (ist angefordert).

Das wäre eine Variante. Die andere wäre du misst die paar relevanten 
Pins mit einem Durchgangsprüfer kurz selbst.

Pete K. schrieb:
> Kann evtl. jemand sagen, wie der Enable-Pin beschaltet wird?

Der besagte MAX3485 hat keinen EN-Pin.
Er hat einen Receiver Output Enable nicht (!RE) und einen Driver Enable 
(DE).
Vermutlich sind die 2 Pins (2&3) bei dir auf dem Board verbunden um 
zwischen Read und Write um zu schalten. Für zuhören also EN vermutlich 
auf GND.
Miss mal ob 2&3 Durchgang haben.

Pete K. schrieb:
> aber ich bekomme keine Daten aus meinem Stromzähler (SDM630) ausgelesen

Ja ist klar, du hattest ja auch mit deinem Tranceiver Baustein die 
Leitung belegt.
Es kann aber noch mehr Gründe geben warum du nichts empfängst. Ich meine 
dass man bei manchen Stromzählern auch erst das senden über einen Code 
(einzugehen am Zähler) aktivieren muss.

von Wolfgang (Gast)


Lesenswert?

Pete K. schrieb:
> Leider habe ich kein Datenblatt bekommen (ist angefordert).

Die Zeiten, wo Datenblätter auf Anfrage per Post verschickt werden, ist 
eigentlich vorbei.
Das Datenblatt vom MAX3485 bekommst kannst du beim Hersteller 
herunterladen oder, wenn du dort nicht suchen magst, ist es sogar hier 
im Forum verlinkt (einfach draufklicken). Die paar Leitungen/Bauteile 
der Platine in einen Schaltplan umzusetzen, geht schneller, als auf die 
Bearbeitung deiner Anforderung zu warten.

Der MAX3485 arbeitet übrigens mit 3.3V und hat mit TTL nicht viel am Hut 
- sterben tut er allerdings auch nicht, da er 5V tolerant ist.

> Ich habe es mit VCC versucht ...

VCC ist bei dir wie hoch?

von MaWin (Gast)


Lesenswert?

Pete K. schrieb:
> Kann evtl. jemand sagen, wie der Enable-Pin beschaltet wird? Ich habe es
> mit VCC versucht, aber ich bekomme keine Daten aus meinem Stromzähler
> (SDM630) ausgelesen.

EN ist zum SENDEN. Da du Empfangen willst, muss er auf Low GND.

von Pete K. (pete77)


Lesenswert?

Pin2+3+EN sind verbunden, habe ich auf GND gelegt. 120 Ohm zwischen A 
und B, A mit 4k7 pullup, B mit 4k7 pulldown.

VCC sind 3V3.

Funktioniert leider nicht. A und B habe ich getauscht und auch RX/TX im 
Tasmota-Template.

: Bearbeitet durch User
von N. M. (mani)


Lesenswert?

Gerade mal den Zähler angeschaut. Er spricht Modbus RTU. Das 
funktioniert nach dem Master/Slave Prinzip. Sprich, ohne Anfrage des ESP 
wird der Zähler nichts von selbst senden!
Das heißt auch, der EN Pin kann nicht auf einem statischen Pegel liegen 
sondern muss vom ESP aktiv umgeschalten werden.

Hier steht noch bisschen was allgemeines dazu:
https://wiki.volkszaehler.org/hardware/channels/meters/power/eastron_sdm630_modbus

Und hier die Seite was in Richtung Tasmota geht:
https://tasmota.github.io/docs/Smart-Meter-Interface/

Wo auch steht:
This feature is not included in precompiled binaries!

Die Frage ist also, hast du das Tasmota selbst kompiliert?

von N. M. (mani)


Lesenswert?

N. M. schrieb:
> Und hier die Seite was in Richtung Tasmota geht:
> https://tasmota.github.io/docs/Smart-Meter-Interface/

So wie ich das dort lese kann man Pins für RX und TX angeben. Von der 
Richtungsumschaltung lese ich allerdings nichts. Das heißt RX und TX 
müssen gleichzeitig aktiv sein.
Das geht mit deinem Board aber ohne weiteres nicht.

Evtl musst du einen Pin hochklappen damit du gleichzeitig senden und 
empfangen kannst.
Das ist aber nur eine Vermutung.
Müsste man genauer lesen...

: Bearbeitet durch User
von Hmmm (Gast)


Lesenswert?

Pete K. schrieb:
> 120 Ohm zwischen A
> und B, A mit 4k7 pullup, B mit 4k7 pulldown.

Die Bias-Widerstände sind viel zu gross, um für einen normgerechten 
Ruhepegel zu sorgen.

Bei 3.3V und beidseitiger 120-Ohm-Terminierung sind das gerade mal 20mV 
Differenz zwischen A und B, gefordert ist das 10fache. Jeweils 390 Ohm 
würde passen.

N. M. schrieb:
> Von der
> Richtungsumschaltung lese ich allerdings nichts. Das heißt RX und TX
> müssen gleichzeitig aktiv sein.
> Das geht mit deinem Board aber ohne weiteres nicht.

Was sollen solche irreführenden "Informationen"?

Das geht generell nicht, RS485 ist ein Halbduplex-Bus, da darf nicht 
einfach ein Treiber eingeschaltet bleiben.

Wenn die Firmware keine TX/RX-Umschaltung beherrscht, muss man die 
entweder selbst einbauen oder etwas mit automatischer Umschaltung 
dranhängen.

von N. M. (mani)


Lesenswert?

Hmmm schrieb:
> Das geht generell nicht, RS485 ist ein Halbduplex-Bus, da darf nicht
> einfach ein Treiber eingeschaltet bleiben

Stimmt natürlich. Da hatte ich einen Kurzschluss im Kopf.

Da gibt es übrigens eine Anleitung dazu:
https://www.michael-heck.net/index.php/smarthome/haussteuerung/sdm-630-mit-tasmota-auslesen

Wobei mir immer noch nicht ganz klar ist wie die Richtungsumschaltung 
funktioniert. Ist das irgendwie ein Monoflop o.ä. drauf wo automatisch 
umschaltet?

von N. M. (mani)


Lesenswert?

N. M. schrieb:
> Wobei mir immer noch nicht ganz klar ist wie die Richtungsumschaltung
> funktioniert.

OK, scheinbar ist das wirklich ein Modul mit automatischer 
Richtungsumschaltung.
TI hat da ein AppNote dazu:
https://www.ti.com/lit/ug/tidubw6/tidubw6.pdf

von MaWin (Gast)


Lesenswert?

N. M. schrieb:
> .
> TI hat da ein AppNote dazu:

"This
eliminates the need for manual control of the driver
enable of the transceiver and the need for the
receiver-enable controls, reducing the number of logic
pins needed to implement the RS-485 interface"

Verstehe ich nicht.

Wenn man die Richtung des Treibers mit einem Ausgangspin am uC 
umschaltet, kann man auch einen anderen Pin am uC von Rx Eingang auf Tx 
Ausgang umschalten an den dann beide (R und D) Anschlüsse des Treibers 
kommmen, und kommt auch mit 2 Pins aus - ohne Zusatzhardware.

Ja, ich weiss, nur wenige uC erlauben Tx und Rx des UART auf denselben 
pin zu konfigurieren, aber soft-UART geht immer.

von N. M. (mani)


Lesenswert?

MaWin schrieb:
> Verstehe ich nicht.
> Wenn man die Richtung des Treibers mit einem Ausgangspin am uC
> umschaltet...kommt auch mit 2 Pins aus

Wenn man zu wenig Pins hat eine echt gute Idee.

Ich glaube in dem Konstrukt oben (ESP<-->Stromzähler) werden die Anzahl 
Pins vermutlich nicht dass Problem sein. Zumindest wenn das wirklich nur 
eine Bridge von Modbus nach Tasmota und dann vermutlich in einen MQTT 
Broker o.ä. ist. Da hat er dann 80% der Pins noch frei für andere Dinge.
Da wäre es dann am saubersten einfach 3 Pins (RX,TX,Dir) zu verwenden. 
Nur blöd dass das die FW von Haus aus nicht mitmacht.

Wenn man das Feature wirklich selbst übersetzen muss, könnte man 
natürlich auch einfach einen Pin für Dir fest einkompilieren.

Eine andere Möglichkeit (wenn man kein Funk braucht) wäre evtl auch ein 
fertiger TTL zu Ethernet Adapter. Da gibt es meines Wissens nach auch 
welche die von Modbus RTU auf TCP Tunneln.

Oder wenn der Server der das ganze Zeug empfängt vermutlich sowieso 
irgendwo  rumsteht nicht so weit entfernt ist, würde natürlich auch ein 
RS485 zu USB Kabel tun. Bei den Datenraten geht das bestimmt auch 
50-100m.

von Pete K. (pete77)


Lesenswert?

Danke für die Hinweis. Ich werde mit mal ein anderes RS485 Board 
besorgen mit 3V3 und Auto-Umschaltung.

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.