Die BMW Boxermaschinen älterer Generationen haben die Eigenart, dass nach einigen hundert Kilometern die Synchronisation der beiden Zylinder nachlässt und der Motor in Folge bei niedrigen Drehzahlen anfängt ziemlich unruhig bis ruppig zu laufen - der Kenner spricht von Konstantfahrruckeln.
Geschuldet ist das der Ansteuerung der beiden Drosselklappen über eine Y-Konstruktion aus Bowdenzügen. Bowdenzüge längen sich im Laufe der Zeit und das gegebenenfalls unterschiedlich, was im betrachteten Fall zu den beschriebenen Problemen führt.
Abhilfe schafft die sogenannte Synchronisierung der beiden Zylinder aufeinander. Hierbei wird jeweils über eine Stellschraube an den Drosselklappen der Unterdruck auf beiden Seiten identisch nach Datenblatt eingestellt und die beiden Zylinder ziehen auch bei kleiner Gasstellung wieder gleichmäßig am Antriebsstrang.
Ich habe vor Jahren eine alternative Anleitung in einem englischsprachigen Forum gefunden, nach der die beiden Drosselklappen mechanisch miteinander verbunden werden, was allerdings eine Bohrung durch das Motorgehäuse bedingt, denn die Drosselklappen werden dabei mit einer Stange verbunden, die Y-Abzweigung im Gaszug entfällt und die Synchronisationsprobleme sind ab da Geschichte.
Wer nun seinen Motorblock nicht durchbohren, das Konstantfahrruckeln aber dennoch loswerden will, muss die beiden Zylinder also hin und wieder synchronisieren und benötigt dafür eine Anzeige für den Unterdruck im Ansaugtrakt der beiden Zylinder. FrüherTM hat man dafür eine Schlauchwaage, eine Konstruktion aus Glas- oder Kunststoffröhren und Schläuchen, hergenommen, heutzutage bietet sich hingegen der Einsatz eines Microcontrollers mit elektronischen Unterdrucksensoren an.
Michael Miller, aka Makuna stellt auf Instructables.com ein solches Gerät für Vierzylindermotoren vor, komplett mit passender Firmware für den µC, einen Arduino, sowie Software zur anschaulichen Darstellung der Werte auf einem Windows PC.
Da ich für den BMW Boxer nur zwei Sensoren benötige und ich Fan von einseitigen Layouts bin, habe ich seine Schaltung etwas eingedampft und die in der NXP application note AN1646 vorgeschlagene Filterung der Ausgangssignale mit einem RC Tiefpass hinzugefügt.
Das Schaltbild ist übersichtlich.
Die Buchsenleiste ist so angeschlossen, dass ein Arduino Nano V3 von der Unterseite aus angesteckt werden kann, die Oberseite des Arduino vom Header abgewandt. Es ist die Reihe mit den Analoganschlüssen des Arduino zu verwenden.
Die verwendeten Unterdrucksensoren sind MPXV5050VC6T1 von NXP (ehemals Philips) und arbeiten bis zu einem Unterdruck von 50 kPa, das sind 0,5 bar, gegenüber dem umgebenden Luftdruck.
Das zugehörige Layout.
(Click auf das Bild für Darstellung mit Bauteilangaben)
Alle SMD Bauelement sind auf der Oberseite platziert, die Buchsenleiste und die beiden Widerstände werden von der Unterseite her eingelötet.
In Natura sieht das Ganze dann so aus:
Hinweis
Die Sensoren haben zur Kennzeichnung von Pin 1 entweder eine kleine Kerbe am entsprechenden Anschlussbein oder die Ecke des Kunststoffgehäuses ist an Pin 1 etwas
abgeschrägt.
Zuerst muss die Verbindung zwischen Rechner und Arduino hergestellt werden, anschließend wird das Programm TBS4Rpm auf dem Rechner gestartet. TBS im Programmnamen ist die Abkürzung für Throttle Body Sync, übersetzt Drosselklappen Synchronisierung, Rpm bezieht sich auf die Anzeige der Drehzahl unterhalb der beiden Grafiken. Das Programm sucht der Reihe nach alle COM Ports des Rechners ab und versucht jeweils, die Kommunikation mit dem Arduino aufzubauen. Meist wird die Verbindung nach einigen Sekunden hergestellt und die Oberfläche erscheint.
Da der Boxermotor nur zwei Zylinder hat, habe ich die Anzeige passend geschrumpft. Das hätte man im Programm parametrisch abfangen können, denn der Arduino-Teil der Software bekommt diese Information vor der Übersetzung mitgeteilt, aber die Änderung ist relativ leicht im Code des Windows Programms durchzuführen und muss ja nur einmal erfolgen. Die Anpassung des Programmnamens, um dieser Änderung Rechnung zu tragen, habe ich mir gespart, nur in der Caption der GUI steht passend TBS 2.
Manchmal klappt die Verbindung nicht beim ersten Versuch, es erscheint folgende Fehlermeldung:
Nicht verzagen, einfach das Programm nochmal starten.
Nachdem die GUI erscheint muss abgewartet werden, bis der Status links unten von “idle” auf “Alive” wechselt. Jetzt werden die Sensoren kalibriert (Button Calibrate), anschließend wird die Messung gestartet (Button Start). Die korrekte Vorbereitung (warmlaufen, Anschluss der Schläuche usw.) und die Einstellungen am Motorrad (Drehzahl bei der Messung, welche Schrauben wohin drehen - und welche definitiv NICHT) ist der Wartungsanleitung des Motorrads zu entnehmen.
Die Originalsoftware von Michael findet man auf Github - für Arduino und für Windows.
Hier gibt es die von mir auf den Zweizylinder Boxer angepasste Version des Programms, Arduino und Windows Software in einem gemeinsamen ZIP. Für den Arduino meine angepasste INO Datei mit der Lib für die Sensoren sowie die ausführbare EXE Datei und die beiden geänderten Sourcen für Windows. Für Freunde von Github liegt meine geänderte Version dort ebenfalls.
In der Datei MainWindow.xaml ist die Routine zur Erkennung des Arduino geändert um die Trefferwahrscheinlichkeit etwas zu erhöhen und den Start der GUI zu beschleunigen. Weiterhin sind die zwei nicht mehr benötigten Aufrufe zur Aktualisierung der Anzeige für Zylinder Drei und Vier auskommentiert. Im zugehörigen Code in MainWindow.xaml.cs wurde die Caption der GUI auf “TBS 2” geändert, das Grid auf nur zwei Spalten angepasst und die dadurch überflüssigen Column Definitionen gelöscht.
Nachdem das Ganze soweit zu funktionieren scheint, muss die Elektronik noch in ein Gehäuse verfrachtet werden, immerhin werden solcherlei Arbeiten ja gemeinhin im Freien oder zumindest in der Garage stattfinden. Da kommt eine nackte Elektronik nicht so gut weg.
Da die Platine ziemlich rudimentär entworfen wurde und keine Möglichkeiten zur Befestigung aufweist, müssen im Gehäuse passende Auflagen und Abstandshalter realisiert werden, damit die Elektronik nicht darin herum klappert.
Das Unterteil stützt den Arduino Nano mit 4 Blöcken an den Ecken. Da der Arduino nur auf einer Seite über die Stiftleiste einen definierten Abstand zur Sensorplatine hat, muss die andere Seite auch auf der Oberseite geführt werden. Das leistet ein schmaler Vorsprung auf halber Höhe der Seitenwand.
Die Sensorplatine liegt auf dem oberen Rand des Bodens auf und wird von den beiden Absätzen an den Längsseiten des Deckels von oben fixiert.
Ich habe die beiden Teile des Gehäuses aus transparentem, mittelhartem TPU gedruckt, 0,2 mm Schichtdicke, 50% Infill, mit Supports.
Entworfen habe ich das Gehäuse mit DesignSpark Mechanical, die Konstruktion stelle ich als RSDOCX Datei für DSM V6.x sowie als STL Dateien für den 3D-Drucker zur Verfügung.
Die Einheit aus Sensorplatine und Arduino wird von der Schmalseite aus eingeschoben, anschließend wird der Deckel aufgesetzt.
Jetzt müssen die beiden Schläuche auf die Sensoren aufgesteckt und der Arduino per USB Kabel mit dem Rechner verbunden werden, dann kann es losgehen.
Hinweis
Als Schlauchmaterial habe ich Silikonschlauch mit den Abmessungen 3x7 mm, gekauft
beim großen A, vorgesehen. Der Schlauch ist sehr flexibel, durch die hohe Wandstärke von 2 mm aber stabil genug um bei anliegendem Unterdruck nicht zusammen zu fallen.
Kleine Abschnitte dieses Schlauchs habe ich erfolgreich als Dichtung bei einem anderen Projekt eingesetzt.