Programmiertechnischer Trick / bessere Vorgehensweise bei Berechnung - analoger Ausgang 4-20mA

Gast #2619842
Guten Morgen Leute!

Ich versuche hier mal mein Glück, evtl. kann mir ja jemand helfen, bzw. 
mir ein wenig auf die Sprünge helfen.

Ich habe eine Schaltung für einen Sensor entwickelt, der mir 4-20mA in 
einer 2-Leiterschaltung erzeugt. Das ganze ist für einen keramischen 
Drucksensor, der relativ unlinear ist, seine Linearität liegt bei ca. 
0,4% über dem gesamten Messbereich.

Ich habe daher eine 5-Punkt-Kalibrierung vorgenommen, in der ich bei 0%, 
25%, 50%, 75% und 100% Messwerte auf einem Kalibrator aufnehme und dann 
intern mittels kubischer Spline-Interpolation eine Linearisierung 
durchführe. Das ganze funktioniert auch relativ gut - der 
Linearitätsfehler geht unter 0,03% (ohne Temperaturdrift).

Für den gesamten Messbereich ist das absolut in Ordnung, jetzt will ich 
aber noch den Bereich skalieren können, sprich von einer 1bar-Zelle z.B. 
nur 0-100mbar auf die 4-20mA abbilden.

Hierzu wird intern im Controller eine Verstärkung errechnet.

Vorgehensweise ist folgende:

Ich habe die 5 AD-Werte für 0%, ..., 100% - es wird jetzt ein Messwert 
aufgenommen und mittels der Spline-Interpolation der "richtige" 
Prozentwert errechnet. Auf Basis dieses Prozentwertes werden alle 
folgenden Berechnungen gemacht, also z.B. Ausgabe auf dem Display dann 
53,76% von 1000mbar = 537,6mbar.

Ebenso wird der Ausgangsstrom mit diesem Prozentwert generiert - ich 
habe einen DAC, bei dem vorher der Anfangswert und der Endwert 
kalibriert wurden und der dann halt durch 53,76% von der "Bit-Spanne" + 
Anfangswert seinen Wert zur Ausgabe erhält.

Das Problem ist jetzt die Ungenauigkeit beim runterskalieren, da kommt 
doch eine recht "wackelige" Kurve heraus. Hier wird

Als Beispiel: Ich habe alles auf 100mbar eingestellt und einen 
gemessenen Prozentwert von 7,6% (76mbar), dann ergibt sich:

Diese 76% gebe ich also an den DAC, der daraus die 4-20mA erzeugt. 
Leider ist der Fehler, der hier durch die Rechnung entsteht auch relativ 
groß, bzw. wird der Fehler halt auch um den Faktor 10 verstärkt, was 
auch hinkommt im Vergleich.

Gibt es daher ein Punkt an dem ich ansetzen kann, wodurch ich das ganze 
verbessern könnte?

Bin um jeden Tip dankbar.
Gast
Der Nichtsahnende moechte 0,01% Fehler von 0 bis 1000 ....
und dann noch eine Lupe fuer noch genauere Werte .

Konzentriere dich doch nur auf den kleinen Bereich !

Hier sagt man: wer zu viel will kann nicht alles mit einer Hand halten.
Gast
&KUNZderkann'z schrieb:
> Der Nichtsahnende moechte 0,01% Fehler von 0 bis 1000 ....

Nein, möchte er nicht ;-)

Es kann ja nur sein, dass es Methoden gibt, die den Ausgang ggf. 
verbessern können.

&KUNZderkann'z schrieb:
> Konzentriere dich doch nur auf den kleinen Bereich !

Der große Bereich ist wichtiger, nur wäre es natürlich schön, wenn der 
kleine ein wenig besser sein könnte...:\

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.