Hallo,
ich habe ein Problem beim Auslesen eines MCP3208.
Gemessen werden soll die Spannung am Arbeitswiderstand einer Photodiode.
Der MCP wird per SPI von einem RaspberryPi gesteuert, entweder über
spidev oder alternativ über Bit-Banging mit anderen GPIO-Ports.
Der Arbeitswiderstand hat 1 MOhm, Multimeter zeigt Spannungen im
Messbereich des MCP.
Allerdings ist das Signal irgendwie verrauscht und ich hab
keine Ahnung warum.
Der Sensor ist in einem fast Licht-dichten Beutel.
Ich hab ein paar Sachen ausprobiert, siehe Bilder.
mcp3208_dark.jpg zeigt die Spannung am Arbeitswiderstand, MCP ist
"normal"
angeschlossen, sehr verrauscht...
mcp3208_ground.jpg zeigt das Signal wenn man den Kanal am MCP auf Ground
setzt, wie zu erwarten nix zu sehen.
mcp3208_nc.jpg ist das was mich eigentlich stutzig macht, hier hab ich
den Kanal am MCP nicht verbunden. Trotzdem wird irgendein Signal
ausgelesen.
Es sieht irgendwie so aus als würde das Signal das bei nicht verbundenem
Kanal ausgelesen wird auch das
eigentliche Signal überlagern, wenn der Kanal verbunden ist.
An anderen Kanälen sehen die Signale genauso aus.
Ich hab leider noch nicht so viel Ahnung von Microkontrollern.
Ist das ein Effekt den ihr kennt? Und was kann man da machen?
Viele Grüße,
Joe
Ist das vielleicht einfach das Grundrauschen das du hier dargestellt
hast?
1MOhm rauscht natürlich ziemlich.
Wie hoch wäre denn auf deiner Skala in deinen Diagrammen der
Vollausschlag deines 12-bit ADCs?
Also die SPI-Frequenz hat wohl nix damit zu tun.
Die Spannungen am Arbeitswiderstand hab ich mal mit dem
Multimeter gemessen, das passt auch.
Ich glaube der Hinweis mit dem rauschenden 1 MOhm Arbeitswiderstand
geht in die richtige Richtung, aber ich weiß noch nicht genau,
was das bedeutet. Bezieht sich hierauf der Hinweis auf
http://www.mikrocontroller.net/articles/Lichtsensor_/_Helligkeitssensor
dass die Schaltung ziemlich langsam ist?
Mit der angegebenen Formel komme ich auf eine Grenzfrequenz von ungefähr
6kHz. Die Auslesefrequenz ist höchstens 1kHz.
Hab eine kleine Messreihe gemacht (1 MOhm, 470 kOhm und 200 kOhm),
Bilder sind angehängt.
Ich nehme an, der Knick in den Messkurven bedeutet unterschiedliche
Beleuchtungszustände?
Das Rauschen sieht mir so aus, als ob auf dem Signal ein Sinus liegt,
den du eben mit einer sehr niedrigen Frequenz mitsamplest.
Echtes Rauschen wäre in etwa gleich verteilt, hier häufen sich die
Punkte an 2 Linien mit Offset zum Messignal.
Miss mal dein Signal mit einem schnellen Oszilloskop, ob die Störung
periodisch ist (Sinus) und welche Frequenz die hat.
Diese Störung müsstest du erstmal eliminieren.
Du hängst hoffentlich nicht wirklich die Photodiode direkt an den
Eingang des ADC?
Was Du brauchst ist ein Transimepdanz-Verstärker oder - wie in deinem
Multimeter - einen hochohmigen Eingangsverstärker (10 MOhm!).
Beispiel für eine Verstärker für Photodioden:
http://www.linear.com/solutions/1211Easylife schrieb:> Leg mal einen 1nF Kondensator direkt zwischen Eingang des MCP3280 und> GND.> Das sollte es deutlich besser machen.
Eher noch schlimmer. Dann muss die Photodiode mit ihrem sehr kleinen
Strom nicht nur den 20pF Sample-Kondensator sondern noch zusätzlich den
1nF-Kondensator laden.
Mit Filtern hab ich auch schon rumprobiert (Butterworth und Hamming)
Ich hab Bilder von einem Butterworth-Lowpass angehängt.
Ich arbeite über SSH auf dem Pi und habe jetzt gemerkt, dass es einen
großen Einfluss auf die Messreihe hat, ob ich die Zwischenergebnisse per
print ausgeben lasse.
In den Bildern sieht man, dass die Sampling Frequenz ungefähr auf den
Faktor zwei runtergeht und dass das gefilterte Signal (oben rechts) eine
Schwingungskomponente
mit ungefähr mit 10 Hz hat. Aber woher kommt diese Komponente?
Das sollte doch am eigentlichen Spannungssignal nichts ändern, oder?
Ja, der Knick in der vorherigen Messkurve kommt davon, dass ich die
Photodiode abgedunkelt hab.
Wenn man jetzt vom gefilterten Signal ohne print-Ausgabe ausgeht, sieht
das ja schon viel besser aus. Allerdings weiß ich nicht ob es für die
Anwendung ausreicht.
Ich bin dabei ein Pulsoxymeter
(http://de.wikipedia.org/wiki/Pulsoxymetrie) zu bauen.
Dabei beträgt die Amplitude des benötigten Signals ungefähr 3-5 % vom
gemessenen Signal.
Üblicherweise wird das ein Bandpass von 0,5 bis 5 Hz verwendet um den
Herzschlag herauszufiltern.
So wie das Signal im Moment aussieht würde das genau im Rauschen
untergehen.
Ist der 1 nF-Kondensator in diesem Fall auch noch hilfreich
und in welchen Frequenzbereich glättet er gut?
GB schrieb:> Eher noch schlimmer. Dann muss die Photodiode mit ihrem sehr kleinen> Strom nicht nur den 20pF Sample-Kondensator sondern noch zusätzlich den> 1nF-Kondensator laden.
Ja und? Für 1000 Messungen pro Sekunde reicht auch ein kleiner Strom, um
1nF zu laden.
Und es eliminiert Störungen.
Probiere den Kondensator halt mal aus. Mit den 1M/1nF ergibt einen
Filter, der erst bei 1000Hz einsetzt.
Für deine Anwendung kannst du also vermutlich auch 10nF nehmen.
Die störungen könnten auch 50Hz Netzbrummen sein.
GB schrieb:
> Du hängst hoffentlich nicht wirklich die Photodiode direkt an den> Eingang des ADC?> Was Du brauchst ist ein Transimepdanz-Verstärker
Ich hab den Arbeitswiderstand der Photodiode an den ADC gehängt, nicht
die Photodiode selbst.
Ja, das mit dem Transimepdanz-Verstärker habe ich schon mehrfach
gelesen. Aber da das Pulsoximeter ja nur ein kleines Bastelprojekt ist
will ich
eigentlich nur mit Sachen arbeiten, die hier sowieso rumliegen.
Die Photodiode ist zusammen mit zwei LEDs (Rot und IR, back-to-back) in
einem Einweg-Sensor verbaut den ich im Krankenhaus mitgenommen hab.
Denkt ihr, dass das mit Photodiode und Arbeitswiderstand garnicht
funktionieren wird?
Easylife schrieb:
> Probiere den Kondensator halt mal aus. Mit den 1M/1nF ergibt einen> Filter, der erst bei 1000Hz einsetzt.> Für deine Anwendung kannst du also vermutlich auch 10nF nehmen.
Ja, werd ich mal mal machen.
> Die störungen könnten auch 50Hz Netzbrummen sein.
In den Bildern in meinem vorherigen Beitrag ist die
Fourier-Transformierte des Signals zu sehen. Da ist auf jedenfall auch
ein kleiner Beitrag vom Netzbrummen sichtbar. Aber den sollte der
Butterworth-Lowpass plattmachen.