Hi ich hoffe ihr könnt mir helfen. Ich habe 2 Lasersensoren (Triangulationsverfahren), welche 2 Abstände messen und als Analogsignal (0-10V) ausgeben. Das Problem dabei ist, dass wenn der Abstand absolut gleich bleibt (schwarzes Signal Anfang und Ende), ist ein störendes Rauschen vorhanden. (Welligkeit von ca. 50mV) Problemursachen, die ausgeschlossen werden können, sind induktive Kopplung, galvanische Kopplung und Lufteinkopplung, da ich den Sensor im Schaltschrank und auch alleine betrieben habe. Das Ergebnis sieht gleich aus. Ein weiteres Problem, welches ich mir vorstellen könnte, ist die unkonstante Spannungsquelle (Schaltnetzteil - Welligkeit 50mV). Da ich den Sensor jedoch an einem normalen Netzteil schon laufen ließ, konnte ich das auch ausschließen. Auch ein dazwischen geschaltener Glättungskondensator hat keine Abhilfe gebracht Nun ist meine Frage, wo sonst das Problem liegen kann. Denn mein Sensor besitzt eine Genauigkeit von 0,15%, was ca. 1 mV entspricht. Und wenn es dafür keine Erklärung gibt, kommt die Frage auf, wie ich das wegfiltern kann. Ich habe mir ein normales RC-Glied überlegt. (Grenzfrequenz 5 Hz), jedoch brachte das auch nichts. Übrigens: Aufgenommen wurden die Signale von einem Datenlogger (Easylogger, falls den wer kennt). Den konnte ich als Fehlerquelle auch ausschließen, da ich das Signal auch am Oszi angeschaut habe, und ein gleiches Verhalten eingestellt hat. Hoffe auf Hilfe. mfg Matthias P.
Das überlagerte Signal im Bild scheint eine feste Frequenz zu haben. Wie hoch ist diese?
also unten sind die Sekunden eingezeichnet. Somit wärs eine Periodendauer von 20ms also 50Hz ... nur weiß ich wirklich nicht woher die kommen sollten. und was könnte ich dagegen tun? Schirmen? mfg Matthias P.
Matthias P schrieb: > Ich habe 2 Lasersensoren (Triangulationsverfahren) Klingt interessant, Mathias, wenn handelsüblicher Typ, bitte ein Link auf das Datenblatt. Ciao Wolfgang Horn
also der eine Sensor wäre: http://www.wenglor.de/fileadmin/functions/wdm.php?dfile=OCP352H0180.PDF&pfad=fileadmin/download/EINZELDATENBLAETTER/EINZELDATENBLAETTER_DE/&sfile=OCP352H0180.pdf&zip=false das Datenblatt vom andren hab ich nur auf Papier... mfg
Matthias P schrieb: > Ich habe mir ein normales RC-Glied überlegt. > (Grenzfrequenz 5 Hz), jedoch brachte das auch nichts. Was heißt "das brachte auch nichts"? Ein 5 Hz Tiefpaß muß ein 50 Hz Signal abschwächen, sonst war es kein 5 Hz Tiefpaß. Mit einem Tiefpaß höherer Ordnung und niedrigerer Grenzfrequenz muß sich das Signal auf jeden Fall unterdrücken lassen, falls es wirklich von deinem Sensor kommt und nicht irgendwo auf dem Weg zu deiner Aufzeichnung einstreut.
Matthias P schrieb: > Denn mein Sensor besitzt eine Genauigkeit von 0,15%, was ca. 1 mV > entspricht. Im Datenblatt steht 0,15% als Angabe für die Linearität. Verwechselst du da nicht etwas?
aso ... ja hab ich verwechselt ^^ ich meinte die Auflösung ... die is ungefähr bei 50µm. Das entspricht dann 0,01666% Aber da ich gerade ein paar Versuche mit dem Datenlogger gemacht habe, bin ich auf etwas draufgekommen. Selbst ein geeichtes Gerät (auf mV) und eine Batter erzeugen ein Rauschen von 50mV im Gerät. Da wird wohl der Datenlogger schuld dran sein. Kennt wer geeignete Geräte für meine Anwendung? mfg Matthias P.
Matthias P. schrieb: > Selbst ein geeichtes Gerät (auf mV) und eine Batter erzeugen ein > Rauschen von 50mV im Gerät. > Da wird wohl der Datenlogger schuld dran sein. Was war dann das: Matthias P schrieb: > Übrigens: Aufgenommen wurden die Signale von einem Datenlogger > (Easylogger, falls den wer kennt). Den konnte ich als Fehlerquelle auch > ausschließen, da ich das Signal auch am Oszi angeschaut habe, und ein > gleiches Verhalten eingestellt hat. Oder hast du mit dem Oszi gemessen, während auch der Datenlogger ange- schlossen war? > Kennt wer geeignete Geräte für meine Anwendung? Vielleicht brauchst du gar kein anderes Gerät. Wenn die Störung wirklich aus dem Datenlogger kommt, müsste ihre Frequenz immer die gleiche sein. Dann kann das Signal auch softwaremäßig mit gleitender Mittelung heraus- gefiltert werden. http://de.wikipedia.org/wiki/Gleitender_Mittelwert#Einfacher_gleitender_Mittelwert Entspricht das Zeitintervall, über das gemittelt wird, exakt der Perio- dendauer der Störung, wird diese theoretisch komplett beseitigt. Deinem vergößerten Screenshot ist zu entnehmen, dass die Störfrequenz ziemlich genau bei 60Hz liegt. Da die Abtastfrequenz 1kHz beträgt, müsstest du idealerweise über jeweils 16⅔ Werte mitteln. Da das nicht geht, behilft man sich damit, dass man für die Mittelung jeweils 16 Werte mit dem Gewicht 1 und einen 17. Wert mit dem Gewicht ⅔ versieht. Das folgende Programm tut genau dies, wobei immer der älteste der letz- ten 17 Messwerte geringer, nämlich W_OLDEST=⅔ gewichtet wird:
1 | #include <stdio.h> |
2 | |
3 | // Abtastfrequenz
|
4 | #define F_SAMPLE 1000
|
5 | |
6 | // Störfrequenz
|
7 | #define F_NOISE 60
|
8 | |
9 | // Das Verhältnis zwischen beiden
|
10 | #define RATIO ((double)F_SAMPLE / F_NOISE)
|
11 | |
12 | // Puffergröße: nächstgrößere ganze Zahl
|
13 | #define N ((F_SAMPLE-1) / F_NOISE + 1)
|
14 | |
15 | // Gewichtungsfaktor für das jeweils älteste Element im Puffer
|
16 | #define W_OLDEST (RATIO + 1 - N)
|
17 | |
18 | int main(void) { |
19 | static int buf[N]; |
20 | int y, i; |
21 | double sum; |
22 | FILE *fpi, *fpo; |
23 | |
24 | fpi = fopen("unfiltered.dat", "r"); // Signaldaten |
25 | fpo = fopen("mov-avg.dat", "w"); // gefilterte Signaldaten |
26 | |
27 | while(fscanf(fpi, "%d", &y) == 1) { |
28 | buf[N-1] = y; |
29 | sum = W_OLDEST * buf[0]; |
30 | for(i=1; i<N; i++) { |
31 | sum += buf[i]; |
32 | buf[i-1] = buf[i]; |
33 | }
|
34 | sum /= RATIO; |
35 | fprintf(fpo, "%f\n", sum); |
36 | }
|
37 | fclose(fpo); |
38 | fclose(fpi); |
39 | return 0; |
40 | }
|
Das Bild im Anhang zeigt das Ergebnis: Das gefilterte Signal (blau) ent- hält zwar noch minimales Rauschen, der 60Hz-Anteil ist aber nicht mehr zu erkennen. Durch Ändern der Parameter F_SAMPLE und F_NOISE kannst du das Programm auch an andere Gegebenheiten anpassen. Wie bei jedem Tiefpassfilter wird auch hier das Signal zeitlich verzö- gert. Aber während ein RC-Tiefpass theoretisch unendlich lange braucht, um einem Sprung des Eingangssignals zu folgen, geschieht dies bei der gleitenden Mittelung in konstanter Zeit, in diesem Fall in 17 Abtast- zyklen. Da die Pufferwerte im Programm mit 0 initialisiert werden, dauert es deswegen etwa 17ms bis ein konstanter Mittelwert von etwa 13 erreicht wird. Zum Vergleich ist im Diagramm noch das Ergebnis eines RC-Tiefpasses 1. Ordnung mit einer Grenzfrequenz von 10Hz eingetragen (grün). Obwohl er deutlich länger braucht, um den Zielwert zu erreichen, sind noch Reste der 60Hz-Störung erkennbar.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.