Arduino, PID, or other?

Homebrew Talk - Beer, Wine, Mead, & Cider Brewing Discussion Forum

Help Support Homebrew Talk - Beer, Wine, Mead, & Cider Brewing Discussion Forum:

This site may earn a commission from merchant affiliate links, including eBay, Amazon, and others.
jpalarchio said:
That display is nice for sure.

I've been waiting for the capacitive touch version of this one to come out: http://www.4dsystems.com.au/prod.php?id=155

When it does, it might be something I splurge on depending on where the rest of everything is at that point...

That's a good price! I'm sure programming for a touchscreen is much harder.
 
Island.
Why re-invent the wheel? Use an STC-1000 for your fermentation chamber and the Ranco or Hughes PID that is common as dirt and well proven. The arduino is the same almost as a Picaxe and they do have their uses, but the programming and engineering of the circuits is a PITA and has already been done by someone who is way way way smarter than me. It will save you time, and money if you use already tested and proven gear. The cost of a bad batch or two will more than cover the difference in cost and you will be much happier with you final design. Not trying to discourage you because I am a deep down tinker till I die type, but I try to avoid re-covering ground thats already well trampled.
Bob
 
Island.
Why re-invent the wheel? Use an STC-1000 for your fermentation chamber and the Ranco or Hughes PID that is common as dirt and well proven. The arduino is the same almost as a Picaxe and they do have their uses, but the programming and engineering of the circuits is a PITA and has already been done by someone who is way way way smarter than me. It will save you time, and money if you use already tested and proven gear. The cost of a bad batch or two will more than cover the difference in cost and you will be much happier with you final design. Not trying to discourage you because I am a deep down tinker till I die type, but I try to avoid re-covering ground thats already well trampled.
Bob

For me, the tinkering with electronics is as much of a hobby as brewing.

So it's not always about what's easiest or cheapest; otherwise we would all just go buy our beer at the store. If you add up what you have on even a moderate brewing setup, the ingredient costs and the time it takes you to brew and tend to your beer, I doubt any of us are doing this for fiscal reasons.
 
jpalarchio said:
For me, the tinkering with electronics is as much of a hobby as brewing.

So it's not always about what's easiest or cheapest; otherwise we would all just go buy our beer at the store. If you add up what you have on even a moderate brewing setup, the ingredient costs and the time it takes you to brew and tend to your beer, I doubt any of us are doing this for fiscal reasons.

You're not kidding since I'm usually brewing on my overtime days. That being said my beer ingredients and time not at work ends up making my beer $3.47 a bottle lol.
 
Rbeckett said:
Island.
Why re-invent the wheel? Use an STC-1000 for your fermentation chamber and the Ranco or Hughes PID that is common as dirt and well proven.
Bob

Well, I would use that if I were making a fermentation chamber, but for now we are building an electric brewery.
 
I do it because I'm a tinker... I had regular PIDs to just control temp but I wanted to play with more automation and a nice user interface. For me it's about the adventure. :)
 
Ok, I'm confused even more now. With some of the Arduino boards you're very limited on how many I/O you have. If you want an LCD screen and have four control buttons and have three heating element outputs and one or two pump outputs it seems like the Arduino Uno wouldn't have enough pins. Now if I added a touch screen hat eats up even more I/O pins. Am I misunderstanding how the hardware operates?
 
Ok, I'm confused even more now. With some of the Arduino boards you're very limited on how many I/O you have. If you want an LCD screen and have four control buttons and have three heating element outputs and one or two pump outputs it seems like the Arduino Uno wouldn't have enough pins. Now if I added a touch screen hat eats up even more I/O pins. Am I misunderstanding how the hardware operates?

The Uno will bring some resource constraints in both I/O and memory depending on what you're trying to do. Add in Ethernet and you have even less pins available to you. On the Arduino platform, the Mega is more robust in this area. Resource constraint is part of the reason why the Brewtroller started on the Sanguino in the beginning.

There are always other options like using some mux options and using things like I2C.

You probably want to sit down and make the list of the "must have" requirements and "would like" options and select your hardware from there.
 
When you're making your list of your I/O needs do know that the DS18B20 temperature probes only use one I/O. They're one-wire technology and you can run many on one I/O port. The only downside is the actual time it takes to poll the chip since you can only poll one at a time and I think it takes about 700-750ms for one to respond.

So if you had 5 temp probes on one I/O to get a reading from each would take about 3.5 seconds total from start to finish. -- but only using one I/O is pretty nifty.
 
ScottSingleton said:
When you're making your list of your I/O needs do know that the DS18B20 temperature probes only use one I/O. They're one-wire technology and you can run many on one I/O port. The only downside is the actual time it takes to poll the chip since you can only poll one at a time and I think it takes about 700-750ms for one to respond.

So if you had 5 temp probes on one I/O to get a reading from each would take about 3.5 seconds total from start to finish. -- but only using one I/O is pretty nifty.

That's awesome. I just read here http://www.adafruit.com/products/642 that they have individual is numbers. I was wondering how the system would know the difference in which sensor was sending he signal. The 3.5 second time wouldn't be much of an issue I would think with a kettle and HLT, buy may be woryh separating the RIMS RTD for faster response. I will need to go home tonight and have a beer after the gym and read up on how multiplying works.
 
If you're for sure going to have a 3 vessel rims with that many sensors, pumps, etc. and going to use a graphic LCD I would highly recommend going with the MEGA. The uno is great, but the MEGA 2560 has 4 times the SRAM. You might be able to get away with muxing inputs on the uno, but if your sketch overflows the RAM it's just not going to run properly. You could get creative with your programming, but for $20 more you'll have a lot more I/Os and less concern about running into problems with the RAM.
 
Basically each sensor has a unique address (sort of like the MAC address on a network card) and you query each sensor by it's address.

Getting the one-wire sensors working on the Arduino is real straight forward and there are tons of code samples out there. Seems about everyone with an Arduino wants to measure temperature and put it on an LCD.

It'll probably be a little easier to understand when you have an Arduino and sensor to play with. I know the Microcenter by me had Arduino UNOs for $15 for a while which was a real good price; I think they're back to about twice that again. The one-wire sensors can bad had for about $2 each on eBay if you're willing to wait 4-6 weeks from China. This is for a bare sensor, no wiring or probe or anything. If you're going to use them in kettles, I'd recommend looking at the sensors or at least the stainless temperature probes from Brewers Hardware.

Keep in mind there is both a DS18S20 and DS18B20 sensor and their resolution is different and thus your code could vary.
 
I know we're getting way off-track here but I do love the one-wire solutions :)

I bought my temp sensors from Brewershardware.com. He mounts the DS18B20s in a SS thermoprobe and glues them up. I just wired them into my bus with a 4.7K resistor bridging the I/O line and the 5v feed from the controller. This allows the DS18s to draw current from the board.

Each DS18 has a unique address (which you can poll through code to get)

The pseudo code is something like this

Assign one-wire interface to I/O pin

send Reset command
send DS18 ROM address to I/O
Tell DS18 to get Temp

send Reset Command
send DS18 ROM address to I/O
read scratchpad from ROM


That's it. Each time you send a command you basically send a reset, then the Rom address, then the command you want that particular chip to perform.

if you only have one temp sensor on the IO then you send a generic (I think it's xFF) to the bus then the command and the sensor respond. I believe that doing that with multiples on the same IO causes a collision on the line.

There is TONS of code out there for the one-wire temp sensors. Really easy to wrap your head around once you start playing with it.


I have 5 temp sensors in my Rig right now running off of two I/Os.

The first one is the HLT which has a sensor in the tank through the sight glass 'T' and one in the RIMS. The RIMS sensor controls the RIMS PID and the tank is just for display.

That same principal runs on the I/O for the MLT except the third sensor is for the Boil kettle for monitoring.
 
One thing I have noticed about the code for the ds18b20 in arduino is that it is mainly focused on the parasitic mode and the code pauses for the 750ms that conversion takes which really slows down the loop. If you have a ds18b20 in powered mode you can use the readbit command to identify if conversion has taken place, you start conversion, then readbit command will return a 1 if conversion is comlete or a 0 if it isn't so you don't need to wait for conversion to happen just keep on polling it until conversion has taken place then read the temp. This is a bit tricky when you have multiple sensors but you could also use the 'skip rom' command and then the 'start conversion' command to start all the sensors then come back in 1 second and individually read each sensor, this will free up time for other bits of code to be executed whilst conversion is taking place.
 
trigger said:
If you're for sure going to have a 3 vessel rims with that many sensors, pumps, etc. and going to use a graphic LCD I would highly recommend going with the MEGA. The uno is great, but the MEGA 2560 has 4 times the SRAM. You might be able to get away with muxing inputs on the uno, but if your sketch overflows the RAM it's just not going to run properly. You could get creative with your programming, but for $20 more you'll have a lot more I/Os and less concern about running into problems with the RAM.

I had planned on using the mega after seeing how many I/o it had. One down side is that the Arduino compatible 4.2" touch screen I was looking at runs halfthe speed on the mega for some reason, but I suppose that's not a big deal since I won't be writing in it or drawing pictures.
 
we really need to get an automation Forum here... these kids of posts aren't just for electric brewers; heck I'm a hybrid direct fire assisted RIMS.
 
jpalarchio said:
The Uno will bring some resource constraints in both I/O and memory depending on what you're trying to do. Add in Ethernet and you have even less pins available to you. On the Arduino platform, the Mega is more robust in this area. Resource constraint is part of the reason why the Brewtroller started on the Sanguino in the beginning.

There are always other options like using some mux options and using things like I2C.

You probably want to sit down and make the list of the "must have" requirements and "would like" options and select your hardware from there.

So, do I need a MUX circuit before the Arduino I/o pin like I've seen online for thermostat systems or is it written into the code?
 
Like jpalarchio said, make your list of requirements first, then find hardware that fulfills those requirements. Once you have decided on the display, sensors, input devices (buttons/rotary encoders/switches), and outputs (pumps/elements/valves) You can see how many I/O pins are going to be required. From there you can decide on if you need to change your components or implement some muxing circuitry.
 
I'm surprised it hasn't been mentioned, but if you're thinking of using an arduino as a pid controller, there's an easy solution:

osPID,

an arduino-based pid controller. I just got mine, and thanks to the kind people at Rocketscream, have it working with the J thermocouples I'm going to use in my fermenter.
 
I've used an Arduino for my chest freezer and HLT for a while now. You're going to get waaay more flexibility out of using that over a prebuilt PID. It takes being a decent programmer to begin with though or it may end up being more trouble than it's worth. I code for a living so it's second nature.

I have a Fez Panda too that currently controls my telescope but, having moved to the city recently I may move that to the brew rig since I normally program in c# anyway. Next step is a Netduino Plus to host a web server so I can watch my temps and adjust from halfway around the world :D
 
Well, I guess what I NEED is pins for 3 heating element SSRs, one for a pump, four temp sensors, alarm output, I'm not sure how many pins I'd need for a touch screen display or a regular LCD display with button controls or an encoder. Now, the EXTRAS would be room for at least two more RTD probes, another pump in case I move to a single tier system. I'd be happy with that.
 
you don't need 4 pins for temperature sensors, if your going to use ds18B20 then you only need one pin and they are all connected to that pin, you then use there unique ID to communicate with each one. You can use serial LCD's that use only 2 pins and I think a rotary encoder use only 3 pins http://www.circuitsathome.com/mcu/programming/reading-rotary-encoder-on-arduino or you could copy how this shield http://www.freetronics.com/products/lcd-keypad-shielduses only one analog pin for 5 buttons. You have 14 digital I/O as well as 6 analog I/O which can be used digital I/O as well. You should be able find a solution

cheers steve
 
matho said:
you don't need 4 pins for temperature sensors, if your going to use ds18B20 then you only need one pin and they are all connected to that pin, you then use there unique ID to communicate with each one. You can use serial LCD's that use only 2 pins and I think a rotary encoder use only 3 pins http://www.circuitsathome.com/mcu/programming/reading-rotary-encoder-on-arduino or you could copy how this shield http://www.freetronics.com/products/lcd-keypad-shielduses only one analog pin for 5 buttons. You have 14 digital I/O as well as 6 analog I/O which can be used digital I/O as well. You should be able find a solution

cheers steve

Sorry, what I meant is four sensors...one for he BK, one for the HLT, one for the MLT, and one in the RIMS.
 
A graphic LCD is cool but don't forget that it will take you about 2-3 evening to program the arduino to be able to basically run your brewery but it will take you about 30-60 evening to program the LCD part. I understand that it will be a hobby but I advise you to get an 20x4 LCD and start with that, once the brewery part is runing, then start playing with the graphic LCD.

I fire my HLT arduino driven on the first night with basic PID, serial dataloggin and I didn't prog anything in the last 10 years.

Other advice, don't order 2$ ds18b20 from ebay, it's nice to test but you will need to put that sensor fast in the keg, order some probe already builded from brewerhardware, at 16$ it will save you a lot of research for the prob end and time to build, that's the not fun part of the arduino.
 
SimBrew said:
A graphic LCD is cool but don't forget that it will take you about 2-3 evening to program the arduino to be able to basically run your brewery but it will take you about 30-60 evening to program the LCD part. I understand that it will be a hobby but I advise you to get an 20x4 LCD and start with that, once the brewery part is runing, then start playing with the graphic LCD.

I fire my HLT arduino driven on the first night with basic PID, serial dataloggin and I didn't prog anything in the last 10 years.

Other advice, don't order 2$ ds18b20 from ebay, it's nice to test but you will need to put that sensor fast in the keg, order some probe already builded from brewerhardware, at 16$ it will save you a lot of research for the prob end and time to build, that's the not fun part of the arduino.

Good to know. Thanks.
 
SimBrew said:
A graphic LCD is cool but don't forget that it will take you about 2-3 evening to program the arduino to be able to basically run your brewery but it will take you about 30-60 evening to program the LCD part. I understand that it will be a hobby but I advise you to get an 20x4 LCD and start with that, once the brewery part is runing, then start playing with the graphic LCD.

I fire my HLT arduino driven on the first night with basic PID, serial dataloggin and I didn't prog anything in the last 10 years.

Other advice, don't order 2$ ds18b20 from ebay, it's nice to test but you will need to put that sensor fast in the keg, order some probe already builded from brewerhardware, at 16$ it will save you a lot of research for the prob end and time to build, that's the not fun part of the arduino.

If I had an individual display for each vessel be it a LCD or brew-troller PID style is it possible to run a separate rotary encoder with each display? I understand that with i2c displays they have an address, but I'm not sure if the rotary encoders do. So, would the encoders each need a pin on the Arduino or could they all go into one pin?
 
If I had an individual display for each vessel be it a LCD or brew-troller PID style is it possible to run a separate rotary encoder with each display? I understand that with i2c displays they have an address, but I'm not sure if the rotary encoders do. So, would the encoders each need a pin on the Arduino or could they all go into one pin?

What do you think you need the rotary encoder for?

On the Brewtroller, the rotary encoder (I thought an I2C version may be coming) is used to navigate the menu on the main LCD. The PID display LCDs just provide target temp and current temp information.

I don't see how you would use multiple encoders or why you would need them.

I2C basically uses up two pins for all devices.
 
jpalarchio said:
What do you think you need the rotary encoder for?

On the Brewtroller, the rotary encoder (I thought an I2C version may be coming) is used to navigate the menu on the main LCD. The PID display LCDs just provide target temp and current temp information.

I don't see how you would use multiple encoders or why you would need them.

I2C basically uses up two pins for all devices.

Use an encoder beside each display to set the temp or time interval.
 
What happened to this discussion. It was going pretty good and kind of stalled. I was following it kind of. Getting good input and stuff, plus some new ideas to add to mine. interest?
Bob
 
Rbeckett said:
What happened to this discussion. It was going pretty good and kind of stalled. I was following it kind of. Getting good input and stuff, plus some new ideas to add to mine. interest?
Bob

I was out of the country for a few weeks on my honeymoon/first anniversary. I've just been super busy.
 
I'm working on a build currently where an arudino will automate pumping liquid into all of the kettles, manage recirculating mash temperature with PID (as well as HLT, and BK temps just not necessarily with PID), monitor liquid levels in kettles, and interface with an android device via bluetooth where software is running to monitor the entire process. At the moment I have a PID controller setup but I don't have the elements, relays, temp probes. The liquid level monitor is commpleted but I need to figure out how I want to implement it.
 

Latest posts

Back
Top