Dieser Artikel beschreibt eine Lösung zur Brauprozessautomatisierung mittels der Software Mash It in kombination mit 1-Wire Sensoren und Aktoren auf einem Linux-PC. Die hier vorgestellte Vorgehensweise wurde auf Ubuntu 9.10 getestet, sollte aber auf jeder modernen Distribution funktionieren. Danke vorab an den Autor der MAC-Version, ich habe große Teile als Basis verwendet.
Die hier gezeigte Schaltung ist in Anlehnung an folgende Schaltungsvariante aufgebaut:
Schema siehe hier: Schema 1 wire hobbyboards.pdf.
Anregungen, Software und Teile des Layouts habe ich von Dunkelbrauer und Fangobräu, dafür herlzichen Dank fürs Teilen!
Der Schaltplan und die Platine wurde mit der Software „Target 3001 V14“, welche als Gratisversion für Privatanwender verfügbar ist entworfen.
Target Homepage
Es ist mein erstes Projekt mit Target, daher bitte nicht gleich schimpfen, falls die eine oder andere Bohrung nicht passt, oder etwas eleganter gelöst werden hätte können.
Die Platine ist zweigeteilt und teilbar, der linke Teil stellt die USB-Anbindung dar (DS9490R), der rechte Teil besteht aus einem 1-Wire 2-fach IO Baustein DS2413, den Transistoren zum Ansteuern beider Relais, und einem NE555N zum Takten des Relais1 (durch Entfernen von Jumper J1 deaktivierbar).
Zur Besonderheit des Taktens der Pumpe: Ich habe diese Schaltung für meine Brauanlage (Glühweinkessel mit Kochtopf als Malzrohr a`la Cebulon) gemacht, da sich die verwendete Pumpe (Ablaufpumpe von Geschirrspüler) als zu stark erwiesen hat und ich bei meinem ersten Brauversuch zusehen durfte, wie der sich aufgrund von Verstopfung des oberen Siebes bildende Maischestrahl mich von oben bis unten vollgepieselt hat :P
Über die Kondensatoren C2 und C4 kann die Frequenz (bei C2 330uF und C4 leer ca. 0,5Hz) und über den Potentiometer R13 das Pump/Pause-Verhältnis eingestellt werden. Ich erziele mit diesem Verfahren einen gleichmäßigen Durchfluss durch das Maischerohr.
Download Zip-Archiv mit dem Target Projekt und der Platinen/Bestückungsseite als PDF Hier die Platine als Ansicht:
In dem folgenden Verdrahtung des Sudwerks (Elektrotopf/Glühweinautomant) werden die schon weiter oben beschriebenen Komponenten verwendet. Die Relais verwende ich als Schließer um eine Art Sicherheitsfunktion im Falle eines Rechnerabsturzes zu haben (sicher ist das noch nicht, es gibt ja keinen Watchdog, etc….) Nachdem aber die Übertemperatursicherung und das löblicherweise verbaute Schutzthermostat für die Heizung noch im Gerät aktiv verblieben sind, kann nicht viel passieren..
Anmerkung: Es müssen die gängigen build-utilities zum selber compilieren von Software installiert sein. Es werden für die Installation Admin-Berechtigungen benötigt (User muss in der sudoers liste eingetragen sein).
Öffnen einer Shell unter Linux:
Liste der vorab zu installierenden Pakete:
sudo apt-get install automake autoconf autotools-dev gcc g++ libusb-dev sudo apt-get install fuse-utils libfuse-dev sudo apt-get install sun-java6-jre
OWFS ist ein Open-Source-Treiber, der den Zugriff auf den 1-wire-bus ermöglicht. OWFS ist unter Linux und Mac OS verwendbar. (Es ist auch möglich OWFS, für Windows zu übersetzen, das ist aber aufwändiger, als die offizielle OWAPI zu verwenden.)
In unserem Fall muss das OWFS für Linux übersetzt und installiert werden:
cd ~
wget http://downloads.sourceforge.net/project/owfs/owfs/2.7p36/owfs-2.7p36.tar.gz tar xzf owfs-2.7p36.tar.gz * Wechseln in das entpackte Verzeichnis: cd owfs-2.7p36 * Konfigurieren: ./configure * Kompilieren:
make
* Ist make ohne Fehler durchgelaufen, können die binaries installiert werden:
Hier benötigt man Adminrechte.
sudo make install
Alles OK? - gut, die ausführbaren Dateien befinden sich nun unter /opt/owfs/bin/
cd ~
cp .bashrc .bashrc.bak echo ' ' >> ~/.bashrc echo 'PATH=$PATH:/opt/owfs/bin/' >> ~/.bashrc echo 'export PATH' >> ~/.bashrc
Bei jeder neu geöffneten Shell ist /opt/owfs/bin/ nun auch mit im Sytempfad…
überprüft kann das ganz einfach werden:
echo $PATH
sudo /opt/owfs/bin/owserver -u -p 3000 –error_level=5 –foreground
owdir -s localhost:3000
Bei mir sieht der Output so aus:
0@@
wobei /81.xxxx der USB-Adapter, 10.xxxx der Temperatursensor und /3A.xxxx der 2-Port IO Baustein ist.
Die zweistellige Zahl vor dem Punkt gibt die Produktfamilie an, also ob es nun bsp. ein Sensor oder ein Aktor ist, die nächsten 4 Stellen sind eine eindeutig zuordenbare Seriennummer (also bei jedem Device anders).
Funktioniert alles soweit, kann die Hardware auch schon „richtig“ angesprochen werden:
*Temperatur lesen:
owread -C -s localhost:3000 10.79A8DC010800/temperature
*Relais1 einschalten: owwrite -s localhost:3000 3A.4CAE02000000/PIO.A 1
owwrite -s localhost:3000 3A.4CAE02000000/PIO.B 1
owwrite -s localhost:3000 3A.4CAE02000000/PIO.A 0
Das sind auch gleich die „Adressen“, die bei MashIt eingefügt werden müssen, dazu aber später.
Mash It ist ein Java-Anwendung und kann unter http://www.dunkelbrauer.de/Software/Index.html heruntergeladen werden.
cd ~wget http://www.dunkelbrauer.de/downloads/Mash_It_v1.0.2.tar.gz
tar -xf Mash_It_v1.0.2.tar.gz
* Starten: cd ~/Mash_It_v1.0.2/ ./MashIt.sh
Jedes 1-wire-Element (Sensoren, Relais etc.) hat eine eigene - weltweit eindeutige - ID, mit der es am 1-wire-bus angesprochen wird. Jedes Hobbyboard und jeder Sensor hat eigene Ids, daher können diese nicht vordefiniert werden. Beim hier verwendeten OWFS (One-Wire-File-System) sind die Komponenten über Pfade ansprechbar, die auch die Id enthalten. Daher muss man in Mash-It erst die richtigen Ids der angeschlossenen Komponenten einstellen.
Als erstes muss man also die richtigen Ids der Komponenten herausfinden. Dies kann man z.B. mit dem Kommandozeilen-Programm owdir (in OWFS enthalten) machen. (Aufruf siehe oben).
Dann muss Mash-It konfiguriert werden. Erst wählt man im Rezeptplaner im Menü „Tools“ die Option „Hardware konfigurieren“. Dort wählt man das OWFS-Interface aus und klickt auf „Diese Hardware konfigurieren“. Im anschließenden Menü muss zunächst unter „owserver“ der Server-Port (meist einfach die lokale Portnummer, in unserem Fall z.B. „3000“) eingegeben werden. Damit weis das Programm, unter welchem Port der owserver (OWFS-Server-Dienst) erreichbar ist. In den anderen Feldern müssen die OWFS-Ids des Sensors und der Relais eingegeben werden, siehe Screenshot:
Jetzt alle Konfig-Dialoge mit Okay beenden (wichtig, sonst werden die Änderungen nicht übernommen) und am besten einen Test mit angeschlossener Hardware und der „Manuellen Hardware-Steuerung“ (im Mash-It-Menü „Tools“) vornehmen. Wenn jetzt Fehlermeldungen hochkommen, hat das in der Regel einen der folgenden Gründe:
sudo nano /opt/owfs/bin/run-owserver
Einfügen:
1@@
ausführbar machen:
sudo chmod +x /opt/owfs/bin/run-owserver
sudo nano /opt/owfs/bin/kill-owserver
Einfügen:
2@@
ausführbar machen:
sudo chmod +x /opt/owfs/bin/kill-owserver
Der owserver kann nun ganz bequem mit run-owserver gestartet, und mit kill-owserver beendet werden.
cd ~/Mash_It_v1.0.2/ nano MashIt.sh
3@@
UFF - fertig Bitte fühlt euch frei, die sicher vorhandenen Fehler auszubessern, oder das eine oder andere zu ergänzen. Finden könnt ihr mich hier im Forum unter dem nic „automated“. cheers Rainer