Rasperrypi heizt ein

Dezember 5th, 2012

Ich gebe zu, der Raspberrypi hat ziemlich lange gebraucht, um bei mir anzukommen. Bestellt habe ich ihn im Mai 2012, angekommen ist er im November. Aber mit dem Klarglas-Kunstoffgehäuse macht er nun endlich einen souveränen Eindruck auf meinem Schreibtisch. Hier beschriebe ich im folgenden, was ich mit dem SoC vor hatte und dann letztlich auch umgesetzt habe.

raspberrypi.JPG

Los geht’s

So, alles ist angeschlossen, die SD-Karte mit raspbian beschrieben, und die Grundlage für die erste Anwendung gelegt. Diese erste Anwendung stelle ich mir so vor: Der Raspberrypi läuft als Steuerung für den Heizkörper im Arbeitszimmer, still und leise, ohne Monitor oder Tastatur, aber am Netzwerk angeschlossen. Nur ein Webserver stellt mir eine Webanwendung bereit, auf der ich auch unterwegs den Status ablesen oder Einstellungen vornehmen kann, z.B. die gewünschte Raumtemperatur.

schema.JPG

Peripherie

Um diese Aufgaben zu erledigen, braucht der Raspberrypi noch zusätzliche Hardware, die einmal die Raumtemperatur aufnehen kann, und dann das Heizkörperventil steuert. Ich habe mich dabei für einen OneWire bus entschieden. An diesen kann man Temperatursensoren vom Typ DS18B20, sowie einen IO-Chip vom Typ DS2408, der einen Ausgangspegel schaltet, anhängen. Der Bus wird über den OW-USB Adapter DS9490R an den Raspberrypi angeschlossen. Am Heizkörper habe ich einen thermostatischen Stellantrieb von Heimeier angeschlossen. Dieser ist im stromlosen Zustand geschlossen. Mit dem IO-Chip kann man nun ein Relais steuern, das diesen Stellantrieb unter Strom setzt, das Ventil des Heizkörpers öffnet, und diesen erwärmt. Ich habe mich für ein Solidstate Relais von Sharp, Typ S202 S02 entschieden.

Software

  • Tomcat7 mit eigener Webapplication
  • PID-Regelung in Java programmiert
  • Quartz Scheduler für Regelung im Hintergrund
  • OWFS

Fertig

Folgendermaßen sieht dann die Status-Seite aus, wenn alles läuft.

Der Temperaturfühler für die Außentemperatur liegt leider noch nicht wirklich draußen.

temperaturestomcat.png

Die gezeigte Webanwendung steht auf github bereit.

Projekt Webserver zur Heizungssteuerung

August 26th, 2012

Ziel des hier beschriebenen Projekts ist es, eine Steuerung für
Heizungsanlagen zu bauen, und die entsprechende Software dazu zu
programmieren. Es müssen also Temperaturen erfasst, und nach
vorgegeben Parametern, Relais geschalten werden.

Hardware

Als Hardware dazu dient der WebserverETH_M32_EX,
den Ulrich Radig auf Basis eines Atmel ATMega644 Mikrokontrollers und
des Ethernetchips ENC28J60 entwickelt hat. Zusätzlich kommt eine
Erweiterung um eine SD/MMC Karte zum Einsatz, um unter anderem
Temperaturmessungen über einen längeren Zeitraum zu
speichern. Die Anbindung erfolgt über einen SD Karten Sockel, der
auf die freie Lochrasterfläche oben aufgelötet wird. Der
Anschluss an den Kontroller erfolgt dann per SPI von unten: Anschluss des SD Karten Sockels Anschlusschema

Temperatursensor KTY-81

Damit die Temperaturfühler problemlos am jeweiligen Messpunkt
anzubringen sind, habe ich die kleinen Dioden an ein flexibles
Koaxialkabel angelötet, und mit Epoxykleber auf ein Stück
Kupferblech verklebt.

Die gute Kopplung an das Trägerblech bietet
neben dem Schutz des Sensors noch den Vorteil, dass die
Eigenerwärmung des Sensors durch den hindurchfließenden
Strom minimiert wird. (Kühlkörper). Bisher habe ich zwei Varianten hergestellt:

  • Flacher Sensor zur Anbringung auf glatten Stellen, wie Rohren oder Heizkörpern. Kann einfach mit Kabelbindern an Rohren befestigt werden.
  • Runder Sensor, z.B. zum Einsatz in Tauchhülsen eines Warmwasserspeichers mit vollverklebter Hülse aus Kuferblech.

Software

Verwendete Komponenten

Grundlage ist der, Ende 2007 neu entwickelte TCP/IP Stack von Ulrich
Radig. Dieser bietet unter anderem bereits folgende Anwendungen, die
hier direkt verwendet oder erweitert werden:

  • http-server Funktionalität
  • NTP Client zur Zeitsynchronisation

Weiterhin wird von ihm, aus einem separaten Projekt, ein Treiber zur
Ansteuerung der SD Karte eingesetzt.
Organisiert wird deren Speicherbereich als FAT16 Dateisystem. Der
eingesetzte Treiber MikroFAT16 wird auf

  • neue Datei erstellen
  • auf Existenz prüfen
  • Daten anhängen
  • Daten Lesen
  • Leider steht keine Möglichkeit zur Verfügung, den Inhalt
    eines Verzeichnisses aufzulisten, was evt. für den FTP Server
    interessant ist.

    Entwickelte Erweiterungen

    Dieses Projekt wäre kein echtes, würde es nicht auch
    spezielle erweiterungen geben. Diese sind:

    • Ftpserver, für den Dowload von Dateien auf der SD Karte
      (Temperaturlog, Konfigurationsdatei)
    • Parser für eine Konfigurationsdatei auf der SD Karte.

    Der FTP Server arbeitet ausschließlich im passiv Modus. Der
    Server ist also listener auf dem Port für den Datenkanal.
    Als FTPClient habe ich FileZilla in Version 3.0.6 
    download) getestet.
    Version 3.0.7 scheint Probleme zu haben. 🙁 Anwendung

    Damit können komfortabel folgenden Dinge ermöglicht werden.
    Die Temperaturkoeffizienten zur Berechnung der Temperatur aus den
    Gemessenen AD Werten, Solltemperaturen, Ein-/Ausschaltverzögerung
    sowie Loginterval können ohne Neuprogrammierung des
    Mikrokontrollers angepasst werden, und über SD Karte der Schaltung
    zugeführt werden.
    Ebenso wird das Logfile regelmäßig um einen
    Datums-/Zeitstempel in Verbindung mit den gemessenen Temperaturen
    erweitert. Dieses kann dann über den FTP-Server heruntergeladen
    werden, und steht z.B. zum Import in eine Tabellenkalulation zur
    Verfügung. Daraus lassen sich Diagramme wie das folgende erstellen:

    Templog Diagramm

    Bekannte Einschränkungen

    Probleme beim Download größerer Dateien (ca. 100kb) per FTP.
    Die Übertragungsrate ist extrem langsam (ca. 1kb/s).
    Der FTP Server gibt nur fest eincompilierte Dateien als
    Directorylisting aus.

    Download

    Hier biete ich den, im Rahmen des Projekts entstanden mini ftpserver
    zum Download an. Er greift auf den erwähnten FAT16 Treiber und den
    TCP/IP Stack zu:

    ftpd-001.zip (14.2.2008)

    Links

    http://www.ulrichradig.de
    – ETH_M32_EX
    mikro-control.de
    MikroFAT16 V1.23
    sourceforge.net
    – FileZilla FTP Client Version 3.0.6