Nieuws:

Help mee aan het verbeteren van het forum via een donatie. Klik hier,

Hoofdmenu


Brouw & Fermentatie Controller met Arduino

Gestart door weed, 22-02-2011 23:08 u

Vorige topic - Volgende topic

0 leden en 1 gast bekijken dit topic.

weed

Geïnspireerd door Grote Beer (@) heb ik zijn BrouwMaat aangepast voor traditioneel Brouwen met ketel en roerstok.
Om onderscheid te kunnen maken heb ik voor de naam B & F Controller gekozen.
De B staat voor Brouw en de F voor Fermentatie.
Momenteel is het zover nog niet maar in de toekomst zal ik deze functionaliteit nog toevoegen.
Wanneer weet ik niet want tijd is schaars.

De volgende aanpassingen zijn doorgevoerd:
- Een I2C Real Time Clock toegevoegd
- I2C LCD gerealiseerd om een aantal poorten vrij te maken voor toekomstig gebruik
- De 2 LED pinnen verplaats om twee analoge ingangen vrij te maken voor eventueel toekomstig gebruik
- De hoofdroutines verder opgeknipt in herkenbare brouwstappen
- Een 64Kb I2C EEPROM toegevoegd (wordt nog niet gebruikt)
- En een aantal kleiner aanpassingen.

De code is HIER te downloaden.
Het zip bestand bevat ook een aantal Fritzing schema's van de losse aan te sluiten onderdelen.

 :degroeten:

McLeft

Ziet er leuk uit.
Ik twijfel nog om input via Web of via rotary te doen. ik gebruikt de UNO momenteel voor mijn gistkamer (sturing/logging + ethernet).
Het bier staat nu te lageren (elke 8 uur gaat er 1° C eraf).

http://storm39.dyndns.tv:10000

De link onder HIER werkt niet bij mij => geen docs volgens google.
 :degroeten:

weed

Download link aangepast in originele bericht.

Ik had het schemaatje van de display gecorrigeerd maar vergeten de link aan te passen bedankt voor het bericht.

@

Hoi Weed,

Ziet er goed uit. Heb de code eens doorgespit, en denk dat ik je voorstel om het display met i2c aan te gaan sturen maar ter harte neem.
Ook een extrene clock wordt steeds belangrijker, want de drift van de interne ms counter wordt bij grote tijden toch wel wat veel.

Nu Carnaval, en de onvermijdelijke griep die daar meestal achter vandaan komt voorbij is kan ik weer aan de slag aan een nieuwe versie van BrewOMatic.
Ik schaf ook maar een Ethershield aan, dan kan ik remote volgen hoe de vlag er bij staat tijdens het maischproces. Of de data naar een website sturen om in een leuke interface te laten zien of zo.

We zien wel,

Grtz,
Ed.

weed

Met mijn clockie ben ik zo blij.

Er zijn verschillende libraries voor beschikbaar maar persoonlijk vond ik de DS1307new goed in elkaar steken.
Wat hierbij een gemis is is dat de tijd niet in epoch kon worden opgevraagd op zich niet zo'n probleem omdat het in een regel of vier zelf is op te lossen. Epoch time is de tijd uitgedrukt in seconden vanaf 1 jan 1970.
Met deze functie zijn de tijdsberekeningen weer een fluitje van een cent.
Ook omdat de epochtime in een Long past neemt de logging van datum en tijd maar 4 bytes in beslag.
Het is wat lastiger om van epoch naar een leesbare datum en tijd te komen als de arduino dit moet converteren.
Hiervoor heb ik een functie geschreven maar deze gaat nog fout op de eerste 1ste januari na een schrikkeljaar.
Ik heb het maar even weggelegd want ik denk dat ik steeds over de fout heen kijk.

De logging ga ik doen in EEprom 64 Kb, heb ik gelijk bij mijn display ingebouwd, dit is een beperking omdat bij gecontroleerde vergisting de logcycle 3 of meer minuten moet worden in verband met de beschikbare ruimte.
De verzamelde data kan ik dan later overzetten naar de PC met behulp van Gobetwino dat heb ik getest en werkt perfect.

Momenteel heb ik een menu inbouwd, te bedienen met de rotary, voor clock instellen, maischen met handmatige invoer of gebruik van 4 presets, vergisting met handmatige invoer of gebruik van 4 presets en log data export.
Verder heb ik nog een LED erbij geplaatst zodat ik temperatuur te laag, ok, en te hoog kan weergeven.

Dan heb ik nog de PID library getest met een weerstand op mijn temperatuursensor gebonden en zonder koeling en die lijkt het ook heel goed te doen als heb ik nog niet alle oscillatie eruit gekregen maar gezien de test opstelling een heel goed resultaat.
De EDB library heb ik getest maar heb de maker moeten melden dat er een serieuze bug in zit bij een herstart is alle data kwijt dwz het staat nog in het geheugen maar de record counter staat op nul. Nadat hij een reactie stuurde heb ik hem mijn test sketch gemaild daarna niet meer gehoor. Afwachten maar wat eruit komt.

Binnenkort zal ik de nieuwe code online plaatsen en een foto van het display daarna ga ik opzoek naar een kastje om het in te bouwen.

Er schiet me net iets te binnen zou het mogelijk zijn om met een internet verbinding je timer te synchen zodat je de drift op die wijze kan beperken?
 :degroeten:

McLeft


weed

Citaat van: McLeft op 21-03-2011  13:32 uAmai klinkt gesofisticeerd.

Bedoel je dit: http://arduino.cc/en/Tutorial/UdpNtpClient
Nog niet uitgetest.
 :degroeten:

Yep dat lijkt het te zijn succes met testen.

Zojuist heb ik nog een artikel gelezen om met een remote control (klik aan klik uit) apparatuur te bedienen met de arduino.
Dat lijkt me ideaal om de arduino volledig weg te houden van de 240V en een stuk goedkoper dan een solid state relais met stopcontacten. Ook geen mechanische onderdelen meer.

 :degroeten:

@

Citaat van: weed op 21-03-2011  19:59 uZojuist heb ik nog een artikel gelezen om met een remote control (klik aan klik uit) apparatuur te bedienen met de arduino.

Bedoel je misschien NODO? (http://code.google.com/p/arduino-nodo/).
Grappig was ik net aan het bekijken :-)
Ik kwam ook nog deze draad tegen op het Tweakers forum. http://gathering.tweakers.net/forum/list_messages/1077675/23 Daar staat een sketch in voor het schakelen van Klikaan-Klikuit.

Heeft inderdaad een aantal voordelen.
Geen 240V direct bij de Arduino.
Geen Relais nodig.
De Arduino hoeft niet direct bij het te schakelen voorwerp (Koelkast bijvoorbeeld) in de buurt te staan.


Grtz.

weed

Citaat van: @ op 22-03-2011  07:25 uDe Arduino hoeft niet direct bij het te schakelen voorwerp (Koelkast bijvoorbeeld) in de buurt te staan.

ivm de temperatuur sensor zak ik in de buurt moeten blijven. Maar het grote voordeel weinig zware stekkers en snoeren aan mijn arduino kastje.

Goeie tip van de tweakers site ze zijn daar al bezig met een library zie ik zal er eens een avond voor gaan zitten want 14 pagina's met reacties is niet in een paar minuten te doen.

Zelf was ik deze tegengekomen http://www.practicalarduino.com/projects/appliance-remote-control
ze gebruiken een reed relais die ze paralell over de contacten plaatsen maar dat is volgens mij niet nodig.
Een transistor met de collector en emitter over het schakelaarje plaatsen en dan via de basis aansturen moet ook kunnen lijkt me.
Dan heb je ook geen moeilijke zaken nodig als codering van signalen voor de ontvanger alles zit al in de afstandbediening.
Volgens mij kan het niet eenvoudiger gewoon een setje kopen afstand bediening openmaken 2 torretjes erin en aansturen die boel.

 :degroeten:

@

Citaat van: McLeft op 21-03-2011  13:32 uBedoel je dit: http://arduino.cc/en/Tutorial/UdpNtpClient
Nog niet uitgetest.
 :degroeten:

Als je gewoon de time library pakt kun je icm het ethernet-shield de tijd van Internet halen.
Ik heb het geprobeerd, en dat werkt goed. Ben er nog niet achter hoe vaak ik zou moeten syncen om een extreme drift tegen te gaan, maar ik test nog ff verder.

@

Citaat van: weed op 22-03-2011  17:53 uVolgens mij kan het niet eenvoudiger gewoon een setje kopen afstand bediening openmaken 2 torretjes erin en aansturen die boel.

 :degroeten:

De meeste goede ideeen zijn in basis simpel :-) Dit is zo'n idee denk ik.

RobinB

Torretjes? ??? :o
En wat als ze dood gaan?
Zielig!

weed

Citaat van: RobinB op 22-03-2011  21:55 uTorretjes? ??? :o
En wat als ze dood gaan?
Zielig!

Goed punt!
Ze gaan niet dood zolang de 240V buiten het kastje blijft het is dus niet zielig.

Een tor = transistor, een torretje is de kleinere variant deze kan dus minder stroom aan dan zijn grotere broeders.
Informatie over componenten is her en der te vinden http://www.circuitsonline.net/ is makkelijk leesbaar voor de beginnende/ geïnteresseerde in electronica.

 :degroeten:

weed

Hallo,

Versie 0.2 is hier te downloaden.

Inclusief programmaatje voor het schrijven van de preset maischschema's (beperkt tot 4 stuks) en Gobetwino voor het overhalen van de logging data.

De bug in de epochtime conversie is gevonden en herstelt.

 :degroeten:

@

Ziet er weer goed uit.

Ik zie dat je je logging data in een database stopt. Hoe haal je die data daar weer uit, en maak je daar grafieken van?
In het verleden heb ik dat soort logging met RRD gedaan, maar dat heb ik nog niet zien weken op de Arduino helaas.

Zelf ben ik nu bezig met het ethershield. Tijd haal ik via NTP op, en de eerste testen van mijn gistkast op Twitter zijn al gelukt  8) http://twitter.com/degrotebeer

weed

Citaat van: @ op 29-03-2011  07:27 uZelf ben ik nu bezig met het ethershield. Tijd haal ik via NTP op, en de eerste testen van mijn gistkast op Twitter zijn al gelukt  8) http://twitter.com/degrotebeer

Die is leuk! Goed bedacht.

Citaat van: @ op 29-03-2011  07:27 uIk zie dat je je logging data in een database stopt. Hoe haal je die data daar weer uit, en maak je daar grafieken van?
In het verleden heb ik dat soort logging met RRD gedaan, maar dat heb ik nog niet zien weken op de Arduino helaas.

Klopt ik bouw een tabel op in de eeprom op adres 400 staat de record count vanaf adres 410 staan de records.
Een record bestaat uit de epochtime en de temperatuur met 100 vermenigvuldigd. Dus 21.35 wordt 2135.
Via het menu kan je de DataExport module selecteren hiermee worden de records opgehaald, de epochtime wordt geconverteerd naar een door ons brouwers leesbare datum en tijd en de temperatuur door 100 gedeeld. Daarna via de USB kabel richting notebook met Inbetwino wordt het in een tekst bestand gedumpt welke ik daarna kan importeren met excel voor een plaatje.
Helaas kan ik nog geen grafieken laten zien want alles ligt nog met touwtjes aan elkaar geknoopt op de tafel.

Overigens het gebruik van Gobetwino is niet nodig want je kan ook de data van het USB lijntje aftappen met de monitor van de Arduino IDE enkel dan moet je handmatig alle tekst selecteren en kopiëren en in een tekst bestand plaatsen.

De vermenigvuldiging en het weer delen van de temperatuur doe ik om ruimte uit te sparen. Met een 2 bytes integer kan tussen -32768 en 32767 aan waarde wegschrijven of in dit voorbeeld dan tussen de -327 en +327 graden celsius.
Het alternatief is het gebruik van een float hiermee kan je wel bijv 21.37 in een keer wegschrijven echter dan heb je 4 bytes nodig.

@

Citaat van: weed op 29-03-2011  21:17 ualles ligt nog met touwtjes aan elkaar geknoopt op de tafel.

Hihi, een herkenbaar beeld ;-)

Citaat van: weed op 29-03-2011  21:17 uOverigens het gebruik van Gobetwino is niet nodig
Gobetwino gaat voor mij sowieso niet werken. Ik heb geen Windows machine in huis namelijk. Het is hier Linux only.


Citaat van: weed op 29-03-2011  21:17 uDe vermenigvuldiging en het weer delen van de temperatuur doe ik om ruimte uit te sparen. Met een 2 bytes integer kan tussen -32768 en 32767 aan waarde wegschrijven of in dit voorbeeld dan tussen de -327 en +327 graden celsius.
Het alternatief is het gebruik van een float hiermee kan je wel bijv 21.37 in een keer wegschrijven echter dan heb je 4 bytes nodig.

Goed bedacht.
Ik ga dit weekend eens kijken hoe het nou precies werkt.

Henielma

Citaat van: @ op 29-03-2011  07:27 uZiet er weer goed uit.

Ik zie dat je je logging data in een database stopt. Hoe haal je die data daar weer uit, en maak je daar grafieken van?
In het verleden heb ik dat soort logging met RRD gedaan, maar dat heb ik nog niet zien weken op de Arduino helaas.

Zelf ben ik nu bezig met het ethershield. Tijd haal ik via NTP op, en de eerste testen van mijn gistkast op Twitter zijn al gelukt  8) http://twitter.com/degrotebeer

Leuk die tweets van de gistkast.  :duimop:

weed

Citaat van: @ op 30-03-2011  08:39 uGobetwino gaat voor mij sowieso niet werken. Ik heb geen Windows machine in huis namelijk. Het is hier Linux only..

Een terminal/console programma werkt ook.

De export van de data is gewoon in platte tekst aka ascii.
In de tabel staat het volgende opgeslagen:

Tabel in EEPROM
adress - data
410    - 1301226032 << epoch zie http://www.epochconverter.com/
414    - 2106
416    - 1301226092
420    - 2337
422    - 1301226152
426    - 2712
428    - 1301226212
432    - 2668
434    - 1301226272
438    - 2256
440    - 1301226332
444    - 2193

Elk record is maar 6 bytes maar bevat datum en tijd incl, de secondes en de temperatuur tot 2 digits na de komma.

Met de routine Epoch2Date converteer ik de epoch en met de routine logData wordt de data op de USB gezet in het onderstaande formaat.
Ouput via usb
11:40:32,27/3/2011,21.06
11:41:32,27/3/2011,23.37
11:42:32,27/3/2011,27.12
11:43:32,27/3/2011,26.68
11:44:32,27/3/2011,22.56
11:45:32,27/3/2011,21.93

Elk spreadsheet programma kan met deze data overweg als input.

Om met Gobtwino te kunnen werken doe ik voorafgaand aan de transfer, de opdracht geven een leeg log bestand te copiëren.
Het commando is "#S|CPBFCONTR|[]#" dit gaat over USB naar Gobtwino die weet wat hij moet doen.
Zo kan ik ook automatisch de logfile laten mailen of voorafgaand aan een copieer slag maken als backup.

Met het commando "#S|BFCONTROL|[" + wat je maar wilt toevoegen + "]#" wordt de tekst gelogged in het log bestand door Gobetwino.
Voor ander gebruik zitten deze comando's enkel in de weg en kan je ze er uithalen.

Succes!



weed

Zo het soldeerwerk zit erop! Zie hieronder voor het resultaat.

De draaiknop is voor het keuzemenu te bedienen.
De rode drukknop is de enter toets.
En het blauwe, groen en rode ledje om weer te geven of de temperatuur respectievelijk te laag, binnen norm, of te warm is.

Op de derde foto staat een preset van het maischmenu voor indien enter ingedrukt wordt dan wordt dit schema gestart.
Ook handmatige invoer van een schema is mogelijk dmv de draaiknop en enter toets.

Op de laatste foto is de temperatuur voeler te zien de lengte is 1 meter en hij van RVS.





Hopmans


weed

Zo weer een stap verder naar gecontroleerde vergisting.
Eerder heb ik al eens geopperd om de verwarming en de koelkast met een Klik Aan Klik Uit aan te sturen. De voordelen hiervan zijn minder kabels over de vloer en zo kan mijn regelkastje mooi op 5v blijven werken. Deze doelstelling is gelukt dwz ik kan met de Arduino 240V schakelen op afstand.De kostprijs hiervan is minder dan 20 euro.

Bij de Gamma een kaku start set gekocht de apa3 -1500R deze kan 1500 watt schakelen.
De set bevat drie draadloze schakelstopcontacten en een remote control.
Met een 20% kortings bon was hij net onder de 16 Euro. Thuisgekomen eerst bekeken wat de mogelijkheden zijn.
De draadloze schakelstopcontacten zijn te programmeren op de afstandbediening dit gaat als volgt schakelstopcontact in het stopcontact steken en binnen 5 seconden een 'aan' knop op de afstandbediening indrukken. Hierna is de draadloze schakelstopcontact geprogrammeerd voor die knop.

 
De afstandbediening heeft ook een groep 'uit' knop maar hiermee schakelen ook de andere KAKU's in huis ook uit dus die gaat het niet worden.
Tijd om de afstandsbediening open te maken.

 
Batterij eruit.

 
Schroefje eruit draaien.
En de onderkant lostrekken dit gaat gemakkelijk de onderkant blijkt met twee lipjes vast te zitten.

 
En de print eruit halen

 
Tijd voor het echte werk schakelstopcontact zit in de muur batterij terug op zijn plaats gezet en vast geplakt met een plakbandje. Met een educated guess verbind ik met een diode in doorlaatrichting twee punten met elkaar en meteen klikt de draadloze schakelaar. Op dezelfde wijze zet ik hem weer uit via twee andere contacten.
Nu nogmaals proberen maar dan met de diode in sperrichting dit doet niets. Mooi want er is dan geen beperking om het zaakje aan te sturen met een simpele transistor.
Uit onderzoek blijkt dat de volgende verbingen met de diode in doorlaatrichting de KAKU aan of uit schakelen;

   
1 -> AAN = de eerste draadloze schakelaar schakelt IN, 1 -> UIT = de eerste draadloze schakelaar schakelt UIT.
2 of 4 -> AAN = de tweede draadloze schakelaar schakelt IN, 2 of 4 -> UIT = de tweede draadloze schakelaar schakelt UIT.
3 of 5 -> AAN = de derde draadloze schakelaar schakelt IN, 3 of 5 -> UIT = de derde draadloze schakelaar schakelt UIT.
NB: 2 en 4, 3 en 5  zijn met elkaar doorverbonden.

Hieronder het aansluitschema van de elektronica die nog tussen de Arduino en de afstandbediening moet. Dit moet maal 4, voor elke schakel mogelijkheid die we nodig hebben één keer.

 
Na de zomer ga ik verder met de software code om dit geheel aan te sturen met behulp van de PID library.

@


gerico

Een toevoeging op het Klik-Aan-Klik-Uit systeem gebruik.

De oplossing met een Klik-Aan-Klik-Uit systeem is zeer handig op verschillende redenen:

- Veiligheid (er zijn systemen waarmee je tot 3500 Watt kunt schakelen!), je blaast je Arduino niet op.
- Geen kabels

In plaats van een afstandbediening kun je voor Arduino ook gebruik maken van een 433mHz transmitter (zender) die direct met Arduino te gebruiken is. Kijk even naar de volgende website: Miniinthebox.com http://www.miniinthebox.com/nl/433mhz-draadloze-zender-module-superregeneration-voor-arduino-groen_p411875.html

weed

Ja een dergelijke zender kan ook gebruikt worden.

Hoe het nu is weet ik niet maar destijds heb ik ergens gelezen dat de gebruikte codes van de KAKU nog wel eens willen verschillen.
Als daarvan sprake is moet je de codes uitzoeken en daar had ik geen trek in vandaar de oplossing om de bijgeleverde afstandsbediening te gebruiken.

Het werkt perfect en inderdaad geen geknoei met kabels van muur naar kastje naar vriezer.

Hier een alternatief incl. de bijbehorende Library.

Vergelijkbare Topics (7)


Zoeken met Google op deze site.
Brouwspullen zijn ook te koop via Bol.com.
Als je iets bestelt bij Bol.com (ook andere zaken dan brouwspullen) via deze link steun je het forum.


Het boek van de beheerder van deze site.