Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
11.07.2011, 12:55 (Dieser Beitrag wurde zuletzt bearbeitet: 11.07.2011 13:18 von jg.)
Bin dabei Temperaturmesswerte mit Hilfe eines selbst gebauten IR-Detektors aufzunehmen und mit LabVIEW darzustellen. Die Daten werden vom Sensor über einen Microcontroller (PIC10F206) über eine RS232 Schnittstelle an LabVIEW weiter geleitet.
Habe allerdigs bei den Temperaturdaten so komische Peaks. Habt ihr einen Tipp für mich wie ich diese wegkriege??? Ich weiß, dass mit auch noch so eine Art Mittelwert-Filter fehlt, wie könnte ich das umsetzen???
Danke für die Antworten
taichi
PS: hab anbei nur Abbildungen vom Programm hinzugefügt, weil es ja ohne Sensor sowieso nicht läuft
EDIT jg: Word-Dokument gelöscht und durch Bilder ersetzt
Je nachdem was du für eine Anwendung planst, sind Sprünge von 130°C doch recht selten. Daher ist es unwahrscheinlich, dass solche Signale auch nur entfernt was mit der Realität zutun haben.
Mein Chef würde sagen, dass sind halt elektroische Störungen, die müssen weg.
Sprich: Ich würde die letzten 5 Werte vor dem aktuellen Wert nehmen und mitteln. Auf diese Werte kannst du bei dem Graphen über Rechtsklick->erstellen->Eigenschaftenknoten->Historie zugreifen(ist ein Array mit allen gespeicherten Daten des Graphen).
Da aus dem Array die letzten 5 Werte rausholen und mitteln.
Anschließend den aktuellen Wert mit diesem Vergleichen. Ist die Abweichung größer als 100% (oder was du für richtig hälst) wird ich den Messwert verwerfen. Wenn nicht, kommt er in das Diagramm hinnein.
Falls dich später solche Werte interessieren, kannst du dir ja speichern, welche Werte du ignoriert hast.
Grüße,
Takuro
Neu, aber motiviert. Nehme immer gern Verbesserungsvorschläge an!
Vielleicht solltest du dich fragen, wieso dein PIC immer wieder 5220h sendet (wie man in dem Screenshot sehen kann). Das gewandelt laut deiner Berechnung ergibt die 147,33 °C.
Gruß, Jens
P.S.: Screenshots der Einfachheit halber bitte als Bilder hochladen, nicht verpackt in eine Word-Datei.
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Die Werte kannst du durch Suchen in dem String trennen. Such einfach nach dem Komma, nimm das was vor dem steht->erster Wert. Das was danach kommt, nochmal nach Komma durchsuchen, dann hast du alle drei Werte getrennt.
Zur Darstellung von mehreren Plots in einem Diagramm, könnte das helfen.
Ich möchte noch anmerken, dass mein Tipp aus dem vorherigen Post natürlich nicht zu gebrauchen ist, wenn du nicht ausschließlich die richtigen Werte einließt. Sprich, wenn du drei Kanäle hast und alle in eine Datenreihe schreibst, dann kannst du das natürlich nicht unter elektronische Schwankungen verbuchen. Dann ist die Logik in deinem Programm mMn falsch. Ich würde also erstmal verstehen was der Sensor mir sendet (inclusive des dritten Kanals), dann die Aufarbeitung davon planen und erst zum Schluß mir über Ausreißer Gedanken machen.
Grüße,
Takuro
Neu, aber motiviert. Nehme immer gern Verbesserungsvorschläge an!
An deiner Stelle würde ich das "VISA-Read" abändern.
Wenn ich mir nämlich so den String anschaue, der im FP angezeigt wird, dann ist dein PIC "schön" programmiert, er scheint jedes Tripel an Werten mit einem Newline oder mit einem Carriage Return zu quittieren.
Somit brauchst du das ganze "Warten" und das "Auslesen, wieviele Zeichen im Puffer sind" gar nicht.
Einfach das korrekte Abschlußzeichen am "Configure Serial Port" anschließen, dann eine "große" Zahl an VISA-Read anschließen, und VISA-Read beendet dann automatisch das Auslesen aus dem Puffer am nächsten Abschlußzeichen.
Somit ist dann jeder String genau ein Tripel an Messwerten - WUNDERBAR!
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Die Datenerfassung mit Bytes at Board vor dem Read ist Shit. Da hast Du nie die Gewähr, dass der gelesene String richtig aufgeteilt ist.
Das Endzeichen ist ohnehin aktiviert, es muß nichts weiter getan werden als das Wait wegzulassen und an das Read eine Bytezehl anzuschließen, die größer ist als was Du erwartest.
Habe außerdem die Zeitanzeige für X mal zum Leben erweckt:
@Lucki: wie gebe ich bei bei "Scan String" das Datenformat %xh, %xh ein? Einfach als Konstante? und was bedeutet %xh eigentlich genau? Ist das eine festgelegte Formattierungsvorgabe?