Wie berechnet man den Messfehler in einem exponentiell nichtlinearen Sensor? (selbstgebauter Drucksensor)

Ich versuche, den Messfehler eines selbstgebauten Drucksensors zu berechnen, den ich in einer Spannungsteilerschaltung habe. Er hat die gleichen negativen exponentiellen nichtlinearen Widerstandseigenschaften wie ein NTC-Thermistor: Mit zunehmender Kraft [N] nimmt der Widerstand [Ohm] nichtlinear ab. Der Drucksensor fungiert als variabler Widerstand, und ich messe den Spannungsabfall darüber mit einem 8-Bit-ADC.

Bisher habe ich Widerstandsmessungen (mit einer Multimetergenauigkeit auf 0,1 Ohm) des selbstgebauten Velostat-Drucksensors bei ausgeübten Kräften von 1 bis 10 N mit einem Kraftmessgerät (mit einer Genauigkeit von 0,05 N) mit 5 Widerstandsmessungen durchgeführt jeden Kraftwert. Der Durchschnitt der 5 Messungen ist unten grafisch dargestellt.

Mein Plan, die ausgeübte Kraft [N] zu berechnen, besteht darin, eine "Power-Funktion" zu verwenden, die aus den Daten in Excel erstellt wird, und sie neu anzuordnen, um bei einem bestimmten Y (Widerstand) nach X (Kraft) zu lösen. Der Widerstand (Y) wird von der vom ADC gemessenen Spannung abgeleitet.

Ist dies ein guter Ansatz oder sollte ich eine Nachschlagetabelle oder eine lineare Interpolation verwenden? (Ich bin mir noch nicht sicher, wie ich das machen soll.)

Wie berechne ich den Messfehler des Sensors, da sich der Widerstand in höheren Kraftbereichen nur geringfügig und der Widerstand in kleinen ausgeübten Kraftbereichen stark (empfindlich) ändert?

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

BEARBEITEN: Diagramm meiner Widerstandsmessungen mit grafisch dargestellten Maximal- und Minimalwerten hinzugefügt (die 20 Messungen bei jedem Wert von F [N] sind nicht in der Tabelle aufgeführt).

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Sie haben bereits eine gleichwertige Funktion gefunden, erfüllt diese nicht Ihre Anforderungen?
Was lässt Sie glauben, dass die Genauigkeit Ihres Messgeräts 0,1 Ohm beträgt? Ist es möglich, dass Sie die Auflösung als Genauigkeit interpretieren?
Sie gehen von einem exponentiellen Modell aus, und das könnte sehr gut sein – aber ich könnte beliebige Funktionen an Ihre Messpunkte anpassen. Woher weißt du, dass es exponentiell ist? Kommt das aus der Physik?
@MarcusMüller Er hat dort keine Korrelation, aber sie wäre nahe bei 1. Es wäre schwierig, eine beliebige Funktion zu finden, die so gut zu diesem Datensatz passt.
@StainlessSteelRat Ein Polynom dritten Grades würde nicht genauso gut dazu passen? Ich wäre überrascht! Auch diese exponentielle Anpassung hat drei freie Parameter: einen Offset, einen Vorfaktor und eine Skalierung.
@MarcusMüller Ich bezweifle, dass es auch korrelieren würde und es würde sehr seltsam aussehen. Wenn es aussieht wie eine Ente.....
@StainlessSteelRat als Kommunikationsingenieur: Wenn es aus 10 Datenpunkten wie eine Ente aussieht, bereiten Sie sich auf einen Elefanten-Fading-Kanal vor
@ElliotAlderson ja, ich meinte Auflösung statt Genauigkeit, Entschuldigung für die Verwechslung.
@MarcusMüller Dies ist das erste Mal, dass ich dies mache (eine Gleichung für einen Sensor finden), wie beschrieben habe ich Daten aufgezeichnet und dann in Excel festgestellt, dass die Trendlinie der Potenzfunktion am besten zu den gemittelten Daten passt, die Polynomfunktionen begannen erst danach gut zu passen 4. Grades, wie ist das normale Vorgehen beim Auffinden einer Gleichung für einen Sensor? In diesem Handbuch für einen kraftempfindlichen Widerstand ( generationrobots.com/media/FSR400-Series-Integration-Guide.pdf ) heißt es in Kapitel 7.0, dass die Kurve den Daten der "Nachschlagetabelle" nachempfunden werden muss. Haben Sie Literatur / Links dazu? dies, wie man Gleichung ableiten?
@BetweenBeltSizes95 ah! Nun, dann haben Sie eine Kurve, die Sie approximieren möchten – also tun Sie genau das; Sie definieren einen akzeptablen Fehler und finden eine einfach zu interpolierende Funktion, die sich Ihrer Referenzkurve innerhalb dieser Fehlergrenze annähert. Wenn Ihr Exponential das tut, sehr gut! Ich würde wahrscheinlich nur versuchen, die Kurve in Segmente mit ungefähr gleicher Steigung zu unterteilen und dann eine stückweise lineare Darstellung zu erstellen, die rechnerisch sehr einfach ist und durch Erhöhen der Anzahl der Segmente beliebig genau gemacht werden kann.

Antworten (1)

v 2 = v R e F R T R 1 + R T = v R e F ( 1 1 + R 1 R T )

v 2 = v R e F ( 1 1 + R 1 244.5 X 0,941 )

R T = R 1 v R e F v 2 1

244.5 X 0,941 = R 1 v R e F v 2 1

X 0,941 = R 1 244.5 ( v R e F v 2 1 )

0,941 l N X = l N R 1 244.5 ( v R e F v 2 1 )

X = e ( l N R 1 244.5 ( v R e F v 2 1 ) 0,941 )

X = ( R 1 244.5 ( v R e F v 2 1 ) ) 1 0,941

Sie können jetzt die Messungen verwenden und die Funktion in partielle Taylor-Reihen schreiben.

X A P P R Ö X = F ( v A ) + F ' ( v A ) 1 ! ( v 2 v A ) + F ( v A ) 2 ! ( v 2 v A ) 2 + F ( v A ) 3 ! ( v 2 v A ) 3 + ,

Für jeden Messpunkt a berechnen Sie die 1 bis n-te Differenz (zusätzliche LUT-Tabelle, mit festen Zahlen) und berechnen dann den interpolierten Wert. Die Verwendung nur der 1. Ableitung könnte in Ordnung sein, mit der 2. Ableitung ist der Messfehler größer als der Näherungsfehler, die 3. Ableitung ist ein Overkill.

Wenn Sie etwas MATLAB, Octave, ... haben, können Sie die Ableitungen lösen und Zahlen berechnen. Dann verwenden Sie diese vorberechneten Werte in Bezug auf Ihre Kalibrierpunkte. Der einzige Overhead für die CPU ist dann das Quadrieren von (V2-Va).

Sie könnten die Taylor-Reihe für zwei benachbarte Punkte erweitern/modifizieren. Verknüpfung

BEARBEITEN:

Ich habe im Netz nach einer symbolischen Differenzierung gesucht. Zunächst einmal finden Sie in den Schulbüchern normalerweise eine Funktion, die als y=f(x) definiert ist, also ordnen wir sie neu an

y=(R_1/(244,45*(V_R/x-1)))^(1/-0,941)

wobei y die Kraft und x die gemessene Spannung ist

Ich habe die Gleichung (R_1/(244.45*(V_R/x-1)))^(1/-0.941) in einen Online-Solver eingefügt - www.derivative-calculator.net . Ich habe die Werte Vref=3,3V, R1=220 Ohm gewählt.

Geben Sie hier die Bildbeschreibung ein

Ich habe die Spannung V2 gemäß Gleichung (1) berechnet, wenn Rt = 130, gemäß Ihrem Diagramm (Funktionsäquivalent) sollte sie bei Kraft = 2 liegen.

V2 = 3,3 * 130 / (220 + 130) = 1.225 V

Ich schaff das:

Geben Sie hier die Bildbeschreibung ein

Die Kraft sollte ca. 2, ich weiß nicht, warum diese Abweichung ist. Der Löser hat auch eine Vereinfachung der Funktion vorgenommen:

4889 1000 941 ( v R e F X 1 ) 1000 941 20 1000 941 R 1 1000 941

Schließlich ist die 1. Ableitung:

50 4889 1000 941 v R e F ( v R e F X 1 ) 59 941 941 20 59 941 R 1 1000 941 X 2

Jetzt müssen Sie nur noch Werte einfügen.

Zum Beispiel 1. Punkt (F=1; Rt=230), V2=3,3*230/(220+230)= 1,686 V. Ich füge diesen Wert als x ein, und der Wert der 1. Ableitung ist f'(1,686) = -1,37612. Die zweite Ableitung ist 1,737047.

Geben Sie hier die Bildbeschreibung ein

Für die kleine Abweichung um den 1. Punkt könnte die Kraft als Taylorreihe 2. Ordnung berechnet werden:

F A P P R Ö X = 1 1.37612 ( v 2 1.686 v ) + 0,68806 ( v 2 1.686 v ) 2

Berechnung des V2 für den 2. Punkt (F=2; Rt=135) wie schon zuvor V2=1,225 und Einsetzen in obige Gleichung ergibt F=1,78

Dein letzter X = Gleichung kann vereinfacht werden.
@jonk Ich habe keine Zeit für Vereinfachungen aufgewendet, wenn Sie möchten, können Sie gerne bearbeiten.
Ich mache das die ganze Zeit, also ist es irgendwie in meine Psyche eingebaut. Seit ln ( A B ) = B ln ( A ) es folgt dem exp ( B ln ( A ) ) = A B . In diese Richtung dachte ich. Das ist alles.
Gibt es einen bestimmten Grund, warum Sie eine Taylor-Reihe verwenden? Wenn Sie es abschneiden, erhalten Sie keine gute polynomische Annäherung. Wenn das OP ein Gradpolynom will N um die gemessene Spannung zu beziehen v 2 und der gemessenen Kraft ist es besser, einfach eine Polynomanpassung durchzuführen, die den Fehler der Annäherung verringert.
@jDAQ Taylor war der erste in meinem Kopf, da die Funktion und ihre Ableitungen bekannt sind. Welches Polynom würde Ihrer Meinung nach besser passen als die Funktion selbst?
@jonk Ich habe getan, was du gesagt hast - so wie ich es verstanden habe. Es würde länger dauern, bis ich das Wissen über die Logarithmusfunktionen wiederbelebt hätte
Ich schlage vor, tatsächlich eine Polynomanpassung der experimentellen Daten octave.sourceforge.io/octave/function/polyfit.html durchzuführen und zu prüfen, wie sie mit den Messungen korrelieren. Dadurch kann das OP den Polynomgrad auswählen und auch den Fehler minimieren.
@jDAQ Ich glaube nicht, dass Sie die Polyfit-Funktion in einer Low-End-MCU verwenden können. Mein Vorschlag ist, bis zur 2. Ordnung (zwei Quadrate) zu berechnen, während Ihr Ansatz die N-te Ordnung annehmen würde, N ist die LUT-Punktzahl.
Ich verstehe, ich wusste nicht, dass das OP vorhatte, dass eine MCU die Daten passt, da er sagte: "Mein Plan zur Berechnung ... erstellt aus den Daten in Excel". Ich dachte, er würde eine Kalibrierung durchführen, das Polyfit in seinem Computer generieren und dann das resultierende Polynom verwenden, um damit Code zu schreiben. Und wenn er tatsächlich einen Computer verwendet, wird die Anpassung selbst für ein Polynom 2. Ordnung die Taylor-Reihe (in Bezug auf den quadratischen Fehler) übertreffen (oder gleich sein). Und für Polynome niedriger Ordnung wäre es möglich, einen vereinfachten Polyfit-Code auch in die MCU einzupassen github.com/Rotario/arduinoCurveFitting
@MarkoBuršič Vielen Dank für Ihre Hilfe, ich habe noch nie eine Gleichung für einen Sensor gelernt oder abgeleitet und wollte wissen, ob mein Ansatz im Allgemeinen in Ordnung war und wie der "normale" Weg wäre, eine Gleichung für einen Sensor abzuleiten? Alles, was ich tat, war, das R bei verschiedenen Kraftstufen zu messen und die Trendlinie in Excel zu finden, die am besten zur durchschnittlichen Datenlinie passte, damit ich dann eine Gleichung erhalten konnte. Ohne Excel wüsste ich nicht, wie ich anfangen soll, außer eine lineare Linie zu machen und eine ay = mx + b-Gleichung zu erhalten (das ist mein Wissensstand). Hast du einen Link/Literatur, die dir weiterhelfen könnte? vielen Dank!
@BetweenBeltSizes95 Hast du die Bearbeitung gesehen?
@MarkoBuršič Ich habe deine Bearbeitung gesehen, danke. Ich habe jedoch eine Frage, warum nicht einfach die Formel y=(R_1/(244.45*(V_R/x-1)))^(1/-0.941) verwenden? Die Taylor-Serie liefert genauere Ergebnisse? Ich erinnere mich nicht, wie man Taylor-Serien macht und wofür sie verwendet werden. Wenn ich einfach die oben erstellte Formel verwende, wie würde ich meinen Messfehler aus dem berechneten Wert ermitteln? (Ich habe die minimalen und maximalen R-Werte für die 5 Widerstandsmessungen bei jedem Wert von F nicht hinzugefügt).
@MarkoBuršič Ich habe das Diagramm mit meinem gemessenen Widerstandsbereich (max und min) hinzugefügt, wenn ich die einfache Gleichung verwende, die Sie erstellt haben: y = (R_1 / (244,45 * (V_R / x-1))) ^ (1 / -0,941) Wie würde ich den Messfehler berechnen? wie +/- N ? Das Diagramm enthält immer noch keine Unsicherheiten in der Multimeter-Widerstandsmessung (0,1 Ohm) und der Kraftmessunsicherheit (0,05 N).