Ich habe ein ziemlich einfaches Temperaturprotokollierungsgerät auf einem Arduino Mega 2560 R3 gebaut. Ich verwende TMP36 , insgesamt 12 davon, um die Daten zu protokollieren. Die VS- und GND-Pins jedes Sensors sind mit Common Rails verbunden und jeder V_out-Pin ist dann direkt mit seinem eigenen analogen Sensor-Pin auf dem Arduino verbunden.
Die Methode zum Protokollieren der Temperaturen besteht darin, zehn aufeinanderfolgende Messungen an einem Sensor aufzuzeichnen (zwischen jeder Messung 20 ms Pause zu machen), dann diese zehn Werte zu mitteln, diesen Wert in einer Datendatei zu protokollieren, dann mit dem nächsten Pin fortzufahren und dies zu wiederholen, bis alle Sensoren aufgezeichnet haben ein Wert. Warten Sie dann, bis 10 Sekunden vergangen sind, und wiederholen Sie dann den Vorgang. (muss nicht schneller sein, da mein Experiment Stunden bis Tage dauert).
Das erste Bild (beschriftet mit Sensor 14) ist das Diagramm, das ich von einem der an meine Wärmequelle angeschlossenen Sensoren bekomme, was ungefähr dem entspricht, was ich erwarte (X-Achse ist Sekunden, Y-Achse ist Temperatur in Celsius).
Bei meinem letzten Test musste ich nur ein paar Standorte protokollieren und ließ den Rest der Sensoren auf dem Schreibtisch sitzen, um im Wesentlichen die Umgebungstemperatur zu messen, von der ich zu 90% sicher bin, dass sie konstant sein sollte. Ich habe jedoch trotzdem die Daten von den Sensoren protokolliert und sie zum Kichern geplottet und das folgende Diagramm erhalten (gleiche Achsen wie zuerst)
Dieses Bild hat eine ziemlich deutliche periodische Temperaturänderung, wenn auch nur einen sehr kleinen Unterschied. Die Ergebnisse, die ich daraus erhalten habe, haben keinen Einfluss auf meine eigentliche Analyse, aber die Quelle für das periodische Signal ist das, worauf ich neugierig bin.
Ich bin kein Signalanalytiker oder Elektroingenieur. Ich frage mich, ob das Auftreten dieser Art von periodischem „Rauschen“ auf ein Problem mit meinem Prüfstand hinweist oder ob dies ziemlich normal ist. (Der Sensor hat eine angegebene Genauigkeit von +- 2 Grad C mit einer Linearität von 0,5 Grad C.)
Und als zweiten Teil der Frage, wäre etwas "falsch" daran, dieses periodische Signal aus meinen Temperaturdaten zu entfernen? (Führen Sie eine FFT auf dem Rauschsignal aus, identifizieren Sie die Frequenz und verwenden Sie dann einen Bandsperrfilter, um es zu löschen).
Vielen Dank für jeden Rat!
(Bearbeiten 1)
Ich habe in Python ein besseres Diagramm erstellt und einen Abschnitt vergrößert, um zu zeigen, wie die beiden Signale über einen kürzeren Zeitraum aussehen:
Wenn Sie in das obere Diagramm hineinzoomen, sehen Sie ungefähr dasselbe (sehen Sie sich die Breite der Linie an).
Dies ist ein Problem mit der automatischen Skalierung der Diagramme. Sie werden irgendwann etwas sehen, entweder Quantisierungsrauschen, wie @Ignaciao vermutet (höchstwahrscheinlich richtig), oder vielleicht ein Netzbrummen, das in Ihre Sample-Bandbreite eingeblendet ist (was etwas anders aussehen würde).
Wenn Ihr Datenerfassungssystem den internen ADC im 2560 verwendet, beträgt die Auflösung nur 10 Bit. Eine einfache Mittelung über viele Samples (die hier anscheinend vor sich geht) kann scheinbar eine höhere Auflösung ergeben, aber ohne richtiges Dithering und richtiges Filtern funktioniert es nicht so gut.
Denken Sie daran, dass Ihre ADC- Auflösung ohne Vorverstärker und mit der ADC-Referenz als Versorgung etwa 0,5 °C beträgt (die Genauigkeit und Linearität sind schlechter). Die Auflösung beträgt 4,9 mV und der TMP36-Ausgang beträgt 10 mV/°C.
Sie können feststellen, dass es um genau 0,5 ° C hin und her springt, dies ist kein Zufall . Die Zwischenwerte sind ein Beweis für die Mittelung, die Tatsache, dass es sich nicht reibungslos zwischen den Zuständen bewegt, liegt daran, dass die Signalverarbeitung und das Dithering unzureichend sind.
Ein bisschen Spekulation:
Wenn Sie sich Abbildung 5 im Datenblatt für den TMP36 ansehen, können Sie sehen, dass die Lastregelung grob 0,006 Grad pro gezogenem Mikroampere beträgt: -
Wenn während des ADC-Prozesses die Stromspitze (sagen wir) 1 mA beträgt (was sicherlich nicht ungewöhnlich ist), erhalten Sie einen Fehler von 6 Grad.
Wenn Ihr ADC also ein gemultiplexter und ungepufferter Typ ist, der während der Konvertierung eine Stromspitze zieht, erhalten Sie seltsame Ergebnisse. Wenn Sie die maximale Kapazität von 10 nF über den Sensorausgang an Masse anlegen, kann dieser Fehler möglicherweise dramatisch abfallen.
Hier ist meine Vermutung für das, was Sie sehen: Die Sensoren haben nur eine Auflösung von 0,5 c. Sie können also die Werte 19,8, 20,3 und 20,8 ausgeben. Das ist alles deutlich in Ihrer Grafik zu sehen. Was ist nun mit all den Punkten auf den Pisten, die nicht zu den 3 Werten gehören? Ich denke, diese treten auf, wenn sich der Sensor während Ihres 10-Lese-Durchschnitts ändert.
Die Frage bleibt also. Schwankt der Raum tatsächlich um ein halbes Grad hin und her, wie die Grafik zu zeigen scheint? Es ist schwer zu sagen. Ich denke, die einzige Schlussfolgerung, zu der Sie auf der Grundlage dieser Daten kommen können, ist, dass Sie eine höhere Auflösung benötigen, wenn Sie sich für Änderungen um 0,5 c interessieren. Ich kann aus Erfahrung sagen, dass eine Schwankung von 1-2 Zählern im Sensorwert "normal" ist.
Edit: Ich weiß nicht, wer mich runtergestimmt hat. Aber hier ist ein weiterer Beweis: Der TMP36 hat einen Skalierungsfaktor von 10mV/degC. Das Arduino hat eine Auflösung von 1024 Zählern und unter der Annahme einer vRef von 5 V ergibt dies 0,48 ° C pro Zählung. Fast genau das, was ich vorhergesagt habe. Ich sagte abstrakt "Sensor", aber was ich hätte sagen sollen, ist, dass das System eine Auflösung von 0,5 c hat.
Ignacio Vazquez-Abrams
Elliot Alderson
Diesel
Analogsystemerf