Moin Leuts.
Ich betreibe eine Signalerfassungkette dessen Ergebnis ich mir auf dem
Monitor ansehen kann.
Sensor ---> I/U-Wandler ---> ADC ---> DSP ---> MAX23 ---> PC (LabView
zur Darstellung)
Ich nehme von meinem Sensor ca. 3000 Werte und stelle mir auf dem
Monitor mit Hilfe von LabView eine FFT dar. Das Sensorsignal selbst ist
DC. Im Spektrum sind allerdings deutlich zwei Peaks bei ca. 34kHz und
bei ca. 16kHz zu sehen.
Nun meine Frage: Wo könnte das herkommen? Folgende Komponenten habe ich
auf meinem Board:
MAX232 mit 28.800Baud
25MHz Quarz für DSP, DSP läuft intern mit 125 MHz
1x DSP (TI 320F2810)
1x ADC (Abtastfrequenz 95kHz, 16Bit +/-5V Range)
7x DAC (Daisy-Chain)
zahlreiche OPV und 2x IN-AMP.
Mich wundert es, dass ich diese Peaks auf einem Oszi mit FFT am
ADC-Eingang nicht sehe.
Vielleicht habt ich ja ein paar Tipps für mich.
Grüße
Marcusius
Frequenz der Ladungspumpe vom MAX232, Taktsignal für ADC oder DAC,
Aliasingsignal welches entsprechend weiter "oben" zu suchen ist (Clock,
SPI-Takt etc.pp), Programmierfehler der Kurzzeit-FFT (Stichwort
Fensterung)
Viele Grüße,
Martin L.
Christoph Kessler wrote:
> ca. 31 kHz ist auch die Horizontalfrequenz eines VGA-Monitors, die ist> sehr niederohmig und stört immer.
Eine niederohmige Frequenz? klingt spannend, was kann man sich darunter
vorstellen?
Wenn es nur ca. 16kHz ist, dann könnte es auch genau 15625 Hz sein, was
die Horizontalfrequenz eines normalen Röhrenfernsehers ist. Vielleicht
steht so ein Teil irgendwo in der Nähe aktiv herum ...
> Mich wundert es, dass ich diese Peaks auf einem Oszi mit FFT am> ADC-Eingang nicht sehe.> Vielleicht habt ich ja ein paar Tipps für mich.
Heißt das du hast ein FFT-fähiges Oszi und das zeigt diese peaks nicht?
Wenn ja, dann würde ich den Fehler in d. programmierung suchen. Das nach
dem Oszi dein Signal noch irgendwie gestört wird ist unwahrscheinlich.
Zumindest sollte dann dein Oszi dann auch diese Störfrequenzen anzeigen.
Nimm doch mal einen Datensatz und mach die FFT mit LabView. Dann kannst
du erstmal überprüfen ob dein Algorithmus das macht was er soll.
Was hast du für eine Fensterung genommen?
gruß Georg
@Christoph
Vom Monitor kommt es leider nicht. Den habe ich eben ausgeschaltet und
mir die Sachen auf meinem TFT angesehen.
@Martin L.
Wenn durch den Seriellen Treiber Fehler entstehen, wo kann ich da Filter
(z.B. LC-Filter) einsetzen?
Zwischen DSP und MAX232 oder MAX232 und PC?
Marcusius
Georg Bauerfeind wrote:
>> Wenn ja, dann würde ich den Fehler in d. programmierung suchen. Das nach> dem Oszi dein Signal noch irgendwie gestört wird ist unwahrscheinlich.
ich meine natürlich nach dem ADC, sorry
@Georg:
Ich habe ein Tektronix TDS2012. Da schaue ich mir eine FFT an
(Messspitze direkt am Eingang vom ADC) und kann keine Peaks sehen.
In LabView schaue ich mir dann 3000 Messwerte an und mache eine FFT
damit und sehe die besagten Peaks. Fenster jeweils Hanning.
Kann es sein, dass diese Peaks Aliasingfehler sind?
Marcusius
> Kann es sein, dass diese Peaks Aliasingfehler sind?
Sofern du keinerlei Tiefpassfilterung vornimmst (entweder mit nem
diskreten TP im analog-teil deiner Schaltung oder digital vor der FFT,
zb. mit FIR-Filter) ja.
Also es ist wichtig dass die FFT immer von einem Bandbegrenztem Signal
durchgeführt wird. Es ist sicher denkbar, dass dein Oszi eine solche
Bandbegrenzung eingebaut hat. Wenn du keine hast, dann kannst du ja
schnell mal einen einfachen RC-Tiefpass vor deinen ADC hängen und
nachschauen was passiert. Für die meisten sachen ist der
http://de.wikipedia.org/wiki/Tiefpass#Tiefpass_1._Ordnung
schon völlig ausreichend. Den Verlust an Signalamplitude kannst du dann
später mit einer aktiven Version ausgleichen. Aber für Testzwecke
probier erstmal die passive Variante.
Theoretisch kann auch noch ein Baudratenfehler durch die Anbindung des
MAX232 an den DSP auftreten (zumindest war das bei falscher Taktung
eines Atmel AVrs so). Die Fehlerrate der UART von deinem DSP findest du
sicher im Datenblatt.
Ich hab grad keine Zeit mich durchs Datenblatt zu klicken, vllt. guckst
du selber mal ob du was findest.
georg
@Georg
Vor dem ADC-Eingang befindet sich ein RC-Filter (49R9, 1uF).
Ich habe eben in die RX- und TX-Leitung MAX<-->PC je einen
Serienwiderstand eingebracht. Nun habe ich Peaks bei ca. 8,7kHz, 17,5kHz
und einen kleineren bei 26kHz.
Das hat wohl etwas bewirkt. Sind SMD-Ferrite an der Stelle geeigneter
zusammen mit einem C gegen Masse?
Marcusius
Ich habe eben mit dem Oszi noch einmal gemessen.
Dort sieht man die Peaks doch. Sehen etwas breitbandiger aus. Daher habe
ich sie zunächst übersehen.
Also: Peaks bei 8,7kHz, 17,5kHz 26kHz. Vor dem ADC-Eingang nach
Filterung mit RC-Tiefpass (siehe oben). Der RC-Filter bringt also
nichts?! ODer noch ein SMD-Ferrit in Reihe zum Widerstand?
Marcusius
Marcusius wrote:
> Filterung mit RC-Tiefpass (siehe oben). Der RC-Filter bringt also> nichts?! ODer noch ein SMD-Ferrit in Reihe zum Widerstand?
Doch bringt er, deine 26kHz werden zb. fast um 20dB gedämpft.
Bevor du anfängst dich in wilden Filterorgien zu verheddern würde mich
mal interessieren warum du überhaupt von einem "DC-Signal" eine FFT
machst? Was ist denn überhaupt Sinn und Zweck dieser ganzen Übung?
Was ist das für ein Sensor?
Was ist falsch mit dem Spektrum, dein ermitteltes stimmt doch mit dem
auf dem Oszi überein, also alles gut oder?
Eine Induktivität in Reihe zum Widerstand bringt weitere Bedämpfung
höherer Frequenzen und führt zum TP 2. Ordnung...
ABER die Frage deshalb erstmal, was möchtest du überhaupt messen? Warum
willst du die Frequenzen die da sind nicht sehen?
grüße Georg!
Finde erst mal die Quelle der Störung. Schau mit dem Oszi nach ob sie
vor dem Tiefpass mit höherer oder niedriger Amplitude erscheinen. Schau,
wo in deinem System die niedrigste Frequenz welche Du gemessen hast
auftaucht. (Der Rest sind vermutlich Harmonische).
Wenn sie vor dem Filter stärker sind als dahinter kommen sie von extern.
Dann musst Du dort suchen. Ansonsten wird das Signal wohl irgendwie über
den digitalen Teil in den ADC gelangen. Das entsteht meistens durch ein
schlechtes Layout und dort insbesondere der niederohmigen Anbindung von
den GND-Pins.
Aber bevor ich das alles machen würde, würde ich erst mal den MAX232
temporär abschalten und nachsehen ob dann alles gut ist.
Viele Grüße,
Martin L.
@Georg:
Nun, die 3000 Werte werden gemittelt. Ich wollte mir nur einmal das
Rohsignal ansehen und dabei bin ich auf die Peaks gestoßen. Der
Mittelwert dürfte doch genauer (d.h. Standardabweichung geringer
werden), wenn die Peaks verschwinden, oder? Bzw. das Rauschen allgemein
abnimmt.
Bei dem Sensor handelt es sich um eine Elektrode (Clark-Typ) mit
Polarisationsspannung.
Beim PCB-Layout habe ich mich an die Vorgaben von Analog gehalten. AGND
getrennt von DGND. Innere Lage als Massefläche. Und sonst auch alle Cs
usw. gesetzt.
Den MAX kann ich nicht abschalten, denn dann funktioniert mein Board
nicht mehr. Eine Kommunikation mit einem PC ist erforderlich.
Grüße
Marcusius
Warum sucht Ihr immer nur in diese eine Richtung ?
a) Evtl. bringt eine andere räumliche Anordnung schon neue Erkenntnisse?
b) Ob Marcusius schon mal eine anderes Labornetzteil als
Spannungsquelle versucht hat ? Auch Schaltnetzteile sind manchmal
interessante Fehlerquellen.
Du kannst dem MAX abschalten und mit dem Oszi nachgucken ob die Störung
immer noch da sind. Wenigstens kannst Du die Frequenz vom der
Ladungpumpe messen und vergleichen...
Ansonsten ist es manchmal gar nicht so gut die Masseflächen zu trennen
weil der "Analogstrom" u.U. zum "Digital-GND" fließen muss. Da gibt es
eine gute Application Note von Analog oder Linear zu.
Martin
> Ansonsten ist es manchmal gar nicht so gut die Masseflächen zu trennen> weil der "Analogstrom" u.U. zum "Digital-GND" fließen muss. Da gibt es> eine gute Application Note von Analog oder Linear zu.
@Martin
Ja, nur ist das doch nicht weiter problematisch, da der digital teil
relativ "robust" ist, gegenüber den Analogsignalen. Viel störender ist
der doch der Fakt, dass die Ströme über dem digitalen Schaltungsteil auf
den analogen einkoppeln, bzw. die Ströme durch die endliche kleine
Impedanz des GNDs zu Potenzialverschiebungen von eben diesem führen und
dafür sorgen dass exaktes messen z.b. mit A/D Wandler nicht mehr möglich
ist.
@Marcusius
In welcher Intensität treten denn deine "Peaks" auf? Wie ist der Sensor
an das Board angekoppelt? Geschirmtes/verdrilltes Kabel... Kabel sind ja
immer recht verdächtig wenn es um sowas geht^^
g
georg
> Beim PCB-Layout habe ich mich an die Vorgaben von Analog gehalten.> AGND getrennt von DGND.
Analog schreibt allerdings auch folgendes:
http://www.analog.com/library/analogDialogue/Anniversary/12.html
Ich hab selber keine genauen Erfahrungen mit getrennten Grounds, bin
eher ein Jünger der Alles-auf-eine-durchgängige-Massefläche Religion.
Randy