mikrocontroller.net

Forum: Analoge Elektronik und Schaltungstechnik 0/4-20mA zu 0-5Volt


Autor: Dirk Meyer (dirkm)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

möchte gerne einen Sensor, der sonst für SPS ist, an einem Analogeingang 
eines AtMega32 anschließen.

Problem ist jetzt, der Sensor hat einen 4-20mA analogausgang und für den 
AVR benötige ich 0-5Volt.

Wie wandelt man es nun am besten?

Warscheinlich mit einem (rail ro rail)OPV.

Weiß da jemand eine genaue und zuverlässige Lösung?

Schonmal vielen Dank :-)

Gruß
Dirk

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Problem ist jetzt, der Sensor hat einen 4-20mA analogausgang und für den
> AVR benötige ich 0-5Volt.
Nimm einen 250 Ohm Widerstand und mach aus 4-20mA für den AVR eine 
Spannung von 1-5V. Diese Spannung wandeln und in der Software 1V 
abziehen.

Du brauchst nämlich garantiert nicht eine Spannung, sondern letztlich 
nur einen Sensorwert  ;-)

Autor: Andrew Taylor (marsufant)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dirk Meyer schrieb:
> Hallo,
>
> möchte gerne einen Sensor, der sonst für SPS ist, an einem Analogeingang
> eines AtMega32 anschließen.
>
> Problem ist jetzt, der Sensor hat einen 4-20mA analogausgang und für den
> AVR benötige ich 0-5Volt.
>
> Wie wandelt man es nun am besten?
>
> Warscheinlich mit einem (rail ro rail)OPV.

Nicht nötig.

>
> Weiß da jemand eine genaue und zuverlässige Lösung?

Wenn Sensor Masse identisch Systemmasse werden darf:

Einfachst: ein Metallfilmwiderstand.
220 oder 248 Ohm. 1%
Den Rest der Skalierung in der SW berücksichtigen.


Genau für sowas ist 20mA Strom-System ideal.

Wenn'S nicht identishc sein darf: Trennverstärker von Knick, Weidmüller.

Dies Thema taucht im Forum übrignes alle 2 Wochen auf ;-)


hth,
Andrew

Autor: Dieter S. (accutron)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dirk,

man könnte es auch "passiv" aufbauen, indem man eine Stromquelle (z. B. 
LM334) und einen Widerstand von 312,5 Ohm in Serie zu einer Zenerdiode 
mit ca. 3V Z-Spg. verwendet. Der LM334 benötigt einen zusätzlichen 
Widerstand, der die 4 mA einstellt. Der restl. Strom fließt dann über 
den parallen Zweig mit dem 312-Ohm-Wid und der Zenerdiode (letztere ist 
notwendig, damit die Stromquelle mit dem LM334 auch eine Mindestspannung 
erhält und damit zuverlässig arbeitet).

Natürlich kann man auch OP-Schaltungen aufbauen.

Gruß

Dieter

Autor: Dieter S. (accutron)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andrew hat natürlich Recht: Den "Nullpunkt" kann man mit der SPS am 
einfachsten beeinflussen, man muss hier nicht unbedingt aus 4 mA eine 
Spannung von 0 V machen. Ich kenne das Problem aber aus eigener 
Erfahrung: Die Anlagenbauer scheuen sich meist vor jeglichem Eingriff in 
ihre SPS-Software, auch wenn es noch so einfach wäre.

Gruß

Dieter

Autor: Andrew Taylor (marsufant)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Dieter:

Ebenso das Problem ausgedehnter Anlagen mit den bekannten 
Potential/Masseschleifen Problemen.

Autor: Dirk Meyer (dirkm)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ja schonmal super :-)

Am liebsten wären mir wirklich 4-20mA zu 0-5V um den ADC des Atmega32 
voll auszuschöpfen. Er hat ja leider nur 10Bit.

Masseschleifen sind bei mir kein Problem. Der Sensor befindet sich nur 
etwa 1 Meter vom AVR entfernt und beide werden aus dem selben Netzteil 
gespeist.

Dieter S dein Vorschlag ist mir leider noch nicht so ganz klar.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Am liebsten wären mir wirklich 4-20mA zu 0-5V um den ADC des Atmega32
> voll auszuschöpfen. Er hat ja leider nur 10Bit.
Was ist das für ein Sensor?
Brauchst du wirklich alle 1024 Schritte, oder reichen dir evtl. die 800?

Willst du den Offset mit einem OP abziehen, kannst du dir durchaus 
andere unschöne Offsetprobleme einhandeln (Abgleich und Temperatur und 
Rauschen). Und auch ein "richtiger" R2R OP kommt am Ausgang nicht ganz 
bis an die Rails, weil du ja auch eine Belastung durch den 
Rückkoppelwiderstand hast.

D.h. es wären z.B. 0,1V .. 4.9V, wäre das wirklich besser?

Autor: Dirk Meyer (dirkm)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es geht um einen 0,5-10m Distanzsensor. Die 1024 Schritte alleine sind 
schon fast zu wenig. Könnte man es irgendwie auf 2 ADC's aufteilen?

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Könnte man es irgendwie auf 2 ADC's aufteilen?
Das ist Murks, dann hast du 2x Offsetprobleme, damit wirst du niemals 
glücklich.

Nimm einen externen 12- oder 14-Bit Wandler mit SPI-Interface, dazu den 
Widerstand und fertig.

Autor: Philipp Burch (philipp_burch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Besorg dir einen externen ADC mit z.B. 16 Bit. Je mehr analoge 
Beschaltung noch dranhängt, desto anfälliger auf Störungen wird das 
ganze Ding. Ausserdem gibt's mehr Arbeit mit dem Abgleich.
Bringt denn der Sensor die von dir geforderte Genauigkeit?

EDIT: Grmpf, vor dem Schreiben sollte man immer noch mal F5 drücken...

Autor: Dieter S. (accutron)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dirk,

der LM334, zusammen mit einem passenden Widerstand bildet eine 
Stromsenke für 4 mA. Parallel zu dieser Senke schaltest Du eine 
Serienschaltung aus Shunt 312,5 Ohm und Zenerdiode mit ca. 3 V. Unter 4 
mA fällt am Shunt keine Spannung ab. Bei 4 mA lässt der LM334 eine 
Spannung an sich abfallen, die noch unter der Zenerspannung ist. 
Steigert der Stromtransmitter weiter den Strom, so muss dieser die 
Spannung sow weit erhöhen, bis die Zenerdiode plus Shunt Strom führen.


Gruß

Dieter

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Zenerdiode mit ca. 3 V.
Das wäre auch das Mittel meiner Wahl. Aber eher zur Temperaturmessung. 
;-)

> 312,5 Ohm
+- 1%  oder wie?  Jeder Widerstand müsste auf 1 Promille genau sein, 
wenn 10 Bit gefordert sind. Sonst hilft nur ein Abgleich.

Und dann ist es besser, ein paar Bit mehr zu wandeln und den Abgleich in 
die Software zu verlagern.

Autor: Dieter S. (accutron)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lothar Miller schrieb:
>> Zenerdiode mit ca. 3 V.
> Das wäre auch das Mittel meiner Wahl. Aber eher zur Temperaturmessung.
> ;-)

Sie dient in diesem Fall als "Stromhürde".


>> 312,5 Ohm
> +- 1%  oder wie?  Jeder Widerstand müsste auf 1 Promille genau sein,
> wenn 10 Bit gefordert sind. Sonst hilft nur ein Abgleich.

Na und? Widerstände lassen sich auch zusammensetzen.


Dieter

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dieter S. schrieb:
>>> 312,5 Ohm
>> +- 1%  oder wie?
> Na und? Widerstände lassen sich auch zusammensetzen.
Sie werden dadurch aber nicht genauer. Die Toleranz bleibt ...
Wenn du einen 270 Ohm-Widerstand mit -1% hast,
dann hilft dir am Schluss ein 0,47 Ohm-Widerstand mit +1% wenig  ;-)

Autor: Andrew Taylor (marsufant)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lothar Miller schrieb:
> Dieter S. schrieb:
>>>> 312,5 Ohm
>>> +- 1%  oder wie?
>> Na und? Widerstände lassen sich auch zusammensetzen.
> Sie werden dadurch aber nicht genauer.

Brauchen sie auch nicht.

> Die Toleranz bleibt ...

Spielt hier erstmal keine Rolle, wenn er sie letztlich mit einer 
Meßbrücke/5 stelliges DMM, o.ä. etc vermißt und zusammensetzt.

> Wenn du einen 270 Ohm-Widerstand mit -1% hast,
> dann hilft dir am Schluss ein 0,47 Ohm-Widerstand mit +1% wenig  ;-)

Eben genau der hilft Dir, das Resultat zu erreichen.

einfach zusammenlöten und "fertich isses" geht natürlich nicht.

Autor: Dieter S. (accutron)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das war mir schon klar, dass die Toleranz bleibt. Ich meinte, die 0,1% 
lassen sich für 312,5 Ohm auch zusammensetzen. Dass man dazu mindestens 
einen mit 0,1% benötigt, weiß ich auch.

Im übrigen: Wie genau oder wie hoch auflösend ist denn der Transmitter? 
->Frage an Dirk. Am Ende ist das ein Ding, das mit 8 Bit auflöst auch 
nur eine ähnliche Genauigkeit aufweist. Und dann wieder nach digital zu 
wandeln mit 14 Bit oder höher, wäre unnötig.

Dieter

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> einfach zusammenlöten und "fertich isses" geht natürlich nicht.
Richtig, und deshalb wäre mein Ansatz, die Anzahl der Fehlerquellen 
klein zu halten (nur 1 Widerstand), geräumig zu wandeln und den Rest in 
der Software zu machen.

Autor: Andrew Taylor (marsufant)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lothar Miller schrieb:
>> einfach zusammenlöten und "fertich isses" geht natürlich nicht.
> Richtig, und deshalb wäre mein Ansatz, die Anzahl der Fehlerquellen
> klein zu halten (nur 1 Widerstand), geräumig zu wandeln und den Rest in
> der Software zu machen.

Tja, aber eben ganau den Weg will der TE NICHT gehen da er die 10Bit 
voll ausschöpfen will.

Letztlich wird es eh auf eine andere Wandler-Lösung auslaufen. Ich 
denke, wir können die Diskussion hier jetzt wieder entspannen bevor sie 
sich weiter sinnfrei erhitzt.

Autor: Schlechtwetter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der "Bit-Verlust" mit der Widerstandsvariante beträgt gerade mal 0,32 
Bit. Dafür aufwendige Analogelektronik dazu bauen, ist Blödsinn.

Wenn man unbedingt etwas mehr Auflösung will, dann besser nochmals zwei 
Widerstände und ein Kondensator dazu und mit Noise-Shaping die Auflösung 
erhöhen. Das dürfte wesentlich zielführender sein, wenn es die 
Abtastrate erlaubt.

Autor: Thorsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nimm einen RCV420 von Burr-Brown. Der macht aus 4-20mA 0-5V.
Nachteil: nicht ganz billig das Teil.
Gruss,
Thorsten

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oder man nimmt nen externen ADC mit 14/16 Bit. Dann wird aber dessen 
Referenzquelle interessant, die sollte ja auch net gar arg zu toll 
schwanken, net, dass die 4/6 zusätzlichen Bits durch die schlechte Ref 
gleich wieder dahin sind.

Wie genau ist es denn erforderlich die 0.5m bis 10m aufzulösen? Bei 10m 
und 10 Bit würd man ja auf ca. nen Zentimeter genau auflösen.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Tja, aber eben ganau den Weg will der TE NICHT gehen da er die 10Bit
> voll ausschöpfen will.
Aber auch die reichen ihm noch nicht (auf 2 AD-Wandler aufteilen usw. 
usf.). Also warum nicht gleich auf 14 Bit umschwenken?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.