Tankanzeige mit AVR nicht linear

#3689575
Lesenswert?

Hallo zusammen,
Ich habe einen Tankgeber am Atmega644P über einen Spannungsteiler 
angeschlossen. Soweit funktioniert das ganze auch. Allerdings sind die 
Ergebnisse meiner Berechnungsformel leider nicht linear.

Folgende ADC Werte erhalte Ich:

Tank voll - 290 (soll 22liter entsprechen, Wert ist korrekt)
Tank 3/4 - ca 500 (soll 16,5 liter entsprechen, Berechnung ergibt nur ca 
14l)
Tank halbvoll - 600 (soll 11 liter entsprechen, Berechnung ergibt nur ca 
8,2l)
Tank 1/4 - ca 700 (soll 5,5l entsprechen, Berechnung ergibt nur ca 3,5l)
Tank leer - 780 (soll 0liter entsprechen, Wert ist korrekt)

Meine derzeitige c Formel lautet:
tank_tmp = (780-adc_wert)*0.0448979591836735;

Der Faktor 0.044... ist wie folgt entstanden:
780 (min Wert) - 290 (max Wert) = 490 Schritte
22 liter (Tank voll) geteilt durch 490

Bauart bedingt hat der Tankgeber bei Tank leer den größten Widerstand.

Wie kann ich die Werte "korrigieren" ?
Danke schon mal.
Gruß
Gast #3689598
Lesenswert?

Die ADC-Werte sind ja ganz nett:
Sie sagen, was aus deiner Schaltung herauskommt.
Sie sagen aber nicht, mit welcher Spannung gearbeitet
wird und wie die Widerstände mit dem Geberwiderstand
verschaltet sind.

Zeig doch mal eine kleine Skizze,
sonst wird das Raten zu nervig.
Gast #3689608
Lesenswert?

Frank S. schrieb:
> Wie kann ich die Werte "korrigieren" ?

Ein Tank muss ja nicht linear sein, die Höhe des Schwimmers (oder was du 
sonst als Tanksensor hast, du schreibst es ja nicht) kann durchaus 
unlinear mit dem Tankvolumen zusammenhängen.

Das kann eine Tabelle lösen, mit stückweiser Interpolation.
Gast #3689623
Lesenswert?

Das haben wir festgestellt:

1) Tankgeber sind nicht unbedingt linear.
   Bei alten Autos war die Anzeige ähnlich:
   Entweder ging es zu schnell von voll auf halb,
   oder zu langsam - und dafür schnell von halb auf
   leer. Die waren nicht korrigiert.

2) Ein Spannungsteiler verändert das nochmal.

3) Wenn man den Widerstandsverlauf des Tankgebers
   kennt, und die Anschaltung (Spannungsteiler) an
   den ADC, lässt sich der Füllstand aber mit etwas
   Berechnung deutlich genauer anzeigen.

4) Wenn  Frank S. (blaueslicht)  keine Daten liefert,
   kann man ihm aber nicht helfen.
Gast #3689625
Lesenswert?

Frank S. schrieb:
> Meine derzeitige c Formel lautet:
> tank_tmp = (780-adc_wert)*0.0448979591836735;

Wie soll man denn mit ca.-Werten eine vernünftige Formel aufstellen. 
Hast du nun Werte für "Tank 3/4" und "Tank 1/4" oder nicht. Zumindest 
der für "Tank 3/4" scheint arg aus der Reihe zu fallen.
Gast #3689642
Lesenswert?

Versuchs doch mal so: Tank leermachen und ADC-Messergebnis aufschreiben. 
Einen Liter Sprit reinkippen, aufschreiben, und das ganze widerholen bis 
der Tank voll ist. Wenn du dann die Kennlinie ADC-Messwert/Liter 
zeichnest, solltest du sehen, dass die Kennlinie krumm ist, da Tanks 
selten eine regelmäßige Form haben.

Oder du nimmst statt einem Faktor (deine ~0,045) mehrere, jeweils 
zwischen 1, 0,75, 0,5, 0,25 und 0 Tank berechnet. Das sollte ausreichend 
genau sein.
#3689706
Lesenswert?

Moin, hätt ich gewusst dass es so viele Nachtaktive hier gibt, wäre ich 
noch ein bissel wach geblieben :)
Es ist ein Tankgeber mit Schwimmer (30-180 Ohm) in Reihe mit einem 75 
Ohm Widerstand an 5V, was auch AREF ist.

Sieht genauso aus, nur die Werte sind nicht gleich:
http://www.ebay.de/itm/Tankanzeige-Tankgeber-Tankuhr-Universal-12-24V-Boot-Traktor-Schlepper-240-33-Ohm-/281147480180?pt=Bootsteile_Zubeh%C3%B6r&hash=item4175b21874

Der Tank ist Rechteckig (Bootstank) und das Poti des Gebers soll mittig 
im Tank platziert werden. Der Schwimmer soll dann den maximalen Weg von 
oben nach unten gehen können.

Berechnet habe ich folgende Spannungswerte über den Tankgeber: 1,49V 
voll bis 3,55V leer. Stimmt auch einigermaßen mit der Realität überein.

Tank
1/1 - 32 Ohm
3/4 - 57 Ohm
1/2 - 96 Ohm
1/4 - 145 Ohm
0 - 186 Ohm

Wie Oldie bereits schrieb, ist das Problem dass die Anzeige zu schnell 
von voll auf halb geht.
Gast #3689719
Lesenswert?

Oldie schrieb:
> Das haben wir festgestellt:
>
> 1) Tankgeber sind nicht unbedingt linear.
>    Bei alten Autos war die Anzeige ähnlich:
>    Entweder ging es zu schnell von voll auf halb,
>    oder zu langsam - und dafür schnell von halb auf
>    leer. Die waren nicht korrigiert.
>
> 2) Ein Spannungsteiler verändert das nochmal.

Wenn du damit auf die Linearität des Systems anspielst - Das kann nicht 
sein. Der Spannungsteiler ist ein (bis auf geringe parasitäre Effekte 
die bei dir kaum zum Tragen kommen) eine hochgradig lineare Schaltung. 
Der Spannungsteiler ändert nichts an der Linearität oder 
Nichtlinearität.

> 3) Wenn man den Widerstandsverlauf des Tankgebers
>    kennt, und die Anschaltung (Spannungsteiler) an
>    den ADC, lässt sich der Füllstand aber mit etwas
>    Berechnung deutlich genauer anzeigen.

Das nennt man Modellbildung.
#3689729
Lesenswert?

Frank S. schrieb:
> Meine derzeitige c Formel lautet:
> tank_tmp = (780-adc_wert)*0.0448979591836735;

Mit der Nachkomma-Genauigkeit könntest du deinen Tankinhalt auf das Atom 
genau ausmessen, vermutlich noch darunter ;-)

Ob das deine Controller-Arithmetik das auch so genau kann 
(Rundungsfehler) oder ob du eine derartig feine Auflösung brauchst, oder 
ob dein Tankinhalt wirklich so exakte 22,00000000000000000000 Liter 
Inhalt hat, weißt nur du allein.

ein Schritt (diskreter Wert) kann halt nur 22 Liter / 490 Schritte = 
0,4489 ... also, ca. 45 Milli-Liter auflösen.

also ergäbe ein Meßwert in Voll-Aussteuerung einem Tankinhalt von

22,00000000000002e+16 Liter ("genau" berechnet), bzw.
22,050 Liter ("gerundet")



Da kannst du locker mit Integer-Arithmetik rechnen ....
#3689730
Lesenswert?

123 schrieb:
> Wenn du damit auf die Linearität des Systems anspielst - Das kann nicht
> sein. Der Spannungsteiler ist ein (bis auf geringe parasitäre Effekte
> die bei dir kaum zum Tragen kommen) eine hochgradig lineare Schaltung.
> Der Spannungsteiler ändert nichts an der Linearität oder
> Nichtlinearität.

Das System ist aber nicht einfach nur ein Spannungsteiler. Bei einem 
variablen Widerstand(Potigeber) gegen Masse in Serie mit einem 
Festwiderstand ist Ua=Uref*Rvar/(Rfest+Rvar), mit Rvar als 
Eingangsgröße, und das ist alles andere als linear.
Gast #3689736
Lesenswert?

Gerhard W. schrieb:
> Das System ist aber nicht einfach nur ein Spannungsteiler. Bei einem
> variablen Widerstand(Potigeber) gegen Masse in Serie mit einem
> Festwiderstand ist Ua=Uref*Rvar/(Rfest+Rvar), mit Rvar als
> Eingangsgröße, und das ist alles andere als linear.

Das sind alles Widerstände, egal ob Poti oder Reihenwiderstand. Ich sehe 
hier kein einziges nichtlineares Bauelement. Wodurch soll hier eine 
Nichtlinearität auftreten?
Vorausgesetzt natürlich, daß das Poti nicht logarithmisch ist, was ich 
aber bei einem Tankgeber nicht annehme.
Selbst der Tank ist rechteckig, hat also keine Verjüngungen oder 
sonstige Verformungen.
Gast #3689753
Lesenswert?

Mike schrieb:
> ?!? schrieb:
>> Wodurch soll hier eine Nichtlinearität auftreten?
>
> Thema verfehlt
>
> Es geht um die Linearität zwischen Widerstand bzw. Spannung und
> Literzahl.

Ganz und gar nicht, ich habe nur auf den Einwurf von Gerhard 
geantwortet, der mehrere Widerstände anführte und dann sagte, daß diese 
"alles andere als linear" seien.

Beim Gesamtsystem ist mir schon klar, daß zum Beispiel auch durch den 
Kreisbogen, den der Schwimmer zwischen seiner oberen und unteren 
Stellung beschreibt, eine Nichtlinearität reinkommt.
#3689755
Lesenswert?

?!? schrieb:
> Ganz und gar nicht, ich habe nur auf den Einwurf von Gerhard
> geantwortet, der mehrere Widerstände anführte und dann sagte, daß diese
> "alles andere als linear" seien.

Nochmals, ganz langsam geschrieben: Es ist kein klassisches Poti sondern 
es sind ein Festwiderstand und ein veränderlicher Widerstand. Und das 
ergibt auch mit einem linearen Widerstand eine gekrümmte Kennlinie. 
Glaub es, probiere es aus oder rechne es.
Gast #3689816
Lesenswert?

ge-nka schrieb:
> Unbenannt.PNG

Und wie kommst du auf die Werte für die Spannung?

Bestimmt nicht mit o.g. Spannungsteilergleichung.

Du drehst die mit deinem Excel-Sheet im (falschen) Kreis. Guck dir mal 
deinen Korrelationskoeffizienten an. Spätestens der sollte dich bei 
Auswertung von Messungen nachdenklich stimmen.
Gast #3689819
Lesenswert?

Georg G. schrieb:
> ?!? schrieb:
>> Wodurch soll hier eine
>> Nichtlinearität auftreten?
>
> Vorschlag: Nimm Excel und mach dir eine Tabelle für den Füllstand von 0
> bis 1 mit Schrittweite 1/10. Dann zeichne ein Diagramm. Sieh dir die
> Kurve an. Sie ist stetig aber nicht linear.

Excel kann dir dann auch zusätzlich mit Regression die Formel darstellen 
die es idealerweise beschreibt.
Persönliche Seite #3689822
Lesenswert?

Dennis Heynlein schrieb:
> Georg G. schrieb:
>> ?!? schrieb:
>>> Wodurch soll hier eine
>>> Nichtlinearität auftreten?
>>
>> Vorschlag: Nimm Excel und mach dir eine Tabelle für den Füllstand von 0
>> bis 1 mit Schrittweite 1/10. Dann zeichne ein Diagramm. Sieh dir die
>> Kurve an. Sie ist stetig aber nicht linear.
>
> Excel kann dir dann auch zusätzlich mit Regression die Formel darstellen
> die es idealerweise beschreibt.

Sorry zu spät gelesen :)
Gast #3689836
Lesenswert?

Da sind die Formeln die in Zellen stecken, wurde natürlich angenommen 
3,55V ist 100% und 1,49 0% und dann die Zwischenschritte berechnet 25%, 
50%, 75%.
deswegen ist die Kurve so linear.

mehr Input aus dem Satz konnte man nicht rauskitzeln:
Berechnet habe ich folgende Spannungswerte über den Tankgeber: 1,49V
voll bis 3,55V leer. Stimmt auch einigermaßen mit der Realität überein.

Und  ADC wurde dann mit 1023/5*U(inV) berechnet.(wurde angenommen, dass 
die Referenzspannung 5V beträgt)
Angehängte Dateien:
Gast #3689863
Lesenswert?

Frank S. schrieb:
> Berechnet habe ich folgende Spannungswerte über den Tankgeber: 1,49V
> voll bis 3,55V leer. Stimmt auch einigermaßen mit der Realität überein.
>
> Tank
> 1/1 - 32 Ohm
> 3/4 - 57 Ohm
> 1/2 - 96 Ohm
> 1/4 - 145 Ohm
> 0 - 186 Ohm

ge-nka schrieb:
> Da sind die Formeln die in Zellen stecken, wurde natürlich angenommen
> 3,55V ist 100% und 1,49 0% und dann die Zwischenschritte berechnet 25%,
> 50%, 75%.
> deswegen ist die Kurve so linear.

Die linearen Zwischenwerte entstammen leider einem völlig unpassenden 
Modell und stimmen nur bei den beiden Punkten mit den Meßdaten überein. 
Man muss schon die Spannungsteilergleichung mit den Fixpunkten 1,49V @ 
32Ω und 3,55V @ 186Ω benutzen.

Wenn man am Spannungsteiler 5V anliegen hat und den oberen Widerstand zu 
75Ω wählt kommen genau die genannten Fixpunkte raus

Tank
1/1   32 Ω   1,49 V   22,0 l
3/4   57 Ω   2,15 V   16,5 l
1/2   96 Ω   2,80 V   11,0 l
1/4  145 Ω   3,28 V    5,5 l
  0  186 Ω   3,55 V    0,0 l
Angehängte Dateien:
Gast #3690037
Lesenswert?

Mike J. schrieb:
> Er kann es ja auch ohne Gleitkommazahlen berechnen:
> ((780-290)*449)/10 = 22001 Milliliter

Eine Division durch 10 ist für den µC nun leider immer noch eine eher 
mühselige Operation. Wenn dann sollte man die Konstanten so wählen, dass 
man durch eine glatte Zweierpotenz teilen kann. Damit sollte der 
Atmega644P es locker schaffen, den Tankinhalt ein paarhundert Mal pro 
Sekunde zu berechnen.
Gast #3690206
Lesenswert?

@Frank

Oh, Wunder!

Ein Gefäß, das einen Querschnitt hat, der konstruktiven und 
crashtechischen Gesichtspunkten folgt.

Ein Geber, der bestimmt schon viel von Bögen und Winkelfunktionen gehört 
hat, aber noch nie etwas von Linearität.

Ein Poti, das zwar Wasser- und Benzindicht ist, bei Erschütterung, Wärme 
und Kälte funktioniert, aber noch nie was von ppm und Genauigkeit gehört 
hat.

... und das Ergebnis ist nicht linear. - Eine Riesensauerei ist das aber 
auch.

Vielleicht solltest Du Atmel verklagen;-)
Gast #3690226
Lesenswert?

Frank S. schrieb:

> Es ist ein Tankgeber mit Schwimmer (30-180 Ohm) in Reihe mit einem 75
> Ohm Widerstand an 5V, was auch AREF ist.

> Ich habe einen Tankgeber am Atmega644P über einen Spannungsteiler
> angeschlossen. Soweit funktioniert das ganze auch. Allerdings sind die
> Ergebnisse meiner Berechnungsformel leider nicht linear.

Wie anderweitig im Thread bereits klargestellt (auch wenn es natürlich 
wie immer Idioten gibt, die es nicht checken, aber trotzdem meinen, 
ihren Senf zum Thread beitragen zu müssen), liegt das daran, daß der 
Zusammenhang tatsächlich auch nicht linear ist.

> Der Tank ist Rechteckig (Bootstank)

Rechtecke sind Flächengebilde und haben dementsprechend unabhängig von 
Form und Größe immer exakt das Volumen 0, da ihnen schlicht die 
Ausdehnung in die dritte Dimension fehlt. Du meintest eigentlich: 
quaderförmig oder, etwas allgemeiner: prismatisch.

Das beseitigt aber nur eine der vielen Nichtlinearitäten in deinem 
Zusammenhang. Selbst wenn man die nicht systematischen Nichtlinearitäten 
in den Skat drückt (ADC-Wandlerkennlinie, Sensorpoti-Kennlinie) und sie 
näherungsweise als linear annimmt, so verbleiben doch immer noch zwei 
systematische nichtlineare Teilzusammenhänge:

1)
Füllstandsmesser mit Schwimmer sind üblicherweise so konstruiert, daß 
der
Schwimmer eine Kreisbahn beschreibt. Nur wenn die Schwimmerstange sehr 
lang im Vergleich zur Schwimmerauslenkung ist, könnte man hier von einem 
näherungsweise linearen Zusammenhang ausgehen. Da Tank-Konstrukteure 
aber aus mehreren Gründen üblicherweise dazu neigen, das Verhältnis 
zwischen Oberfläche und Volumen eines Tanks zu minimieren, den also 
tendenziell immer in Richtung Kugel optimieren, ist fast immer auch die 
Länge der Schwimmerstange in der gleichen Größenordnung wie die 
Auslenkung des Schwimmers. Und dann ist der Zusammenhang eben nicht mehr 
mit hinreichender Genauigkeit linear, sondern er folgt einer 
trigonometrischen Funktion.

2)
Deine Schaltung selber ist auch nichtlinear.

Vcc
o-------
        |
        _
       | |R1
       |_|75
        |
        *-----o Vm
        |
        _
       | |R2
       |_|30..180
        |
       ---

Nach den Gesetzen eines Spannungsteilers gilt:

R2   R1 + R2
-- = -------
Vm     Vcc

Umstellen nach R2:

     R1 * Vm
R2 = --------
     Vcc - Vm

Das ist ganz offensichtlich KEINE lineare Gleichung, denn sie läßt 
sich auf keine denkbare Weise in eine von deren Normalformen überführen.

Auch wenn dein ADC-Wert also linear von Vm abhängt UND der variable 
Widerstand R2 linear vom Volumen des Füllstands abhängt, so ist also 
doch der Gesamtzusammenhang mit absoluter Sicherheit nichtlinear.

> Wie kann ich die Werte "korrigieren" ?

Ganz einfach:

1)
Eine Gleichung aufstellen, die korrekt den systematischen 
Gesamtzusammenhang beschreibt. Dazu ist im Minimum neben den dir von 
anderen im Verlaufe des Threads mühsam aus der Nase gezogenen Angaben 
noch Detailwissen über die Sensorkonstruktion nötig. Also: Länge der 
Schwimmerstange und Höhe der Schwimmerauslenkung.

2)
Anwendung eines geeigneten Optimierungsverfahrens auf diese Gleichung 
unter Verwendung der bekannten Lösungen (also deiner 5 
Beispielmeßwerte).

Wenn du dazu zu faul oder zu doof bist, dann bleibt dir nur das im 
Thread bereits beschriebene "Auslitern" zur Gewinnung einer 
Wertetabelle, die den Zusammenhang für deine Zwecke hinreichend genau 
beschreibt und ggf. die Interpolation zwischen den Stützpunkten aus 
dieser Wertetabelle.

Diese Lösung ist zwar im Allgemeinen die Lösung der Dummen, die in der 
Schule in Mathe nicht aufgepaßt haben, sie hat aber auch einen ganz 
wichtigen Vorteil: Sie funktioniert auch dann noch recht gut (und mit 
zunehmender Zahl Stützstellen immer besser), wenn der Tankkörper kein 
Prisma und auch sonst kein regulärer, mit einfachen Formeln 
beschreibbarer Körper ist.

Deswegen ist es garnicht so ungewöhnlich, daß auch Leute sie verwenden, 
die ihre Hausaufgaben immer gemacht haben. Das werden die mit wachsender 
Wahrscheinlichkeit machen, je irregulärer die Form des Tanks ist.
Gast #3690231
Lesenswert?

Mike J. schrieb:
> An den ADC-Pin vom Spannungsteiler wird noch ein 100nF Kondensator gegen
> Masse gelötet und eine Messung pro Minute sollte für diese Zwecke
> ausreichen.

Bei dem niederohmigen Messteiler aber bitte mit Vorwiderstand. Sonst ist 
die Zeitkonstante erbärmlich klein.

Georg G. schrieb:
> Mike schrieb:
>> den Tankinhalt ein paarhundert Mal pro Sekunde zu berechnen.
>
> Wobei es sich empfiehlt, immer über 1000 Messungen oder mehr zu mitteln.

Die Umrechnung braucht dabei aber nur einmal statt zu finden ;-)
Gast #3690247
Lesenswert?

> Wobei es sich empfiehlt, immer über 1000 Messungen oder mehr zu mitteln.

Unsinn!

Außer bei einem Crash tut sich bei einem Tank, in kurzer Zeit nichts.
Ich unterstelle dabei allerdings, dass der 100KW Motor nicht an einem 
Schnapsglas hängt.

Bei guten Mikrokontrollern finden 1000 Messungen im Millisekundenbereich 
statt, also noch weniger als einmal Schwapp vor und zurück.

Natürlich ist es nicht verboten einen Messzyklus vom 0,001 Schwapp zu 
initialisieren und das Ergebnis jede alle 1/100 Sekunde auszugeben.
Gast #3690292
Lesenswert?

DirkB schrieb:
> Man kann bei Excel auch polynomische Trendlinien anfordern. Z.B 2.
> Grades.
> Das gibt dann eine Multiplikation und eine Addition mehr.

Ein Polynom zweiten Grades ist zur Beschreibung der Abhängigkeit wohl 
kaum geeignet. Abschnittsweise Spline Interpolation mit kubischen 
Splines wäre eine geeignete Methode, um den funktionalen Zusammenhang zu 
approximieren.
http://de.wikipedia.org/wiki/Spline-Interpolation
Gast #3690338
Lesenswert?

Lothar Miller schrieb:
> Ich mache das in solchen trivialen Fällen immer mit 17 Stützpunkten und
> linearer Interpolation dazwischen. Hier würden sogar locker die 5
> Stützpunkte vom ersten Post reichen.

Sei vorsichtig mit dem, was du sagst, Lothar :-)

c-hater schrieb:
> Wenn du dazu zu faul oder zu doof bist, dann bleibt dir nur das im
> Thread bereits beschriebene "Auslitern" zur Gewinnung einer
> Wertetabelle, die den Zusammenhang für deine Zwecke hinreichend genau
> beschreibt und ggf. die Interpolation zwischen den Stützpunkten aus
> dieser Wertetabelle.
#3690387
Lesenswert?

Paul Baumann schrieb:
> Man kann auch mit 8 Personen eine Kuh melken: 4 fassen je eine Zitze
> des Euters und die anderen 4 heben und senken die Kuh.

LOL

Ich sehe es auch so. Man kann es einfach oder schwer machen. Wie einfach 
es sein darf, ergibt sich indirekt aus der Genauigkeitsanforderung. Die 
ist aber nicht beschrieben. Oft reicht eine lineare Interpolation 
zwischen den 5 Werten (voll, 3/4, 1/2, 1/4, leer). Ich würe eventuell 
noch "ganz leer" hinzunehmen, wenn "leer" eigentlich den Beginn der 
Reserve kennzeichnet.
#3690396
Lesenswert?

Am Wichtigsten ist doch das letzte Zehntel (oder von mir aus 
Sechzehntel)
;-) damit es besser rechnen läßt.
des Tankinhaltes, weil das entscheidend ist, ob ich 10 Meter vor der
nächsten Tankstelle auf der Piste stehenbleibe oder nicht.

Es ist immer das Gleiche: Man kann es treiben, aber auch übertreiben.
MfG Paul
Gast #3690445
Lesenswert?

Carsten R. schrieb:

> Wie einfach
> es sein darf, ergibt sich indirekt aus der Genauigkeitsanforderung.

So ist es. Und offensichtlich hat die erzielte Genauigkeit dem TO wohl 
nicht gereicht, denn auf eben die Verbesserung der Genauigkeit zielte 
sein Frage im OP ja wohl ganz offensichtlich ab.

Wer lesen kann, ist klar im Vorteil...
Gast #3690453
Lesenswert?

c-hater schrieb:
> Und offensichtlich hat die erzielte Genauigkeit dem TO wohl
> nicht gereicht, ...

... und zwar genau, weil er es gegenüber der vorgeschlagenen jeweils 
linearen Interpolation zwischen den 5 Stützpunkten mit einer linearen 
Approximation nur zwischen den beiden Endpunkten der Füllstandskennlinie 
versucht hat. Wenn du dir den Verlauf der Kurve einmal ansiehst, würdest 
du auch verstehen, warum diese Art der Interpolation über eine konkav 
Funktion keine vernünftige Genauigkeit liefern kann, sondern dazwischen 
Fehler von mehreren Litern produziert. Es kommt für die Anwendung sicher 
nicht auf Milliliter an.
#3690491
Lesenswert?

c-hater schrieb:
> Wer lesen kann, ist klar im Vorteil...

Ich hab es schon gelesen.

Er hat ein Problem damit, daß die "Kontrollstellen" nicht auf einer 
Linie zwischen Minimum und Maximum liegen. Verwendet man jedoch diese 
Kontrollstellen als Stützpunkte zwischen denen man interpoliert, so hat 
man schon erheblich genauere Ergebnisse.

Aber er hat nirgends geschrieben wie genau es denn nun werden soll!

Wenn man alle 25% eine Stützstelle hat, so wird selbst eine liniare 
Interpolation zwischen den Stützstellen wohl kaum einen Fehler von 10% 
aufweisen. Solange die tatsächliche Kennlinie nicht völlig verrückt 
verläuft, kann man mit wenigen Stützstellen akzeptabel genaue Ergebnisse 
erzielen, ohne daß man die Interna des Tanks und des Tankgebers kennen 
müßte. Die Genauigkeit ließe sich simpelst durch weitere Stützstellen 
den Anforderungen anpassen.

Nebenbei:

Es ist schon erstaunlich mit wie wenigen Stützstellen man einen Sinus 
mit linearer Interpolation annähern kann, wenn man die Stützstellen 
richtig platziert.
#3690580
Lesenswert?

Mathematiker schrieb:
> c-hater schrieb:
>> Und offensichtlich hat die erzielte Genauigkeit dem TO wohl
>> nicht gereicht, ...
>
> ... und zwar genau, weil er es gegenüber der vorgeschlagenen jeweils
> linearen Interpolation zwischen den 5 Stützpunkten mit einer linearen
> Approximation nur zwischen den beiden Endpunkten der Füllstandskennlinie
> versucht hat. Wenn du dir den Verlauf der Kurve einmal ansiehst, würdest
> du auch verstehen, warum diese Art der Interpolation über eine konkav
> Funktion keine vernünftige Genauigkeit liefern kann, sondern dazwischen
> Fehler von mehreren Litern produziert. Es kommt für die Anwendung sicher
> nicht auf Milliliter an.

Genau so sieht es aus.
Moin zusammen, es würde mir schon reichen wenn halbe Liter einigermaßen 
korrekt abgebildet werden. Momentan sind es tatsächlich mehrere liter 
Abweichung. Sorry, aber diese wohl entscheidende Info hatte ich wohl 
vergessen :( Ich weiss, dass der Tankgeber keine Präzisionsmessgerät ist 
und dass der Rest der Schaltung, der Code sowie 1000 andere Faktoren 
auch immens mit rein funken. Letztendlich habe ich nur nach einem Weg 
(Denkanstoß) gesucht, die Werte der Realität etwas anzunähern.
Ich werde vermutlich die Lösung mit den Stützpunkten und linearer 
Interpolation dazwischen anwenden. Sollte für diesen Zweck sicher 
ausreichen und mich hoffentlich zum richtigen Zeitpunkt auf dem Wasser 
bei Spritmangel warnen können.
Danke für die vielen Tips und Anregungen. Bin als Anfänger, der so etwas 
aus Spass in seiner Freizeit macht, dankbar für jede Hilfe.
by the way: der Wert 0.044... wurde einfach 1:1 aus calc.exe kopiert und 
hatte keine tiefere Genauigkeitsbewandnis...
Gast #3690718
Lesenswert?

Menno, der Lösungsweg über einen 3...5-Punkt-Abgleich,
mit Interpolation war doch nun wirklich vorhersehbar.

Ist schon niedlich, wie hier manche Schmalspurdenker
gleich Verschwörungstheorien gegenüber Poti-Linearitäten
aufgebaut haben, weil die Schwimmer-Betätigung eines
Potis in einem realem nicht-ideal-rechteckigem Tank
nun mal nicht-linear sein muss.

Sind das schon Folgen vom 8/9-Abitur?
Oder ist das die allgemeine praxisferne Verblödung?
#3690874
Lesenswert?

Oldie schrieb:

> 1) Tankgeber sind nicht unbedingt linear.
>    Bei alten Autos war die Anzeige ähnlich:
>    Entweder ging es zu schnell von voll auf halb,
>    oder zu langsam - und dafür schnell von halb auf
>    leer. Die waren nicht korrigiert.

Gerade bei älteren Fahrzeugen wurde das zumindest teilweise durch
die Skalenteilung des verwendeten Meßinstruments korrigiert.
Gruss
Harald

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren