Jö, habe ich ja auch gemacht, soweit es ging. Die Schaltung an sich passt ja.
Ich habe jetzt bei jedem IC, was ich verwendet habe, die Zuweisung von Pin zum Label überprüft... und heute die Platinen bestellt...
Und in der Zwischenzeit habe ich an der Firmware weitergefeilt. Die MCU, die ich verwende, habe eine FPU (Float Point Unit, kann Fließkommaberechnungen in Hardware erledigen), was sehr cool ist. Und zusätzlich hat sie auch noch ein DSP, Digital Signal Processor.
Wofür das Ganze? Nun, es geht um die Interpolation. Man hat ja eine Tabelle "Spannung zu Luftmasse" mit festen Punkten (Stützstellen), meistens sind es so fünf bis neun Stück. Drüber sieht man dann eine Kennlinie und "fertig". Das Problem ist, dass bei den analogen HFM diese Kennlinie keiner Funktion entspricht, sprich man kann nicht einfach hergehen und rechnen... Aber was macht man, wenn die Spannung irgendwo zwischen den Stützstellen liegt? Man muss
interpolieren und hier gibt es mehrere Verfahren.
Die einfachste Form der Interpolation ist
lineare Interpolation. Heißt, man sucht in der Tabelle nach den "umschließenden" (quasi eins drunter und ein drüber) Stützstellen, rechnet dann die Steigung und Offset und leitet so die lineare Funktion ab, dann setzt man den Wert für Spannung ein und rechnet. Ist ziemlich einfach und halt nicht 100% genau. Warum nicht? Man schau das Bild weiter unten an, verbinde die Punkte einfach mit einer geraden Linie und staune, wie weit die gerade Linie von der gepunkteten abweicht.
Spline-Interpolation:
Angenommen, man hat diese Kennlinie mit acht Stützstellen:
hlm_plot_1.png
Man sieht, dass sie recht "weich" gezogen ist, die Verbindungen zwischen den Punkten sind keine geraden Linien (beschrieben durch eine lineare Funktion), sondern vielmehr Bögen. Das kommt durch die spline-Interpolation. Hier ist es so, dass jeder Abschnitt von jedem anderen Abschnitt beeinflusst wird. Bei der spline-Interpolation wird für jeden Abschnitt eine kubische Funktion hergeleitet, aus diesen Funktionen werden dann die Koeffiziente entnommen und mit ihnen wird dann gerechnet.
Und genau dafür sind DSP und FPU gemacht worden. Sie können diese Berechnungen sehr schnell in Hardware erledigen und das auch noch sehr genau. Die Wandlung findet alle 10ms statt, sprich 100 Mal pro Sekunde
Hoffe, es war jetzt nicht zu viel Theorie.
Übrigens die Hardware ist in meinem github verfügbar:
Klick mich
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.