• Please visit and share your knowledge at our sister communities:
  • If you have not, please join our official Australia and New Zealand Homebrewers Facebook Group!

    Australia and New Zealand Homebrewers Facebook Group

Arduino Development Thread

Australia & New Zealand Homebrewing Forum

Help Support Australia & New Zealand Homebrewing Forum:

This site may earn a commission from merchant affiliate links, including eBay, Amazon, and others.
in the nextgen thread it was suggested that I put it in the original braumiser so I thought I would in this one, I have used it once or twice, just handy to have I guess and not hard to implement.
 
is a quick video of the setup menu sorry about the quality but you get the idea. To enter the setup menu I hold down the 'ENTER' button for 1 sec, to navigate between the 'Unit parameters' or the 'Auto parameters' its up button for auto and the down button for unit. Once inside the menu it is up or down to change the parameter and the 'ENTER' button to save and move to the next parameter and to quit it is pressing the up and down button at the same time, quitting will not save the parameter that is displayed at the time.

more video of the manual mode and the auto mode to come

cheers steve
 
Last edited by a moderator:
is a video of the manual mode. To enter manual mode I hold down the 'down' button for 1 sec. It then prompts me to add water, after confirming the prompt I can adjust the temperature with the up and down buttons, turn the heat on and off with the 'Start' button and the pump on and off with the 'Enter' button. To Quit I push the 'up' and 'down' buttons at the same time to take me back to the start screen.

I'm not 100% happy with how the PID library works, the problem is that the I component of the pid can wind out if there is an error for too long which is only clamped but the window size, which is ok if you have a small window size but if you have a large window size then the PID becomes slow to respond because it has to wind back the I. I'm going to have a bit of a play in a real life situation not just putting my finger on the end to simulate a heat source.
 
Last edited by a moderator:
is a video of the manual mode. To enter manual mode I hold down the 'down' button for 1 sec. It then prompts me to add water, after confirming the prompt I can adjust the temperature with the up and down buttons, turn the heat on and off with the 'Start' button and the pump on and off with the 'Enter' button. To Quit I push the 'up' and 'down' buttons at the same time to take me back to the start screen.so
I'm not 100% happy with how the PID library works, the problem is that the I component of the pid can wind out if there is an error for too long which is only clamped but the window size, which is ok if you have a small window size but if you have a large window size then the PID becomes slow to respond because it has to wind back the I. I'm going to have a bit of a play in a real life situation not just putting my finger on the end to simulate a heat source.


Both videos look good, I have the benefit of 4 lines on my lcd so the function of the buttons is always displayed and not ambiguous. I have finished the first iteration of the code, there were only a few lines from yours that I borrowed.
Will Make a video of the interface and let you see it. First I have to get my wireless programming working, because that is my priority.
 
Last edited by a moderator:
sounds good Edak,

is a video of the auto mode. To enter the auto mode I press the 'start' button for 1 sec, if there has been an uncompleted brewing cycle it will prompt for a resume. I selected no to start a new brewing cycle. It prompts me to add water and then goes onto the first stage 'Mashin', once the temperature has been reached it will start to count down the timer when finished it will prompt to add malt and wait for a confirm or quit. In any stage the set temperature can be increased or decreased if wanted. After the malt has been added and it has been acknowledged it will enter the stages, you can set it up to have 1 to 9 stages, 1 being mashin only, 9 being mashin plus 8 steps. I quit to show the resume function as you can see it picks up where it left off, at the end of all the stages it will prompt to remove the malt. After the malt has been removed it will enter the boil, the set temperature can be set between 94 deg and 120 deg, of course it will never get to 120 but set to 120 you will know that you have 100% power, up here at 600m above sea level water boils at 96 and wort boils at 98, I find that at 97 I get a simmer and at 101 I get a vigorous boil. There are up to 8 hop alerts that can be set up to go off during the boil. At the end of the boil an alert goes off and the resume function gets turned off so the next time you enter auto mode it will only prompt for water. During any part of the process I can quit by pressing the up and down buttons at the same time.

cheers steve

edit: in the video the screen looks light blue but in real life its a deep blue.
 
Last edited by a moderator:
Well I'll be damned! I haven't been brewing as of late because I've gone back to Uni (studying I.T) and what do I happen to stumble across? You guys are writing code for your brewing gear! And, if I'm not mistaken, it's in C++, the language I've been studying this semester. Interesting stuff.
 
yep arduino is based on c++, I'm only learning this stuff myself if you want to see some interesting code look at zizzle's stuff on github

here

cheers steve
 
so I have upgraded for arduino 0022 to arduino 1.0 and found a compiler error with the custom character instead of writing

lcd.Write(0);

I had to change it to

lcd.print((char)0);

but reading further I might change it to

lcd.write((uint8_t)0);

the v1.0 version is HERE

cheers steve
 
well I have been playing around with Kicad and have made up a board for the brauduino on it. Its an Ok PCB design software and even better cause its open source

HERE is the project, this isn't the design that I have used to get the boards made up but it looks ok

cheers steve
 
I received my USB data acquisition device and have hooked up my DS18B20 temp and am reading temps from it. It is very easy as the temperature code has been built into the device. So I just tell the digital pin it is in temp mode and read back some ASCII text from the digital pin which gives me the temp. I have 7 other digital or analogue pins (I tell the pin which mode it is in) to control through simple serial port commands (which are so easy to do in C#). So I'll be able to control my 25A SSRs for heating element and pump.

I am planning on my C# app parsing BeerSmith or BeerMate recipe files and build up the schedule straight from the file instead of entering all the info again.

I'll hook up the Netduino to a flow controller I have and set up a display on my keg fridge to read how many litres of beer have been poured. Thus letting me know how little beer is left in the keg. At least I'll get some warning that the beer I am pouring will be my last from the keg. :'(
 
..
I'll hook up the Netduino to a flow controller I have and set up a display on my keg fridge to read how many litres of beer have been poured. Thus letting me know how little beer is left in the keg. At least I'll get some warning that the beer I am pouring will be my last from the keg. :'(

LOVE that idea!
 
Is it possible to wire up an STC1000 temp probe into an arduino, and then output that temp to the STC1000 so it continues to control the temps? I'd like to hook up the arduino to the fermenter probe to graph it's temperatures, but don't want to have multiple temp probes around the place if I don't have to...

I don't exactly understand how the temp probe works, so I don't know if this would actually work or not.
 
Is it possible to wire up an STC1000 temp probe into an arduino, and then output that temp to the STC1000 so it continues to control the temps? I'd like to hook up the arduino to the fermenter probe to graph it's temperatures, but don't want to have multiple temp probes around the place if I don't have to...

I don't exactly understand how the temp probe works, so I don't know if this would actually work or not.

Not really. Instead I wold recommend that you have a different sensor for logging.
 
Is it possible to wire up an STC1000 temp probe into an arduino, and then output that temp to the STC1000 so it continues to control the temps? I'd like to hook up the arduino to the fermenter probe to graph it's temperatures, but don't want to have multiple temp probes around the place if I don't have to...

I don't exactly understand how the temp probe works, so I don't know if this would actually work or not.

The STC probe is a thermistor, that is the resistance of the probe changes in proportion to the temperature (logarithmic relationship). You can measure a thermistor on the arduino using a voltage divider circuit and an analog input. You then need a calibration equation to turn the measured resistance into a temperature. It is a lot of mucking around. Also the arduino only uses a 8 bit analog to digital convertor and at one end of the temp scale (low end from memory) you might find the resolution is one degree celsius.

I use an arduino for temp control of the fermenter fridge. I use a DS1820 probe that I tape to the outside of the fermenter and 2 solid state relays, one for the heater, one for cooling. A LCD for display. I am currently playing with a SD card for data logging.
 
The STC probe is a thermistor, that is the resistance of the probe changes in proportion to the temperature (logarithmic relationship). You can measure a thermistor on the arduino using a voltage divider circuit and an analog input. You then need a calibration equation to turn the measured resistance into a temperature. It is a lot of mucking around. Also the arduino only uses a 8 bit analog to digital convertor and at one end of the temp scale (low end from memory) you might find the resolution is one degree celsius.

I use an arduino for temp control of the fermenter fridge. I use a DS1820 probe that I tape to the outside of the fermenter and 2 solid state relays, one for the heater, one for cooling. A LCD for display. I am currently playing with a SD card for data logging.
I was not aware that the STC probe is a thermistor. That is interesting information.

I do however, have to correct you on the ADC on the arduino, as it is in fact a 10 bit unit.
 
I was not aware that the STC probe is a thermistor. That is interesting information.

I do however, have to correct you on the ADC on the arduino, as it is in fact a 10 bit unit.

Either way, it is a LOT of fuffing around and even if you can get the arduino to measure the thermistor. Do you know what the input impedances are of both measurement circuits? The suggestion of using a voltage divider will almost definitely stuff up the measurement of the non-arduino temperature controller. In other words it greatly depends on how the other device works...

The typical method for measuring these is to use a known current source, which is a great method for using voltage dividers.

It's ohms law (V=IR). If you change the resistance then you will change the current flow or the voltage. If you set the voltage and change the resistance then the current will change, but how is an arduino going to measure a change in current? By running it across another series of resistors. This is called a wheatstone bridge.

You will need a wheatstone bridge to measure fine differences in resistance, this is the ONLY method for strain gauges and other small resistance changes. This is not really basic stuff because you will then need to have balanced resistors and reference voltages, etc and as I said earlier it also depends on the measurement circuit of the other controller.

When there is a constant current source (which is how the devices I work with every day) then changing the resistance directly translates to a change in the voltage across the resistor, which is EASILY measured with a standard ADC.

My 2c is not to bother with it, use a DS18B20.

Speaking of which, I just received my awesome temp probe from sure electronics, the one with the DS18B20 in a stainless thermowell. NIIIICE!
 
I totally agree on the DS18B20. They're good little units and simple to use. I have some stainless thermowells I got from http://www.brewershardware.com/ which are awesome.
 
Yes but these DS18B20 sensors had the perfect thermowell already attached.
Cool sensor

edit:I like the link you provided, cheap fittings!
They those premade sensor ones you linked look awesome! Brewers Hardware does some premade ones, but not as cheap as the ones you linked from Sure Electronics. Nice find.
 
been thinking of adding a small proto area to the brauduino so it can bring out the spare pins and ppl can use them something like this

brauduino_board.png

thoughts?

cheers steve
 
matho would that be for like add an input or output or i2c? (think its called i2c) :blink:
 
wasn't the plan but I suppose you could, I was just thinking there are 4 spare pins and they could be used for other things like controlling another SSR or adding volume sensing via load cells.

I am thinking adding wireless comms of some sort so i can make up a "pager" type device for the brauduino so you don't have to stay in ear shot of it when brewing, but I'm still thinking about it and haven't designed anything yet.

cheers steve
 
Ok after receiving the PCB's yesterday they look good so I have decided to post the EAGLE files that I used to create them. I don't want ownership of the Brauduino so here they are do with them as you please, maybe develop it further.

View attachment ahb_brauduino.zip

cheers steve
 
wasn't the plan but I suppose you could, I was just thinking there are 4 spare pins and they could be used for other things like controlling another SSR or adding volume sensing via load cells.

I am thinking adding wireless comms of some sort so i can make up a "pager" type device for the brauduino so you don't have to stay in ear shot of it when brewing, but I'm still thinking about it and haven't designed anything yet.

cheers steve

I've been working on a similar setup with ethernet, i've modified your code to add a webpage that i can access though my home network. It will show number of steps selected, current step, current set temp, actual temp, and a few other things. It's still a work in progress and increases the program size somewhat, but it will be handy for me as i can do some parenting inside and know the status of the brew out in the shed.
I also added a start delay timer and pre heat routine to allow setup the night before and have water at mash in temp when i wake up.

Cheers Dan
 
I've been working on a similar setup with ethernet, i've modified your code to add a webpage that i can access though my home network. It will show number of steps selected, current step, current set temp, actual temp, and a few other things. It's still a work in progress and increases the program size somewhat, but it will be handy for me as i can do some parenting inside and know the status of the brew out in the shed.
I also added a start delay timer and pre heat routine to allow setup the night before and have water at mash in temp when i wake up.

Cheers Dan


sounds awesome Dan can wait to see pics, I have a delay setup in the original braumiser but I have never used it so I left it out on the brauduino. Thats the beauty of the arduino very easy for people to change the code to suite them, when you have it up and running I would love to see some of the code

cheers steve
 
sounds awesome Dan can wait to see pics, I have a delay setup in the original braumiser but I have never used it so I left it out on the brauduino. Thats the beauty of the arduino very easy for people to change the code to suite them, when you have it up and running I would love to see some of the code

cheers steve

Yeah Steve, programming the Arduino is fairly straight forward once you get your head around the syntax (for most simple functions). I haven't got any pics of the webpage at the moment (left the arduino at work), but it is very basic html text, no frills.

View attachment DodgyBrau.txt

It helps that your code was well written. I can guarantee that mine won't be though. I changed the button assignment also as i had bought a freetronics display (probably wouldn't buy another) with 5 buttons with dropping resistors that go into analog 0.

I've been looking at adding mash and boil programming to the ethernet interface, but the program was getting a bit large.

Got a cheap Arduino Mega off ebay with an ethernet shield so i might still do it.

Cheers
 
Back
Top