Forum: Mikrocontroller und Digitale Elektronik Schaltung für SDI-12-Interface mit unterschiedlichen Pegeln so in Ordnung?


von Roland B. (rollob)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich benötige ich Interface, um mit einem 3,3V-Mikrocontroller mit 
SDI12-Sensoren zu kommunizieren.

SDI-12 ist ein offener Standard, arbeitet halbduplex mit 1200 baud bei 
normalerweise 5V Signalpegel.
Hier ist der Standard beschrieben:
http://www.sdi-12.org/current_specification/SDI-12_version-1_4-Jan-10-2019.pdf

Es gibt drei Leitungen, eine zur Sensorversorgung (12V), eine 
Datenleitung (normalerweise 5V) und GND.
Der Mikrocontroller ist der Master und fordert die Sensoren auf Daten zu 
senden.

Auf Seite 45 unten ist ein Interface beschrieben, welches ich im Prinzip 
so übernommen habe. Nur bei dem Gasentladungsleiter, den ich verwendet 
habe, weiß ich nicht, ob das so passt.

In meiner Anwendung gibt es auch Sensoren, die einen Signalpegel von 
3,6V anstatt 5V nutzen. Daher habe ich die Schaltung nochmal 
eingezeichnet und speise in dieser die High-Seite des Pegelwandlers 
anstatt mit 5V mit 3,6V.

SDI-12 hat bestimmte Andforderungen an die Impedanz.
Auf Seite 3 des Standards(siehe oben) steht folgendes: "When an SDI-12 
device has its transmitter on, its direct current (DC) source resistance 
must be greater than 1000 ohms and less than 2000 ohms.    Due to this 
impedance, the maximum cable length depends on the capacitance of all 
cables connected to the data line. When any SDI-12 device's transmitter 
is off, including during a low-power standby mode, the DC resistance to 
ground must be within 160K to 360K ohms. If an SDI-12 sensor does not 
use the 12-volt line for power, its data line resistance to ground while 
powered down must be within 160K to 360K ohms. Figure 2 shows an 
equivalent circuit."

Müsste bei der 3,6V-Schaltung noch etwas angepasst werden, damit die 
Impedanzanforderungen eingehalten werden? Hier reicht mein Wissen leider 
nicht mehr aus :(


Auf der Mikrocontrollerseite (ESP32) habe ich die Möglichkeit entweder 
einen UART-Pin zu nutzen und zwischen RX und TX umzuschalten oder beides 
getrennt anzuschließen und eben beim Senden des ESP32s ein Echo auf RX 
zu haben.
Was würdet ihr hier vorziehen?

Fällt euch sonst noch etwas auf?

Vielen Dank :-)

von Falk B. (falk)


Lesenswert?

Roland B. schrieb:
> Hallo zusammen,
>
> ich benötige ich Interface, um mit einem 3,3V-Mikrocontroller mit
> SDI12-Sensoren zu kommunizieren.

Gibt es dazu ein Datenblatt?

> SDI-12 ist ein offener Standard, arbeitet halbduplex mit 1200 baud bei
> normalerweise 5V Signalpegel.

Also schnarchlangsam.

> Hier ist der Standard beschrieben:
> http://www.sdi-12.org/current_specification/SDI-12_version-1_4-Jan-10-2019.pdf

> Auf Seite 45 unten ist ein Interface beschrieben, welches ich im Prinzip
> so übernommen habe.

Incl. der schwachsinnigen Ami-Notation von 0,0033uF. Der Rest der Welt 
schreibt da 3,3nF.

> Nur bei dem Gasentladungsleiter, den ich verwendet
> habe, weiß ich nicht, ob das so passt.

Bist du sicher, daß der mit 20kA ausreichend dimensioniert ist?

> In meiner Anwendung gibt es auch Sensoren, die einen Signalpegel von
> 3,6V anstatt 5V nutzen. Daher habe ich die Schaltung nochmal
> eingezeichnet und speise in dieser die High-Seite des Pegelwandlers
> anstatt mit 5V mit 3,6V.

Kann man machen, wenn der Rest des Busses mit 3,3V als HIGH klar kommt.

> Müsste bei der 3,6V-Schaltung noch etwas angepasst werden, damit die
> Impedanzanforderungen eingehalten werden?

Nö, das sollte R2 machen. Allerdings fliegt dir R3 um die Ohren, wenn du 
mal WIRKLICH einen fetten Surge-Puls auf der Leitung hast. Naja, er 
wirkt dann halt als Sicherung ;-)

> Auf der Mikrocontrollerseite (ESP32) habe ich die Möglichkeit entweder
> einen UART-Pin zu nutzen und zwischen RX und TX umzuschalten

Tu das.

> oder beides
> getrennt anzuschließen und eben beim Senden des ESP32s ein Echo auf RX
> zu haben.

Geht auch, braucht man aber eher nicht.

> Fällt euch sonst noch etwas auf?

Den MAX3378 würde ich nicht nehmen, denn das ist ein Biest, das bis zu 
8Mbit/s schafft. Solche schnellen ICs machen tendentiell mehr Probleme 
als sie lösen. Nimm den langsamen MAX3372 oder MAX3377, die sind auf 
230kbit/s optimiert, selbst das ist für dein Anwendung noch rasend 
schnell.
Aber eine innere Stimme sagt mir, daß du damit Probleme haben wirst. Ich 
würde das nicht so machen sondern genau so wie im Standard mit einem 
Tristate-Treiber ala 74HCT125 die Leitung treiben. Den kann man dann 
auch mit 5V versorgen und trotzdem mit 3,3V ansteuren. Treiber und 
Pegelwandler in einem. Und vor allem kein "mysteriöser" 
Transimission Gate Pegelwandler. DIe DInger sind mir etwas suspekt.

von Roland B. (rollob)


Angehängte Dateien:

Lesenswert?

Danke Falk!

Für die 5V-Sensoren habe ich keinen extra Schaltplan. Diese halten sich 
an den offiziellen Standard, den ich verlinkt habe.

Für die 3,6V-Sensoren gibe es hier einen Guide:
http://publications.metergroup.com/Integrator%20Guide/18224%20TEROS%2011-12%20Integrator%20Guide.pdf
Auf Seite 3 sind die Logikpegel und ein Ersatzschaltbild des Sensors.

Beim offiziellen Standard wird ein High-Pegel ab 3,5V erkannt. Somit 
sollten eigentlich sowohl die 5V-Sensoren, als auch die 3,6V Sensoren 
zusammen funktionieren, wenn ich den BUS mit 3,6V speise. Wenn jedoch 
ein 5V-Sensor dann mit einem 5V-Pegel antworten würde (möglich durch 
externe Speisung), dann würde dies den erlaubten Pegel für die 
3,6V-Sensoren überschreiten. Insofern würde ich dabei bleiben und den 
BUS in 3,6V und 5V splitten.


Die Ami-Notation habe ich geändert :-)

Mit den Gasentladungsleitern kenne ich mich nicht aus.
Ich habe noch welche mit 40kA bei 90V oder 60kA bei 250V gefunden.
Wäre einer hiervon besser?

Wenn R3 im Normalbetrieb nicht durchbrennt, passt das.
Oder würdest du R3 durch einen Widerstand mit einer höheren Leistung 
ersetzen?


Als Pegelwandler habe ich jetzt den MAX3377 eingezeichnet.
Der 74HCT125 würde erst ab 4,5V funktionieren und ich bräuchte noch 
beispielsweise einen Mosfet, um die Spannung in die andere Richtung zu 
wandeln, da der BUS auf der Datenleitung bidirektional ist.
Oder verstehe ich hier etwas falsch?

Vielen Dank! :)

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.