Finger´s elektrische Welt

Trennlinie

Das Forum für den durchgeknallten Bastler

Zurück zur Gallerie

Trennlinie


Elektrik und Elektronik

Die Zähler im Blick


Die Idee begann eigentlich (wie so oft) ganz klein und niedlich. Energie wird immer unpreiswerter und deshalb könnte es interessant werden, seinen Konsum ein wenig zu begutachten. Da es völlig induskutabel ist, laufend zu den Zählern zu wetzen und den Sperrmüll davor wegzubaggern und man so auch nicht an die anderen relevanten Werte wie z.B. die Aussentemperatur oder andere Klamotten rankommt, muß irgendeine Lösung her.

ELV zum Beispiel bietet einen Energiemonitor an. Dieses Gerät hat nur ein paar Schwachstellen. Erstens überwacht es nur den Stromzähler, was irgendwie zuwenig ist. Und zweitens überträgt es seine Daten per Funk zu einer Station, wo man die Werte äugisch ablesen kann. Also nix PC. Nix gut.

Fangen wir mal von vorne an. So ein Zähler hat eine sich drehende Scheibe mit einer roten Markierung :

Da man als Stromkunde nicht ans innere herankommt muß man sich etwas anderes überlegen

und bedient sich natürlich der Ideen anderer Leute. Ein Test mit einem IR-Reflexkoppler (SFHxxx) brachte einen Spannungshub von 2V und hat auf Anhieb funktioniert. So gehts.

Aber wie die Daten vom Stromdealer in den Rechner pumpen ? Kabel verlegen fällt aus. Trommeln ? Unkomfortionös. Aber vielleicht per Stromkabel. Aus den dunklen 80ern des 20ten Jahrhunderts existiert ein Patent dafür. Aus dem Firmennamen wurde ein Produktname.

X10

120kHz-Burstpakete auf der Netzleitung. Klingt simpel. Von Microchip existiert eine AppNote mit einer einfachen Schaltung dazu. Meine Schaltung zum Testen beruht im wesentlichen darauf :

Die Platine arbeitete nur unter mechanischer Spannung, daher der Schraubenzieher und die Spannschrauben. Am Empfänger tauchen dann auch brav die Daten wieder auf :

Das ganze funktioniert aber nur, solange sich Sender und Empfänger an der selben Steckdose und hinter einem Trenntrafo befinden. Bereits ohne den Trenntrafo bedämpfen an der Phase angeschlossene Netzfilter diverser Geräte das Signal so stark, das die Reichweite gleich Null ist. Trotz sorgfältigster Abstimmung der Schwingkreise kam ich zu dem Ergebniss : vergiss es einfach. Vielleicht könnte man mit besseren Filtern, höheren Signalpegeln und anderen Techniken bessere Ergebnisse erzielen, aber irgendwie habe ich die Lust daran verloren. Wer sich damit noch weiter auseinandersetzen möchte, findet hier den Schaltplan meiner Versuche und noch ein wenig Hintergrundinfos.

Trennlinie

Insgesamt ist das eine gute Gelegenheit, die Sache mit der Gong-Fernsteuerung noch einmal anzugehen. Das Ding stammte von Pollin und hatte wahnsinnige 5 Euronen gekostet.

Gesendet wird auf 433 Mhz und auf Knopfdruck. Der Sender besteht aus einem Dekoder und einer kleinen Huckepackplatine, die den eigentlichen Sender enthält.

Am Dekoder wird per Lötbrücken ein Bitmuster hergestellt und per AM in den Äther gepumpt.

Der Sender selbst besteht aus ca. 8 Bauteilen. Netterweise sind die Pins gekennzeichnet :

Am Empfänger findet sich das gleiche in Grün und fischt aus dem Datenmüll das Bitmuster wieder raus :

Der Empfänger selbst kommt tatsächlich mit nur einem Transistor aus :

Offenbar handelt es sich um einen primitives Pendel-Audion. Billiger geht es wirklich nicht mehr.

Nach einigen Versuchen kam ich dann zu vielversprechenden Ergebnissen. Als Modulationsgrad gehen nur 0 und 100%, also nur An und Aus. Am Modulationseingang muß Wechselspannung anliegen, wobei ein ein Pegel von 10V, über einen Kondensator eingekoppelt, ausreicht. Der Pendelempfänger benötigt laufende Signalwechsel um Einzuschwingen. Das macht es leider etwas Schwierig, einfach einen UART anzuklemmen.

Für einen Reichweitentest habe ich mal ein paar Kilohertz auf den Eingang gegeben und die Spule am Sender durch eine Lambda/4-Antenne von 16cm ersetzt. Die Antenne am Empfänger hatte schon die passende Länge. Mitsamt Sender und Akku bin ich dann durch das Haus geschlichen. Das Signal am Sender blieb im ganzen Haus erstaunlich stabil :

Insgesamt scheint der China-Schrott für meine Zwecke geeignet zu sein. Später fiel mir dann noch auf, das das Aussenthermometer offensichtlich auch auf 433 MHz sendet und von meinen Versuchen kaltgestellt wurde. Dauersenden fällt also flach. Wahrscheinlich bekomme ich dann noch nicht einmal mehr das Auto auf.

Also kann jetzt der Versuch einer Datenübertragung gemacht werden. 2 Controller, einer als Sender und einer als Empfänger, welcher die Daten über einen zweiten UART an einen PC weiterreicht.

Der Sender sendet forwährend den Text "FINGER". Direkt verbunden funktioniert das auch wunderbar :

Da der Pendelempfänger einen ständigen Signalwechsel benötigt um empfangsbereit zu bleiben, habe ich die Sendung im Manchester-Code verpackt, um dies zu gewährleisten. Die Geschwindigkeit liegt bei 1200 Baud, so das ein nutzbarer Datenstrom von 600 BPS zustandekommen sollte.
Der Empfänger sieht das allerdings völlig anders. Oben sieht man das gesendete Signal, unten den Ausgang vom Empfänger :

Nach einiger Tüftelei kam ich darauf, das die Billiggurke verdammt lange braucht um Einzuschwingen, und zum anderen kaum Signalpausen unter 10ms verdaut und dann sofort wieder in Starre verfällt. GRMPF. Also den Sender so umgehäkelt, das er eine Präambel von 6 Bytes mit konstantem Bitwechsel sendet (0x55). Der Empfänger schwingt dann ca. ab dem dritten Byte zuverlässig ein :

Das Ergebniss ist : ABSOLUTE SCHEISSE ! Die Empfangsroutine sieht etwa so aus :

Das Teil schafft etwa 50% Fehler bei jedem zehnten Empfang, der Rest weist 100% Fehler auf. Insgesamt also 100% unbrauchbar. Genau überlegt kann das auch nur schwer zuverlässig funktionieren. Wenn der Empfänger in der Mitte eines Bytes einschwingt oder schon vorher irgendetwas anderes empfängt, wird er nicht mehr korrekt einrasten am Startbit. Damit ist der Rest der Übertragung so gut wie verloren.

Warum müssen so simple Dinge immer in einem tierischen Gefrickel ausarten ???

Na ja, muß ich mir das Signal wohl mal genauer zu Gemüte führen. Hier kann man sehen, dass der Empfänger nach etwa 10 Signalwechseln stabil einschwingt. Oben ist das gesendete, unten das empfangene Signal. Alles vorher ist komplett Gulasch :

Nach einer Präambel von mehreren gleichmaßigen Bitwechseln (0x55) bleibt der Empfänger bei einer Pause von maximal 5ms stabil (Bildmitte). Dann wird die Information gesendet. In diesem Fall ist das der Text "Finger" in nicht kodierter Form.

Hier sind mehrere Datenpakete in einem Abstand von 380ms zu sehen und was der Empfänger zwischendurch so treibt. Schätze, hier empfange ich alle Rechner der Umgebung, Funkthermometer, Autofernbedienungen und was weiss ich noch alles.

So wie ich die Sache sehe, muß ich den UART auf diese kurze Pause von 5ms synchronisieren. An sich kein Problem. Nur geht mir das erste Startbit verloren, wenn der UART nach der Messung eingeschaltet wird. Entweder muß der UART nach dem ersten Nutzbyte eingeschaltet werden, oder ich muß diesen in Software nachbauen.

Also als Erstes mal der Versuch, die Pause im Datenstrom zu erwischen :

Ich bleibe bei 1200 Baud, also hat ein Bit eine Dauer von 833us. das lässt sich noch bequem per Timer realisieren und damit ein UART in Software zusammenbauen.

Was wollte ich noch machen ? Jetzt bloß nicht das Ziel aus den Augen verlieren. Ach ja : Zähler überwachen. Also weiter im Text.

Das Problem liegt jetzt eher darin, das ich vor zwei Rechner, zwei Compilern, 2 Brennern und 2 Schaltungen sitze und so langsam den Überblick verliere, was ich hier eigentlich mache. Bitfrickelei auf Fußpilzebene.

Wenn das so weitergeht und ich nur spätabends zum Basteln komme (GÄÄÄÄHN) bin ich bald reif für die Klapsmühle.

Etliche Abende später war es dann soweit, halbwegs stabile Datenübertragung, mit Prüfsummen bewehrt. Endlich. Warum war das eigentlich so schwer ? Anders herum gefragt : warum sind diese Türklingeln eigentlich so unzuverlässig ?

Egal. Die Schaltung steht im großen und ganzen, die übrige Software kommt jetzt nach und nach und ich habe den Kopf wieder frei, um mir ein paar Gedanken über Sensorik zu machen. Warum sollte man nur Zählerstände überwachen ? Für schmales Geld könnte man noch ein paar Dinge mehr aufzeichnen, z.B. Umweltdaten wie Licht, Temperaturen und ähnlich sinnfreies Zeug. Oder man schaut sich an, was der Blechkasten an der Wand eigentlich so mit den ganzen Kubikmetern der Reste kontinentaler Dinosaurierkacke so anstellt und die schöne Energie eigentlich lässt.

Oder ich schliesse mich vielleicht doch alternativen Umweltschutzkonzepten an :

Damit die Verkabelung später in überschaubarem Rahmen bleibt wollte ich auf I2C zurückgreifen. Da bietet sich natürlich der Standardsensor LM75 an.

Er kommt mal testweise in ein kleines Weissblechgehäuse und wird mit einer Kombination aus 2K-Kleber und Wärmeleitpaste am Blech befestigt :

Später kann das Teil dann mit Epoxydharz zugegloddert werden. Für die Optik schmeisse ich immer noch eine Priese schwarzen Toner mit rein, dann sieht der Verguss etwas professioneller aus (vorausgesetzt die Pampe läuft nicht vorher aus irgendeinem Loch wieder raus). Dieses erste Modell ist auch schon mit einem Kurzschluss im Mülleimer gelandet. Grrrr.

Dieses Teil wird die rote Markierung auf der Scheibe des Stromzählers detektieren. Der IR-Reflexkoppler wird über einen Komperator auf Linie getrimmt und mit einem Portexpander wird das Schätzchen busfähig :

Ein freundlicher Zeitgenosse hat mir ein paar Gehäuse gespendet, unter anderem auch welche mit Displayausschnitt und Tastatur. Da kommt der Kram jetzt rein :

Unten sitzt ein Schaltnetzteil, was die Versorgung übernimmt (endlich werde ich die überlagerten Platinenreste als Befestigungsmaterial los) und eine Etage höher werkelt ein PIC-Modul.

Unten waren gleich Verschraubungen für die Kabel dran, oben rein kommt noch der 433MHz-Kram.

So langsam wird es Zeit, die Sensorik auf die Praxis anzupassen. Nachdem ich ärgerlichweise feststellen musste, das die Glasscheibe am Stromzähler die Detektion stark beeinflusst, musste erst einmal ein praxisnaher Zustand auf meinem Tisch hergestellt werden :

Dem Bakelit des Zählerkastens bin ich mit Akkuschrauber und Feile zuleibe gerückt, so daß ein kleiner Motor mir jetzt höchste Verbräuche über einen Riemenantrieb bescheren kann. Es hat sich gezeigt, das der Sensor ziemlich genau auf der Scheibe positioniert werden muß. Erst dann kann die Referenzspannung eingestellt werden. Also zurück ans Reißbrett und den Sensor in ein noch zu frickelndes Gehäuse gehäkelt.

Bis mir die dafür passenden Teile über den Weg stolpern kann ich mir ein paar Gedanken über das Anzapfen der Wasseruhr machen. Meine hat ein kleines, gezacktes Rädchen, welches im Wasser schwimmt. Das müsste eigentlich per Laser und Phototdiode angepeilt werden können. Damit wäre ein litergenauer Verbrauchsmesser machbar ("Ey, du hast schon wieder 5 Liter zu viel geduscht! Für diese Woche ist Schluss!").

Dies hier ist eine Laserdiode (ausgeschlachtet aus einem Barcodescanner) kombiniert mit einer alten Photodiode. Das Prinzip steckt in jedem CD-Player. Der Laserstrahl wird nur bei einer Höhe im richtigen Winkel auf die Photodiode gelenkt. Kurbelt sich das kleine Rädchen in der Wasseruhr drunter weg wird der Strahl abgelenkt und aus der Frequenz kann direkt auf die Drehzahl geschlossen werden :

Der rote Laser hat den ebenso simplen wie entscheidenden Vorteil, das man den Strahlverlauf sichtbar machen kann. Bei einem Infrarotlaser weiss man (zumindest meiner Erfahrung nach) irgendwie nie so genau, wo das Moped nun hinleuchtet.

Die Sensorik für Gas- und Stromzähler hat jetzt mittels 2K-Kleber und Fädeldraht seine finale Heimat in einem kleinen Gehäuse gefunden :

Das Ding kann jetzt mittels Klebeband auf der Glasscheibe sauber plaziert werden. Die Klinkenbuchse erlaubt den Anschluss eines Multimeters, um durch Ausrichtung größtmöglichen Störspannungsabstand einstellen zu können.

Für die Temperatursensoren musste ich etwas besonderes Frickeln. Da es die kleinen Scheisserchen nur im SO8-Gehäuse gibt und die aktive Fläche oben liegt, müssen die Dinger irgendwie ein wenig aus ihrer Behausung herausragen. Eine U-Schiene aus Plasitk, verschlossen mit Silikon und angefädelten ICs auf einem Stück Platinenrest brachte die Lösung :

Die Schienen werden anschliessend mit Vergussmasse aufgefüllt. Als besonderen Gag hatte ich von Peters Wepuran besorgt (0,5 kg gibt es als kostenloses Muster). Mit Toner geschwärzt und mit Thixotropiermittel angedickt habe ich die Sensoren lackiert. Das Ergbeniss war, das die Pampe erst nach 3 Tagen halbwegs ausgeärtet war und die Sensoren jetzt absolut Scheisse aussehen. Aber da die sowieso alle im Heizungsraum verbastelt werden, bleiben die Dinger jetzt, wie sie sind.

Zwischenzeitlich habe ich noch Informationen zu den Dekoderchips in den Gongs bekommen. Offenbar können die noch ein bischen mehr, wie ihr oben nachlesen könnt.

- Fortsetzung folgt -

Und JA, tatsächlich nach nur 5 Jahren steigt dieses Projekt wie Graf Drakula aus seinem Sarg an die Oberfläche und lechzt fiebrig seiner Vollendung entgegen. Lobpreiset den Herrn.....Doch zurück zum Ernst des Themas.

Geheilt vom der Idee der Funkübertragung, angetan von den Möglichkeiten eines PIC-WEB

und in einem neuen Haus wohnend habe ich den Ballast des Projektes über Bord geworfen und von vorne angefangen. Heilsame Erfahrung das.

Zwischenzeitlich hatte ich mal was mit RS485 zur Dastenübertragung gefrickelt.

Überzeugt hat mich das nicht. Also ist es auch wieder in der Kiste verschwunden. Das Konzept, den ganzen Salat in EEPROMs zu schaufeln und bei Bedarf abzuholen hab ich aber beibehalten.

Die alte Sensorik konnte ich auch nicht mehr sehen, also hab ich neue gebaut. Des Gaszähler tastet ein Reflexkoppler ab, der auf die reflektierende 6 vom Rollenzählwerk glotzt. Hier noch die erste Version auf einer Holzplatte.

Die ist nach dem ersten Durchgehen abgebrochen und wurde durch eine Kunststoffplatte ersetzt.

Die ist auch sofort abgebrochen, weil es in dem Raum so dermaßen eng ist, und ich seine raumgreifende Existenz vergessen hatte *Grummel* Dieses Mal ist auch noch eine Ecke vom Zählergehäuse abgebröselt.

Bild vom Raum

Der Schaltplan ist simpel, das Ding besteht faktisch nur aus Reflexkoppler und Komperator :

Der Wassermöller wird durch einen käuflichen Reflexkoppler vom Typ SUNX EX-26A abgetastet, welchen ich netterweise geschenkt bekommen habe :

Der glotzt auf den 1/10 Literzeiger und ermöglicht so eine Auflösung von 1l.

Der Strommöller war da wesentlich unkooperativer. Ich habe meine ursprünglichen Versuche wieder aufgenommen und mit LED und Phototransistoren experimentiert:

In meiner Verzweifelung habe ich einmal den Reicheltkatalog rauf und runter ausprobiert, ebenso wie Photokopler aus alten Mäusen.

Der Hub von verrauschten 100mV habe ich dann irgendwann auf die Glasscheibe geschoben und die weggeworfen. Aber das Ergebniss war das Gleiche.

Also müssen schwerere Geschütze her. Das Prinzip des CD-Players mit einer sichtbaren Laserdiode wird es richten :

Entweder wird der rote Strahl von der Farbmarkierung gestreut oder vom glänzenden Rand zu einem Strich umgeformt. Die Schaltung als solche ist wieder simpel

Das Nutzsignal jedoch sehr gut:

Das Ding wird dann mit PowerSchtripps auf den Zähler, äh, montiert.

Die Temperaturmessung muss jetzt im Nebenraum erfolgen.

Zum Glück steht hier ein fettes Rohr als Kabelbrücke zur Verfügung.

Die Sensoren sind jetzt vom Typ KTY220 und werden von je einer Konstantstromquelle mit 1mA besaftet.

Diese liefern so eine Spannung im Bereich 0.7 bis 4.3V, welche auf 2 AD-Wandler mit je 4 Eingängen und einstellbaren Referenzen gehen.

Deckel druff und alles wird gut. Die Anbindung an den Webserver erfolgt via I2C mit 10 kHz über ein altes Netzwerkkabel. So sind die 5 Meter Kabelverbindung kein Problem.

Der zugehörige Schaltplan ist natürlich wie immer frei verfügbar. Der Webserver selbst samt einer kleinen Hilfsplatine kommt in ein Gehäuse, welches direkt an die Wnd gedübelt werden kann.

Will jemand mitfrickeln ? Dann gibt es hier den völlig unverbastelten IP-Stack passend zum Bord, sowie die passende Appnote dazu. Den Rest müsst ihr euch von Olimex saugen. Zusammengebaut ist das Ding mit MPLAB V8.53 und MCC18 V3.62 oder so. Beides kommt von Microchip und ist kostenlos verfügar. Ob das alles mit neueren Versionen tut ? Ich habe nicht den blassesten Schimmer einer Ahnung.

Hier mal ein Beispiel für eine Probeauswertung einer aufgezeichneten Nacht, vorerst händisch ausgewertet. Am Stromverbrauch sieht man wunderbar, wann Personen im Haushaöt aufgestanden sind :

An Abgastemperatur und Gasverbrauch sieht man, das die Nachtabsenkung wohl spinnt und viel zu früh die Heizung wieder hochfährt.

Hier mal mehrere Temperaturen übereinandergelegt :

Wunderbar sehen kann man hier die Entnahme von Warmwasser und wann der Boiler zum Nachheizen anspringt.

4 Wochen später ist jetzt auch das erste Alpha-Release (Grusel) der Software fertig. Geschrieben ist sie in C# und natürlich sowohl im Source als auch als direkt ausführbare Version verfügbar. Allen Versionen liegt eine kurze Datenbank bei, damit ihr rumspielen könnt. Dafür ist natürlich Visual Dingsbums 2010 von Kleinweich beziehungsweise .NET notwendig. Und wenn es bei euch nicht läuft, so ist das eine typische Eigenart dieser äußerst merkwürdigen Programmiersprache.

Dazu gehört natürlich der IP-Stack, der jetzt auf dem Webserver läuft.

Hier kann man sich alle relevanten Informationen in Kurvenform anzeigen lassen, die Zeiträume frei wählen und dazu die gemessenen Temperaturen einblenden.

Eine zweite Registerkarte liefert statistische Informationen inklusive Zähler- und Kontostand

und ein dritter Reiter ermöglicht es, den ganzen Salat zu konfigurieren.

Hier kann man z.B. sehen, das ich geduscht habe und wie danach der Boiler (zu sehen an der Abgastemperatur) angesprungen ist an begonnen hat, Gas zu konsumieren.

Per Klick erhält man dann für den gewünschten Zeitraum alle wichtigen Kosteninformationen :

Die Software hat noch diverse Bugs :

Hat man neue Daten abgeholt, so werden diese nicht in den Kurven eingepflegt -> Neustart notwendig
Die Skalierung der X-Achse wird nicht korekt beschriftet
Bei Änderung der Konfiguration ist ein Neustart notwendig

Was gibts noch für Ideen ? Kurven per Maus verschieben, Skalierungen per Klick ändern, Messfunktionen direkt in den Kurven, Exportfunktionen, softigere Grundlastanzeigen als Kurve mit weniger Punkten, eine Kommentarfunktion (so das diese direkt an den Kurven erscheinen, Umrechnung der Zeitangaben in die korrekte Zeitzone (zur Zeit ist alles GMT) und so weiter. Habt ihr Lust, hier mitzuarbeiten ? Meldet euch bei mir!

- Fortsetzung folgt -

- Echt jetzt ! -

Zurück zur Gallerie
Zurück zur Gallerie

Trennlinie

© 2000 FINGER

Trennlinie