Michael S wrote:
> 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?
>
Beim Aufbau :-)
> 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.
>
Gute Idee. Haette ich jedoch in beiden Richtungen (Laden wie Entladen)
gemacht und dann noch mit 100Hz netzgekoppelt (oder elektronisch
ausgeschnueffelt) synchronisiert. Danach sollte das sogar ohne
Masseanbindunge gehen, wenn auch nur einigermassen.
> 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.
Aber vermutlich ohne Ground Plane und da faengt das Problem an.
> 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)
>
Sind die auch ordentlich verdrillt?
> 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
>
Spaetestens damit ist es fast immer ein Noise Problem.
> 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.
>
Da gibt's ja auch angenehmere Dinge zu tun als nur schnoede Elektronik.
<duck>
> 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.
>
Nicht schlimm, denn bei sowas lernt man oft mehr als in einem ganzen
Monat an der Uni.
BTW, so etwas kann man auch durch streng differenziellen Aufbau
inklusive verdrillter Verbindung hinbekommen. Dabei verdoppelt sich
natuerlich auch der Verbrauch an Port Pins. Wir hatten sowas letztens
bei einem Kunden, bei dem aufgrund von ATEX-aehnlichen Anforderungen
eine direkte Erdung nicht moeglich war.
Der 100Hz-Lock ist auch sehr hilfreich, denn damit hat man schonmal
alles weg, was von fetten Motoren und dergleichen kommt. Ausser wenn ein
VF-Drive drin sitzt, was aber bei Heizungsanlagen europaeischer Bauart
selten sein duerfte. Ich hatte diese Woche unfreiwillig naeheren Kontakt
mit einer alemannischen Pellet-Zentralheizung. Mein vorher hohes Ansehen
der Handwerkskunst hat dabei einen erheblichen Knacks bekommen.
--
Gruesse, Joerg
http://www.analogconsultants.com/