Forum: Fahrzeugelektronik Messumformer 4..20mA mit Arduino auswerten


von Sebastian E. (sebert)


Angehängte Dateien:

Lesenswert?

Ich möchte ein Signal, das von einem Messumformer mit 4..20mA kommt, mit 
einem Arduino auswerten. Der Sensor misst einen Druck in einem Bereich 
von 0 bis 6 bar. Die Schaltung seht ihr im Screenshot.

Vermutlich müsste das auch so gehen, dieser Thread hier scheint das 
Thema zu behandeln:
Beitrag "4-20mA --> 0-5 V transformieren"

Meine konkreten Fragen sind (teilweise etwas gemischt, sorry. Wollte 
nicht für jedes Thema extra einen Thread aufmachen):

1) Kann ich die Schaltung so verwenden?
2) Ist die Z-Diode so korrekt verwendet, wenn ich mich gegen unzulässige 
Spannungen (größer 27 Volt) absichern möchte?
3) Wenn 2) korrekt ist: Mein Netzteil hat eine Leistung von 60 Watt, die 
ausgewählte Diode kann nur 5 Watt. Wie sichert man dann so etwas ab? 
Durch eine zusätzliche Feinsicherung mit z.B. 40 mA, die in Reihe zur 
Z-Diode geschaltet wird? Oder gibt es einen eleganteren Weg? 
(Eingangsspannung Ub ist 24 Volt)
4) Es handelt sich um diesen Drucksensor hier:
https://www.sensorshop24.de/tpl/download/FME11.pdf
Welche Variante ist besser für mich geeignet? Die mit 4..20mA oder mit 
0..10V? Bei ersterer spare ich mir einen Leiter und kann einen 
Kabelbruch recht leicht feststellen, wenn der Strom 0mA beträgt. Der 
Messfehler dürfte klein sein, da die Leitung nicht sonderlich lang ist. 
Was spricht für die 0..10V-Variante?
5) Wenn ich die 0..10V-Variante verwende, dann muss müsste ich 
vermutlich einen Spannungsteiler mit sagen wir mal 2x 5,1kOhm 
Widerständen verwenden, um das Signal auf 0..5V zu bringen, korrekt?
6) Wie funktioniert eigentlich der Messwertumformer 4..20mA? Ist das 
eine Konstantstromquelle, die das ggf. nichtlineare Signal vom Sensor 
linear macht und dann einfach einen gleichbleibenden Strom ausgibt (und 
gleichzeitig mit 10 Volt Spannung versorgt wird)?

Wäre super, wenn mir jemand weiterhelfen könnte -- gerne auch nur bei 
einzelnen Fragen.

: Bearbeitet durch User
von Gerhard O. (gerhard_)


Angehängte Dateien:

Lesenswert?

Mein Vorschlag wäre ähnlich:

Meßwiderstand auf der Masseseite von 250 Ohm. Ideal wäre für gute 
Meßgenauigkeit ein 0.1% Typ mit niedrigen TK.

Für den Spannungsschutz des Sensors eine TVS Diode zwischen Masse und 
Eingangsspannung und Sicherung oder PTC Überstromschutz. TVS deswegen 
weil die im Vergleich zu Zenerdioden viel schneller reagieren.

Industrielle 4-20mA Sensoren sind aber meist schon vom Hersteller recht 
gut geschützt. Ob dafür ein Spannungsschutz notwendig ist fraglich.

Wenn nur der Arduinomeßeingang geschützt werden soll, genügt ein 10K 
Serienwiderstand vom 250Ohm zum ADC Eingang und eine Schottkydiode nach 
VDD. Eine 5.6V Zenerdiode nach Masse ist da weniger günstig weil im 
Beteich der Zenerknickspannung unberechenbare Leckströme fließen 
könnten, die die Meßgenauigkeit beeinflussen. Ein 10n nach Masse ist 
notwendig um dem Input MUX des uC Kontrollets genug Strom beim internen 
Umschalten zu geben. (Steht im Datenblatt wie groß die ADC Signal 
Impedanz sein darf). Solange der Eingangsstrom im Fehlerfall begrenzt 
genug ist, genügen dann die internen CMOS Substratdioden die immer 
vorhanden sind. Nur passiert bei zu viel Strom ein möglicher Latchup, 
der den uC bei genug Strom der Spannungsversorgung den IC zerstören 
könnte.

Besser wäre sonst den 10K Serienwiderstand aufteilen und einer 6.8V TVS 
Diode nach Masse dazwischenlegen. (Siehe beiligende Skizze). Dann ist 
der Strom in den ADC Eingang definiert begrenzt.

Sollte auch noch der Messwiderstand gegen Überlastung geschützt werden 
wird es aufwendiger.

Wenn ein 24V Netzteil in Frage kommt, dann sollten für den Arduino zum 
Schutz des internen Spannungsregler die Versorgungsspannung auf 8-12V 
reduziert werden.

Übrigens, obwohl Du nicht danach gefragt hast: Durch ADC Oversampling, 
also laufend so schnell wie praktisch erfassen, läßt sich durch Mitteln 
die Auflösung um mindestens 1-2bit (Dithering) vergrößern wenn genug 
Zeit vorhanden ist. Das immer vorhandene Rauschen erlaubt mit dieser 
Methode die effektive ADC Auflösung zu verbessern. Das lohnt sich ab 
16-64 ADC Messungen per Zyklus. Nicht vergessen die Hälfte des 
Mittelwert N zum Result hinzuaddieren um den 1/2-bit Fehler zu 
kompensieren. Z.B. bei 64 Messungen addierst Du dann am Ausgangswert 32. 
durch diese Massnahmen kannst Du den (teuren) Sensor durch bis zu 
1-2-bit mehr, besser ausnutzen ohne einen besseren ADC verwenden zu 
müssen. Idealerweise, sollte auch eine gute 5V Spannungsreferenz am AREF 
Pin angeschlossen werden und auf externe Referenz umschalten. Ob sich 
das lohnt weiß ich nicht, da ich den Sensor nicht kenne. Da müsste man 
mal rechnen ob es sich lohnt.

https://www.cypress.com/file/236481/download
https://thecavepearlproject.org/2017/02/27/enhancing-arduinos-adc-resolution-by-dithering-oversampling/
http://www.ti.com/lit/an/snoa232/snoa232.pdf

Nachtrag:

Ich würde den 4-20mA bevorzugen. Das ist bei größeren Entfernungen 
vorteilhaft und einfacher und billiger.

: Bearbeitet durch User
von Sebastian E. (sebert)


Lesenswert?

Gerhard O. schrieb:

> Meßwiderstand auf der Masseseite von 250 Ohm

"Masseseite" deshalb, damit ich automatisch einen Pull-Down bei nicht 
anliegender Spannung für die Digitaleingang habe, korrekt?

> Für den Spannungsschutz des Sensors eine TVS Diode zwischen Masse und
> Eingangsspannung und Sicherung oder PTC Überstromschutz. TVS deswegen
> weil die im Vergleich zu Zenerdioden viel schneller reagieren.

OK, mir geht es weniger um Überspannung als z.B. um Anlegen einer 
dauerhaft falschen zu hohen Spannung beim Einbau. Dann würde der PTC mir 
vermutlich nur bedingt helfen. Er würde zwar die Diode vor Überlast 
schützen, aber dann bei steigendem Widerstand ggf. irgendwann wieder die 
zu hohe Spannung anliegen lassen. Also wäre für diesen Fall der 
dauerhaft zu hohen Spannung die Sicherung die bessere Lösung, korrekt?

> Besser wäre sonst den 10K Serienwiderstand aufteilen und einer 6.8V
> TVS Diode nach Masse dazwischenlegen. (Siehe beiligende Skizze).

Könntest Du in Deiner Zeichnung noch mal die einzelnen Spannungen (und 
Ströme) an den Widerständen und der TVS-Diode einzeichnen? Ich bin nicht 
sicher, ob ich da so durchsteige. Was für einen Spannungsabfall hat eine 
TVS-Diode? Habe ich noch die 5 Volt als anliegende Spannung am Arduino?

> Ein 10n nach Masse ist notwendig um dem Input MUX des uC Kontrollets
> genug Strom beim internen Umschalten zu geben.

Das nehme ich einfach mal so hin. Übersteigt meine 
Elektrotechnik-Kenntnisse...

> Wenn ein 24V Netzteil in Frage kommt, dann sollten für den Arduino zum
> Schutz des internen Spannungsregler die Versorgungsspannung auf 8-12V
> reduziert werden.

Genau, da habe ich schon einen Festspannungsregler vorgesehen, den ich 
auf den Buchseneingang des Arduino lege. Ich gehe also nicht direkt aufs 
Board. Soweit ich weiß, ist der Buchseneingang auch noch mal abgesichert

von Gerhard O. (gerhard_)


Lesenswert?

Sebastian E. schrieb:
> Gerhard O. schrieb:
>
>> Meßwiderstand auf der Masseseite von 250 Ohm
>
> "Masseseite" deshalb, damit ich automatisch einen Pull-Down bei nicht
> anliegender Spannung für die Digitaleingang habe, korrekt?
Ja. Auf alle Fälle. Ist auch für den ADC Meßeingang notwendig.
>
>> Für den Spannungsschutz des Sensors eine TVS Diode zwischen Masse und
>> Eingangsspannung und Sicherung oder PTC Überstromschutz. TVS deswegen
>> weil die im Vergleich zu Zenerdioden viel schneller reagieren.
>
> OK, mir geht es weniger um Überspannung als z.B. um Anlegen einer
> dauerhaft falschen zu hohen Spannung beim Einbau. Dann würde der PTC mir
> vermutlich nur bedingt helfen. Er würde zwar die Diode vor Überlast
> schützen, aber dann bei steigendem Widerstand ggf. irgendwann wieder die
> zu hohe Spannung anliegen lassen. Also wäre für diesen Fall der
> dauerhaft zu hohen Spannung die Sicherung die bessere Lösung, korrekt?
Naja. Kommt darauf an welche Fehlerquellen möglich sind. Gegen 
Falschpolung genügt eine Diode. Gegen Sensorüberspannung ist es besser 
die Versorgungsspannung zu sichern. Hier könnte eine Sicherung und 
Leistungszenerdiode helfen, so daß die zulässige 30V am Sensor nicht 
überschriten werden kann. Bei 4mA fallen dann noch 1V am 250 Ohm 
Widerstand und 5V bei 20mA. Der Sensor selber braucht eine gewisse 
interne Betriebsspannung von ein paar Volt, die aber bei der 30V 
maximalen Betriebspannung schon miteinbezogen ist. 24V ist übrigens in 
der Industrie üblich. Wenn ich Du wäre, würde ich einfach eine flinke 
100mA Sicherung und 27V TVS Diode parallel zum Netzteil nehmen. Zum 
Falschpolungsschutz noch eine Seriendiode nach dem Netzteil zum Sensor.
>
>> Besser wäre sonst den 10K Serienwiderstand aufteilen und einer 6.8V
>> TVS Diode nach Masse dazwischenlegen. (Siehe beiligende Skizze).
>
> Könntest Du in Deiner Zeichnung noch mal die einzelnen Spannungen (und
> Ströme) an den Widerständen und der TVS-Diode einzeichnen? Ich bin nicht
> sicher, ob ich da so durchsteige. Was für einen Spannungsabfall hat eine
> TVS-Diode? Habe ich noch die 5 Volt als anliegende Spannung am Arduino?

In meinem Schaltungsvorschlag teilte ich den Schutzwiderstand auf um den 
Strom durch die Schutzdiode auf einen sicheren Wert zu begrenzen. Das 
könnte passieren wenn mal versehentlich 24V am Messwiderstand angelegt 
werden würden. Das überlastet zwar den Messwiderstand, schützt aber den 
AVR Eingang weil in diesem Fall die Spannung auf rund 6.8V begrenzt 
würde. Über die restlichen 10K fließt dann gegen VDD intern über die 
CMOS Schutzdiode die bei CMOS immer vorhanden nur ein sehr kleiner Strom 
der den AVR nicht beschädigt. Da die 6.8V TVS diode 1.8V von 5V weg ist, 
sollte der Leckstrom vernachläßig sein. Im Normalfall bekommt also der 
AVR ADC Eingang die erwartete Spannung von 1-5V. Also fallen am 1K und 
10K im normalen Betriebsbereich keine Spannungen ab und kannst 
ignorieren.

Wenn Du auch noch den 250Ohm Messwiderstand gegen Überspannung bis 30V 
schützen willst, müsste mein Schaltungsvorschlag geändert werden. Dann 
würde ich einen 50mA SRF oder flinke 63mA Sicherung vor dem Meseingang 
in Serie vorschlagen und die TVS Diode parallel zum 250 Ohm Widerstand. 
Wenn dann 30V angelegt werden, begrenzt der TVS die Spannung auf 6.8V 
und es fliesst dann genug Strom um den 50mA SRF ansprechen zu lassen. 
Durch den 250 Ohm Widerstand fliessen dann nur rund 30mA was er 
verkraften sollte.

Mit komplizierteren aktiven Schaltungen könnte man noch bessere 
Schutzeigenschaften erzielen. Ob sich das lohnt muß im Einzelfall 
entschieden werden. Es gibt dafür zahlreiche Schaltungsvorschläge 
seitens der IC Hersteller.
>
>> Ein 10n nach Masse ist notwendig um dem Input MUX des uC Kontrollets
>> genug Strom beim internen Umschalten zu geben.
>
> Das nehme ich einfach mal so hin. Übersteigt meine
> Elektrotechnik-Kenntnisse...
Reduziert nur etwaige Störspannungen und erhöht die Meßgenauigkeit bei 
Meßsignalen mit hohen Innenwiderstand. Ist nicht unbedingt notwendig 
außer daß ohne C der Innenwiderstand des Messsignals niedrig sein soll. 
Beim AVR bedeutet das übrigens nicht größer sein als 10K. Der Grund ist, 
daß beim Umschalten des Mux kleine interne Cs im Meßzweig des ADCs 
umgeschalten werden müssen und der externe C diese Energie bereitstellt 
um Messfehler zu vermeiden. Das wird im Datenblatt näher beschrieben.
>
>> Wenn ein 24V Netzteil in Frage kommt, dann sollten für den Arduino zum
>> Schutz des internen Spannungsregler die Versorgungsspannung auf 8-12V
>> reduziert werden.
>
> Genau, da habe ich schon einen Festspannungsregler vorgesehen, den ich
> auf den Buchseneingang des Arduino lege. Ich gehe also nicht direkt aufs
> Board. Soweit ich weiß, ist der Buchseneingang auch noch mal abgesichert

Ich hoffe, das klärt einige Fragenpunkte.

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.