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?
Ich verwende diese Klasse bei SPI-Betrieb: https://gist.github.com/yoggy/7096133 Die Schaltung die ich für SPI verwende ist ähnlich dieser hier, nur mit Photodiode und angepasst für MCP3208: http://www.raspberrypi-spy.co.uk/2013/10/analogue-sensors-on-the-raspberry-pi-using-an-mcp3008/ Mittels Bit-Banging über die GPIO-Ports des Pi hab ich mit an diesem Aufbau und Code orientiert und ihn für den MCP3208 angepasst: https://learn.adafruit.com/reading-a-analog-in-and-controlling-audio-volume-with-the-raspberry-pi/connecting-the-cobbler-to-a-mcp3008 Der Vollausschlag des ADC wären die 3,3 V (Vref abgegriffen am Pi). Ist vermutlich keine hochpräzise Messung, aber die Genauigkeit sollte ausreichen. Sind die Werte dann nicht etwas zu hoch für Grundrauschen? Ich werde mal folgendes probieren: - kleinere Frequenz für SPI, ist grad 1 MHz - Spannung am Arbeitswiderstand der Photodiode mit Multimeter messen - eine Messreihe bei Zimmerhelligkeit
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.
Verwendest du einen Anti-Aliasing-Filter? Schonmal dran gedacht dass das Rauschen durch Aliasing zustande kommt?
:
Bearbeitet durch User
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.
Leg mal einen 1nF Kondensator direkt zwischen Eingang des MCP3280 und GND. Das sollte es deutlich besser machen.
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/1211 Easylife 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.
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.