Zum Inhalt springen

´MicroDyno für Android


dak

Empfohlene Beiträge

Wie funktioniert der Filter und warum brauche ich das?

Exemplarisches Diagramm der Drehzahl, oben kurze Aufnahme(2. Gang) unten eine lange Aufnahme(3. Gang):

Das sollen nun 2 perfekte Aufnahmen sein, welche keine Ausreißer aufgrund eines schlechten Signals haben.

Um nun die PS zu berechnen, benötige ich den Geschwindigkeitsunterschied von Punkt 1 zu Punkt 2.

Man sieht auf dem Diagramm, dass die Punkte 1 und 2 aber die gleiche Drehzahl haben(hier im Beispiel y=1), also Geschwindigkeitsunterschied = 0 -> PS = 0.

Ich habe verschiedene Methoden zum curve fitting probiert und am einfachsten ist es, hier einen Savitzky Golay Filter zu verwenden.

In einfachen Worten macht dieser ein lokales Polynomfitting und gleicht die Werte dann an.

Filterlänge: um nun einen Punkt im Diagramm an die anliegenden anzugleichen, werden links und rechts von diesem Punkt aus Datenpunkte verwendet um eine Kurve zu fitten. Wieviele Punkte das sind wird durch die Filterlänge festgelegt.

Schaut man sich nun die 2 Aufnahmen an, ist klar dass es sinnvoll ist, bei der längeren Aufnahme eine größere Filterlänge zu verwenden.

Somit wird dann aus x=1 -> y= 0.9 und x=2 -> y=1.1

Daraus folgt der Geschwindigkeitsunterschied ungleich null und somit PS ungleich null.

Man hätte das bestimmt auch anders verwirklichen können, jedoch schlage ich mit dem Savitzky Golay Filter 2 Fliegen mit einer Klappe:

1. siehe oben

2. Ausreißer werden besonders gut herausgefiltert.

Siehe hier (Quelle Google Bilder Suche...):

savitzky-golay.png

Das ist natürlich ein extrem Fall, der bei uns nie so auftritt. Jedoch hat der Filter gegenüber dem moving avarage den Vorteil, dass das Signal nicht in y-Richtung verschoben wird.

Die Automatisch gefundene Filterlänge leitet sich einfach aus der Aufnahmelänge ab.

Hierzu habe ich empirisch rumprobiert bis es bei kurzen und langen Aufnahmen gut gepasst hat.

Das ist natürlich nicht unbedingt perfekt.

Bei Aufnahmen mit Ausreißer können durch zu kurze Filterlängen, diese Ausreißer nicht vollständig herausgefiltert werden.

Bei zu hohen Filterlängen, kann es sein, dass die komplette Kurve zu sehr geglättet wird und dadurch der Anstieg der Geschwindigkeitszunahme verringert wird (->weniger PS).

Ich vermute mal dass bei einem Leistungsprüfstand mit Rolle auch gefiltert wird, jedoch ist 1.die Auflösung von y um einiges höher , 2. es gibt keine Ausreißer und 3.die Anzahl an Signalen ist größer.

post-26291-0-60968700-1353849301_thumb.p

Bearbeitet von dak
  • Like 5
Link zu diesem Kommentar
Auf anderen Seiten teilen

Der Ablauf sollte klar sein aber nochmal kurz:

1. Auf Aufnahme drücken und losfahren

2. Audio Signal auf gewünschten Gang zuschneiden

3. Audiosignal korrigieren

Bisher läuft bis hier hin alles prima. Das Editieren des Audiosignals ist jedoch furchtbar langsam und eine "Undo" Option fehlt hier noch.

Der letzte "Next" Button führt noch nicht zum Ergebnis, gibt aber die Daten per Logcat aus.

Nichts desto trotz, bitte die App testen, nicht aufm Moped sondern einfach nur mal zuhause ein bisschen damit rumspielen.

Falls die App abstürzt, bräuchte ich den genauen Hergang um die App zum Abstürz zu bringen oder Logcat Daten.

Ich bin mir noch nicht ganz sicher, ob alle Resourcen wieder freigegeben werde, daher empfehle ich die App nach dem testen zu deinstallieren + Handy neustarten.

Was wichtig wäre:

Stimmt die Position beim drücken auf dem Touchscreen mit den Balken zum Zuschneiden exakt überein?

Stimmt die Position beim drücken auf dem Touchscreen mit dem "Ausradierten Signal" exakt überein?

Wie langsam ist der letzte Graph zum Signal korrigieren wirklich ? Ist die Geschwindigkeit noch ok ?

http://www.mediafire.com/?dcl4k8s4ceuv868

(edit1: habe nochmals mit der Auflösung gespielt, jetzt sollte die Touchposition auf jedem Gerät passen)

(edit2: schnellere Version, ruckeln auf dem 3ten screen sollte nun weg sein)

...es geht voran

edit3:

Das hier ist aus einem Test mit der Wav-Datei welche dem GSF Dyno beiliegt:

Es funktioniert also, es fehlt nur noch das fine-tuning(die Kurve auf dem Bild ist zu sehr geglättet) und ein Straßentest.

Alta, wie geil! Bitte weitermachen!!!!

Link zu diesem Kommentar
Auf anderen Seiten teilen

hut runter, habs jetzt nicht gesehen. open source? check das projekt doch irgendwo ein (github, evolvis, ...) - dann kann man seine bug reports vernünftig hinterlegen.

ich bin ja hauptberuflich java-entwickler (mehr so enterprise-krams eigentlich). leider bin ich grad aber total überladen mit projekten und arbeit. wenn du hier dran bleibst und ich irgendwann mal ein bisschen leerlauf hab, dann leiste ich gern nen beitrag. schön, dass das angegangen wurde!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich bin noch am überlegen ob ich die App für 0.5€ - 1€ im Market anbiete.

Evtl. hier im Forum als Download und dann im Market als Donate Version oder so, mal schauen.

Ehrlich gesagt sitzte ich da jetzt schon 100h davor (Semesterferien...).

Die meiste Zeit verschwende ich damit meinen Spaghetti code zu verfolgen um am Ende zu bemerken dass an irgendeiner Stelle i statt i5 steht...

Ausserdem konnte ich bis ich diese App angefangen habe nur C/C++ und dementsprechend sieht der code auch aus. Hauptsache er funktioniert und ist flott, für andere wird er aber schwer lesbar sein, keine Kommentare, krytpische Variablennamen(i1 bis i10, temp1 bis temp10 usw. :wacko: das muss ich nochmal überarbeiten).

Bis zur Kurve steht jetzt die App, eine Testfahrt hat aber ergeben dass ich mit den jetzigen Einstellungen kein ordentliches Signal bekomme.

An der Anlage abgespielte WAV Dateien funktionieren problemlos, ich denke dass es an der Lautstärke liegt.

Was sonst noch fehlt:

GPS Vmax Bestimmung(implementiert aber noch nicht getestet, optional: dadurch fällt die Eingabe der Getriebeübersetzung/Reifengröße weg)

Ein ordentliches Config Menu

Aufgenommene Kurven speichern

?Vorschläge?

Bearbeitet von dak
Link zu diesem Kommentar
Auf anderen Seiten teilen

DANKE, dass du dich da ranmachst! :wacko:

geile Scheiße echt!

WEITER SO :wacko:

kannst vielleicht den weiter Fortschritt zum Download bereitstellen?

Bearbeitet von mulch
Link zu diesem Kommentar
Auf anderen Seiten teilen

Ok. Ich hab wie gesagt grad auch ordentlich auf der Uhr. Großes Refactoring ist auch nicht so richtig das, worauf ich Lust hab. Übrigens denke ich, open source und app im Market schließen sich nicht aus. Zumal: welcher normale user checkt sich die Quellen aus und baut das Ganze? Man muss ja keine binaries rausgeben :)

Ich kann aber auch verstehen, wenn du den code nicht rausgeben willst, wenn er dir zu unsexy ist. Keep up the good work. Wie kommt das Audiosignal eigentlich ins Handy? Machst dus übers Mikro oder mit Spannungsteiler über die Kopfhöhrerbuchse? Wollte jetzt nicht das ganze Topic durchsuchen und habs auf Anhieb nicht gefunden...

Von mir gibts in Zukunft vielleicht etwas, was Drehzahl, Tachosignal und EGT erfasst und per Bluetooth verteilt. Dazu gäbe es dann eine DataProvider-Lib für Android. Wird aber später im Jahr (ist der Plan für meine Abschlussarbeit im Studium). Sollte ich das angehen, lass ich es dich wissen. Wär ja für deine App vielleicht auch ganz interessant als alternative Datenquelle.

Bearbeitet von dare
Link zu diesem Kommentar
Auf anderen Seiten teilen

Audiosignal kommt vom Mikro. Ich hätte zwar so einen Spannungsteiler hier rumliegen, möchte es aber erstmal übers mikro ordentlich hinbekommen . ich bin mir (noch) nicht sicher ob ich da nicht einen anderen stecker brauche.

Bearbeitet von dak
Link zu diesem Kommentar
Auf anderen Seiten teilen

Die Steckerbelegung unterscheidet sich wohl von Hersteller zu Hersteller.

AUX und GND - Ringe sind da oft vertauscht.

https://www.google.d...ved=0CGEQygQwAA

Da ich mich da eher nicht auskenne und ich den Spannungsteiler auch nicht selber gelötet habe:

Das sollte doch eigentlich egal sein wie rum ich das anlöte ?

Wie sicher ist denn der Spannungsteiler (habe meinen hier irgendwann erworben, siehe Foto)?

Bei dem 10 Euro billig MP3 Player(welcher während einer Dyno-Aufnahme kaputt ging, evtl Zufall) wars mir wurst was ich dranhänge, bei meinem Smartphone eher nicht.

Kann man da noch was dazwischen löten um sicher zu sein ?

post-26291-0-81366300-1330774351_thumb.j

Bearbeitet von dak
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi!

Geht mir genau so. Spannungsteiler allein ist nur mäßig sicher. Man muss das so bauen, dass man Widerstände nimmt, die den Strom weit genug begrenzen, dass eine Zener-Diode sicher Spannungsspitzen auf Masse ableiten kann. Dann eine entsprechende Zener-Diode einlöten und schon kann eigentlich nix mehr schief gehen. Wenn man ganz sicher gehen will, dann nimmt man nen Optokoppler. Braucht aber dann noch zusätzliche Beschaltung für die Spannungsversorgung. Optokoppler bieten galvanische Trennung. Da kann dann wirklich nix mehr schief gehen. Übers Mikrofon stell ich mir das deutlich schwieriger vor als übern Spannungsteiler. Letzterer liefert wirklich brauchbare Signale. Diode, Spannungsteiler, Zener-Diode und ein kleiner Kondensator reichen sogar aus um nahezu rechteckige Impulse zu bauen. Das gibt ein 1a Signal zur weiteren Verarbeitung. Kein Vergleich zum Mikrosignal! Der GSF-Spannungsteiler-Schaltplan ist ja eigentlich bewährt. Ich hab zumindest noch nie gehört, dass da was kaputt gegangen wäre. Ich glaube mich auch zu erinnern, dass die da ebenfalls nen Filter etc. eingebaut haben. Ich würds glaub ich einfach reinstecken bzw. mir ein billiges Smartphone dafür schießen (gibts für <100).

Für die Serie fänd ich was mit Optokoppler sexy. Braucht dann zwar Batterien aber ist doch egal. Vielleicht will jemand sowas bauen? Ich zeichne dann auch nen Schaltplan. Für mehr hab ich keine Zeit...

Grüße!

Bearbeitet von dare
Link zu diesem Kommentar
Auf anderen Seiten teilen

Geile Sache, bin gespannt, wie es funktionieren wird, wenn´s fertig ist :wacko:

Ein Frage habe ich:

Hier kann ich ja den Gang auswählen - was passiert beim Button "Trim" (Zuschneiden)?

Das hab ich jetzt noch nicht ganz gecheckt, nochmal zurechtschneiden? Feintuning?

post-3196-0-19486900-1330869556_thumb.jp

Bearbeitet von SpecialHeizer
Link zu diesem Kommentar
Auf anderen Seiten teilen

Du verschiebst die 2 Balken so dass die Aufnahme des gewünschten Ganges dazwischen ist, mit trim wird die Aufnahme geschnitten und in die geschnittene Aufnahme gezoomt.

Sollte ich vielleicht so umbauen, dass man nur weiter kommt, wenn geschnitten wurde.

Ich denke ich hab die Filterung jetzt so weit, dass es auf der Straße funktionieren sollte, leider liegt Schnee.

Bearbeitet von dak
Link zu diesem Kommentar
Auf anderen Seiten teilen

Nach der Audio-Aufnahme werden die Daten auf die SD-Karte geschrieben, daher stockt das Programm einige Zeit nach dem drücken der Stop Taste.

Aufnahmen bitte kurz halten, jedoch logischerweise auf Sicherheit während der Fahrt achten...

Ich bitte euch mir ein Paar dieser Files von richtigen Fahrten zu schicken.

Die Daten schauen wiefolgt aus: /sdcard/yyyyMMdd_HHmmss.raw

Falls es schon andere Kurven P4/GSF Dyno zum Motor gibt, hätte ich die auch gerne.

EDIT: GANZ WICHTIG: ENTWEDER DIE EINSTELLUNGEN (Menü-Taste) so lassen oder mir die geänderten Einstellungen mitteilen wenn ihr mir die Files schickt.

Die Einstellungen können nur vor der Aufnahme geändert werden.

Diese sind im Moment nur eingebaut, damit ich meinen Laptop nicht zur Probefahrt mitnehmen muss.

Evtl. je nach Länge der Aufnahme ist es möglich, dass das Programm abstürzt, hier würde es helfen im Vorfeld den VM-Heap auf 48M zu erhöhen.

(geht meines Wissens nach nur mit custom roms wie cyanogenmod)

Sollte ein Fenster aufgehen von wegen "Schließen oder Warten", bitte auf Warten clicken.

Beim Zuschneiden der Länge der Daten KANN IM MOMENT NUR EINMAL GESCHNITTEN WERDEN, der zweite Schnitt schneidet irgendwas, nur nicht so wie er soll.

Absolute Ergebnisse gibt es noch nicht, die Kurvenglättung ist experimentell.

Beim bearbeiten wird die Kurve noch nicht geglättet, sollte sie aber da dies einiges vereinfacht.

Mir gehts bei dieser Version hauptsächlich darum das Filtering der Frequenzen MIT EUREN Aufnahmen zu verbessern.

Android Programme laufen in einer Sandbox, es kann also nicht passieren, jedoch empfehle ich, falls das Programm abstürzt, dieses zu deinstallieren, da ich es so eingestellt habe, dass der Screen während der Aufnahme an bleibt und das Handy nicht in den Standby Modus geht.

Bearbeitet von dak
Link zu diesem Kommentar
Auf anderen Seiten teilen

@dak: Danke schon mal für Deine Arbeit! Ich werde das bei Zeiten einmal ausprobieren, das dazugehörige Kabel habe ich schon, weil ich das GSF Dyno für PC benutzen wollte. Dann kann ich Dich bei Deiner Arbeit hoffentlich unterstützen! Super Sache!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Bitte ohne Kabel nur mit Mikrofon !

Ich würde gerne versuchen, das ganze für jedermann ohne Spannungsteiler hinzubekommen.

Je nachdem wie eure Aufnahmen ausfallen, gehts oder gehts eben nicht.

Da ich ja vorhabe die vmax über GPS zu bestimmen, wäre es nicht weiter schlimm eine ober oder unterschwingung zu erwischen.

Nachtrag: Evtl. sollte man das auch mal mit dem Headset testen.

Nächster Nachtrag: ein Vergleich mit/ohne Spannungsteiler wäre natürlich auch spannend, dabei bitte darauf achten ob euer handy einen line-in oder mic-in eingang hat und ob der stecker der richtige ist.

Bearbeitet von dak
Link zu diesem Kommentar
Auf anderen Seiten teilen

Also meine Unterstützung ist Dir gewiss, nur leider steht die Vespa noch teilzerlegt in der Garage.

Gibt es eine kurze Anleitung zum Verfahren bei der Aufnahme, kann mich dunkel ans GSF-Dyno Topic erinnern:

- möglichst ebene Strecke....Länge ?

- in beiden Richtungen eine Aufnahme ?

- alle Gänge ausfahren oder reicht nur 1. und 2. ?

Im Zweifelsfall lese ich mich vorher nochmal ins GSF-Dyno-Topic ein...

Ach ja wegen der Platzierung des Handys wollte ich auch noch fragen, wie mein Vorredner...

Link zu diesem Kommentar
Auf anderen Seiten teilen

hab nen reißverschluss an der jackentasche...

keine ahnung, evtl in die socke stecken, touchscreen richtung socke damit du nicht auf die buttons drückst

strecke ist wurst, einen gang voll ausfahren 2 oder 3. egal

Absolute werte sind mir im Moment eh egal, ich möchte nur mal die Qualität der Aufnahmen sehen.

Wenn ihr bei der Ausradier-Funktion eurer eigenen Aufnahmen seid wird euch klar warum ich das brauche.

Bearbeitet von dak
Link zu diesem Kommentar
Auf anderen Seiten teilen

@dak: Respekt vor deiner Arbeit!

Wenn das alles irgendwann alles klappen sollte wie es dir vorschwebt bin ich mehr als beeindruckt!

App ist runtergeladen und bis zum Wochenende sollte ich dir erste "Testfiles" zukommen lassen könnnen. Eine funktionierende Aufnahme per Micro fände ich fantastisch einfach.

Link zu diesem Kommentar
Auf anderen Seiten teilen

App ist schon installie und "jammerte" nach "Start Audioaufnahme"!

Kann sein dass dein Handy die voreingestellte SampleRate nicht unterstützt, um da eine Abfrage einzubauen, war ich bisher zu Faul.

Mach mal folgendes:

App starten. Menu-Taste. SampleRate von 44100 auf 22050. Zurück Taste. Start.

Falls das wieder nicht funktioniert, dann auf 16000 ändern.

Dazu fällt mir gerade noch ein, dass bei jedem Handy evtl. der Ordner der SD Karte anders ist.

Ich lade im laufe des Tages nochmal eine Version hoch.

Nochmal kurz zur akutellen Version:

Nach dem drücken der Stop Taste dauert es ein wenig, da die Rohdaten auf der SD Karte gespeichert werden(der Schritt fällt dann später weg).

Drückt man während dem Schreiben nochmal auf die Taste kommt evtl. ein Fenster "Schließen" oder "Warten", hier bitte auf Warten drücken.

Bearbeitet von dak
Link zu diesem Kommentar
Auf anderen Seiten teilen

Edit4: ich muss nochmal zurückrudern, es gibt heute nochmal eine Version, die sollte aber dann passen, die jetztige bitte Deinstallieren.

Folgendes Problem, falls man nach dem Starten aus der App rausgeht, läuft der Aufnahme Thread weiter und kann nicht mehr abgebrochen werden.

Der wird dann vom System abgebrochen, da sich die App zuviel Speicher nehmen will.

Bearbeitet von dak
Link zu diesem Kommentar
Auf anderen Seiten teilen

Mit der Aufnahmelänge unter 30 Sekunden bleiben.

Änderungen:

App wird nun bei folgenden Ereignissen richtig beendet/der Speicher wird wieder freigegeben:

- Eingehender Anruf

- Back Button

- Home Button

- Power Button

Art und Weise wie das Display auf ON gehalten wird passt nun

Bearbeitet von dak
Link zu diesem Kommentar
Auf anderen Seiten teilen

Aufnahmelänge ist ab jetzt egal, da alles auf der SD-Karte zwischengespeichert wird(diese Dateien hätte ich dann gerne!).

Da man nach dem Zuschneiden auf jedenfall unter 1min ist, wird dann nur der zugeschnittene Teil wieder eingelesen.

Dieser Umweg muss leider sein, da Android nur ca. 30Mb "RAM" pro App zur Verfügung stellt.

Das Zuschneiden inkl. zoomen nach dem schneiden funktioniert jetzt.

Die Daten bitte selbstständig von der sd-karte löschen. In der finalen Version gibts dann natürlich eine Option zum Speichern/Einlesen/Löschen.

Bearbeitet von dak
  • Like 1
Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 1 Monat später...

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden
  • Wer ist Online   0 Benutzer

    • Keine registrierten Benutzer online.



×
×
  • Neu erstellen...

Wichtige Information