Elektronischer Blasenzähler

Kleine Helfer erleichtern die Arbeit
Benutzeravatar
Nathea
500 Liter Wein
500 Liter Wein
Beiträge: 741
Registriert: 03 Juli 2012 00:00
Wohnort: Krefeld

Re: Elektronischer Blasenzähler

Beitrag von Nathea » 16 November 2015 12:00

Ihr habt hier so tolle Hinweise und detaillierte Anleitungen gegeben, dass ich selbst nun auch in Eure Fußstapfen treten warden :)

Material (Arduino und das ganze Kleinzeug) ist bestellt und wird hoffentlich noch vor Weihnachten geliefert, dann kann ich mich ans Nachbauen und Umsetzen der Programmierung machen. Inzwischen habe ich beim Stöbern im Internet auch herausgefunden, dass es ziemlich gute Tools und Apps z.B. für iPhone/iPad gibt, die einem Nicht-Programmierer das Leben leichter machen können. Bin gespannt, wie die sich im Praxis-Test mit mir Elektronik-Nerd dann schlagen werden.

Viele Grüße,
Sylvia

Benutzeravatar
Nathea
500 Liter Wein
500 Liter Wein
Beiträge: 741
Registriert: 03 Juli 2012 00:00
Wohnort: Krefeld

Re: Elektronischer Blasenzähler

Beitrag von Nathea » 14 Dezember 2015 16:38

Metnoobie hat geschrieben:...
ich habe die Auswertung mal etwas verschönert. Zusätzlich wird nun die Temperatur über einen externen Fühler mit Protokolliert.
Auf meinem Raspy läuft nun ein Webserver und über Dimple JS lasse ich mir auch einer CSV Datei Graphen erstellen.
Nun kann ich über mein Handy den Stand meiner Gärung überwachen. :D
...
Der Zähler selbst ist doch an einen Arduino angeschlossen, nicht wahr? Könntest Du vielleicht den Sketch, den Du dafür benutzt, hier einmal posten?

Ich bin dabei, etwas Ähnliches zu bauen und würde gern loslegen, sobald die Lichtschranke hier eingetroffen ist.

Danke!

Benutzeravatar
Metnoobie
50 Liter Wein
50 Liter Wein
Beiträge: 63
Registriert: 27 September 2015 17:38
Wohnort: Saarland

Re: Elektronischer Blasenzähler

Beitrag von Metnoobie » 14 Dezember 2015 21:10

nabend

ich mache alles mit einem Raspberry PI2: auswerten, speichern und Anzeige (also Webserver)

Die Ansteuerung der Schaltung mache ich über einen Python Script

hier mein Script (nicht schön aber selten und wird immer besser :-))

Code: Alles auswählen

#!/usr/bin/python
import time
import logging
import RPi.GPIO as GPIO

GPIO_PIN1 = 17
NAME_PIN1 = "Met1"

GPIO.setmode(GPIO.BCM)
GPIO.setup(GPIO_PIN1, GPIO.IN)

co2counter = 0

zeit_org = time.time()  
zeit_div_wait = 1

zeit_delta1 = time.time()
zeit_delta2 = time.time()
zeit_delta3 = time.time()
zeit_delta4 = time.time()
zeit_delta5 = time.time()

zeit_temp2 = 0
errcounter = 0

tempfile = open ("/sys/bus/w1/devices/28-0315728b5eff/w1_slave")
tempread = tempfile.read()
tempfile.close()
tempdata = tempread.split("\n")[1].split(" ")[9]
temperature = float(tempdata[2:])
temperature = temperature / 1000


#Endlosschleife
while True:
	while GPIO.input(GPIO_PIN1) == GPIO.LOW:
		zeit = time.time()  
		time.sleep(0.001)
		zeit_temp1 = time.strftime('%M', time.localtime(zeit))
		if zeit_temp1 != zeit_temp2:
			fout = open("/var/www/dimple/data/met.csv","a")
			zeit_chart = time.strftime('%Y-%m-%d %H:%M', time.localtime(zeit))
			fout.write(zeit_chart + "," + str(NAME_PIN1) + ","+ str(co2counter) + "," + str(round(temperature,1)) + '\n')
			co2counter = 0
			zeit_temp2 = time.strftime('%M', time.localtime(zeit))
			fout.close()
			
	zeit = time.time()  	
	
	if zeit > (zeit_org + zeit_div_wait):
		co2counter += 1
		tempfile = open ("/sys/bus/w1/devices/28-0315728b5eff/w1_slave")
		tempread = tempfile.read()
		tempfile.close()
		tempdata = tempread.split("\n")[1].split(" ")[9]
		temperature = float(tempdata[2:])
		temperature = temperature / 1000
#		letzte 5 Zeiten	
		zeit_delta_temp = zeit_delta5
		zeit_delta5 = zeit_delta4		
		zeit_delta4 = zeit_delta3	
		zeit_delta3 = zeit_delta2		
		zeit_delta2 = zeit_delta1		
		zeit_delta1 = time.time()		
#		halber mittelwert der letzten 5 Zeiten
		zeit_delta = (zeit_delta1 - zeit_delta_temp)
		zeit_div_wait = int((zeit_delta / 5) / 4)
		zeit_div_wait_out = zeit_div_wait * 4
		if zeit_div_wait > 60:
			zeit_div_wait = 60
		zeit_org = time.time()
		fout2 = open("/var/www/dimple/data/last_blubb.txt","w")
		fout2.write("aktuelle Temperatur: " + str(round(temperature,1)) + ' Grad Celsius\n')
		fout2.write(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(zeit_delta1))+'\n')
		fout2.write(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(zeit_delta2))+'\n')
		fout2.write(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(zeit_delta3))+'\n')
		fout2.write(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(zeit_delta4))+'\n')
		fout2.write(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(zeit_delta5))+'\n')
		fout2.write("Durchschnittszeit letzte 5 Aktivitaeten: " + str(zeit_div_wait_out) + " Sekunden\n")
		fout2.close()
Hier werden die Blubbs pro Minute gesammelt und dann in eine CSV geschrieben.
Um nicht so extreme Fehlwerte beim Schwenken zu bekommen, protokolliere ich nur blubbs, die nach frühestens 1/4 der Durchschnittszeit der letzten 5 Blubbs kommen (aber nicht über 60 Sekunden)
Und ich müsste die letzten 5 Aktivitäten mal als Array machen.
Interessant wird es beim zweiten Ansatz. Da ich dann über den gesamten Verlauf protokollieren kann und dann auch besser die Scripte optimieren kann.

Logische und technische Verbesserungsvorschläge werden gerne angenommen.
wer Rechtschreibfehler findet, darf sie behalten!

Benutzeravatar
Ikator
10 Liter Wein
10 Liter Wein
Beiträge: 34
Registriert: 11 Juni 2014 08:11

Re: Elektronischer Blasenzähler

Beitrag von Ikator » 15 Dezember 2015 07:56

Morgen,

also ich hab meinen Zähler mit dem Arduino realisiert. Dazu kommt noch ein Display (mit 20x4 Chars, angesteuert über i2c) und eine DataloggerShield (SD-Karte und RealTimeClock).

Code: Alles auswählen

http://www.file-upload.net/download-11124915/BubblerStateMachine.zip.html
Das Zip-File enthält die Libraries die verwendet werden und 2 Arduino-Sketche. Eins mit und eins ohne LCD (das ohne LCD ist das ältere)

Da durch Delay() Wartezeiten im Loop() ggf. Blubs verschluckt werden können, nutze ich eine StateMachine für die Blubzähler und die Displayausgabe. Im Sketch werden aktuell 2 Zähler verwendet. Es kann aber um beliebig viele erweitert werden (bis die Pins ausgehen).

Der Code ist wie es sich gehört NICHT kommentiert :lol: Ich hoffe man kann anhand der Namensgebung erkennen um was es geht. Fragen können natürlich immer gestellt werden.

Viele Grüße
Ikator
"Der beste Drink, den es gibt, ist der pangalaktische Donnergurgler. Die Wirkung ist so, als werde einem mit einem riesigen Goldbarren, der in Zitronenscheiben gehüllt ist, das Gehirn aus dem Kopf gedroschen." - Der Anhalter

Benutzeravatar
Nathea
500 Liter Wein
500 Liter Wein
Beiträge: 741
Registriert: 03 Juli 2012 00:00
Wohnort: Krefeld

Re: Elektronischer Blasenzähler

Beitrag von Nathea » 15 Dezember 2015 09:07

Genial, Danke!!!

Benutzeravatar
Nathea
500 Liter Wein
500 Liter Wein
Beiträge: 741
Registriert: 03 Juli 2012 00:00
Wohnort: Krefeld

Re: Elektronischer Blasenzähler

Beitrag von Nathea » 01 Januar 2016 16:03

Hallo allerseits,

es geht voran :) Inzwischen habe ich bereits sowohl mit einem Arduino Uno R3 als auch einem Arduino Nano sowie jeweils einer Gabellichtschranke und einer SD-Karte ein funktionierendes "Zählwerk" basteln können. Eure Hinweise und Sketche haben mir dabei sehr geholfen. Was noch fehlt, sind eine RTC (um damit die exakte Uhrzeit der Blubbs festhalten zu können) und eine autarke Stromversorgung des Nano via Batterie, für die die Teile noch unterwegs sind.
Metnoobie hat geschrieben:...
Zusätzlich wird nun die Temperatur über einen externen Fühler mit Protokolliert.
...
Was für einen Fühler hast Du dazu verwendet?

Viele Grüße,
Sylvia

Benutzeravatar
Ikator
10 Liter Wein
10 Liter Wein
Beiträge: 34
Registriert: 11 Juni 2014 08:11

Re: Elektronischer Blasenzähler

Beitrag von Ikator » 04 Januar 2016 07:54

Hallo Sylvia,

ich habe in einem anderen Projekt etwas mit Temperatursensoren gewerkelt. Hier sollte abhängig von der Temperatur ein Relay geschaltet werden. Erst hatte ich es mit einem TMP36 ersucht (Der war in meinem Arduino Starterset mit drin). Hier gab es Probleme, dass beim Schalten des Relays der eingelesene Temperaturwert sich teilweise um mehrere Grad verändert hat. Lag wohl an der sich ändernden Referenzspannug des Sensors.

Also bin ich auf den DS18b20 umgestiegen. (Der wird per 1-Wire Protokoll angesteuert und bei mir traten diese Temperaturschwankungen nicht mehr auf.)
Teilweise wird der Sensor in Wasserdichten Gehäusen geliefert oder auf einer kleinen Platine. Mein Sensor kam aus China und ich hatte anfangs Probleme mit der Ansteuerung. (Benennung der Pins war falsch und es fehlte ein Pull-Up Wiederstand. Danach lief er aber ohne Probleme.

Arduino-Bibliotheken und Beispiele gibt es für beide Sensoren.
TMP36: https://learn.adafruit.com/tmp36-temper ... r/overview
DS18b20: https://milesburton.com/Dallas_Temperat ... ol_Library

Beide Seiten sind auf Englisch. Es sollten sich aber auch Beispiele auf deutschen Seiten finden lassen.

Viele Grüße
Ikator
"Der beste Drink, den es gibt, ist der pangalaktische Donnergurgler. Die Wirkung ist so, als werde einem mit einem riesigen Goldbarren, der in Zitronenscheiben gehüllt ist, das Gehirn aus dem Kopf gedroschen." - Der Anhalter

Benutzeravatar
Nathea
500 Liter Wein
500 Liter Wein
Beiträge: 741
Registriert: 03 Juli 2012 00:00
Wohnort: Krefeld

Re: Elektronischer Blasenzähler

Beitrag von Nathea » 04 Januar 2016 15:48

Hallo Ikator,

wie hast Du die Temperatursensoren befestigt? Hängen sie von oben in den Wein hinein oder greifen sie von außen, über das Glas des Ballons, die Temperatur ab?

Wie ist Dein Sketch aufgebaut? Speicherst Du die Daten auf einem Webserver oder auf Karte?

Viele Grüße,
Sylvia

Benutzeravatar
Metnoobie
50 Liter Wein
50 Liter Wein
Beiträge: 63
Registriert: 27 September 2015 17:38
Wohnort: Saarland

Re: Elektronischer Blasenzähler

Beitrag von Metnoobie » 04 Januar 2016 20:30

Sorry hab einige Tage nicht hier rein geschaut.

Ich hab auch den DS18S20 im Einsatz. Dieser Sitzt momentan auf dem Steckboard neben dem Ballon.

Für den Raspberry gibt es hier die Anleitung:
http://tutorials-raspberrypi.de/gpio/te ... sor-messen

Gruß Metnoobie
wer Rechtschreibfehler findet, darf sie behalten!

Benutzeravatar
Nathea
500 Liter Wein
500 Liter Wein
Beiträge: 741
Registriert: 03 Juli 2012 00:00
Wohnort: Krefeld

Re: Elektronischer Blasenzähler

Beitrag von Nathea » 04 Januar 2016 22:04

Metnoobie hat geschrieben:... Dieser Sitzt momentan auf dem Steckboard neben dem Ballon.
...
Also misst Du die Raumtemperatur, nicht die des Weinlings?

Viele Grüße,
Sylvia

Benutzeravatar
Metnoobie
50 Liter Wein
50 Liter Wein
Beiträge: 63
Registriert: 27 September 2015 17:38
Wohnort: Saarland

Re: Elektronischer Blasenzähler

Beitrag von Metnoobie » 04 Januar 2016 22:35

genau! Da es meiner Meinung nach zur Protokollierung interessant ist, wie sich die Gärung mit der Umgebungstemperatur verhält.
Dieser Sensor gibt es aber auch in Wasserdicht. Da muss man sich nur Gedanken machen wie man die Kabel in den Ansatz verlegt und alles noch dicht bleibt, damit kein Sauerstoff durch kommt.
wer Rechtschreibfehler findet, darf sie behalten!

Benutzeravatar
NetDevil
100 Liter Wein
100 Liter Wein
Beiträge: 123
Registriert: 04 Oktober 2015 16:08
Wohnort: Stuttgart

Re: Elektronischer Blasenzähler

Beitrag von NetDevil » 05 Januar 2016 07:50

Metnoobie hat geschrieben:Dieser Sensor gibt es aber auch in Wasserdicht. Da muss man sich nur Gedanken machen wie man die Kabel in den Ansatz verlegt und alles noch dicht bleibt, damit kein Sauerstoff durch kommt.
Mittels kleinem Loch im Korken, durch das ein Kabel gesteckt wird das lediglich ein paar cm über und unter dem Korken rausguckt. An den Austritten aus dem Korken wird per luftdichter Versiegelung gearbeitet (angeblich reicht schon Cyanacrylatkleber [Alleskleber]).

An die austretenden Drähte kann man dann je nach Bedarf den Messfühler mit variabler Länge für den Gärballon anschließen, bzw. die Verbindung zur Steuerungseinheit.

Problematisch dürfte es werden ein drahtfeines Loch in den Korken zu bohren. Oder halt etwas breiter und dafür mehr Versiegelung verwenden.
~~~ ... I hate that I can't download pizza ... ~~~

Antworten

Zurück zu „Software und Apps für die Weinbereitung“