Forum: Mikrocontroller und Digitale Elektronik Mustererkennung (Segmente) und Korrelation


von zugang (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Leute,

ich bin gerade dabei in meinem Praktikum eine Motorsteuerung zu 
untersuchen. Bzw. um genauer zu sein: Das Steuersignal des Motors.

Ziel des Praktikums ist es anhand des Steuersignals zu erkennen welcher 
Motor verbaut ist und in welcher Phase sich dieser befindet (Die Motoren 
haben immer bestimmte Drehzahl Abläufe. Das ganze wird in der 
Automatisierungstechnik eingesetzt). Eine typische Kurve mit den 
einzelnen Segmenten habe ich euch angehängt.

Kurzum: Wir möchten folgendes Ermitteln:
1.) In welcher Phase befindet sich die Motorsteuerung. (Welches Segment)
2.) Welche Motorsteuerung wird angewendet

Zu Punkt 1.)
Um zu wissen in welcher Phase (Segment) wir uns befinden, benötigen wir 
nun einen Algorithmus, der verschiedene Segmente innerhalb des Signals 
erkennt (Bild 2 Messkurve_segmente). Dann können wir viele Motordaten 
rein setzen und hoffentlich die verschiedenen Muster erkennen.

Frage: Welcher Algorithmus kann sowas?

Wir haben uns schon ein bisschen mit Algorithmen auseinander gesetzt.
Zum erlernen der verschiedenen Segmente sind wir auf die 
Karhunen-Loeve-Transformation (KLT) gestoßen.

Frage: Ist die Detektion verschiedener Segmente mit der KLT möglich?

Zu Punkt 2.)
Im zweiten Schritt wollen wir anhand der bekannten Segmente, die unsere 
Motoren haben, erkennen welcher Motor eingesetzt wird. Da dachten wir an 
die Korrelation. (Wir setzen die verschiedenen Segmente zusammen und 
schauen in Echtzeit welches Segment dazu passt). Dabei wissen wir nicht 
in welchem Segment sich der echte Motor befindet.

Frage: Wenn ich nun die Korrelation mache, bekomme ich irgendwelche 
Zahlenwerte. Wie kann ich das ganze normieren? Sodass bei identischem 
Signal (zweimal die gleiche Messkurve) am optimalen Punkt einen 1 
herauskommt? Ich bekomme immer Werte mit 20000

Frage: Gibt es elegantere Methoden als die Korrelation um herauszufinden 
ob es


Euch schon mal vielen Dank für eure Unterstützung!
Ich hoffe ich konnte mein Problem einigermaßen veranschaulichen.
Falls nicht, fragt gerne nochmal nach.

Viele Grüße,
Rainer

von zugang (Gast)


Lesenswert?

sorry...oben ist mir ausversehen der Satz abgehakt worden...

Hier nochmal die letzte Frage:

Frage: Gibt es elegantere Methoden als die Korrelation um herauszufinden
ob es sich um dieselbe Segment-Reihenfolge handelt?

Danke euch und viele Grüße,
Rainer

von Sly_marbo (Gast)


Lesenswert?

Bei KLT muss ich passen, aber die Korrelation setzt definitiv eine 
Normierung des Timings der einzelnen Segmente voraus. Ich würde das 
ganze anders angehen: Die Signale mehrfach Differenzieren, dannach 
können mithilfe von Nullstellen in den Verschiedenen abgeleiteten 
Signale die Segmente erkannt werden. Dannach die Segmentbereiche 3 Werte 
zuweisen: Konstant [Negativ/Positiv], Konstant Null, X [Alles andere]. 
Wenn du das dann Tabellarisch vergleichst müsste man die verschiedenen 
abläufe gut zurotnen können.

Signal:  X | + | + | X | 0 |
1. Abl:  X | 0 | 0 | X | 0 |
2. Abl:  + | 0 | 0 | - | 0 |

So als Beispiel für dein Signal. Vllt hilft dir das als Ansatz.

von zugang (Gast)


Lesenswert?

Hi Sly_marbo,

danke für den Ansatz. Die Steigung hatten wir auch schon auf dem Schirm.
Wir werden den Ansatz mit nem Python Programm mal noch genauer 
anschauen.

Frage: Wie würde den eine Normierung code-Technisch aussehen?

Etwas so?
y_norm = (y-mean(y))/std(y)

?

von Sly_marbo (Gast)


Lesenswert?

Ja das kann man so machen. Ich denke aber nicht das die Beträge deiner 
Y-Werte das Problem bei der Korrelierung sind. Vielmehr musst du die 
Längen der einzelnen Segmente vergleichbar (-Normiert) bekommen.

von zugang (Gast)


Lesenswert?

irgendwie klappt das ganze mit der Korrelation nicht.

Ich hab jetzt mal in einem ersten Versuch probiert das gesamte Signal 
(inkl. aller Segmente) mit demselben Signal zu korrelieren und hab 
selbst bei der Normierung mit y=(y-mean(y))/std(y) keine 1 als Maximum 
erhalten sondern eine 2000...weiß jemand was da noch schief laufen 
könnte?

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
Noch kein Account? Hier anmelden.