Kompressionstester selbst bauen

  • Interesse ist notiert und wenn Breyker es ernst meint sind damit auch schon 4 zusammen..
    Das Software Interface ist nicht so hübsch und grafisch, das würde meine Fähigkeiten auch über steigen. Das ganze läuft in der Arduino IDE also der Entwicklungsumgebung für Arduino. Man läd dort den Programmcode, kompiliert ihn für die angeschlossene Hardware und die führt dann das Programm aus. Die Ergebnisse werden von der Hardware zur IDE zurück gemeldet und dort ausgegeben. Wie erwähnt fühlen sich sicher Leute, die keine Berührungsängste mit Computern haben damit wohler. Ich habe das ganze nicht entwickelt, die Idee und das TR-01 Programm gibt es ja schon und das beruht nicht auf meinem Anstrengungen.
    Ich löte nur ein paar Sachen zusammen modifiziere das Programm ein wenig:
    Die Ziele dabei sind:


    - Ausgabe der Werte in bar
    - Normierung der Werte auf 250rpm
    - Berücksichtigung des aktuell herrschenden atmosphärischen Drucks


    Wenn ihr weitere Anregungen habt bitte her damit, ich überlege dann ob das für mich machbar ist.

  • Warum soll ich es nicht ernst meinen? Ich geb jedes jahr 1000de für den bock aus, da machen die drei kröten den bock auch net mehr fett! :rofl:

    Bist ungeschickt, hast linke Hände? Läufst gegen Türen und auch Wände?
    Kannst nicht schrauben und nicht lenken? Hast auch Probleme mit dem
    Denken? Kriegst nicht mal deine Schuhe zu? Dann bist du ein Mann für ATU!

  • Der erste Prototyp ist fertig, ich habe ein ganz gut passenden Gehäuse gefunden um den Mikrocontroller unterzubringen. Die Idee eine automatische Druckkorrektur zu integrieren habe ich wieder verworfen, ich habe es leider nicht hinbekommen die Sensoren zum Laufen zu bekommen. Was zur Zeit da ist, ist Kompressionsmessung in bar auf 250rpm normiert.
    Ich werde das demnächst mal testen und hoffe es funktioniert wie gewünscht!
    Leider habe ich ein Problem mit den USB to Serial Kabeln aus China, bekomme mit denen auch keine Verbindung zum Board. Ich teste das ganze jetzt mit einem anderen Kabel das funktioniert, sollte das alles hinhauen werde ich diese Kabel nachbestellen. Das ganze Teil wird dadurch leider etwas teurer, die China-Kabel haben weniger als einen € gekostet, das Kabel das funktioniert über 10..

  • Egal... bin immer noch interessiert. Finde einfach so bastellösungen viel geiler!
    Zumal meine Erfahrung zeigt, das selbst gebaute "Spezial" Werkzeuge immer die besten sind.

    Bist ungeschickt, hast linke Hände? Läufst gegen Türen und auch Wände?
    Kannst nicht schrauben und nicht lenken? Hast auch Probleme mit dem
    Denken? Kriegst nicht mal deine Schuhe zu? Dann bist du ein Mann für ATU!

  • Wird jetzt auch nicht 'teuer' im Verhältnis.. Denke 10€ mehr, werde aber erstmal die Software testen, habe heute in Testläufen gesehen, dass irgendwas nicht so ist wie es soll. Habe morgen frei und werde nach dem Fehler suchen, nachdem ich dann einmal am Auto getestet habe kann ich verschicken..

  • Wenn das klappt wäre ich sofort dabei!
    Das ist abgesehen von einem OBD Auslesegerät fast schon die zweitbeste Investition um den Zustand seines Fahrzeugs im Blickbzu behalten.

  • So, ich habe die Programmierung überarbeitet und meinen nun das es so stimmen sollte, ich würde das gerne mal hier posten, vielleicht mag sich einer von Euch mal damit beschäftigen und feedback geben ob das alles passt so.


    Die Basis des ganzen ist wie bereits erwähnt das TR01 Programm von John Doss der das ganze mit Casing entwickelt und in den USA verkauft hat (siehe Bild), John hat letztes Jahr den sourcecode hier: http://www.instructables.com/i…ngine-Compression-Tester/ veröffentlicht.


    Die Schleife mit der er nach den Peaks sucht und die rpm berechnet sieht bei ihm so aus:







    um das zu verstehen muss man wissen wie der Sensor arbeitet und was der analoge Input des arduino daraus macht. Der Sensor kann 0-200psi messen und gibt eine Gleichspannung aus, die proportional zum Druck ist: bei 0psi sind das 0,5V, bei 100psi 2,5V und bei 200psi 4,5V, das ist praktischer Weise linear. Der analoge Eingang vom arduino macht aus dieser Spannung eine Zahl, gemessen werden 0-5V DC wobei 0V die Zahl 0 ergibt und 5V 1023. Da sich der Sensor zwischen 0,5 und 4,5V bewegt sind also Zahlen zwischen 102,4 und 921,6 möglich (wobei die Kommastellen weg fallen). Das ist der Grund, aus dem John in seiner Schleife 103 vom SENSOR Wert abzieht, damit wird der Basiswert des Sensors von 0,5V zur neuen 0. Wenn man dann den Bereich von 102,4 bis 921,6 in 200psi aufteilt ergibt sich der Faktor 1/4,096, d.h. er rechnet in seiner Schleife direkt mit psi Werten. Ich habe mich dann gefragt, warum er die while Schleife bis <=5, bzw. <5 laufen lässt und das liegt daran, dass die Sensor Werte fluktuieren, also wenn ich den Sensor anschließe und einfach an der Luft lasse, bekomme ich Rohdaten im Bereich von ca. 85 bis 120, vermutlich einfach weil der Sensor nicht genauer ist und es minimale Schwankungen im Luftdruck gibt. Wenn man also wirklich streng nach größeren/kleineren Werten sucht, bekommt man auch ohne den Sensor an den Motor anzuschließen Peaks und und rpms die nichts mit der Realität zu tun haben, daher hat er die "Hürde" von 5psi eingebaut. Das schöne an der Rechnung mit psi ist, das man alles als integer machen kann und keine Kommastellen benötigt, mehr daszu später.
    Meine Idee war dann, warum nicht die Peaks mit den Sensor Rohdaten berechnen? Hat den Vorteil, dass man die Konvertierung in eine Druckeinheit nur einmal am Ende machen muss und nicht einmal pro Millisekunde in der Schleife. Mein Code sieht jetzt so aus:


    Ich arbeite in der Schleife bei den Peaks mit Sensor Rohdaten um Rechenschritte zu sparen, bei den Minimas habe ich das zunächst auch versucht, hätte damit aber die "Hürde" zur Bestimmung des Minimals auf etwa das Doppelte erweitern müssen (weil die Werte dann wie erwähnt unter Normdruck um 102,4 schwanken), wenn man die 103 abzieht und Werte kleiner 0 verbietet, ist damit auch die Schwankung halbiert und ich kann 20 setzten, sonst hätte ich ca. 40 gebraucht. Die Hürde bei den Peaks braucht man aus meiner Sicht nicht, weil die Schleife nicht weiter läuft, solange es kein minimum gibt, ich habe den Code daher dahingehen geändert, dass die wirkich größste Zahl gesucht und gespeichert wird.


    Am Ende hat man nun 4 Zahlen, 3 Peak-Werte in Sensor-Rohdaten und eine rpm.
    Um von den Sensor-Daten auf bar-Werte zu kommen habe ich den linearen Zusammenhang zwischen beidem gesucht und multipliziere am Ende vor der Ausgabe damit:


    Code
    float bar_factor=0.1683290354778; //factor to calculate bar (x10) from analog sensor values
    
    
    dtostrf(round((face[0]-102.4)*bar_factor)/10,3,1,buf1)

    Der Faktor selbst ist 0,01683290354778, ich ziehe jetzt den Offset von 102,4 ab, multipliziere mit dem Faktor mal 10, runde das auf 3 Stellen und teile dann wieder durch 10 um einen bar-Zahl mit einer Kommastelle zu bekommen, die Funktion dtostrf wandelt diese zahl dann in einen string um, so dass man sie ausgeben kann. Das ganze war für John einfachere, weil die psi Zahl ein interger ist und direkt in ein string gewandelt werden konnte.
    Dann habe ich mir Gedanken über die rpm Korrektir gemacht und folgendes gefunden: https://www.rx8club.com/series…excel-application-180043/ Forumsmitglied "IOANNIStsa" sich die Arbeit gemacht das Originale Mazda Diagramm zu zerlegen und eine Excel App damit zu schreiben die eine rpm Korrektur macht, man kann das Excel Programm auf Seite 2 irgendwo runter laden was ich getan habe. https://www.rx8club.com/series…-compression-math-231810/ hier sieht man die Kurven mit denen er gearbeitet hat )Post 6). 2 Sachen fallen auf wenn man sich die Kurven ansieht, zum einen ist der Zusammenhang leider nicht linear und es sieht so aus als ob die Korrektur für jeden Druckwert gleich ist, also Wenn ich z.B. Kompressionswerte für 270rpm habe ist die Korrektur immer die gleiche um auf 250rpm zu kommen, egal ob es 8bar sind oder 4bar oder was auch immer. Weil ich jetzt nicht die komplette Matrix von Werten in das Programm übernehmen wollte (das wäre auch vom Speicher knapp geworden), habe ich mir seine Korrekturen in 10 rpm Schritten aus dem Excel tool geholt und ein Polynom 2ter Ordnung drüber gelegt, mit dem Ergebnis können nun die Kompressionswerte Drehzahl-Korrigiert werden, das ganze sieht so aus:



    Code
    float a0=8.5944582043344;          //Polynom Fit a0 to norm values to 250rpm
    float a1=-4.8028702270382E-02;     //Polynom Fit a1 to norm values to 250rpm
    float a2=5.4250515995872E-05;      //Polynom Fit a2 to norm values to 250rpm
    float correction;                  //Correction value to norm values to 250rpm
    
    
    correction=a0+a1*RPM+a2*sq(RPM);   //Calculate correction value to norm compression values to 250rpm
    
    
    dtostrf(round((face[0]-102.4)*bar_factor)/10+correction,3,1,buf1);  //convert first face peak compression pulse to string and dump it into an array

    Ich habe mich entschlossen beides auszugeben, die gemessene bar-Werte, rpm und die auf 250rpm korrigieren Werte, so dass man das auch mit einem tool der Wahl nachvollziehen kann wenn man mag.


    Im Anhang habe ich ein zip gemacht, in dem der Originale Sourcecode von John, sowie mein modifizierter drin sind. Wenn Ihr Ideen habt was man besser machen kann, her damit!


    Ausserdem habe ich jetzt mal alle Kosten addiert:


    USB/Serial Kabel: 12€
    Arduino Board: 3€
    Gehäuse: 3€
    Drucksensor: 11€
    1/8" NPT Female auf M14x1,25 Adapter: 10€
    Kleinkram (O-Ring, Lötzinn, Locite,..): 1€


    Zusammen 40€, für den Versand hätte ich gerne 5€. Also 45€ am Ende. Ich werde im Laufe der nächsten Woche den Adapter an meinem Motor testen wenn das klappt und die Kabel da sind, kann ich dann im Laufe der nächsten 2 Wochen verschicken.


    Wenn es Läuft mache ich auch gerne einen Wiki-Eintrag wie man sich so ein Teil selbst bauen kann!

  • Sehr geil. Bin mal auf die messwerte gespannt. Die programmierung sagt mir nur Bahnhof. Kein plan davon xD.

  • Mit den Zahlen die der A/D Wandler ausgibt rechnen, als Integer, und erst am Ende in Bar umrechnen, halte ich auch für den praktischeren Weg. Super!

  • Super sache das ganze!


    Selber bauen würde ich hin bekommen, aber das programmieren würde wohl in einer Selbstzerstörung des Geräts ausarten :D


    Ich bin jetzt sehr auf die vergleichsmessung gespannt.

    RX-8 Revolution, 6Port 231PS, Bj 05.2004,BC-Racing Gewindefahrwerk, Black Dash + Red Stuff vorne, weiße LAA´s, Borbet DB8GT Leightweight 8,5x18“, Sohn Adapter + Tankkit, schwarze Heckscheiben 95%, leuchtende Kiemen, Angel Eyes, Scheinwerferblenden, RB Ram Air-Intake,
    K&N Luftfiltereinsaztz, Block8Head Tripod + Prosport Zusatzinstrumente - Wasser-/Öltemp. + Öldruck, Kanatechs Doppel-DIN + Pumpkin Radio, Stahlflex Ölleitungen + Mishimoto Öl Thermostat + 25 Reihen ölkühler, Japspeed Lightweight Pullye Kit Blau, OEM Frontlippe, OEM Seitenschweller, Carbon MS Flügel, Sportlenkrad, Dach schwarz, Haubendreieck schwarz, CarTuningTreffNRW Teamstreifen auf der Seite, Lug Nuts Rot. Weiteres in Aussicht.

  • Source code sieht gut aus, sollte so definitiv stimmen.
    Jetzt hängt der Rest nur noch von der Hardware ab...


    Wenn die Fertigung angeht, ich nehme einen.

  • Also ich habe schon läger 5 Interessenten, die sich als erstes gemeldet haben bekommen ihren sofern sie noch wollen. Wenn das Interesse danach weiter groß ist, würde ich aber auch eventuell nochmal 5 bauen. Aber wie schon mal erwähnt, soll das nicht mein Hauptberuf werden, zumal ich auch echt null komma null daran verdiene (will ich auch nicht). Also lasst mich mal den ersten testen und wenn alles gut ist Bau ich die anderen 4 und dann wegen mir auch nochmal 5, aber ab da muss dann die wiki Eintrag reichen, die größte Arbeit ist dann eigentlich das zusammensuchen der Komponenten, dann sind es 8 Lötstellen und das Ding ist fertig..

  • Ich habe mittlerweile selbst ein bisschen den Überblick verloren, wer jetzt einen Tester bekommt, daher musste ich es nochmal zusammen suchen und schreibe es jetzt hier hin:


    1. Charge:


    - Breyker
    - Bernd_57
    - WERRX8
    - BadManRX
    - Ich


    2. Charge:


    - 8rx8
    - Commander_Keen
    - MeRx8
    - yonaz
    - Injilos


    Warteliste:


    - Eckle4
    - Erix8
    - pica
    - Spawn
    - KleBoR



    Ist das richtig so?


    Damit wäre auch die 2 Charge (über)voll also bitte keine Anfragen mehr stellen.