Forum: Mikrocontroller und Digitale Elektronik Hallsensor interpolieren


von Stephan S. (plonk)


Angehängte Dateien:

Lesenswert?

Hi,

ich arbeite schon etwas länger an einem elektronischen Dickenmesgerät
für dünne Holzbretter (bis etwa 7mm), das im Prinzip nur mit einer
Hallsonde und einem Magneten als "Abstandsgeber" funktioniert.
Die Hardware steht schonmal und funktioniert auch, jetzt stehe ich aber 
vor der Aufgabe, die Kennlinie (siehe Anhang) auf einem µC zu 
interpolieren.
(Da das Gerät später nur hin und wieder benutzt wird, und das auch nur 
für ein paar kurze Messungen, lohnt sich eine PC-/Notebook-basierte 
Lösung nicht wirklich.)

Jetzt meine Fragen:
kann ich annehmen, dass der Kurvenverlauf (abgesehen von meinen 
Messfehlern, den Sensor-Output sollte ich wohl noch verdoppeln)
soetwas wie eine Parabel zweiter Ordnung beschreibt?
Wäre hier also mein Ansatz korrekt, den ATmega8 mit 3 Referenzpunkten zu 
füttern und ihn dann eine LaGrange-Interpolation durchführen zu lassen?
Oder gibt es eine ganz andere, viel einfachere Lösung, auf die ich im
Arbeitseifer nur gerade nicht komme ? ;)

Ich freue mich über hilfreiche Antworten :D

Freundliche Grüße

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Stephan S. schrieb:
> Oder gibt es eine ganz andere, viel einfachere Lösung

Wertetabelle hinterlegen, zwischen den Stützpunkten linear 
interpolieren.

Stephan S. schrieb:
> kann ich annehmen, dass

Hängt davon ab welchen Fehler du akzeptieren willst, aber einfacher ist 
vermutlich eine Wertetabelle.

von David .. (david1)


Lesenswert?

Du kannst Excel mit deinen Werten füttern, und dir dann eine Formel 
draus machen lassen, die hat dann zwar ewig viele Parameter, aber das 
sollte wohl nicht stören.

Aber Frag mich nicht wie das ging, hab dass das letzte mal vor paar 
Jahren gebraucht.

Aber das sieht doch nich schlecht aus: 
http://www.excelformeln.de/formeln.html?welcher=269
Oder mal nach Excel Trend suchen, irgendwie ging das.

von user (Gast)


Lesenswert?

Wie wäre es mit einer linearen Interpolation, also in x Bereiche 
aufteilen und da eine Gerade annehmen

von Stephan S. (plonk)


Lesenswert?

Hi,

ich wollte gerade bearbeiten, aber dann durfte ich es nicht mehr 
absenden...
Zuerst: die Abstands-Achse ist in 125µm-Schritten, d.h., lineare Annahme 
bis 7mm ist nicht möglich.

Eine Wertetabelle hab ich mir schon überlegt, nur ist die 
Kurzzeitkonstanz des Sensors viel zu schlecht, als dass ich mit einmalig 
ermittelten Werten arbeiten könnte. Zudem läuft das Gerät nachher auf 
Batterie, d.h. der Output des Sensors ändert sich permanent mit.

MfG

Edit:
wow, hier geht's ja Schlag auf Schlag ;)

@David: so hab ich es zuerst probiert, aber die Regression ist ja dann 
wieder nur einmalig.

@user(Gast): das wäre eine Möglichkeit, aber auch wieder relativ 
aufwändig, weil ich für die Geraden noch mehr Messpunkte benötigen 
würde. Und so viele genaue Referenzen hab ich gar nicht :?

von hp-freund (Gast)


Lesenswert?


von MaWin (Gast)


Lesenswert?

> kann ich annehmen, dass der Kurvenverlauf (abgesehen von meinen
> Messfehlern, den Sensor-Output sollte ich wohl noch verdoppeln)
> soetwas wie eine Parabel zweiter Ordnung beschreibt?

Du kannst bei einem Hallsensor zumindest annehmen, daß der Werteverlauf 
mehr von der Temperatur des Hallsensors als von der Entfernung des 
Magneten abhäbgt, du also mindestens in 2 Dimensionen interpolieren 
musst.

von Stephan S. (plonk)


Lesenswert?

Hi,

@hp-freund: das könnte genau die Schaltung sein, die ich brauche. Danke 
;)
@MaWin: das kann gut sein, aber während meiner kurzen Messungen 
betrachtet kann man die Temperatur als konstant ansehen. Also bleibt am 
Ende glücklicherweise nur noch eine Dimension.

MfG

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Stephan S. schrieb:
> als dass ich mit einmalig
> ermittelten Werten arbeiten könnte

Also willst du die "Kurve" ständig ändern oder wie? Wenn du da wirklich 
live eine Werteanpassung durchführen willst könntest du diese Verfahren 
einsetzen: https://de.wikipedia.org/wiki/Methode_der_kleinsten_Quadrate

von Michael W. (Gast)


Lesenswert?

Also eigentlich hinterlegt man in solchen Fällen eine Kurvenschar.

von Stephan S. (plonk)


Lesenswert?

Läubi .. schrieb:
> Also willst du die "Kurve" ständig ändern oder wie?
Ich will es nicht, aber ich werde es vor jeder Messung wahrscheinlich 
tun müssen.
Dann wird es wohl doch auf diese Art der Interpolation rauslaufen.

Markus Wagner schrieb:
> Also eigentlich hinterlegt man in solchen Fällen eine Kurvenschar.
..., die man vorher aber irgendwie gewinnen muss ;)
Und diesen Aufwand wollte ich mir eigentlich sparen.

MfG

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Stephan S. schrieb:
> Ich will es nicht, aber ich werde es vor jeder
> Messung wahrscheinlich tun müssen.

Okay, dann hatte ich das falsch verstanden. In dem Fall ist denke ich 
die "Methode der kleinsten Quadrate" besser geeignet, da du ja die 
Funktion mit möglichst kleinem Fehler haben willst und nicht eine die 
genau durch deine Messpunkte geht. Wie viele Messpunkte da praktikabel 
sind kann man ja dann ausprobieren.

von Hermann K. (r2d2)


Lesenswert?

Wie wärs mit einem Magnetfeldsensor der nicht so krass driftet? z.B. 
sowas hier: http://www.ebay.de/itm/171018528973

von Stephan S. (plonk)


Lesenswert?

Hi,

das Problem bei den neuen MEMS-Sensoren ist, dass alle, die ich bisher 
gefunden habe,
nur für eine relativ geringe Feldstärke (-> Kompass) gemacht sind.
Die meisten im Bereich von +-8 Gauss.
Sowohl der Haltemagnet (bewirkt schonmal eine "Vorspannung"), als auch 
der Messmagnet sind da um einige Zehnerpotenzen drüber.
Die Dinger wären ansonsten ideal, da sie auch in die 4mm-Bohrung meines 
Magneten passen würden. Leider aber ungeeignet.
Wer aber dahingehend noch ein Ass im Ärmel hat (oder weiß, wer eins hat 
;) ), der möge es vielleicht posten :D

MfG

von Michael W. (Gast)


Lesenswert?

Stephan S. schrieb:
> Markus Wagner schrieb:
>> Also eigentlich hinterlegt man in solchen Fällen eine Kurvenschar.
> ..., die man vorher aber irgendwie gewinnen muss ;)
> Und diesen Aufwand wollte ich mir eigentlich sparen.

nun aber irgendwie musst aber so oder so zu Deinen Daten gelangen, die 
Dir sagen, wie Du zu interolieren hast. Entweder generisch oder diskret.

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
Noch kein Account? Hier anmelden.