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
> 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 ;-)
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
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
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
@Dieter: Ebenso das Problem ausgedehnter Anlagen mit den bekannten Potential/Masseschleifen Problemen.
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.
> 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?
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?
> 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.
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...
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
> 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.
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
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 ;-)
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.
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
> 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.
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.
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.
Nimm einen RCV420 von Burr-Brown. Der macht aus 4-20mA 0-5V. Nachteil: nicht ganz billig das Teil. Gruss, Thorsten
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.
> 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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.