www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Muster suchen und Abweichung erkennen


Autor: Marko (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Christoph Kessler (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Marko (Gast)
Datum:

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

Autor: Marko (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Frank (Gast)
Datum:

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

Autor: Wolfgang Horn (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: hans dieter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Marko (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.