Jul 212015
 

Den Wasserstand meiner Zisterne habe ich lange mit einem 8-Stufen LED überwacht. Die Einteilung in 8 Stufen ist recht grob, pro Stufe werden ca 875 Liter dargestellt.

Um hier eine genauere Messung durchführen zu können, habe ich einen Ultraschall-Sensor in die Zisterne gebaut, der mit einem Raspberry-Pi angesteuert und ausgewertet wird.

Alle 5 Minuten wird ein Ultraschallimpuls losgeschickt und wieder aufgefangen und an der Laufzeit errechnet, wie weit die Wasseroberfläche vom Sensor entfernt ist.

Die Messung schwankt mit ± 1,5 cm, ab und zu ist auch ein ganz krummer Wert dabei, daher messe ich in kurzem Abstand 10 mal und bilde dann den Mittelwert.

Die gemssenen Werte schreibe ich in eine Round-Robin-Database und erzeuge daraus Grafiken:





 

Verwendete Hardware:

Raspberry PI 2
mit Gehäuse,
Netzteil
und SD-Karte
Ultraschallsensor oder Ultraschallsensor wasserdicht Kabel Schlagschrauber

 

Gehäuse für Ultraschallsensor

 

Werkzeug:

Lötkolben

Schraubendreher für Lüsterklemmen

Schlagschrauber

Verwendete Bookware:

In ein schwarzes Plastikgehäuse habe ich Löcher für den Ultraschallsensor gefräst, den Sensor eingepasst und daran ein übrig gebliebenes 4 x 2 Cat 7 Netzwerkkabel angelötet (Lötfett leistet hier wunderbare Dienste!)

 

Gehäuse noch offen, 4 der 8 Adern in Gebrauch

Gehäuse noch offen, 4 der 8 Adern in Gebrauch

 

Sensor anlöten

Sensor anlöten

Dieses habe ich dann mit der Makita an die Innenwand des Zisternenschachts getackert 🙂

von oben

von oben

Ultraschallsensor pi im Gehäuse

Ultraschallsensor pi im Gehäuse

 

Das Kabel wird durch das Rohr bis nach außen geführt, um dann gleich wieder im Lichtschacht zu verschwinden.

Kabel in Zisterne

Kabel in Zisterne

Von dort geht es weiter durch den Fensterrahmen in den Heizungskeller, wo der Raspberry sitzt und das ganze ansteuert.

Durch den Kunststofffensterrahmen gebohrt

Durch den Kunststofffensterrahmen gebohrt

Raspberry transparentes Gehäuse

Raspberry transparentes Gehäuse

 

Software:

Es läuft per cronjob alle 5 Minuten ein Python-Script, das 10 x die Entfernung zur Wasseroberfläche misst, den Mittelwert bildet und per ftp auf die Homepage schiebt. Dort wird sie durch ein WordPress Plugin dargestellt:

#!/usr/bin/python
# coding=utf8
import time
import ftplib
import RPi.GPIO as GPIO
#from __future__         import print_function

GPIO.setmode(GPIO.BOARD)
trig=11
echo=13
GPIO.setup(echo,GPIO.IN)
GPIO.setup(trig,GPIO.OUT)
voll=50 # 50 cm von Sensor bis Wasseroberfläche = voll
leer=230 # 230 cm von Sensor bis Wasseroberfläche= leer
entfernung=0
gesamt=0

liter_pro_cm=3.1415*112.5*112.5*1/1000  #pi * radius * radius * 1cm /1000 sonst milliliter
print "Liter pro cm: ",liter_pro_cm

for i in range(0,10):
        GPIO.output(trig,True)
        time.sleep(0.00001)
        GPIO.output(trig,False)
        while GPIO.input(echo) == 0:
                pass
        start=time.time();
        while GPIO.input(echo) == 1:
                pass
        ende = time.time();
        entfernung=((ende - start) * 34300) / 2
        print entfernung
        gesamt=gesamt+entfernung
        time.sleep(0.75)

mittelwert=gesamt/10
volumen=(leer-mittelwert)*liter_pro_cm
print "Entfernung: ",  mittelwert, " cm"
print "Volumen: ", volumen
print "- - - - - - - - - - - - - - - - - - - - - "
f1=open('/home/pi/entfernung.txt','w')
print >> f1, '%d' % (mittelwert)
f1.close()

f2=open('/home/pi/volumen.txt','w')
print >> f2, '%d' %(volumen)
f2.close()

f1l=open('/home/pi/entfernung.txt','r')
f2l=open('/home/pi/volumen.txt','r')

serverftp = ftplib.FTP('ftp.server.de', 'user', 'pass')
serverftp.storbinary('Stor entfernung.txt', f1l)
serverftp.storbinary('Stor volumen.txt', f2l)
serverftp.quit()

f1l.close()
f2l.close()