Hallo zusammen, ich versuche immoment mit einem dreiachsigen Beschleunigungssensor die Drehzahl einer Welle zu messen. Ich habe eine Platine designed, auf der ein Beschleunigungssensor und ein Mikrocontroller Platz finden. Danach hab ich erstmal einen Code geschrieben, der mir die Messdaten in einer CSV Datei speichert. Habe dann die Platine auf die Welle gepackt und mal eine Probemessung gemacht. Die Daten aus der CSV Datei hab ich dann mal in Excel visualisiert und als Bild hier angehängt. Wie kann ich daraus jetzt am genauesten die Drehzahl ermitteln? Vielen Dank schonmal im Voraus.
Könnte das nicht einfach über den zeitlichen Abstand zwischen zwei Spitzen berechnet werden?
Matze R. schrieb: > Wie kann ich daraus jetzt am genauesten die Drehzahl ermitteln? Wie "genau" ist "am genauesten"? Wie stark jittern deine ADC-Werte? So wie ich das mir hier ansehe, kannst du die Drehzahl etwa 1/50 genauer auflösen, als die Drehzahl, die du während der Messung hattest. Denn da passen ca. 50 Messwerte in 1 Periode. > die Drehzahl ermitteln Tut man per Autokorrelation.
:
Bearbeitet durch Moderator
Beitrag #5845253 wurde vom Autor gelöscht.
Matze R. schrieb: > Wie kann ich daraus jetzt am genauesten die Drehzahl ermitteln? Das hängt davon ab, welchen Drehzahlbereich du überstreichen möchtest und ob die Lage deiner Drehachse bezogen auf den Schwerkraftvektor konstant ist.
STK500-Besitzer schrieb: > Könnte das nicht einfach über den zeitlichen Abstand zwischen zwei > Spitzen berechnet werden? Das Problem ist, aus den deutlich verrauschten Daten die entscheidenen zwei Spitzen herauszufiltern.
Theoretisch sieht das ja schon ein bisschen wie ein SIN /COS aus. Aber mit ATAN wird da wahrscheinlich nichts brauchbares raus kommen. Mach mal die AKF wie Lothar gesagt hat. Oder eine FFT damit man Mal sieht was für Oberwellen da noch so drauf sind. Edit:Typo
:
Bearbeitet durch User
Drehzahl ist Winkelgeschwindigkeit durch 2 x pi (oder 360 Grad). Winkelgeschwindigkeit ist Winkeländerung pro Zeiteinheit. Den Winkel solltest du über deine Z und Y Beschleunigungswerte erhalten.
So schlecht sieht das gar nicht aus. Klar, da ist viel Noise drauf, aber den Zusammenhang zwischen sin und cos kann man schon recht gut erkennen. Hänge doch mal ein paar Rohdaten als .csv an, dann kann man mal mit ein paar Filtern rumspielen. Dem ersten Augenschein nach ist der Grundwelle eine Schwingung mit ca. der sechsfachen Frequenz und mit ca. 1/6 der Amplitude überlagert. Das sollte man eigentlich durch TP Filterung deutlich verbessern können. Ist denn die dargestellte Drehzahl eher so das obere Ende, oder soll das Ding später auch mal noch schneller drehen? Wenn ja, wie viel etwa? 2x? 3x?
:
Bearbeitet durch User
Drehst du immer um die Horizontale oder auch mal um die Vertikale?
Wolfgang schrieb: > Das Problem ist, aus den deutlich verrauschten Daten die entscheidenen > zwei Spitzen herauszufiltern. Man könnte ja evtl auch die Nulldurchgänge suchen, nachdem man das Signal TP-gefiltert und den DC entfernt hat. Oder liege ich damit falsch?
Ähhhh... Die Amplitude des Signals sollte doch unabhängig von der Drehzahl sein. Was man da sieht ist doch nur die Beschleunigung durch die Rotation mal plus g und dann minus g. Der DC offset des Signals sollte sich aber mit der Beschleunigung (also der Drehzahl) des Signals verändern. Ebenso die Frequenz. Wäre es da nicht einfacher, das Signal so stark TP zu filtern, dass nur noch der Offset übrig bleibt und anhand dessen auf die Drehzahl zurück zu rechnen? Dann muss man gar keine Analsyse des Signals machen
Schlumpf schrieb: > Wäre es da nicht einfacher, das Signal so stark TP zu filtern, dass nur > noch der Offset übrig bleibt und anhand dessen auf die Drehzahl zurück > zu rechnen? Das ist auch eine Idee. Dafür müsste man den Sensor eben stark dezentrisch anbringen, damit er einer Zentrifugalkraft ausgesetzt ist. Nachteile sind, dass der Messwert abhängig von der Anbringung ist und durch das starke Filtern wird es träge. Ich würde erstmal folgendes versuchen: Signale rot + grau addieren und durch einen TP und einen HP laufen lassen, um Rauschen + Oberwellen zu reduzieren und den DC Offset loszuwerden. Danach Nulldurchgangserkennung mit Hysterese.
Joe F. schrieb: > Dafür müsste man den Sensor eben stark dezentrisch anbringen, damit er > einer Zentrifugalkraft ausgesetzt ist. Je nachdem, wie empfindlich der Sensor ist. Aber ja, da hast natürlich recht. Bei der Methode, die Nulldurchgänge zu suchen bist halt auf eine Einbaulage beschränkt. Ist die Rotationseben horizontal, dann geht das so nicht mehr.
Schlumpf schrieb: > Man könnte ja evtl auch die Nulldurchgänge suchen, nachdem man das > Signal TP-gefiltert und den DC entfernt hat. > Oder liege ich damit falsch? Dafür musst du eine passende Grenzfrequenz des Tiefpasses festlegen, die das höherfrequente Rauschen unterdrückt aber die Nutzfrequenz (=Drehzahl) gut durch lässt. Wenn der TO den Drehzahlbereich nicht verrät, wird es schwierig. Viel besser filtern kann man, wenn man das Signal z.B. mit einer PLL filtert. Dann kann man richtig lange Zeitkonstanten verwenden und kennt die Frequenz. Die Zeitkonstante des Filters muss kürzer sein, als die Dynamik der Drehzahl.
Klar, wenn das Störsignal und das Nutzsignal im gleichen Spektrum sind, ist es schwer, zu filtern. Daher auch die Idee, nur den Offset zu betrachten. Dann kannst großzügig filtern. Aber auch hier funktioniert das nur in einem eingeschränkten Bereich. Entweder wird die Beschleunigung zu groß oder zu klein für den Sensor. Das müsste dann mit dem Radius eingestellt werden, wie weit der Sensor aus der Mitte angebracht wird.
Das sieht doch gar nicht so übel aus. Wahrscheinlich reicht sogar die Methode der kleinsten Fehlerquadrate (Ansatz mit 4 Parametern: DC-Offset, Amplitude, Frequenz, Phasenversatz).
Vermutlich wird der Ansatz, die Nulldurchgänge oder Maxima zu finden, nicht ganz unproblematisch sein. Denn hier schlägt jede Vibration voll durch. Und sie kann je nach Drehzahl und oder Last völlig anders aussehen. Bei der Offset-Methode wird es vermutlich einfacher sein, die herauszufiltern. Aber ja, ohne detaillierte Angaben des TO ist alles reine Spekulation
Schlumpf schrieb: > Klar, wenn das Störsignal und das Nutzsignal im gleichen Spektrum sind, > ist es schwer, zu filtern. > Daher auch die Idee, nur den Offset zu betrachten. > Dann kannst großzügig filtern. Wenn du zu doll filterst, bekommst du auch da Drehzahländerungen nicht mehr mit. Daher meine Frage an den TO.
orange/grau (dünn): Messdaten orange/grau (dick): moving average über 13 Werte hellblau: summe der gemittelten Werte schwarz: durch Hochpass gejagt, um DC Offset loszuwerden Das Signal sollte man jetzt mit einer Nullstellen-Detektion gut auswerten können. -> dünne schwarze Linie: y/abs(y)*10 Die Daten habe ich mir aus dem Bild vom TO "rausgepickt" (https://apps.automeris.io/wpd/). Anbei für's Forum zum rumspielen.
:
Bearbeitet durch User
Hallo zusammen. Wow so viele gute Antworten :) Vielen Dank euch allen. Noch ein paar Infos und Antworten zu den Fragen. Was ich vergessen habe zu erwähnen ist, dass es sich um eine Gelenkwelle handelt. Deswegen überlagern sich auch weitere Schwingungen durch den Kaderneffekt. Der Drehzahlbereich soll so von 0-3000 U/min gehen. Der Durchmesser der Welle ist 40mm. Vorerst versuche ich es die Messung so hinzubekommen, dass es bei horizontaler Ausrichtung der Welle zum Boden funktioniert. Allerdings soll es später auch mit einem Winkel und "schräger" Lage im Raum funktionieren. Die CSV-Daten werde ich morgen mal mit anhängen. @joe wow das sieht ja wirklich schon viel besser aus vielen Dank. Nochmals danke an alle für die Beteiligung und die super Tipps. Ich hoffe, dass ich keine Frage vergessen habe zu beantworten
Matze R. schrieb: > Allerdings soll es später auch mit einem Winkel und "schräger" Lage im > Raum funktionieren. Je mehr sich diese Schräglage an eine Horizontale Rotationsebene annähert, desto kleiner wird die Amplitude des Wechselanteils deines Signals sein. Ist die Ebene horizontal, hast du nur noch einen Gleichanteil auf dem Signal (+Störungen) Bis wieviel m/s² kann denn dein Sensor?
Schlumpf schrieb:
> Bis wieviel m/s² kann denn dein Sensor?
Aktuell benutze ich den MMA8451 von freescale. Der kann bis 6g messen.
Ich habe aber auch welche gesehen, die bis 16g messen können.
Joe F. schrieb : > Hänge doch mal ein paar Rohdaten als .csv an, dann kann man mal mit ein > paar Filtern rumspielen. Hier etwas verspätet mal die Rohdaten der Messung :)
Joe F. schrieb: > Das Signal sollte man jetzt mit einer Nullstellen-Detektion gut > auswerten können. Wie kann ich mit meinem Mikrocontroller die Funktion durch die Filter jagen, um Sie dann auszuwerten?
Matze R. schrieb: > Wie kann ich mit meinem Mikrocontroller die Funktion durch die Filter > jagen, um Sie dann auszuwerten? Indem du deinem Mikrocontroller einen gleitenden Mittelwert https://de.wikipedia.org/wiki/Gleitender_Mittelwert und einen Hochpass-Filter "beibringst": z.B. als 1st order IIR:
1 | float in_curr = 0.0; |
2 | float in_prev = 0.0; |
3 | float out = 0.0; |
4 | float alpha = 0.95; |
5 | |
6 | (...) |
7 | |
8 | out = out * alpha + (in_curr - in_prev); |
9 | in_prev = in_curr; |
:
Bearbeitet durch User
Matze R. schrieb: > Der > Drehzahlbereich soll so von 0-3000 U/min gehen. Der Durchmesser der > Welle ist 40mm. Vorerst versuche ich es die Messung so hinzubekommen, > dass es bei horizontaler Ausrichtung der Welle zum Boden funktioniert. > Allerdings soll es später auch mit einem Winkel und "schräger" Lage im > Raum funktionieren. Hallo, ich wage jetzt mal wieder eine der "dummen" Fragen. Ist Drehzahlmessung einer Achse mit einer Beschleunigungssensor-Platine nicht der falsche Ansatz? Und wie bekommst du überhaupt die Daten von dem Platinchen in den Auswerterechner?? Du wist doch wohl kaum Schleifringe verwenden :-) Und die Auswertung würde ich erst einmal mit einer FFT machen. Dazu mußt du aber sowieso eine Referenzmessung der "richtigen" Drehzahl haben! (Hatten wir gerade in einem benachbarten Thread). Kann aber trotzdem spannend werden... Gruß Rainer
Rainer V. schrieb: > Und die Auswertung würde ich erst einmal mit > einer FFT machen. Dazu mußt du aber sowieso eine Referenzmessung der > "richtigen" Drehzahl haben! (Hatten wir gerade in einem benachbarten > Thread). Und genau deswegen würde ich es in keinem Fall über eine FFT machen ;-)
Joe F. schrieb: > Und genau deswegen würde ich es in keinem Fall über eine FFT machen ;-) Ok, aber schlicht am Thema vorbei! Gruß Rainer
Rainer V. schrieb: > Dazu mußt du aber sowieso eine Referenzmessung der "richtigen" Drehzahl > haben! Das kommt drauf an, in welcher Raumrichtung die Drehachse liegt und was man auswertet. Bei einer Achsenlage mit kräftiger Horizontalkomponente wird der durch die Erdbeschleunigung erzeugte Signalanteil genau ein Mal pro Umdrehung umlaufen. Anders sieht es bei Auswertung der Zentrifugalbeschleunigung aus. Da wird man auf jeden Fall eine Kalibrierung brauchen.
Joe F. schrieb : > Indem du deinem Mikrocontroller einen gleitenden Mittelwert > https://de.wikipedia.org/wiki/Gleitender_Mittelwert > > und einen Hochpass-Filter "beibringst": Vielen Dank das hilft mir schon weiter :) Rainer V. schrieb: > Hallo, ich wage jetzt mal wieder eine der "dummen" Fragen. Ist > Drehzahlmessung einer Achse mit einer Beschleunigungssensor-Platine > nicht der falsche Ansatz? Die Frage ist sehr berechtigt. Ich weiß es würde einfacher gehen es optisch oder mit Hallsensor zu lösen - aber dabei braucht man ja immer einen Aufbau auf der gegenseitigen nicht rotierenden Seite. Ich möchte einfach ausprobieren, ob es auch ohne "Gegenseite" funktioniert. Ich fand die Vorstellung gut, dass man eine solche Platine (wenn es denn funktioniert ;) ) einfach auf eine beliebige Welle packen kann, um die Drehzahl zu messen. Rainer V. schrieb: > Und wie bekommst du überhaupt die Daten von > dem Platinchen in den Auswerterechner?? Die Auswertung soll auf dem Mikrocontroller erfolgen. Die Daten sendet der Mikrocontroller dann über Bluetooth Low Energy. Die oben genannten CSV-Daten hab ich zu Testzwecken mit dem Mikrocontroller auf eine SD-Karte geschrieben. Rainer V. schrieb : > Und die Auswertung würde ich erst einmal mit > einer FFT machen. Dazu mußt du aber sowieso eine Referenzmessung der > "richtigen" Drehzahl haben! Danke dir für deine Tipps :) Wolfgang schrieb : > Das kommt drauf an, in welcher Raumrichtung die Drehachse liegt und was > man auswertet Ich kann mir das bildlich gerade nicht richtig vorstellen, aber ich glaube ich gucke mir nochmal Videos zum Thema Zentrifugalkraft usw. an. Danke dir :)
Matze R. schrieb: > aber dabei braucht man ja immer > einen Aufbau auf der gegenseitigen nicht rotierenden Seite. Ich möchte > einfach ausprobieren, ob es auch ohne "Gegenseite" funktioniert. Also sorry, das erschließt sich mir jetzt mal gar nicht. Du bist doch nicht im Weltraum???
Rainer V. schrieb : > Also sorry, das erschließt sich mir jetzt mal gar nicht. Du bist doch > nicht im Weltraum??? Okay ich hab vielleicht etwas unklar beschrieben was ich meine. Ich probiere es nochmal anhand eines Beispiels. Beim Fahrrad Tachometer hast du ja an den Speichen des Rads einen Magneten, der mit rotiert. Am Rauchrohr der Fahrradgabel hat man dann den Sensor, der quasi zählt wie oft der Magnet an Ihm vorbeifährt (das war das was ich mit "Gegenseite" meinte). So könnte ich es natürlich auch machen, aber dann bräuchte ich ja irgendeine Einheit außen an der Welle, die sich nicht mitdreht. Und ich wollte herausfinden, ob es nicht auch eine Möglichkeit gibt etwas auf einer Welle zu installieren, was mir ohne "Gegenseite" verrät wie schnell sich die Welle dreht. Und so bin ich auf Beschleunigungssensoren gekommen.
nun gut...nehmen wir also an, dass du deine Daten per Bluetooth zum "Rechner" bekommst. Zu allererst brauchst du auf jeden Fall die "richtige" Drehzahl. Dann kann man versuchen, diese aus deinen Daten "herauszusuchen" . Das erfordert ganz sicher jede Menge Meßreihen, die bearbeitet werden müssen. Bist du denn sicher, dass deine "Übungsdaten" überhaupt repräsentativ sind? Rein theoretisch reicht es ja, dass du dich mit "Korrelationen" befasst. Da gibts genügend Literatur. Viel Spass jedenfalls, Rainer
Matze R. schrieb: > Ich kann mir das bildlich gerade nicht richtig vorstellen, aber ich > glaube ich gucke mir nochmal Videos zum Thema Zentrifugalkraft usw. an. > Danke dir :) Die 'Wellen' in deiner Messung kommen nicht von der Zentrifugalkraft. Sie sind der Winkel, in dem die Erdbeschleunigung auf den Sensor wirkt. Die Amplitude der Welle ist also immer gleich. Nur die Frequenz ändert sich. Ist die Rotationseben parallel zur Erdoberfläche, dann siehst du gar keine Welle mehr, da die Gravitation immer im gleichen Winkel auf den Sensor wirkt. Du siehst eine gerade Linie, deren Offset die Zentrifugalbeschleunigung darstellt wenn der Sensor exzentrisch montiert ist. Ist er exakt zentrisch montiert, solltest du gar nichts mehr sehen. Außer Vibrationen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.