mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP Decimator-Schaltung für Puls-Datenstrom


Autor: Hi-Tech-Progger S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe einen MEMS-Drucksensor, der als Schwingungsermittler arbeitet 
und sowas ähnliches ist, wie ein Mikrofon für Körperschwingung.

Der gibt ein moduliertes Signal aus Nullen und Einsen ab, das im Mittel 
das analoge Signal darstellt. Quelle ist sicher ein 
Sigmadeltademodulator, nehme Ich an.

Wir filtern das analog und sampelen es, wollen es aber nun digital 
verarbeiten. Ich brauche somit eine kleine Schaltung, die das 
einstellbar in digitale Daten wandelt.  Daten wären im Bereich 
100...500kHz.

Ich wollte eigentlich einen DSP vermeiden. Kriegt man sowas als fertigen 
Chip?

Autor: Hi-Tech-Progger S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Noch als Info: Der Filter ist analog und mithilfe von ordentlich 
OP-Leistung recht störsicher gebaut und daher platzfressend. Er soll nun 
zusammen mit dem AD-Wandler aus Platzgründen wegfallen. Die Lösung muss 
also im wörtlichen Sinne "klein" sein. Am Besten ein kleiner Käfer, der 
das Signal direkt als serielles Datenwort an eine andere Baugruppe 
schickt. Datenrate wäre 1MHz fast I2C.

Autor: Dergute Weka (derguteweka)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Moin,

Als fertigen Chip wuerd's mich wundern, wenns so was gaeb'. Fuer 'nen 
richtigen DSP schaetz' ich's mal als zu popelig ein. Vielleicht reicht 
sogar irgendein PIC oder AVR oder sowas - kommt halt drauf an, wie hoch 
jetzt genau die Datenraten sein muessen, wie die Filterei aussehen muss, 
die genauen Timings der Interfaces...

Gruss
WK

Autor: Joe F. (easylife)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was für ein Signal kommt aus dem Sensor denn raus? PDM?
Dann könnte dir der ADAU7002 helfen es in I2S umzuwandeln.

Autor: Kritiker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Edi. M. (Firma: Industrie 1.0) (elektromeister)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bevor der TE die Frage nach der exakten Signalform nicht beantwortet, 
wird ihm wohl kaum jemand helfen können. Dezimator-Schaltungen gibt es 
viele, da kommt es auf das Frequenzverhaltnis an. Im einfachsten Fall 
ist es ein gleitender Mittelwert über eine festzulegende Anzahl von 
Samples.

Bei 500kHz und Schwingungen im Tonbereich, z.B. 32.

Autor: Hi-Tech-Progger S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Edi, wie schon geschrieben ist es ein Puls-Datenstrom.
Gleitender Mittelwert scheint mir etwas zu einfach.
Habe mich inzwischen schlau gemacht:

Zur Auswahl stehen SINC und FIR-Filter mit bandbegrenzender Kennlinie.

Autor: Joe F. (easylife)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Reinhard S. schrieb:
> wie schon geschrieben ist es ein Puls-Datenstrom.

Wie noch nicht geschrieben:
WAS für ein Puls-Datenstrom? PDM? PWM?
Hast du dir den ADAU7002 mal angeguckt?

Autor: Dergute Weka (derguteweka)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Reinhard S. schrieb:
> Habe mich inzwischen schlau gemacht:
>
> Zur Auswahl stehen SINC und FIR-Filter mit bandbegrenzender Kennlinie.

Na also, dann nimm die doch. fertsch.

SCNR,
WK

Autor: Hi-Tech-Progger S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Joe: Es ist ein PDM.

@WEKA: Die Frage ist auch so ein bischen, wo hinein Ich die Filter baue. 
Der kleinste PIC den Ich mir jetzt ausgekuckt habe, dürfte etwas mickrig 
sein, um die Bandbreite hinzubekommen und die Filter zu beherrbergen.

Autor: Hi-Tech-Progger S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach so: Zur anderen Frage: Der Adu ist leider keine Option, wird dann 
zuviel und Ich müsste IIS noch dekodieren.

Autor: Dennis R. (dennis_r93)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wäre es eine Idee den Dateneingang einfach an das Enable Signal eines 
Timer zu legen?
Und ein zweiter Timer gibt ein Interrupt wann das Signal ausgelesen 
werden soll.

Der STM32F0 käm für dich in frage. Ich habe es zwar nicht selber 
probiert, aber so wie ich das Manual lese ist das der Gated Mode.

Reference manual RM0091, Stichwort: Gated Mode

Autor: Hi-Tech-Progger S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie werte Ich das dann aus?

Autor: Joe F. (easylife)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Reinhard S. schrieb:
> Ach so: Zur anderen Frage: Der Adu ist leider keine Option, wird dann
> zuviel und Ich müsste IIS noch dekodieren.

Du suchst nach einem fertigen IC, und der ADAU7002 ist dann "zuviel"?
Verstehe ich nicht.
I2S Interfaces haben heute übrigens sehr viele Mikrocontroller in 
Hardware an Board, decodieren musst du also nichts.
Im Zweifel kann auch ein SPI Interface zum einlesen benutzt werden.
Welchen Controller benutzt du denn?

Autor: Dergute Weka (derguteweka)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin,

Reinhard S. schrieb:
> @WEKA: Die Frage ist auch so ein bischen, wo hinein Ich die Filter baue.
> Der kleinste PIC den Ich mir jetzt ausgekuckt habe, dürfte etwas mickrig
> sein, um die Bandbreite hinzubekommen und die Filter zu beherrbergen.

Ja vielleicht ist's etwas mickrig, vielleicht auch nicht. Vielleicht 
gehts aber mit dem 4. kleinsten PIC, vielleicht brauchts auch einen 
Cluster aus 255 Raspies um die Anbindung der Filter an die Datenbank in 
Java realisieren zu koennen ;-)

Das ist schwierig zu beurteilen, wenn fast alle 
Eingangs/Ausgangsparameter wie: Vorhandene/Benoetigte Signale und ihr 
Timing, Bitbreiten an Ein- und Ausgang, jeweilige Abtastfrequenz an Ein- 
und Ausgang, Max. Ripple im Durchlassbereich, min. Sperrdaempfung, 
Frequenz am Ende des Durchlassbereichs, Frequenz am Anfang des 
Sperrbereichs streng geheim sind...
Da ist's erstmal voellig wumpe, ob FIR, SINC, oder Melitta 1x4.


Gruss
WK

Autor: Joe F. (easylife)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Reinhard S. schrieb:
> Der kleinste PIC den Ich mir jetzt ausgekuckt habe, dürfte etwas mickrig
> sein

Dann nimm einfach das etwas bessere Modell. PIC32 hat I2S.

http://ww1.microchip.com/downloads/en/AppNotes/01422A.pdf

Kosten für den PIC 2-3 EUR, ADAU7002 1 EUR, Softwareentwicklung 
(Decimator) 0 EUR (nicht nötig).

: Bearbeitet durch User
Autor: Oli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dergute W. schrieb:
> Da ist's erstmal voellig wumpe, ob FIR, SINC, oder Melitta 1x4.
Also Melitta ist eigentlich generell zu empfehlen. Den haben wir im Büro 
regelmässig im Einsatz.

Ich werfe noch einen CIC hinein:
Beitrag "CIC pruning (Bitbreitenverkleinerung)"

Autor: Jürgen Schuhmacher (engineer) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nebst der Thematik der Vorgabe für Passband-Stoppband-Dämpfung wäre 
vorab noch was anderes zu klären:

Die entscheidende Frage hier ist, ob der Schallwandler mit einem eigenen 
Takt läuft, dieser fix ist und auch zur Verfügung steht, bzw sogar 
vorgegeben werden kann oder ob etwa das Signal selbstständig schwingt 
und damit eine variable Periode ohne bekannte zeitliche Auflösung 
vorliegt. In diesem Fall wird die Auswertung nämlich aufwändig!

Die "500kHz" hören sich für mich nämlich etwas verdächtig an. Nicht, 
dass das ein selbstschwingender Oszillator ist.

Nur dann, wenn der Takt von Außen kommen darf, könnte man einen 
klassischen Filter nehmen und direkt dezimieren. Den o.g. PDM-Chip "ADU" 
wiederum könnte man dann nehmen, wenn es gelänge, ihn entsprechend zu 
takten, um auf eine entsprechende Audiofrequenz zu kommen. Ich bin nicht 
sicher, ob der auf jeder Grundfrequenz läuft. Meistens haben die eine 
recht stabile PLL mit engem Frequenzkompensationsbereich drin.

Ansonsten ist das eher was für einen kleinen FPGA.

Die Dezimation an sich ist einfach, wenn wie angenommen ein direkter 
Bezug zwischen der eingehenden und ausgehenden Frequenz besteht.
Ob ein CIC da taugt, müsste man aber genauer betrachten. Was hat denn 
der Wandler für einen akustische Bandbreite?

Autor: Detlef _a (detlef_a)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich hatte mit diesem Beispielcode ein Mikrofon, das PDM macht, mit ner 
I2S Schnittstelle von nem STM32F4 verheiratet:

Beitrag "Hook up a MEMS microphone to the I2S of a Cortex M4"

Dieser Bitstrom kam mit 2.5MHz. Ich brauche von dem nur eine Frequenz 
und mache darauf nen Goertzel. Man kann aber auch beliebige andere 
Filter, CIC FIR oder was auch immer drauf laufen lassen.

Cheers
Detlef

Autor: Jürgen Schuhmacher (engineer) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das erfordert dann aber, dass seine Anordnung diese Frequenz auch fix 
bringt:

Ein Beispiel hatten wir hier schon mal:
Beitrag "Re: MEMS Ultraschallmikro mit PDM"

Bezogen auf die 500kHz wären das dann 1/6 der Grenzfrequenz bzw eine 
geringere S/N.

Autor: Hi-Tech-Progger S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sodele, frisch aus dem Urlaub zurück geht es morgen ans weitere 
Umsetzen.

Wegen der Fragestellung nochmal die Fakten:

Der Drucksensor ist neu und hat nur ein "preliminary" Datenblatt. Er 
wird speziell gefertigt und ist für Analogauswertung ausgelegt.

Die Angaben sind so, dass eine "Pulsmodulation" (nicht 
"Pulsdichtemodulation" obwohl es das wohl ist) gemacht wird, die das 
Analogsignal herstellt. Vom Hersteller wird gesagt, dass man das sicher 
auch digital auswerten kann, wenn die Flanken gemessen werden.

Als Filter ist ein Tiefpass mit 3kHz Eckfrequenz eingesetzt, Steilheit 
an die 40dB/Dekade. Die Pulsfrequenz variiert zwischen 100kHz und 
500kHz.

Eigentlich könnte müsste ICh doch nur die Periode messen und auswerten?

Autor: Hi-Tech-Progger S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Neue Werte von heute:

Die minimale Pulslänge wäre 2,1 us und müsste sicher mit einem Faktor 
10.000 gemessen werden. Geht das mit FPGAs:

Beitrag "Maximale Abtastrate mit FPGAs"

Autor: Joe F. (easylife)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Reinhard S. schrieb:
> Die minimale Pulslänge wäre 2,1 us und müsste sicher mit einem Faktor
> 10.000 gemessen werden.

Warum das denn? 2,1us sind einfach 480 KHz.
Dazu braucht man keinen FPGA.

Kannst du mal das Datenblatt des Sensors verlinken bitte?

Autor: Jürgen Schuhmacher (engineer) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Frage ist, wie genau diese Mikrosekunden gemessen werden müssen. Mit 
Faktor 10000 wird sportlich.

Autor: Hi-Tech-Progger S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit einem Gigaherz-Frequenzmessgerät in Hardware bekomme Ich 
An/Aus-Zeiten für das Signal zwischen 500 und maximal 5.000 zwischen 
zwei Flanken und ungefähr das Doppelte für die Periode.

Beitrag "Re: Maximale Abtastrate mit FPGAs"

Autor: Joe F. (easylife)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Reinhard S. schrieb:
> 500 und maximal 5.000

Einheit?

PDM heisst Puls- Dichte. D.h. ein einzelner Puls ist immer gleich 
breit.
Wenn mehrere Pulse direkt aneinander "kleben" sieht es aus wie ein 
breiterer Puls.
Man muss also die Clock-Frequenz (die ja auch als Signal vorhanden ist) 
kennen, und mit dieser Frequenz die Pulse sampeln. Oversampling ist 
nicht nötig.

Bitte kläre uns doch endlich mal auf, um welchen Sensor (Hersteller/Typ) 
es geht. Aus dem Datenblatt kann man diese Informationen sofort 
herauslesen.

: Bearbeitet durch User
Autor: Hi-Tech-Progger S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Sensor ist nicht im Netz, de keine Katalogware und das Datenblatt 
sehr simpel und auch nicht versendbar. Ich habe momentan nur einen 
Prototypen.

Es kann sein, dass es keine PDM ist, das war nun meine Vermutung.

Die Pulslängen und -abstände stehen in keinem Zusammenhang und haben 
auch keinen Takt. Der Modulator ist frei laufend und gibt das analoge 
Signal digital aus. Die Pulsbreiten können quasi jeden Wert annehmen. 
Gedacht ist es, wie schon gesagt, digital über eine große Distanz zu 
übertragen, es gfs zu refreshen und dort einen analogen Filter 
dranzuhängen. Wir wollen jetzt klein und kompakt im Gerät machen, 
deshalb muss es klein sein.

Als Beispiel finde Ich z.B. die Pulslängen

3222 ns
3113 ns
2973 ns
...
jeweils gemessen mit einem Frequenz-Perioden-Zähler auf 1ns genau. Mehr 
geht hier nicht.

Mit 100MHz Abtastung käme wahrscheinlich raus
3220 ns
3110 ns
3070 ns
also gröber und zu ungenau. Faktor 100 macht zu viele Fehler.

Autor: Joe F. (easylife)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Reinhard S. schrieb:
> Mit 100MHz Abtastung käme wahrscheinlich raus
> 3220 ns
> 3110 ns
> 3070 ns

Im Mittel kommt da schon das Richtige raus.

Miss doch einfach die Puls/Pausenverhältnisse über einen Timer.
Dann ist auch egal, ob es PDM oder PWM ist.

Autor: ElKo (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Tu dir und uns bitte den Gefallen, deine Problemstellung ordentlich zu 
beschreiben. Zeig uns bitte Bilder von dem Signal mit Zeitangaben. Die 
Verändungerung der analogen Größe beeinflusst das digitale Signal Wie? 
Bei minimalem analogen Signal sieht das digitale Signal Wie aus? Und wie 
bei maximalem Signal? Zwei steigende Flanken sind immer Wieviel us 
auseinander? Die fallende Flanke kommt im einen Zeitfenster von 0.5 (?) 
bis 1.5 (?) us danach? Diese Signalform wiederholt sich ( ) nicht / ( ) 
mindestens N mal? Die Steilheit der Flanken liegt bei ca. x GV/s? Wie 
wird das digitale Signal weiterverarbeitet (Art der Filter, ...)? Wie 
hoch muss die digitale Samplerate sein (Wie viele Pulse pro Sekunde 
müssen erfasst werden)?


Wenn du den Abstand zwischen zwei Flanken sehr genau messen möchtest, 
nutzt du ein Time of Flight Messgerät. Deren Auflösung liegt im Bereich 
50 ps (=20 GHz). Damit wirst du aber keine nah aufeinander folgenden 
Pulse abtasten können. Und das ist auch nur dann genau, wenn eine ganze 
Reihe Rahmenbedingungen bei deinem Signal und Takt eingehalten werden.
z.B. http://www.ti.com/lit/ds/symlink/tdc7200.pdf

PS: Das Crossposting ist wenig hilfreich. Es wäre günstig, den Post im 
FPGA-Forum wieder zu schließen. Dort wird gerade zum zweiten Mal 
gerätselt, was das Signal ist.

Autor: Dergute Weka (derguteweka)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Moin,

Ja mei, man muss da halt auch mal sagen koennen: Nein, es geht nicht.

Dass man jetzt nicht unbedingt von irgendwelchen Spezialteilen die 
Datenblaetter hier reinstellen mag, ist glaub' ich doch sehr leicht zu 
verstehen. Wuerd' ich auch nicht tun. Waere wohl auch gegen ein 
wahrscheinlich vorhandenes NDA.

Reinhard S. schrieb:
> Die Pulslängen und -abstände stehen in keinem Zusammenhang und haben
> auch keinen Takt. Der Modulator ist frei laufend und gibt das analoge
> Signal digital aus. Die Pulsbreiten können quasi jeden Wert annehmen.
> Gedacht ist es, wie schon gesagt, digital über eine große Distanz zu
> übertragen, es gfs zu refreshen und dort einen analogen Filter
> dranzuhängen. Wir wollen jetzt klein und kompakt im Gerät machen,
> deshalb muss es klein sein.

Wenn die Pulslaengen und -abstaende voellig frei von 0Hz bis >2MHz sein 
koennen, kann man's nicht ueber eine grosse Distanz (ich geh' mal von 
einigen Lichtjahren aus) uebertragen und es kann auch nicht klein und 
kompakt (also wahrscheinlich Kantenlaengen im Nanometerbereich) sein.
Gehteinfachnicht. Tutmirleid. Fertsch.

SCNR,
WK

Autor: Jürgen Schuhmacher (engineer) Benutzerseite
Datum:

Bewertung
2 lesenswert
nicht lesenswert
ElKo schrieb:
> PS: Das Crossposting ist wenig hilfreich. Es wäre günstig, den Post im
> FPGA-Forum wieder zu schließen. Dort wird gerade zum zweiten Mal
> gerätselt, was das Signal ist.
Das sollte sich rausfinden lassen :-)

Wie es prozessiert werden müsste, hatte Ich weiter oben schon 
geschrieben:

Entweder mit fester Taktfrequenz:
Beitrag "Re: Decimator-Schaltung für Puls-Datenstrom"

Oder mit variabler Frequenz:
Beitrag "Re: Decimator-Schaltung für Puls-Datenstrom"


Reinhard S. schrieb:

> Die Pulslängen und -abstände stehen in keinem Zusammenhang und haben
> auch keinen Takt. Der Modulator ist frei laufend und gibt das analoge
> Signal digital aus.
Aha! Wäre Version 2. Allerdings lese Ich gerade:


> jeweils gemessen mit einem Frequenz-Perioden-Zähler auf 1ns genau.

Ist das Flanke zu Flanke und stetig annehmend / zunehmend:
    -----      -------       --------       ---------
----     ------       -------        -------         --------

oder so,  bei Zunahme lange an, kurz aus und ansonsten umgekehrt:
    ----    -------   -------      --------     ----    ---  --  ---
----    ----       ---        ----         -----    ----   --  --

Das erste wäre eine Frequenzmodulation, das zweite eine 
Frequenz-Phasenmodulation wie bei PDM. Bei der PM müsstest Integrieren, 
bei der FM je nach Schaltungsprinzip gfs sogar Differenzieren. Ich hatte 
mal einen Durchflusssensor, der funktionierte wie ein VCO, allerdings 
war f = k * U*U.

Auf welchen Flanken wurde gemessen?

Autor: Jürgen Schuhmacher (engineer) Benutzerseite
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Wieder ist mir einer zuvorgekommen, beim Schreiben :-)

Dergute W. schrieb:
> Wenn die Pulslaengen und -abstaende voellig frei von 0Hz bis >2MHz sein
> koennen
Eigentlich führt es nur zu einem Rauschen und wenn das Signal analog 
gewandelt ja genau genug ist, wird sich das auch digital auch machen 
lassen. Man darf halt nicht nur von Flanke zu Flanke messen, sondern 
muss mehrere nehmen und den integrierenden Zähler dividieren. Bei der 
Messung eines sehr schnellen Signals ist das eigentlich immer so.

Autor: Joe F. (easylife)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jürgen S. schrieb:
> FM

fällt wohl aus, wenn man es durch einen analogen Filter (vermutlich RC) 
integrieren kann (-> Eingangspost).
Aber auch ich empfinde den Spannungsbogen langsam für überspannt und ins 
Langweilige abdriftend.

Dergute W. schrieb:
> Waere wohl auch gegen ein
> wahrscheinlich vorhandenes NDA.

Oder spricht einfach für einen sauschlechten Sensor.
Wenn man einen einfachen Beschleunigungssensor mit GHz abtasten muss 
stimmt doch irgendwie was nicht (mit dem Sensor oder den Anforderungen).

: Bearbeitet durch User
Autor: Edi offline (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Die dezimation ist am Ende komplett unabhängig von der Art der 
Datengewinnung. Das lässt sich auch total verrauscht noch gut filtern.

Autor: Jürgen Schuhmacher (engineer) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Joe F. schrieb:
> Jürgen S. schrieb:
>> FM
>
> fällt wohl aus, wenn man es durch einen analogen Filter (vermutlich RC)
> integrieren kann (-> Eingangspost).
Das ist auch mein Verständnisproblem :-)

> Wenn man einen einfachen Beschleunigungssensor mit GHz abtasten muss
Ich glaube eher, dass es ein sehr preiswertes System ist, das eben nur 
analog kann, sonst hätte es wahrscheinlich einen digitalen Ausgang.

Gleichwohl kann man den sicher realisieren, nur eben nicht so simpel mit 
dem direkten Ausmessen der Perioden.

Autor: Hi-Tech-Progger S. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich hänge immer noch an der Auswertung des Sensors:

Der einfache Mittelwert bringt bereits ein logisch sinnvolles Signal, 
das aber nicht dem Verlauf der Erschütterung entspricht und scheinbar 
noch invertiert werden muss, da es sich ja  um gemessene Perioden 
handelt. Die Werte wechseln auch wie bei einer PWM, es ist aber keine 
normale PWM, weil das Integral nicht stimmt. Ich habe zur Demonstration 
das Signal wie bei einer PDM integriert (violett) und alternativ 
audaddiert, wenn es wie bei einer PWM >50% sind, also den Mittelwert 
etwa abgezogen (rot).

Mein Problem ist neben der Gewinnung genauer Werte auch das Verständnis, 
wie Ich vom gepulsten Datenstrom in einen Wertebereich gelange. Die 
"normale" Dezimation, wie Ich sie kenne, geht von einer Menge von 0 und 
1 aus, deren Zahl ganzzahlig ist, also in einen Filter geworfen werden 
könnte.

Autor: Joe F. (easylife)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Zeige doch mal das Signal vom Sensor.

Autor: Joe F. (easylife)
Datum:
Angehängte Dateien:

Bewertung
1 lesenswert
nicht lesenswert
Ach lass.
Sieht die Sensorbewegung so aus wie die rote Kurve?

Dein Denkfehler ist, dass du einfach irgendwas aus den gemessenen Zeiten 
rausfiltern willst, ohne das eigentliche Signal zu rekonstruieren.
Es ist wohl eine PWM mit veränderlicher Periodendauer.
Ich habe deine blauen Punkte erstmal sortiert, und angenommen, dass die 
am Anfang unten liegenden Punkte die Dauer der Low-Phase und die oben 
liegenden Punkte die Dauer High-Phasen sind.
Daraus ergibt sich dann eine PWM, die man wunderbar integrieren kann -> 
rotes Signal.

: Bearbeitet durch User
Autor: Joe F. (easylife)
Datum:
Angehängte Dateien:

Bewertung
1 lesenswert
nicht lesenswert
...wobei Integrieren ja Quatsch ist - da käme die zurückgelegte Strecke 
des Sensors raus.
Man muss einfach nur das Verhältnis nehmen t_on/(t_on+t_off).
Zu beachten ist halt, dass die "Samples" zeitlich unterschiedliche 
Abstände haben. Daher kann man das jetzt nicht einfach in einen 
digitalen Filter (z.B. Low-Pass) reinwerfen.
Das muss dann erstmal entsprechend (zeitlich) interpoliert werden.

: Bearbeitet durch User
Autor: Jürgen Schuhmacher (engineer) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
1 lesenswert
nicht lesenswert
Die Auswertung ist so sicher noch nicht der Weissheit letzter Schluss, 
es sei denn, der Sensor speichert die Position in der er sich befindet. 
Das glaube Ich aber nicht, also macht der Offset wohl kaum einen Sinn.
Wie Ich schon vermutet habe, muss das sicher noch differenziert werden. 
Nur so ist zu erklären, dass das Signal durch eine Mittelung stimmt. Es 
würde vielleicht auch helfen, jene wundersame Analogschaltung 
kennenzulernen, die das Signal schon verarbeitet.

Wenn es eine Mittelwertbildung über einen Tiefpass ist, müsste der 
Mittelwert wie bei der mathematischen Bildung weglaufen. Dann würde 
Deine zweite Kurve stimmen, allerdings ohne, dass Du den Mittelwert 
abziehst.
Da das aber nicht das analoge Signal sein kann, ist der Sensor 
garantiert mit einem Bandpass ausgewertet, nimmt also den Gleichanteil 
raus.
Ergo brauchst Du einen Bandpass, also einen Differenziator und dann 
einen Integrator. Die Idee, den Mittelwert abzuziehen, ist theoretisch 
richtig, praktisch aber nicht besonders handlich, weil Du den messen 
müsstest.
Daher würde Ich erst integrieren und dann differenzieren. Das beseitigt 
das Rauschen und gfs auch schon Dein Problem mit der begrenzten 
Samplegenauigkeit. Hab das mal mit dem Bild von Joe optisch gemacht und 
siehe da: Blubb, eine Schwingung, wie sie bei dem Verrücken eines 
Gegenstandes entsteht.

Für die Berechnung selbst darf natürlich keine 0 und 1 in den Dezimator 
geschoben werden sondern z.B. +1 / und -1 sonst rennt das Ding in die 
Wiese. Für einen IIR-Filter, der den TP+HP schon integriert hat nimmt 
man z.B. -32767 und +32767 als Eingangswerte.

Dann kommt aber meines Erachtens noch ein Schritt: Eine Inverse Faltung 
des schwingenden Ausgangssignals mit der Ü-Funktion des Sensors, weil 
dieses ja eine Impulsantwort darstellt und man die Charakteristik des 
Sensors, also dessen mechanische Trägheit rausrechnen werden will.
Heraus käme der reale Impulsverlauf (im Rahmen der Messgenauigkeit und 
Bereichsgrenzen). Gibt dann sowas wie einen verschmierten Diracstoss 
oder beim Verrücken ein Rechteck.

Joe F. schrieb:
> Daher kann man das jetzt nicht einfach in einen
> digitalen Filter (z.B. Low-Pass) reinwerfen.
Eigentlich schon, analog geht es ja auch. Man muss den Filter nur 
nachbauen.

Das Signal kommt mit hoher Wahrscheinlichkeit aus einem 
Delta-Sigma-Modulator, der frei läuft, also eine Kippschaltung, deren 
Ausgang um das analoge Signal pendelt und automatisch 50:50 annimmt, 
wenn das Signal steht. Damit muss es integriert werden, um den Verlauf 
zu rekonstruieren. Das Problem: Diese Schaltungen sind nicht 100% 
symmetrisch und generieren einen Offset, den bei der Rekonstruktion 
mitberücksichtigen muss. Da man ihn aber nicht kennt, muss man ihn 
entweder dynamisch messen, statisch kalibriert wegrechnen, oder eben 
einfach durch einen Hochpass verwerfen.

: Bearbeitet durch User
Autor: Joe F. (easylife)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also bevor ich ein Signal zuerst integriere, um es dann mit einem 
Hochpass wieder abzuleiten, nehme ich lieber direkt das Signal ;-)
Tiefpass mit passender Grenzfrequenz dahinter kann natürlich nicht 
schaden, ausser es muss ungewöhnlich schnell sein.

: Bearbeitet durch User
Autor: Jürgen Schuhmacher (engineer) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Joe F. schrieb:
> Also bevor ich ein Signal zuerst integriere, um es dann mit einem
> Hochpass wieder abzuleiten, nehme ich lieber direkt das Signal

Jain, es kommt darauf an, über welche Bereiche / Frequenzen man 
integriert / differenziert - da kommt dann schon was anderes raus. Die 
Information kommt als moduliertes Signal an, das zudem aufgrund des 
Sampelns noch mit zusätzlichem Phasenrauschen beaufschlagt wird. Das 
will man ja weg haben. Die Integration muss dazu unter Berücksichtigung 
der Abtastfrequenz eine gewisse Zahl von Samples umfassen. um mindestens 
diese HF-Anteile beseitigen zu können, während die Differenziation 
wiederum maximal den Offset eliminiert. Das geht auch mehrstufig und ist 
eigentlich das, was ein CIC üblicherweise tut.

Mit einer Kombination CIC und FIR geht es etwas zielführender:

Als Beispiel mal ein Dreieckssignal mit überlagertem Dreieck auf höherer 
Frequenz. Das ist so etwa das, wie es nach dem ersten Integral aussieht.
Das Ergebnis ist faktisch zweimal integriert und differenziert, das 
erste mal ist es Integral selbst (blau) das zweite mal über 2 Perioden 
-> Mittelwert und dann nochmal differenziert (grün). Man schnippelt sich 
damit quasi das gewünschte Band heraus und kann den Knick im Dreieck 
sehr deutlich erkennen.

Mit einem einzelnen Tiefpass, auch mehrstufig oder einem simplen SINC 
geht das nicht so präzise. Wenn man es richtig macht, kommt man 
besonders auch über die analoge Version drüber.

: Bearbeitet durch User
Autor: Edi. M. (Firma: Industrie 1.0) (elektromeister)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Reinhard S. schrieb:
> Datenrate wäre 1MHz fast I2C.

Mit 1Mbps über I2C kriegt man regelmäßig nur 50%-80% Effizienz hin und 
auch nur, wenn es P2P ist. Sind maximal 50kHz Abtastrate für das 
gesampelte Signal. Reicht das überhaupt?

Autor: Mitleser (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Ihr solltet euch von Reinhart was bezahlen lassen, so wie Ihr euch in 
die Lösung seiner Hausaufgabe reinkniet.
Die einzig zweckmäßige Vorgangsweise wäre, dass er einfach seine analoge 
Schaltung skizziert und diese übersetzt.

Autor: H. S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Mühen in die Runde.

Wir habe einen FIR-Filter integiert und bkommen das gewünschte Signal, 
wenn auch mit noch sehr viel Rauschen.


Edi. M. schrieb:
> Reinhard S. schrieb:
>> Datenrate wäre 1MHz fast I2C.
>
> Mit 1Mbps über I2C kriegt man regelmäßig nur 50%-80% Effizienz hin und
> auch nur, wenn es P2P ist. Sind maximal 50kHz Abtastrate für das
> gesampelte Signal. Reicht das überhaupt?

Das würde schon reichen.

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.

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