Forum: Mikrocontroller und Digitale Elektronik Muster suchen und Abweichung erkennen


von Marko (Gast)


Lesenswert?

Also ich hab folgendes Problem.
Ich habe Serien von Ereignissen und die treten periodisch
auf (so alle 4-5 Sekunden), wobei die periodendauer
nicht fix ist. Ich möchte nun Ereignisse, die ausserhalb
der Perioden fallen zuverlässig detektieren,
wobei der Impuls selbst gerade mal 1/20 Sekunde lang ist.
Ich brauche also nach Shannon ne Abtastrate von
200 Hz wenn ich richtig liege.
Nun kommen die Daten aber kontinuierlich rein (Byte) und
müssten dann ja ins ram, das durchgeschoben werden muß und
dann will ich noch die periodendauer rausholen ...
Ich bin am zweifeln ob das mein Mega32 kann.
Hat jemand von Euch schonmal sowas gecodet?

von Christoph Kessler (Gast)


Lesenswert?

heißt das, es fallen Impulse aus, oder es gibt zusätzliche Impulse
außerhalb des 4-5 Sekunden-Rasters, zwischen den regulären?

von Marko (Gast)


Lesenswert?

man kann es sich in etwa wie die extrasystole beim herzschlag
vorstellen. ... hmmm, ob n avr n herzsprung-russel-diagramm
auswerten kann?

von Marko (Gast)


Lesenswert?

so in etwa solls gehen :
1=impuls, 0 kein impuls

1000000000000001 : erste periode
100000000000001: zweite periode
10000000000000001: dritte periode
1000000100000001: ALARM

oder

1000001: erste periode
10000001: zweite periode
100001: dritte periode
100101: ALARM

von Frank (Gast)


Lesenswert?

Was spricht dagegen, die Zeit zwischen zwei Impulsen zu messen (Timer)
und wenn die nicht weit genug auseinanderliegen, gibts nen Alarm.

von Wolfgang Horn (Gast)


Lesenswert?

Hi, Marko,

"Also ich hab folgendes Problem."
Und ich habe beim Lesen ein Verständnisproblem:
1." Ich habe Serien von Ereignissen und die treten periodisch
auf (so alle 4-5 Sekunden), wobei die periodendauer
nicht fix ist."
2." Ich möchte nun Ereignisse, die ausserhalb
der Perioden fallen zuverlässig detektieren,"

Die Zuverlässigkeit der Detektion hängt direkt von der Zuverlässigkeit
in der Prognose der Ereignisse ab.
Aber genau die erklärst Du gleichzeitig als "nicht fix".

Du benötigst eine eindeutige Größe, welche die gewünschten Signale von
den uninteressanten unterscheidet.
"Nach Gefühl" scheinst Du diese ja zu haben - jetzt brauchst Du es
nur analysieren und in einen Algorithmus zur Detektion zu wandeln.

Zur Pulsperiode und der Leistungsfähigkeit des Atmega16.
Wenn die Pulse so selten sind, dann kannst Du sie mit dem "Input
Capture" abfangen und den Zeitpunkt des Eintreffens registrieren, und
pro Ereignis wäre eine long-variable schon reichlich.

Die Auswertung der Zeitpunkte mit Mathematik, das stelle ich mir als
Fleißarbeit vor, aber als machbar - wenn es ein eindeutiges
Unterscheidungskriterium gibt.

Ciao
Wolfgang Horn

von hans dieter (Gast)


Lesenswert?

dito wolfgang
input capture mit ner einfachen isr:
flanken-trigger an input capture

1. lese zeit aus capture register
2. subtrahiere vom aktuellen wert den letzten
3. wenn differenz kleiner als schwellwert, dann alarm
4. speichere aktuellen wert in puffer (ersetz den letzten aus 2.)

evtl. musst du mit den differenzen einen mittelwert bilden und dann den
mittelwert als ausgangspunkt für eine dynamische schwelle nehmen

von Marko (Gast)


Lesenswert?

hmmm ... grübel

@frank,  timer ist schon klar, nur ist die Periodendauer halt
variabel

@hans dieter: Der Rechenaufwand für die Zeitvergleiche
ist nicht gerade gering.

Ich hab mir folgendes überlegt.
Ich nehm nen Timer, der inkrementiert und ne Matrix von 6-8
byte-variablen auf 4-5 stufen.
ein Ereigniss setzt den Pointer zurück und lässt den
"Datensatzpinter" eins hoch
wenn ich 3-4 zyklen ohne Zwischenereigniss hab
muß ich nur noch die Datensätze per oder übereinander legen
und schon hab ich ne Schablone.
Ereignisse, die nicht in die Schablone passen
müsstend dann den Alarm auslösen.

1000000000000001 : erste periode
100000000000001: zweite periode
10000000000000001: dritte periode
 oderverknüpft:
10000000000000111 = Schablone

1000000100000001: vierte Periode
wenn ich nun die neue Periode mit der Schablone per Und vergleiche
1000000000000001
und dieses Zwischenergebniss wieder mit der ursprünglichen 4. Periode
sind die Ungleich, der Alarm muß ausgelöst werden.

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.