Motor Tuning Tool auf Arduino Basis
Verfasst: 3. Dez 2020, 19:14
der Max hat mich gestern an mein altes Motortester Projekt erinnert, als er seinen wirklich coolen Drehzahlmesser auf Arduino Basis vorgestellt hat
Da hats mich direkt gepackt und ich hab das Zeug was ich dafür schon besorgt hatte mal aus der Ecke geholt und es bis heute zum laufen gebracht.
Grundsätzlich - ein Arduino ist ein frei programmierbarer Mikrocontroller mit diversen analogen und digitalen Ein- und Ausgängen. Kann man für unfassbar viele Sachen gebrauchen und missbrauchen
Ich hatte mir damals ein Innovate LC1 Lambdasonden Interface für den Laptop gekauft um meinen Motor besser abstimmen zu können. Das Teil funktioniert super, mich nervte aber immer das ich an 3 Verschiedenen Stellen Parameter ablesen muss (Laptop, analoge Unterdruck Uhr und Drehzahlmesser im Cockpit)
Also war die Grundüberlegung mittels Arduino ein Interface für den Laptop zu schaffen, das alle 3 Parameter anzeigen kann und ggf. auch grafisch die Abhängigkeiten darstellt. Dazu braucht man nun verschiedene Sensoren:
AFR bzw Lambda: hier kommt der LC1 Controller zum Einsatz der zusätzlich einen analogen 0-5V Ausgang bietet und somit direkt Arduino tauglich ist.
Unterdruck: hier habe ich den Differenzdrucksensor MPX5100DP gekauft. 0-100kpa und je nachdem, welchen Schlauchanschluss man nutzt, für Unter- und Überdruck zu gebrauchen. Auch der hat direkt einen 0-5V Ausgang und muss nur ein wenig mit ein paar Kondensatoren gefiltert werden.
Drehzahl: das große Problem hierbei ist, die Zündimpulse an der Primärseite der Spule auszuwerten, was im Prinzip jeder Aftermarket Drehzahlmesser macht. Max hat das in seinem Thread schön beschrieben und auch dargestellt, was da aufm Oszilloskop passiert. Letztendlich muss man eine Schaltung bauen, die aus den Impulsen der Zündung ein einigermaßen sauberes 5V Rechteck macht, welches der Arduino auswerten kann. Am einfachsten ist es nur die "Spikes" an der Primärseite auszuwerten und alles andere zu ignorieren. Ich habe das mit folgender Schaltung gelöst: Im Prinzip wird durch die Z-Diode mit einem Wert von 39V nur die Spitze des Impulses Richtung Optokoppler durchgelassen, per Widerstand noch an dessen Diode angepasst. Auf der Ausgangsseite sitzt im Opto ein NPN Transistor, dessen Emitter man einfach auf GND vom Arduino legt und den Collector direkt an den Eingang, der Eingang braucht dafür einen internen Pullup um einen definierten Zustand zu haben wenn nichts passiert. Fertig ist das Rechteck und durch den Opto ist der Arduino auch vollständig von der Zündung isoliert und kann nicht kaputt gehen. Zum Verpolungsschutz des Optos könnte man noch eine Diode entgegengesetzt parallel zur Diode im Opto schalten.
Den Drucksensor und den Optokoppler hab ich auf eine kleine Platine gepackt und zusammen mit dem Arduino in ein Gehäuse gepackt. Als Sensoranschlüsse hab ich einfach Klinkenbuchsen verwendet, weil ich die rumliegen hatte. Der Drucksensor hat einen kleinen Schlauchanschluss für die Vakuum Leitung vom Manifold. Die Kiste braucht keine weitere Spannungsversorgung und wird einfach per USB an den Laptop angeschlossen. Hier beginnt der spannende Teil. Wenn jemand Interesse am Code hat veröffentliche ich den gern.
Die grafische Aufbereitung übernimmt die Freeware "serial ComInstruments". Leider scheint es die Website nicht mehr zu geben, aber ich kann das Programm bei Bedarf zur Verfügung stellen. Im Helpfile der Software ist auch aufgeschlüsselt in welchem Format der Arduino die seriellen Daten an den Rechner schicken muss. Hat man sich einmal eine Oberfläche zusammen gebaut kann man diese speichern und bei Bedarf wieder abrufen. Bei mir sieht das Ganze so aus:
<iframe src="" width="640" height="360" frameborder="0" allow="autoplay; fullscreen" allowfullscreen></iframe>
Die Werte sehen alle erstmal ganz vernünftig aus. Den Unterdruck hab ich mit meiner analogen Uhr verglichen und das passt. Der Lambda Warte passte auch, da muss ich nochmal die Innovate Software parallel laufen lassen um das genau zu vergleichen. Die Drehzahl konnte ich heute nicht verifizieren, da ich nichts weiter da hatte. Aber auch der Wert sieht plausibel aus.
Man kann da sicher noch mehr Parameter unterbringen, ich weiß das es z.B. auch Öldruck Sensoren mit 0-5V Ausgang gibt. Interessant wäre natürlich noch der Zündzeitpunkt, aber das ist aufwendiger weil man sich dann noch was bauen muss, um die Kurbelwellen Position zu erkennen.
Mir reicht das so zum Einstellen und ich kann es sowohl statisch als auch beim fahren nutzen. Durch die Grafen kann man sich z.B. auch einfach ein paar Parameter im Verlauf der fahrt nachträglich ansehen.
Das man zum Thema was man mit Arduinos so alles anstellen kann.
Hoffe es ist nicht zu viel "Nerdkram"
Aber ich find das Thema einfach sehr interessant.
LG
Chris

Grundsätzlich - ein Arduino ist ein frei programmierbarer Mikrocontroller mit diversen analogen und digitalen Ein- und Ausgängen. Kann man für unfassbar viele Sachen gebrauchen und missbrauchen

Ich hatte mir damals ein Innovate LC1 Lambdasonden Interface für den Laptop gekauft um meinen Motor besser abstimmen zu können. Das Teil funktioniert super, mich nervte aber immer das ich an 3 Verschiedenen Stellen Parameter ablesen muss (Laptop, analoge Unterdruck Uhr und Drehzahlmesser im Cockpit)
Also war die Grundüberlegung mittels Arduino ein Interface für den Laptop zu schaffen, das alle 3 Parameter anzeigen kann und ggf. auch grafisch die Abhängigkeiten darstellt. Dazu braucht man nun verschiedene Sensoren:
AFR bzw Lambda: hier kommt der LC1 Controller zum Einsatz der zusätzlich einen analogen 0-5V Ausgang bietet und somit direkt Arduino tauglich ist.
Unterdruck: hier habe ich den Differenzdrucksensor MPX5100DP gekauft. 0-100kpa und je nachdem, welchen Schlauchanschluss man nutzt, für Unter- und Überdruck zu gebrauchen. Auch der hat direkt einen 0-5V Ausgang und muss nur ein wenig mit ein paar Kondensatoren gefiltert werden.
Drehzahl: das große Problem hierbei ist, die Zündimpulse an der Primärseite der Spule auszuwerten, was im Prinzip jeder Aftermarket Drehzahlmesser macht. Max hat das in seinem Thread schön beschrieben und auch dargestellt, was da aufm Oszilloskop passiert. Letztendlich muss man eine Schaltung bauen, die aus den Impulsen der Zündung ein einigermaßen sauberes 5V Rechteck macht, welches der Arduino auswerten kann. Am einfachsten ist es nur die "Spikes" an der Primärseite auszuwerten und alles andere zu ignorieren. Ich habe das mit folgender Schaltung gelöst: Im Prinzip wird durch die Z-Diode mit einem Wert von 39V nur die Spitze des Impulses Richtung Optokoppler durchgelassen, per Widerstand noch an dessen Diode angepasst. Auf der Ausgangsseite sitzt im Opto ein NPN Transistor, dessen Emitter man einfach auf GND vom Arduino legt und den Collector direkt an den Eingang, der Eingang braucht dafür einen internen Pullup um einen definierten Zustand zu haben wenn nichts passiert. Fertig ist das Rechteck und durch den Opto ist der Arduino auch vollständig von der Zündung isoliert und kann nicht kaputt gehen. Zum Verpolungsschutz des Optos könnte man noch eine Diode entgegengesetzt parallel zur Diode im Opto schalten.
Den Drucksensor und den Optokoppler hab ich auf eine kleine Platine gepackt und zusammen mit dem Arduino in ein Gehäuse gepackt. Als Sensoranschlüsse hab ich einfach Klinkenbuchsen verwendet, weil ich die rumliegen hatte. Der Drucksensor hat einen kleinen Schlauchanschluss für die Vakuum Leitung vom Manifold. Die Kiste braucht keine weitere Spannungsversorgung und wird einfach per USB an den Laptop angeschlossen. Hier beginnt der spannende Teil. Wenn jemand Interesse am Code hat veröffentliche ich den gern.
Die grafische Aufbereitung übernimmt die Freeware "serial ComInstruments". Leider scheint es die Website nicht mehr zu geben, aber ich kann das Programm bei Bedarf zur Verfügung stellen. Im Helpfile der Software ist auch aufgeschlüsselt in welchem Format der Arduino die seriellen Daten an den Rechner schicken muss. Hat man sich einmal eine Oberfläche zusammen gebaut kann man diese speichern und bei Bedarf wieder abrufen. Bei mir sieht das Ganze so aus:
<iframe src="" width="640" height="360" frameborder="0" allow="autoplay; fullscreen" allowfullscreen></iframe>
Die Werte sehen alle erstmal ganz vernünftig aus. Den Unterdruck hab ich mit meiner analogen Uhr verglichen und das passt. Der Lambda Warte passte auch, da muss ich nochmal die Innovate Software parallel laufen lassen um das genau zu vergleichen. Die Drehzahl konnte ich heute nicht verifizieren, da ich nichts weiter da hatte. Aber auch der Wert sieht plausibel aus.
Man kann da sicher noch mehr Parameter unterbringen, ich weiß das es z.B. auch Öldruck Sensoren mit 0-5V Ausgang gibt. Interessant wäre natürlich noch der Zündzeitpunkt, aber das ist aufwendiger weil man sich dann noch was bauen muss, um die Kurbelwellen Position zu erkennen.
Mir reicht das so zum Einstellen und ich kann es sowohl statisch als auch beim fahren nutzen. Durch die Grafen kann man sich z.B. auch einfach ein paar Parameter im Verlauf der fahrt nachträglich ansehen.
Das man zum Thema was man mit Arduinos so alles anstellen kann.

Hoffe es ist nicht zu viel "Nerdkram"

LG
Chris