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 :-)
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.
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! :)