Forum: Mikrocontroller und Digitale Elektronik Atmega328P ADC Einhüllende bei periodischen Signalen


von Andre R. (ltisystem)


Angehängte Dateien:

Lesenswert?

Hallöchen,

ich schlage mich jetzt schon ein paar Tage mit dem ADC vom Atmega328p 
rum, welcher in meinem Arduino Nano verbaut ist.

Ich möchte von Kanal A7 und A6 Daten (von Drucksensoren) mit einer 
Sampling Rate von 62.500 Hz (31.250 Hz pro Kanal) abtasten und die 
Messergebnisse "aufmitteln" (mit 310 Werte auf addieren und dann durch 
310 teilen) und sie dann mit 100 Hz per USB (Serial.print) an ein 
LabVIEW Programm schicken. Ich nutze den Autotrigger Modus vom ADC, 
welcher von Timer1 compare match B gesteuert wird. Den Timer nutze ich 
im CTC Modus. In jedem ADC Interrupt (also in der ADC ISR ADC_vect) lese 
ich das ADC register aus und führe einen Kanalwechsel durch.

Soweit so gut. Mit Portmanipulationen und nem Oszi habe ich sowohl die 
Timer Interrupts, als auch die ADC Interrupts gemessen, die hauen genau 
so hin, wie ich sie rechnerisch erwartet habe. Auch die 100Hz Datenrate 
konnte ich mit einem LabVIEW programm messen. Die Live-Anzeige in 
LabVIEW sieht gut aus und macht genau das was ich haben möchte, wenn ich 
an die drucksensoren n bisschen mit ner spritze rum drücke.

Die drucksensoren werden mit den 5V vom arduino betrieben und basieren 
auf dem prinzip von dms und einer halbbrücke. Die referenzspannung für 
den adc kommt von den 3.3V vom arduino, ein entsprechender jumper wurde 
dafür gesetzt. Zwischen drucksensoren und arduino ist noch eine 
verstärkerschaltung um die signale zu konditionieren. Den schaltplan 
füge ich hinzu. Die verstärkung funktioniert gut.

Jetzt habe ich beim ausführlichen Testen der ganzen Geschichte mehrere 
Problemchen. Mein gedanke war dabei, dass ich bestätigen wollte, dass 
bei 100Hz „transmissions rate“ ja 50Hz nach nyquist fehlerfrei abtasten 
lassen….naja das größte problem was mich jetzt stört ist:

1. Wenn ich an die Drucksensoren mittels eines in einer luftdichten Box 
eingebauten Lautsprechers periodische Druckschwankungen gebe (sinus, 
sägezahn) baut mir die Amplitude der gemessenen Signale eine schöne 
Einhüllende mit einer Frequenz von unter 0,3 Hz ein. Die reine 
Signalfrequenz stimmt, die FFT liefert mir ein Peak welcher mit der 
Frequenz übereinstimmt, mit der ich den Lautsprecher ansteure. Wenn ich 
also bspw. den lautsprecher mit 25 Hz treibe, kommt der peak der fft bei 
25hz. bildchen vom Signalverläufen sind im post. Es konnten sowohl das 
Schlauchsystem was die box und die drucksensoren miteinander verbindet, 
als auch die Lautsprecherbox, die Drucksensoren selbst und die 
Verstärkerschaltung 100% ausgeschlossen werden. Im endeffekt habe ich 
den ausgang vom singalgenerator direkt an die analogeingänge des 
arduinos gehangen. Heißt das Problem liegt am/im Arduino. Ich habe 
allerdings keine ahnung woran es noch liegen könnte. Die sensoren und 
die verstärkerschaltung nicht mit dem arduino zu versorgen hat auch 
nichts gebracht. Eine externe referenz auch nicht. Umprogrammierung mit 
der lib-funktion analogRead bringt das gleiche problem. Zum thema 
analoge und digitale masse trennen, weiß ich gerade nicht so richtig wie 
ich ran gehen soll, kann mir aber nicht vorstellen, dass es daran liegt 
(wegen test signal generator direkt an arduino). Das system auf einen 
kanal umgebaut, also ohne kanalwechsel, bringt immer noch die 
„langsamen“ oberwellen dazu. So langsam gehen mir die ideen aus.

Dann habe ich noch eine allgemeine frage zum adc: wenn der interrupt vom 
ADC (ADC_vect) ausgelöst wurde, heißt das ja, dass eine wandlung 
durchgeführt wurde. In datenblättern und foren liest man, dass man nach 
nem kanal oder ref wechsel die erste messung verwefen soll. Kann ich das 
im autotrigger mode erreichen, in dem ich der ISR vom ADC_vect einfach 
ein ADCSRA |= (1<<ADSC) rein schreibe? Habs im code mt nem kommentar 
gekennzeichnet.

Es wäre super, wenn jemand noch ein ähnliches problem oder ideen hat, 
woran das liegen könnte.

grüße



PS: die diagrammname lehnen sich an die signalfrequenz an: 10.png = 
10hz, 125.png = 12,5 hz, 25.png = 25hz usw...

von Pandur S. (jetztnicht)


Lesenswert?

Vergiss die 310 Werte, das ist quatsch.

Schau dir die Story an :
 https://www.ibrtses.com/embedded/exponential.html
Und mittle ueber 256. Mit einer einzelnen Speicherstelle.

Die Diagraemmchen zeigen Sampling interferenzen. Eine Frage des 
Reinzoomens in das Oszilloskop. Eine Frage der anzahl Punkte. Allenfalls 
kannst du von 1k auf 10k, oder 100k Punkte pro scan setzen.

von Oliver S. (oliverso)


Lesenswert?

Andre R. schrieb:
> In datenblättern und foren liest man, dass man nach
> nem kanal oder ref wechsel die erste messung verwefen soll.

Der ADC ist dafür gemacht, und so steht’s auch im Datenblatt, daß er 
nach jeder Wandlung auf einen anderen Kanal umschalten kann. Solange 
deine Quelle ausreichend niederimpendant ist, geht das ohne 
dummy-Wandlung.

Zusätzliche Zeiten bzw. verwerfen des nächsten Wandlungsergebnisses 
braucht es beim umschalten von oder auf differentielle Wandlung oder 
Umschaltung der Referenz.

Das verwerfen der nächsten Wandlung erreicht man in der Regel durch 
verwerfen des Ergebnisses.

Oliver

von Andre R. (ltisystem)


Angehängte Dateien:

Lesenswert?

Zitronen F. schrieb:
> Die Diagraemmchen zeigen Sampling interferenzen. Eine Frage des
> Reinzoomens in das Oszilloskop. Eine Frage der anzahl Punkte. Allenfalls
> kannst du von 1k auf 10k, oder 100k Punkte pro scan setzen.

dachte ich anfangs auch aber das ist es nicht. habe im anhang mal 
gezoomte bilder von 25hz und 50hz angehängt.

von Andre R. (ltisystem)


Lesenswert?

Zitronen F. schrieb:
> Schau dir die Story an :
>  https://www.ibrtses.com/embedded/exponential.html
> Und mittle ueber 256. Mit einer einzelnen Speicherstelle.

Alles klar, zieh ich mir mal rein. Hab mir schon iwie gedacht, dass 
dieses averaging iwie nicht so optimal sein kann. danke schon mal!

von Oliver S. (oliverso)


Lesenswert?

Andre R. schrieb:
> Sampling Rate von 62.500 Hz (31.250 Hz pro Kanal) abtasten

Der ADC ist bei 10bit Auflösung für maximal 200khz/13 = 15khz 
spezifiziert.

Oliver

von Andre R. (ltisystem)


Lesenswert?

Oliver S. schrieb:
> Der ADC ist dafür gemacht, und so steht’s auch im Datenblatt, daß er
> nach jeder Wandlung auf einen anderen Kanal umschalten kann. Solange
> deine Quelle ausreichend niederimpendant ist, geht das ohne
> dummy-Wandlung.

Da muss ich nochmal nachfrage: niederimpedant heißt, nen geringen 
innenwiderstand zu haben oder?


Oliver S. schrieb:
> Andre R. schrieb:
>> Sampling Rate von 62.500 Hz (31.250 Hz pro Kanal) abtasten
>
> Der ADC ist bei 10bit Auflösung für maximal 200khz/13 = 15khz
> spezifiziert.
>
> Oliver

Meinst du das deswegen die einhüllende mit so einer morphologie zustande 
kommt? Das zeitliche Timing stimmt ja, der kleine µC schaffts ja von der 
rechenleistung her anscheinend. oder meinst du, das bei dieser 
geschwindigkeit quatsch vom adc raus kommt? aber warum dann nur bei 
periodischen signalen? ich glaubs iwie nicht weil sonst würde er alles 
falsch machen und die tatsache, dass es nur bei periodischen signalen so 
ist, macht mich iwie stutzig und führt mich eher zu falscher 
mittelungstechnik wie der falter meinte oder ne ungünstige 
programmierung oder sowas. oder kannst du deine antwort noch iwie n 
bisschen detailierter erläutern?

grüße

: Bearbeitet durch User
von Andre R. (ltisystem)


Lesenswert?

Zitronen F. schrieb:
> Die Diagraemmchen zeigen Sampling interferenzen. Eine Frage des
> Reinzoomens in das Oszilloskop. Eine Frage der anzahl Punkte. Allenfalls
> kannst du von 1k auf 10k, oder 100k Punkte pro scan setzen.

das is keine Aufnahme von einem oszi, das is mit dem arduino 
aufgenommen, allerdings nur mit einem kanal. werde nochmal den anderen 
dazu zeigen, der ist leicht phasenverschoben! das ganzte wurde mit einem 
labview pogramm aufgezeichnet und dann mit matlab die fft und den plot.

von Achim S. (Gast)


Angehängte Dateien:

Lesenswert?

Andre R. schrieb:
> dachte ich anfangs auch aber das ist es nicht.

Doch, genau das ist es. Schau dir den Zoom deiner 25Hz Messung genau an.

Du hast ein 25Hz-Signal und tastest es mit 100Hz ab. Wenn beide 
Frequenzen exakt und stabil wären, dann würdest du das Signal immer an 
den selben 4 Phasenlagen abgetastet sehen.

Aber entweder die Frequenzen haben nicht exakt ein Verhältnis von 4. 
Oder eine der Frequenzen ist nicht beliebig stabil. Dann "schiebt" die 
Phasenlage der Abtastpunkte während der Messung durch.

Mal triffst du die Kurve genau in den Extremwerten und im Nulldurchgang 
(in deinem 25zoom.png am linken und am rechten Rand, in meiner Simu in 
Extrema.png).

Und ein Weilchen später triffst du den 25Hz Sinus halt grade links und 
rechts von den Extremwerten, so dass es nach einer kleineren Amplitude 
aussieht (in deinem 25zoom.png in der Mitte, in meiner Simu in 
symmetrisch.png).

Genau so müssen die Abtastpunkte aussehen, wenn du sie einfach mit 
Geradenstücken verbindest. Deswegen lässt sich die FFT in deiner 
Auswertung auch nicht irritieren sondern zeigt sauber eine Linie an 
(pluss ein bisschen drumrum, weil du wahrscheinlich bei der FFT an der 
Fensterfunktion gespart hast ;-)

von Oliver S. (oliverso)


Lesenswert?

Andre R. schrieb:
> Das zeitliche Timing stimmt ja, der kleine µC schaffts ja von der
> rechenleistung her anscheinend. oder meinst du, das bei dieser
> geschwindigkeit quatsch vom adc raus kommt?

Eine ADC-Wandling dauert immer 13 Takte (nach der allerersten), das 
Ergebnis wir allerdings jenseits der maximal spezifizierten Frequenz 
immer ungenauer. Wie viele Bits du bei mehr als dem vierfachen der 
Maximalfrequenz noch sinnvoll nutzen kannst, musst du halt mal 
austesten. Viele werden es nicht mehr sein.

Das zusammen mit dem von Achim gezeigten Zusammenhang wird dein Problem 
sein.

Niederimendant meint, daß deine Quelle ausreichend Strom liefern muß. Im 
Sample-and-Hold- ADC sitzt ein Kondensator, der andauern umgeladen wird.

Näheres dazu siehe Datenblatt.


Oliver

: Bearbeitet durch User
von Andre R. (ltisystem)


Lesenswert?

Achim S. schrieb:
> Doch, genau das ist es. Schau dir den Zoom deiner 25Hz Messung genau an.
>
> Du hast ein 25Hz-Signal und tastest es mit 100Hz ab. Wenn beide
> Frequenzen exakt und stabil wären, dann würdest du das Signal immer an
> den selben 4 Phasenlagen abgetastet sehen.
>
> Aber entweder die Frequenzen haben nicht exakt ein Verhältnis von 4.
> Oder eine der Frequenzen ist nicht beliebig stabil. Dann "schiebt" die
> Phasenlage der Abtastpunkte während der Messung durch.
>
> Mal triffst du die Kurve genau in den Extremwerten und im Nulldurchgang
> (in deinem 25zoom.png am linken und am rechten Rand, in meiner Simu in
> Extrema.png).
>
> Und ein Weilchen später triffst du den 25Hz Sinus halt grade links und
> rechts von den Extremwerten, so dass es nach einer kleineren Amplitude
> aussieht (in deinem 25zoom.png in der Mitte, in meiner Simu in
> symmetrisch.png).

das klingt für mich sehr logisch! die abtastfrequenz variiert quasi, ist 
unstabil, aber das heißt auch, dass sie so zu sagen stabil unstabil ist, 
weil diese oberwele ja immer und immer wieder kommt. also der 
phasenverzug. abhilfe würde jetzt eine verlangsamung der abtastfrequenz 
und somit hoffentlich mehr stabilität bringen? oder hast du noch ne 
andere idee? werde auf jeden fall auch mal andere movin avergaes 
ausprobieren, vllt welche die weniger rechenleistung verbrauchne um so 
mehr stabilität rein zu bekommen.

Achim S. schrieb:
> Genau so müssen die Abtastpunkte aussehen, wenn du sie einfach mit
> Geradenstücken verbindest. Deswegen lässt sich die FFT in deiner
> Auswertung auch nicht irritieren sondern zeigt sauber eine Linie an
> (pluss ein bisschen drumrum, weil du wahrscheinlich bei der FFT an der
> Fensterfunktion gespart hast ;-)

da hast du recht leider recht. ist nur die fft function von matlab (ich 
fühle mich ertappt)

Oliver S. schrieb:
> Eine ADC-Wandling dauert immer 13 Takte (nach der allerersten), das
> Ergebnis wir allerdings jenseits der maximal spezifizierten Frequenz
> immer ungenauer.

Ich glaube sogar es sind laut datenblatt 13.5 :P

von Oliver S. (oliverso)


Lesenswert?

Andre R. schrieb:
> Ich glaube sogar es sind laut datenblatt 13.5 :P

Glauben ist nicht wissen...

Also schau doch nochmal nach.

Oliver

von Andre R. (ltisystem)


Angehängte Dateien:

Lesenswert?

glauben wird zu wissen.

von Oliver S. (oliverso)


Lesenswert?

Stimmt ;)

Da hatte ich überlesen, daß der TO Autotrigger verwendet.

Oliver

von Achim S. (Gast)


Lesenswert?

Andre R. schrieb:
> die abtastfrequenz variiert quasi, ist
> unstabil, aber das heißt auch, dass sie so zu sagen stabil unstabil ist,

Das muss nicht mal sein. Es reicht auch aus, wenn die 25Hz des Signals 
und die 100Hz des der Abtastung nicht die identische Zeitbasis haben.

Dann können die Abweichungen der beiden Frequenzen von ihrem Nomnalwert 
beliebig klein sein: im Lauf der zeit verschiebt sich trotzdem die 
Phasenlage der Abtastpunkte relativ zum gemessenen Signal.

In meiner Simu oben waren z.B. die Zeitbasen zwar identisch, aber um den 
Effekt sichtbar  zu machen haben ich nicht exakt einen Faktor 4 zwischen 
beiden Frequenzen gewählt sondern 4,002.

Andre R. schrieb:
> abhilfe würde jetzt eine verlangsamung der abtastfrequenz
> und somit hoffentlich mehr stabilität bringen?

Was für eine Abhilfe erwartest du? Deine Abtastung ist ja wahrscheinlich 
genau richtig, dich stört nur das unerwartete Aussehen, oder? Das hat 
nur mit deiner Erwartungshaltung zu tun ;-)

Wenn du aus den abgetasteten Werten wieder genau einen 
(kontinuierlichen) Sinus rekonstruieren willst, dann musst du die 
Abtastwerte durch ein Rekonstruktionsfilter schicken, das die 
Abtastwerte entsprechend interpoliert. Oder mehr Abtastpunkte pro 
Signalperiode - dann ist auch das Aussehen der Messpunkte so, wie du es 
erwartest.

von Andre R. (ltisystem)


Lesenswert?

Achim S. schrieb:
> Das muss nicht mal sein. Es reicht auch aus, wenn die 25Hz des Signals
> und die 100Hz des der Abtastung nicht die identische Zeitbasis haben.
>
> Dann können die Abweichungen der beiden Frequenzen von ihrem Nomnalwert
> beliebig klein sein: im Lauf der zeit verschiebt sich trotzdem die
> Phasenlage der Abtastpunkte relativ zum gemessenen Signal.

Also meinst du, dass bspw. der signalgenerator ne zeitbasis mit so und 
so vielen punkten hat und die zeitbasis von meinem messsystem eine 
andere und sich punkte von der einen zwischen zwei punkten der anderen 
befindet und da die ja unterschiedlich "genau" sind, pflanzt sich dann 
diese verschiebung fort...so oder so ähnlich stell ichs mir gerade vor.

aber da ich im endeffekt biosignale messen will, dessen zeitbasis in 
keinem digitalem system übertragbar ist und da höchst wahrscheinlich 
keine streng periodischen signale vorkommen sollte dieser effekt nicht 
weiter stören. hätte halt gerne so das system charakterisiert, aber dann 
muss ich mir wohl was anderes überlegen. ich versuche mal nen biosignal 
nachzubauen und schleuder das mal mit ner bestimmten frequenz drauf, mal 
schauen was passiert.


Achim S. schrieb:
> Was für eine Abhilfe erwartest du? Deine Abtastung ist ja wahrscheinlich
> genau richtig, dich stört nur das unerwartete Aussehen, oder? Das hat
> nur mit deiner Erwartungshaltung zu tun ;-)

Ja, ich erwarte von dem system, dass es einen amplitudenstabilen sinus 
aufzeichnen kann und zwar bis zur nyquist frequenz.

von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

Andre R. schrieb:
> Ja, ich erwarte von dem system, dass es einen amplitudenstabilen sinus
> aufzeichnen kann und zwar bis zur nyquist frequenz.

Die Erwartungshaltung ist falsch. Das Nyquist-Kriterium sagt, dass es 
oberhalb der Nyquist-Frequenz gar nicht mehr gehen kann, wegen Aliasing. 
Es sagt nicht dass es (knapp) unterhalb der Nyquist-Frequenz super 
funktioniert :-)

Deshalb hält man in der Praxis auch einen durchaus hohen 
"Respektabstand" zum Nyquist ein.

: Bearbeitet durch User
von Achim S. (Gast)


Lesenswert?

Andre R. schrieb:
> Ja, ich erwarte von dem system, dass es einen amplitudenstabilen sinus
> aufzeichnen kann und zwar bis zur nyquist frequenz.

Das macht dein System jetzt schon. Schau dir die Höhe deiner Linie in 
der FFT an - wenn du das richtig Fenster für die FFT wählst, dann zeigt 
dir die Höhe dieser Linie korrekt die Amplitude (bzw. den Effektivwert) 
dieser Linie an. Das Messsystem macht also jetzt schon korrekt, was es 
soll.

Was falsch läuft ist deine Erwartungshaltung. Du glaubst, dass du mit 
den Abtastpunkte garantiert immer die Extrempunkte der Zeitfunktion 
triffst und direkt an einem der Abtastpunkte die Amplitude ablesen 
kannst. Das ist natürlich nicht der Fall.

Und das wird es auch nie sein, wenn das Signal bis nahe an die 
Nyquistfrequenz gehen soll. Dann musst du enweder das Signal wieder 
korrekt rekonstruieren (also nicht einfach nur den größten Messpunkt 
betrachten). Oder den Effektivwert deiner Messpunkte bestimmen (dann 
geben die zwei "halbhohen" Abtastpunkte den selben Beitrag wie einer im 
Maximum und ein zweiter im Nulldurchgang). Oder per FFT und Linienhöhe 
den Effektwert bestimmen.

von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

Ach ja, noch was: Was hat es mit dem ominösen "310 Werte mitteln" auf 
sich? u.U. kann man das mit einem Dezimationsfilter auch viel besser 
lösen (kommt aber auf die konkrete Anwendung an) und du hättest den 
Vorteil Anti-Aliasing zum teil digital machen zu können.

von Andre R. (ltisystem)


Lesenswert?

Michael R. schrieb:
> Ach ja, noch was: Was hat es mit dem ominösen "310 Werte mitteln"
> auf
> sich? u.U. kann man das mit einem Dezimationsfilter auch viel besser
> lösen (kommt aber auf die konkrete Anwendung an) und du hättest den
> Vorteil Anti-Aliasing zum teil digital machen zu können.

die 310 kommen aus folgender rechnung:

der atmega hat ne taktrate von 16.000.000Hz. Der timer1 läuft mit nem 
prescaler von 8, somit wird aus der timer1 frequenz 2.000.000Hz. Mein 
OCR1A ist mit 31 defniert, heißt der zählt 32 takte und schmeisst dann 
den interrupt. man rechnet also 1/2.000.000 Hz = 0,0000005s, also jede 
5µs ein takt, mal die 32 sind 0,000016s und 1/0,000016s sind 62.500Hz. 
Der timer1 schmeisst also interrupts mit 62,5kHz. Da ich im Endeffekt 
100Hz haben möchte und zwei Kanäle habe, teile ich die 62,5kHz durch 2, 
sind 31,25kHz und diese durch 100 sind 312,5. Da ich ein paar rechnungen 
in der ISR vom ADC habe, bremsen die ein wenig, weswegen ich durch 
probieren auf einen Wert von 310 gekommen bin.

von Andre R. (ltisystem)


Lesenswert?

Michael R. schrieb:
> Die Erwartungshaltung ist falsch. Das Nyquist-Kriterium sagt, dass es
> oberhalb der Nyquist-Frequenz gar nicht mehr gehen kann, wegen Aliasing.
> Es sagt nicht dass es (knapp) unterhalb der Nyquist-Frequenz super
> funktioniert :-)
>
> Deshalb hält man in der Praxis auch einen durchaus hohen
> "Respektabstand" zum Nyquist ein.

Das stimmt wohl, eigentlich sagt man ja plus 10-20% mehr, will ich 100Hz 
signale erfassen, taste ich mit 250Hz ab...das stimmt wohl.

Erklärt dann aber meines Erachtens nach nicht, warum das Problem bei 
25Hz zeigt. Aber ja glaube eine Mischung aus allen Kommentaren, vor 
allem von Achim, ist der Ursprung für dieses "Problem".

von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

Andre R. schrieb:
> die 310 kommen aus folgender rechnung: [...]

Geht das nicht auch einfacher? Es gäbe noch timer 0 und 2, oder du 
erzeugst dir einen passenden timer per Software.

Andererseits, Oversampling stört nicht, aber dann würde ich wie gesagt 
nicht einfach mitteln (auch nicht per gleitendem Mittelwert) sondern ein 
Dezimationsfilter bauen.

Aber ich habe deine Anwendung auch noch nicht ganz verstanden: irgendwas 
mit biologischen Signalen... wie sehen deine Anforderungen an 
Frequenzen/Bandbreiten aus? Störungen? Rauschen?

Anti-Aliasing ist kein ganz einfaches thema...

von Achim S. (Gast)


Lesenswert?

Andre R. schrieb:
> Da ich im Endeffekt
> 100Hz haben möchte

Dann mach halt stattdessen 1kHz Abtastrate. Dann siehst du das Maximum 
eines 25Hz Signals(und die Kurve wird halt etwas rauschiger).

Andre R. schrieb:
> Erklärt dann aber meines Erachtens nach nicht, warum das Problem bei
> 25Hz zeigt.

Es zeigt sich kein Problem bei 25Hz. Die Messung der 25Hz ist genau so, 
wie sie sein muss.

Nur deine Erwartung, wie die Messung der 25Hz aussehen sollte, ist 
falsch. Du beziehst dich an das Nyquist-Kriterium. Aber das 
Nyquistkriterium sagt nicht, dass bei 25Hz, die mit 100 Samples/s 
abgetastet werden, immer die Extrempunkte getroffen werden.

von Andre R. (ltisystem)


Lesenswert?

Michael R. schrieb:
> Andererseits, Oversampling stört nicht, aber dann würde ich wie gesagt
> nicht einfach mitteln (auch nicht per gleitendem Mittelwert) sondern ein
> Dezimationsfilter bauen.

ja das ist hartes oversampling. hab zwar noch nicht so richtig 
verstanden wie man das rechnet, aber netto habe ich mir doch jetzt durch 
das oversampling aus dem 10bit ADC nen 10bit+X ADC gemacht, oder?

dezimationsfilter zieh ich mir gleich mal rein, was es damit auf sich 
hat.

Und zu deiner frage was die anwendung betrifft: kann leider nicht all zu 
viel darüber verlieren...sagen wir so: ich bin medizintechniker der noch 
eine menge erfahrungen sammeln muss und ich möchte mit einem kompaktem 
und mobilen aufbau verschiedene drücke messen, anzeigen und auch 
wegspeichern lassen. arduino nano war dabei für mich optimal wegen 
geringer stromverbrauch, eingebauter adc, super günstige anschaffung und 
meinem kleinen erfahrungsschatz mit arduino. zu den anforderungen kann 
ich leider auch noch nicht viel sagen, da ich den prototyp erstmal 
testen muss. der abzudeckene frequenzbereich liegt bei 0..15Hz wobei es 
immer besser kommt wenn man schreiben kann, dass das teil mit 100Hz 
läuft, wobei es 50Hz wahrscheinlich auch tun würde. ;) störungen oder 
eher die glättung der störung darf nicht zu groß sein, da man eventuell 
effekte verpasst auf die man eigentlich scharf ist, wenn man die 
drucksensoren positioniert. mit dem rauschen bin ich eigentlich 
zufrieden. hab mal ne 10Hz frequenz drauf gegeben und versucht SNR 
auszurechnen. bin auf rund 40dB gekommen.

von Andre R. (ltisystem)


Lesenswert?

Achim S. schrieb:
> Nur deine Erwartung, wie die Messung der 25Hz aussehen sollte, ist
> falsch. Du beziehst dich an das Nyquist-Kriterium. Aber das
> Nyquistkriterium sagt nicht, dass bei 25Hz, die mit 100 Samples/s
> abgetastet werden, immer die Extrempunkte getroffen werden.

Das habe ich jetzt hoffentlich verinnerlicht!

von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

Andre R. schrieb:
> netto habe ich mir doch jetzt durch
> das oversampling aus dem 10bit ADC nen 10bit+X ADC gemacht, oder?

Tja... da ist immer viel Wunschdenken dabei. Es kommt u.a. darauf an, ob 
du quasi-stationäre Größen erfassen willst, da funktioniert das 
einigermaßen, bei dynamischen Größen eher schlecht.

> Das stimmt wohl, eigentlich sagt man ja plus 10-20% mehr, will ich 100Hz
> signale erfassen, taste ich mit 250Hz ab...das stimmt wohl.

Das ist schon ziemlich knapp.

hast du dir schon Gedanken über das (analoge) Anti-Aliasing-Filter 
gemacht?

Du willst (bis zu) 100Hz erfassen, mit 250 Hz. Abtastfrequenz. d.h. 
alles über 125 Hz bringt dir Aliasing, das du, wenn einmal drinnen, nie 
mehr wegkriegst (da nicht unterscheidbar). Bei 10 bit Auflösung brauchst 
du also x dB Dämpfung (sorry zu faul zum rechnen) und das zwischen 100Hz 
(Nutzsignal) und 125 Hz (Nyquist). Das ist in jedem Fall sportlich.

Mit welchen Störsignalen über 100Hz rechnest du?

: Bearbeitet durch User
von Andre R. (ltisystem)


Lesenswert?

Michael R. schrieb:
> Andre R. schrieb:
>> netto habe ich mir doch jetzt durch
>> das oversampling aus dem 10bit ADC nen 10bit+X ADC gemacht, oder?
>
> Tja... da ist immer viel Wunschdenken dabei. Es kommt u.a. darauf an, ob
> du quasi-stationäre Größen erfassen willst, da funktioniert das
> einigermaßen, bei dynamischen Größen eher schlecht.
>
>> Das stimmt wohl, eigentlich sagt man ja plus 10-20% mehr, will ich 100Hz
>> signale erfassen, taste ich mit 250Hz ab...das stimmt wohl.
>
> Das ist schon ziemlich knapp.
>
> hast du dir schon Gedanken über das (analoge) Anti-Aliasing-Filter
> gemacht?
>
> Du willst (bis zu) 100Hz erfassen, mit 250 Hz. Abtastfrequenz. d.h.
> alles über 125 Hz bringt dir Aliasing, das du, wenn einmal drinnen, nie
> mehr wegkriegst (da nicht unterscheidbar). Bei 10 bit Auflösung brauchst
> du also x dB Dämpfung (sorry zu faul zum rechnen) und das zwischen 100Hz
> (Nutzsignal) und 125 Hz (Nyquist). Das ist in jedem Fall sportlich.
>
> Mit welchen Störsignalen über 100Hz rechnest du?

das mit den 250Hz und den 100Hz war ausgedacht für das Abtastbeispiel. 
Ich will ja mit 100Hz abtasten, bzw transmittieren. Ich erwarte wie 
gesagt Signale von 0..13Hz, da sind 100Hz glaub ich gut angesetzt. Ob 
Biosignale wie z.b. ein EKG quasi-stationär ist oder nicht, dafür würde 
ich nicht meine Hand für ins Feuer legen. Bei gesunden Lebewesen 
sicherlich ein Stück weit aber die Praxis sieht anders aus. Eigentlich 
rechne ich mit wenig "schnellen" Störsignalen. Der Grund warum ich bis 
zu 13Hz erfassen, rührt daher, dass nicht ausschließlich menschliche 
Größen gemessen werden sollen und man weiß ja nie was man bei Messungen 
so einfängt, wo vllt noch niemand weiß, dass es das überhaupt gibt ;) 
naja whatever.

Zum Thema analoges AA-Filter hatte ich in einem anderen Projekt schon 
mal gesehen, dass dafür n Tiefpassfilter zweiter Ordnung aufgebaut 
wurde, aber das hat noch mehr Probleme gemacht, als alles andere. Dachte 
mir wie gesagt ich taste dafür "einfach" ordentlich über.

von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

Andre R. schrieb:
> Ob Biosignale wie z.b. ein EKG quasi-stationär ist oder nicht

Also wenn mein EKG mal quasi-stationär ist, schreib ich vermutlich 
nichts mehr in dieses Forum ;-)

> Zum Thema analoges AA-Filter hatte ich in einem anderen Projekt schon
> mal gesehen, dass dafür n Tiefpassfilter zweiter Ordnung aufgebaut
> wurde, aber das hat noch mehr Probleme gemacht, als alles andere. Dachte
> mir wie gesagt ich taste dafür "einfach" ordentlich über.

Autsch. Du solltest dich mit der Materie nochmal intensiver 
beschäftigen.

von Andre R. (ltisystem)


Lesenswert?

Michael R. schrieb:
> Autsch. Du solltest dich mit der Materie nochmal intensiver
> beschäftigen.

Wieso meinst du Autsch? Hab ich jetzt direkt daneben gegriffen oder wie?

Oder meinst du n digitales AA-Filter?

: Bearbeitet durch User
von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

Andre R. schrieb:
> Autsch

Oversampling löst das Aliasing-Problem nicht, du verschiebst es nur in 
andere Bereiche (bzw. bewusst ins digitale). AntiAliasing musst du 
trotzdem machen (analog und vielleicht digital), sofern du nicht von 
vorneherein ausschließen kannst, dass du Frequenzen oberhalb der halben 
Abtastfrequenz einfängst.

Wenn ein analoger TP als AA-Filter Probleme macht (welche denn?) dann 
wurde er vermutlich falsch ausgelegt.

: Bearbeitet durch User
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.