Jep, ich arbeite auch sehr gern mit dem Twinmax und find den
absolut genau.
Schöner Test, vielen Dank für den Link :fuenfe:
Druckbare Version
Jep, ich arbeite auch sehr gern mit dem Twinmax und find den
absolut genau.
Schöner Test, vielen Dank für den Link :fuenfe:
Im Beitrag #95 habe ich ja einen Link geteilt, wo die Unterdruckkurve sehr gut beschrieben ist. Nun habe ich im ersten Schritt mal nur den Druck über die Sensoren mit den Arduino gemessen, und über den Serial-Plotter der Arduino Anwendung aufgezeichnet.
Zu erst mal nur einen Zylinder, um eine Vorstellung von der (Druck-)Kurve zu bekommen.
Anhang 214554
Wenn der Motor nicht läuft, dann liefert der Sensor ein Wert von ca. 840 - also Umgebungsdruck. Wenn der Motor läuft, kann man gut die Maximalwerte des Unterdrucks erkennen, liegen hier so um Werte von 370. Über den Abstand zwischen den Maximalwerten kann man die Drehzahl berechnen.
Als nächstes über beide Zylinder:
Anhang 214555
Man sieht gut, dass die Sensoren in der Ausgangslage Werte um 840 ausgeben und beide auf dem gleichen Level sind. Die Maximalwerte des Unterdrucks - rote und blaue Kurve - zappeln zwar ein wenig, aber grundsätzlich ist das schon sehr Synchron (im Leerlauf).
Wieviele Messpunkte/sec?
Welcher Sensor?
:pfeif:
Anbei der Code, incl. Angaben zu den Sensoren:
/*
Determine Pressure
Date: 2018-08-12
Version: version 0 revison 0
Author: yz88
BOM:
# 1x Arduino Uno
# 2x Pressure Sensor (MPX4115AP)
*/
#include <stdlib.h>
int PressureRawLeft = 1023;
int PressureRawRight = 1023;
int DifferenzLeft = 0;
int DifferenzRight = 0;
void setup() {
Serial.begin(9600); // open the serial port at 9600 bps
// calibrate sensors
PressureRawLeft += analogRead(A4);
PressureRawRight += analogRead(A5);
if (PressureRawLeft > PressureRawRight){
DifferenzRight = PressureRawLeft - PressureRawRight;
} else {
DifferenzLeft = PressureRawRight - PressureRawLeft;
}
}
void loop() {
delay(2);
PressureRawLeft = analogRead(A4) + DifferenzLeft;
PressureRawRight = analogRead(A5)+ DifferenzRight;
//Serial.print(PressureRawLeft);
//Serial.print(" ");
Serial.println(PressureRawRight);
}
Hätte nie gedacht das die Synchronisation unserer BMW Vergaser so wissenschaftlich kompliziert sein kann. :pfeif:
Jetzt frag ich mich schon wie ich es all die Jahre, und das mit relativ einfachen Mitteln, schaffte die Vergaser einzustellen. ;)
Und meine BMW´s laufen top, wie mir schon mehrfach aus berufenem Mund bestätigt wurde.
Ich werde mal eine Messung machen, bei der die Vergaser nicht synchron laufen.
Und nun wird es interessant:
Ich würde eigentlich nur die maximalen Unterdruckwerte betrachten -also die Peaks die nach unten zeigen. Was meinst du mit Mittelwert? Damit das Signal ein bisschen ruhiger wird kann man evtl. einen Mittelwert über mehrere Maximalwerte bilden.
Genau um solche Fragen geht es :bitte:, um dann ein vernüftiges Programm zu schreiben.
Wenn die Spitzen der roten und blauen Kurve unten auf einer Linie liegen, dann laufen die Vergaser synchron.
VG Holger
Hallo,
Mittelwert =
1/T * Integral über x(t) dt
Du hast einfach die Sensoren an den Arduino gelötet?
VG Michael
Ich habe den Programmcode überarbeitet und der Arduino mißt jetzt die beiden analog Werte so schnell er kann - Freerunning Mode.
Dann bestimme ich für jeden Einsaug-Takt den minimal-Wert (größter Unterdruck) pro Zylinder und gib diese aus. Aktuell stelle ich alle vier Werte da:
1) Unterdruck erster Zylinder
2) minmal-Wert erster Zylinder
3) Unterdruck zweiter Zylinder
4) minimal-Wert zweiter Zylinder
Ausgewertet wird nur der Einsaug-Takt, und es wird aktuell kein Mittelwert gebildet.
Anhang 218500
Die folgende Grafik zeigt die Messkurven der beiden Drucksensoren. Die blaue Linie zeigt den ersten Drucksensor (rechter Zylinder), die Grünlinie die zweite (linker Zylinder). Die orangefarbene und rote Linie zeigt die Minimalwerte der einzelnen Zylinder.
Als nächstes werde ich die Darstellung auf den Nextion Display angehen.
Nun läuft die Darstellung wieder auf dem Nextion Display, welches am Arduino angeschlossen ist. Ein Video dazu gibt es auf Youtube https://youtu.be/DKk2O86xgPw.
Mein Projekt habe ich auf Github https://github.com/yz88/arduino-digi...e/master/part5 dokumentiert. Dort findet man unter anderen auch den Programm-Code und die verwendeten Teile.