-
        

Ergebnis 1 bis 8 von 8

Thema: mathematische Sensor-Linearisierung

  1. #1
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.08.2004
    Ort
    Stuttgart
    Alter
    42
    Beiträge
    849

    mathematische Sensor-Linearisierung

    Anzeige

    Servus,

    ich tüftle derzeit an einer Sensor-Linearisierung herum und komme empirisch auf keine saubere Lösung. Das Problem ist, ich habe keine lineare Funktion. Der Sensor an sich ist ein LDR mit einem Trimmpotentiometer, welcher über einen ADC digitalisiert wird in 10-Bit-Auflösung (0...1023). LDR ist gegen GND, das Poti ist gegen Uref geschaltet.

    Die Funktion des LDR's zum ADC-Wert:

    ADC = (LDR * 1024) / (LDR * R1)

    Umgestellt nach LDR (um aus dem ADC-Wert den LDR-Wert zu errechnen):

    LDR = (R1 * ADC) / (1024 - ADC)

    Nun habe ich durch mehrfache Messungen sehr genaue Referenzwerte ermittelt. Diese sind an vier Stützstellen (im 1/3-Raster) ermittelt worden.

    512 => 3/3 (1,000)
    559 => 2/3 (0,666)
    679 => 1/3 (0,333)
    983 => 0/3 (0,000)

    512 ist halbe ADC-Referenzspannung. Das wurde mit dem Potentiometer (R1) bei exakt 100% Lichtstärke einjustiert. Der Rest ist über exakte Zu- und Abschaltung am Messobjekt ausgemessen worden.

    http://wiesolator.gotdns.org/rn/Licht-Kurve.PNG

    Hier mein Versuche es in der Tabellenkalkulation anzunähern:

    http://wiesolator.gotdns.org/rn/funktion.png

    Weiß jemand ein Verfahren bzw. eine Vorgehensweise, wie man aus solchen (vier) Stützstellen eine saubere Gleichung ermitteln kann, die alle Zwischenpunkte (ADC-Werte) errechnen kann?

    Grüße Wolfgang

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    43
    Beiträge
    2.240
    nennt sich Polynomregression, kann z.B. Matheass
    Vor den Erfolg haben die Götter den Schweiß gesetzt

  3. #3
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.551

    Re: mathematische Sensor-Linearisierung

    Zitat Zitat von BlueNature
    ... ein Verfahren bzw. eine Vorgehensweise, wie man aus solchen (vier) Stützstellen eine saubere Gleichung ermitteln kann, die alle Zwischenpunkte (ADC-Werte) errechnen kann ...
    Mal ganz im Geheimen: mit zwei Stützpunkten geht das total einfach. Ok, dann weiter ohne OT: ich habe so eine wilde Messwertkurve für einen Sharp IR-Sensor aufgenommen. In Excel eingetragen - und das Excel hat mir (auf meinen Befehl natürlich) eine Regression ermittelt. Die Art der Regression ist wählbar. Ich habe aus der Kurve eine einfache Ersatzgleichung bestimmt, habe damit eine Kontrollkurve errechnet und die zur Kontrolle der Güte der Anpassung im Messblatt dargestellt. Siehe hier (klickdrauf). WENN man nicht genau die von Excel vorgeschlagene Gleichung nimmt (ist im Posting mit Beispielcode hinterlegt), dann kann man auch annähernd recht praktische, sprich schnell berechenbare, Ersatzkurven bekommen.

    PS: Verschiedene Berechnungsverfahren sind möglich. Die Ergebnisse treffen entweder die Stützpunkte GENAU - dann könnte die Kurve aber ziemlich "schwingen", oder der Fehler (die Abweichung an den Stützpunkten) ist mehr oder weniger gering - dann kann die Kurve recht einfach werden. Da muss man wählen, was nach den eigenen Anforderungen an Genauigkeit und Verwendbarkeit am besten passt. Das o.g. Beispiel ist von der letzteren Art: möglichst einfache Rechnung bei guter Genauigkeit (mit Anpassung nach der Methode der kleinsten Quadrate...).
    Ciao sagt der JoeamBerg

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.08.2004
    Ort
    Stuttgart
    Alter
    42
    Beiträge
    849
    @Vitis
    Mathe-Ass kam mir vorher auch wieder in den Sinn, hatte ich damals zu Uralt-DOS-Zeiten (vor über 15 Jahren) gehabt, eben hab ich es damit noch probiert:

    Polynom-Regression

    y = + 5,0751679
    - 0,011188183 x
    + 6,132321E-6 x^2

    Bestimmtheitsmaß = 0,98590114
    Korrelationskoeff. = 0,99292555
    Standardabweichung = 0,088502526

    @Oberallgeier
    Das mit Excel hatte mir jemand netterweise gezeigt, aber mich interessierte auch unter Hintergrund der Herleitung wie es methodisch hergeleitet wird. Mein Gedankengang war beispielsweise über eine Methode zum Hochlauf des µC eine ganze Tabelle zu errechnen über Konstanten, welche nach Bedarf einfach mitcompiliert werden. So könnte ich eben ohne externe Tools einfach eine Kalibrierung durchführen lassen.

    Danke noch an Alle hier für die Tips, bin für Anregungen in der Art immer sehr erfreut

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    17.02.2006
    Alter
    47
    Beiträge
    781
    Die einfachste Mögliochkeit ist, ein Polynom dritten Grades in allgemeiner Form herzunehmen, also:
    y = a*x^3 + b*x^2 + c*x + d

    In dieses Polynom setzt man jeweils die x- und y-Werte eines Punktes ein und erhält eine Gleichung. Macht man das mit 4 Punkten, erhält man ein Gleichungssystem mit 4 Gleichungen und 4 Variablen, das man lösen kann.

    Es gibt noch Wege, die sich wahrscheinlich einfacher implementieren ließen, die sind aber auch ein wenig komplexer...
    http://de.wikipedia.org/wiki/Polynominterpolation

  6. #6
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.551
    Zitat Zitat von BlueNature
    ... mich interessierte auch unter Hintergrund der Herleitung ...
    ... und den hast Du mit MatheAss bekommen? Hmmmm.

    Die "genaueste" Approximation, sprich eine "stützpunkttreue" Kurve, bekommst Du mit Splines.

    ................

    Das funktioniert etwa so, als würdest Du eine recht biegsame Latte an allen Stützpunkten annageln. Zwischen den Punkten kann sich die Latte frei bewegen und um die Punkte/Nägel kann sie sich reibungsfrei drehen. (Stimmt im Prinzip nicht ganz, EINE KANTE der Latte wird mit den Punkten zur Deckung gebracht). Die Verbindungskurve ist dann die "Biegelinie" der Holzlatte - und die ist mathematisch/physikalisch eindeutig definiert (*ggg* - wenn das Holz absolut gleichmässig ist *ggg*). Die Schiffsbauer nehmen das z.B. um die Schiffskörper möglichst "glatt" zu machen (Stichwort: mehrfach ableitbare Funktion). Deine Lösung mit Matheass gehört zu den Näherungen der zweiten Art (von der ich oben gesprochen hatte - die an den Stützpunkten vorbeigeht). Alles zusammen gehört zur Numerischen Mathematik. Ein interessantes Gebiet.
    Ciao sagt der JoeamBerg

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.08.2004
    Ort
    Stuttgart
    Alter
    42
    Beiträge
    849
    @Dennisstrehl
    Ich habe jetzt reale Tests gefahren mit einem Polynom 3. Grades mit Ausblendung der unrelevanten Bereiche mit einer selektiven Berechnung. Das Resultat war im praktisch akzeptablen Bereich für die Anwendung und ich werde es einmal über längere Zeit auf die Praxistauglichkeit testen. Ich habe es mit einigen verschiedenen Stützwerten und Polynom-Graden getestet und habe nun vorerst eine passende Gleichung dafür gefunden.

    Code:
    ' Licht-Interpolation
    ' *******************
    ' y = 20,367924 - 0,078266092 x + 0,00010096023 x^2 - 0,000000042928788 x^3
    LichtInterpolation:
      ' AD-Messung durchführen
      ADCWert = GetADC(LDR)
      ' Grenzwerte beachten
      If ADCWert < 700 Then
        ' Quadrat errechnen
        TmpWert1 = ADCWert
        TmpWert2 = TmpWert1 ^ 2
        TmpWert3 = TmpWert1 ^ 3
        ' 1. Teil
        TmpWert4 = 20.367924
        ' 2. Teil
        TmpWert5 = TmpWert1 * 0.078266092
        ' 3. Teil
        TmpWert6 = TmpWert2 * 0.00010096023
        ' 4. Teil
        TmpWert7 = TmpWert3 * 0.000000042928788
        ' Summe
        LichtWert = TmpWert4 - TmpWert5
        LichtWert = LichtWert + TmpWert6
        LichtWert = LichtWert - TmpWert7
        ' Lichtfläche itegrieren
        LichtMenge = LichtMenge + LichtWert
      Else
        LichtWert = 0
      End If
    Return
    @Oberallgeier
    Das mit der Herleitung gibt Mathe-Ass ja leider nicht an, da war nicht auf den oberen Teil zu beziehen und galt lediglich dem Interesse an einer Methodischen Herleitung.
    Das mit Splines hatte ich auch zuerst gedacht, aber das ufert zu komplex aus für einen kleinen AVR. Mit Splines werde ich mich in näherer Zeit eh noch einmal genauer beschäftigen. Muß mir ein Bekannter etwas unter die Arme greifen der davon mehr versteht wie ich.

    Danke fürs Erste, habt mir sehr geholfen.
    Grüße Wolfgang

  8. #8
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.12.2005
    Beiträge
    535
    Wolfgang,

    wenn es Dich interessiert, warum die Methode der kleinsten Abweichungsquadrate funktioniert : Im angehängten pdf findest Du eine kurze Ableitung am Beispiel eines Polynoms 2. Grades.

    Ciao,

    mare_crisium

    Edit: Anhang gelöscht wg. Upload-Quota

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •