PT1000 mit Raspberry PI - Erfahrungsbericht

07/09/2014 - 22:20 von Michael S | Report spam
Hi Leute,
nachdem ich nun eine Woche nach einem Fehler gesucht habe, möchte ich
Euch die Story nicht vorenthalten. Zu welchem Zeitpunkt wàrt Ihr auf die
Lösung gekommen?

Grundidee war, eine Temperaturmessung an der Zentralheizung mit
PT1000-Sensoren zu realisieren. Um aufwàndige Pràzisionstechnik zu
vermeiden, habe ich folgendes Konzept umgesetzt:

Ein Kondensator wird auf eine stabilisierte Spannung aufgeladen. Die
Entladezeit über den Sensor bis zu einer festen Schwelle (abgeleitet aus
der stabilisierten Spannung) wird gemessen. Als Referenz wird Regelmàßig
ein 1000R 0,1% Widerstand gemessen und beide Werte ins Verhàltnis gesetzt.
Erste Breadboard-Versuche mit 13µF und als Referenz die 5V des
Steckernetzteils waren sehr vielversprechend. Auf einen Komparator habe
ich da verzichtet und bin direkt auf den Port-Pin. Das Rauschen lag
unter 1°C. Geschaltet wurde mit BS170 zum Entladen über den Sensor und
BS250 zum Nachladen des Kondensators.

Die Zeitmessung wird über ein Python-Script gemacht. Um zu erkennen, ob
ein Taskwechsel die Zeitmessung unterbrochen hat, habe ich vor und nach
dem Setzen des Ports die Systemzeit gemessen. Wird ein Zeitunterschied
von mehr als 100µs erkannt, wird die Messung verworfen.

Beim Samplen des Eingangs wird in einer Warteschleife auch laufend die
Zeit gemessen. Ist der Zeitunterschied zwischen der Messung vor dem
Kippen des Eingangs und nach dem Kippen des Eingangs > 100µs, wird die
Messung auch verworfen.

Nun habe ich das Ganze auf eine Euro-Platine auf Lochraster aufgebaut.
0,5Ohm-Fets sorgen für kleinere Toleranzen. Die Referenz ist ein LM317
auf 2,5V, die Entladeschwelle 0,5V (Spannungsteiler aus Referenz).
Kapazitàt auf 20µF (Foko) erhöht. Die Zeit für 1000Ohm lag um die 35ms.

Um viele Kanàle ohne exorbitanten Port-Verbrauch zu nutzen, habe ich
einen Demultiplexer 74HCT238 eingesetzt. Das ganze aufgebaut ->
Funktioniert.

Also ab damit an die Heizung, 4 Sensoren mit teils langen Kabeln dran
(Rauchrohrblechtemperatur, Kesseltemperatur, Brauchwasserspeicher und
Außentemparatur)

Tja, ab da rauschte die Messung um ca. +-1.5°C
Zuerst habe ich die Schuld am Script gesucht, denn nun musste ich 4
Ports nacheinander setzen (Python kann das nicht gleichzeitig). Ich habe
mir die Zeiten ausgeben lassen wurde aber nicht so recht schlau draus.
Ein Testscript zeigte, dass die time-Funktion von Python nicht wirklich
genau ist. Deshalb das ganze mal in C probiert. Zeitmessung über die
Funktion gettimeofday().
-> Kein Stück besser als unter Python.

Also mal gegoogelt und danach direkt den 1MHz-Timer des Raspi genutzt.
Erste Versuche zeigten, dass der wirklich auf 1µs auflöst, und das bei
Warteschleifen auf die µs genau reproduzierbar.

Das C-Programm also umkodiert.
-> Kein Stück besser

Hmmm, also an der Software liegts nicht.
Also die Kapazitàt verdoppelt und die Schwelle unter 100mV gelegt.
typische Zeit ist nun 135ms.
Erste Messungen auf dem Tisch waren erfolgsversprechend.
Also im Keller wieder eingebaut.

-> gleicher Sch... wie vorher

zusàtzliche Filter-Cs an verschiedenen Stellen eingebaut
-> bringt nichts

Im übrigen sind alle Sensoren und auch die Referenzmessung gleich schlecht.

Also mit dem Oszi in den Keller und gemessen. Die Zeit steht dort stabil
auf +-100µs. Bei über 100ms Messzeit sollten da eigentlich Genauigkeiten
von weniger als 0,5°C rauskommen. Hmm.

Hoch in die Wohnung zum Terminal:
Stimmt, Messung konstant, hàààh? Was ist jetzt? Na gut. Also wieder
runter, Oszi eingepackt, ins Bett gegangen.

Am nàchsten Morgen wieder reingeschaut, rauscht wieder.
Totale Konfusion.

Erster Verdacht.
Oszi rausgeholt, angeschlossen. Hoch zum Terminal, Messungen konstant.
Oszi weggemacht -> rauscht

Oszimasse = PE
Der Raspi hat bisher gefloatet.

Raspi-Masse an Heizungsrohr gelegt -> Problem gelöst

Das fiese an der Geschichte: Ich kann nicht messen, was auf der
Leiterplatte passiert, wenn die Störungen vorliegen. Sobald das Oszi
dran ist, gehts ja.

Das ganze hat mich eine Woche gekostet.

Michael
 

Lesen sie die antworten

#1 all2001
08/09/2014 - 02:34 | Warnen spam
On 07 Sep 14 at group /de/sci/electronics in article
(Michael S) wrote:

nachdem ich nun eine Woche nach einem Fehler gesucht habe, möchte ich
Euch die Story nicht vorenthalten. Zu welchem Zeitpunkt wàrt Ihr auf
die Lösung gekommen?



Wàre mir nie passiert, s.u. :p

[snip]

Erster Verdacht.
Oszi rausgeholt, angeschlossen. Hoch zum Terminal, Messungen konstant.
Oszi weggemacht -> rauscht

Oszimasse = PE
Der Raspi hat bisher gefloatet.

Raspi-Masse an Heizungsrohr gelegt -> Problem gelöst

Das fiese an der Geschichte: Ich kann nicht messen, was auf der
Leiterplatte passiert, wenn die Störungen vorliegen. Sobald das Oszi
dran ist, gehts ja.

Das ganze hat mich eine Woche gekostet.



Ich predige schon seit Jahrzehnten, das floatende (uC) für Arxxx ist :)

Ordentliche (HF) Masse, wg. mir 100Ohm//100nF tuts auch für Angsthasen.
Genauso wichtig ordentlicher PWRfail Baustein extern!




Saludos (an alle Vernünftigen, Rest sh. sig)
Wolfgang

Wolfgang Allinger, anerkannter Trollallergiker :) reply Adresse gesetzt!
Ich diskutiere zukünftig weniger mit Idioten, denn sie ziehen mich auf
ihr Niveau herunter und schlagen mich dort mit ihrer Erfahrung! :p
(lt. alter usenet Weisheit) iPod, iPhone, iPad, iTunes, iRak, iDiot

Ähnliche fragen