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

    Homebrewing Facebook Group

NEW StrangeBrew Elsinore Thread

Homebrew Talk

Help Support Homebrew Talk:

This site may earn a commission from merchant affiliate links, including eBay, Amazon, and others.
Here's some notes on my attempt to tune the PID.

With the pump at full speed, I got closest to my set temp, 153 F, with P=65, I=1, D=0.

It makes sense now that I think about it, but I was really surprised when I slowed the pump to see how much these same settings caused oscillation. The temperature would repeat a cycle of overshooting the set point by a couple degrees and then falling a couple of degrees below the set point. I could reduce this my changing P to something around 25. Ultimately this shouldn't matter, my 12v DC pump can move about 3gpm so I should be able to run it at full speed the entire mash.
 
It appears that I may have somehow gotten permanently into 'edit' mode. There's no 'lock' button, there's always a 'choose file' button under the logo. Tried restarting. Updated to latest version. No dice.


Unrelated question:

Does the duty cycle do fractional seconds? IE, if I set it to 10 seconds, and 75%, does it do 7 second on, 7.5 second on, or 8 seconds on?
 
Ice pick

Try chrome browser. I found that on my windows setup the lock button was missing when using Firefox and Internet explorer. Wasn't a problem on my iPad.
Downloaded chrome for windows job done . I now have chrome setup on my desktop renamed as "the brewery" and it's goes direct to Elsinore when started up. Still using Firefox for general internet browsing.

Happy brewing

Mike
 
For those of you running Raspberry Pi's
The new linux Kernal has a new Device Tree setup:
For info read:
http://www.raspberrypi.org/forums/viewtopic.php?f=28&t=97314

To get temp probes to work with a new update you must put this text in config.txt.
first run
Code:
sudo nano /boot/config.txt
then place this in the file

Code:
dtoverlay=w1-gpio

I've updated my Raspberry Pi kernel and these instructions helped me get my sensors working again with w1-therm, but OWFS no longer works.

Any clues how to get OWFS working again?
 
Sorry for the lack of any response guys, my garage is uninsulated and it's currently -20C so the Wifi doesn't like it and I can't test any changes right now.
 
Sorry for the lack of any response guys, my garage is uninsulated and it's currently -20C so the Wifi doesn't like it and I can't test any changes right now.

I brewed for the first time on my new electric system yesterday in a somewhat insulated garage which was around -20, as well. My wifi connection was intermittent, so I connected a laptop to my BBB through USB. Part way through my boil, my laptop stopped working as it was too cold.

The panel was freezing and warming it with a hair dryer only helped somewhat. It struggled to get 12 gallons to a boil using a 5500W element. I'm hoping the BBB isn't damaged.
 
I brewed for the first time on my new electric system yesterday in a somewhat insulated garage which was around -20, as well. My wifi connection was intermittent, so I connected a laptop to my BBB through USB. Part way through my boil, my laptop stopped working as it was too cold.

The panel was freezing and warming it with a hair dryer only helped somewhat. It struggled to get 12 gallons to a boil using a 5500W element. I'm hoping the BBB isn't damaged.

Yeah, mine seems to be OK afterwards. Same thing happened last year.

I'm about to buy a house and move the brewery indoors, so I won't have the issue for much longer
 
Does the duty cycle do fractional seconds? IE, if I set it to 10 seconds, and 75%, does it do 7 second on, 7.5 second on, or 8 seconds on?

I looked at Doug's code and see that it does support fractional seconds.

The duty cycle is calculated to thousandths of a second (millisecond). For your example above, the 10 second duty cycle is stored internally as 10,000. When there's a call for 75% power, the on time is calculated as 10000 * .75, or 7500 milliseconds.
 
Would you mind sharing your P, I, and D values along with the volume and heating element you used?

I second this, I'm having problems fine tuning my system (single vessel ) because i don't really know where to start. Maybe in a separate thread though so we don't muddle up Doug's thread?
 
Would you mind sharing your P, I, and D values along with the volume and heating element you used?

I second this, I'm having problems fine tuning my system (single vessel ) because i don't really know where to start. Maybe in a separate thread though so we don't muddle up Doug's thread?
 
I second this, I'm having problems fine tuning my system (single vessel ) because i don't really know where to start. Maybe in a separate thread though so we don't muddle up Doug's thread?
 
PID settings are universal as long as you are speaking in the same units (e.g. Fahrenheit and seconds).

So, you can just as easily compare PID settings with individuals who use more common set ups on the forum; you are not restricted to comparing to other Strangebrew Elsinore users.

The graphing features in Strangebrew Elsinore are excellent for determining your PID settings (I think these still exist but I haven't used them since I originally set up my system).

Here's what I understand about setting up your PID settings in layman's terms.
The P will be equivalent to the amount of seconds it takes to increase the temperature by 1 degree (30-50 seconds typical if using Fahrenheit)
The D will be equivalent to the time delay in seconds from when your element turns off, to when the temperature stops increasing. On my system this is about 30 seconds.
The I will be an adjustment in temperature to account for a consistent over or undershoot using the above P and D settings. This can be positive or negative, and is probably within 1 degree, but more likely a fraction of a degree.

Here's a picture of that process.
 
Last edited:
The P will be equivalent to the amount of seconds it takes to increase the temperature by 1 degree (30-50 seconds typical if using Fahrenheit)
The D will be equivalent to the time delay in seconds from when your element turns off, to when the temperature stops increasing. On my system this is about 30 seconds.
The I will be an adjustment in temperature to account for a consistent over or undershoot using the above P and D settings. This can be positive or negative, and is probably within 1 degree, but more likely a fraction of a degree.

Love this answer. Makes it clear. I got close with the settings:
P=60
I=2
D=0

I had 10.5 gal in my HLT(Euro 13gal Keggle) it was 20deg outside and I have a 5500 Watt Stainless element

I overshot a little and will use the info from Justin to fine tune some things next time.
 
Do you mind if I add this to the Documentation?

You can if you'd like, though I'm not 100% sure this simplification is correct. Does it sound right to you? Having a hard time finding a reference for it. I must've seen it somewhere... I'll keep looking.
 
Just a heads up. The definitions listed are VERY non-standard for PID. It's usually 1 of two things. SP-PV = ERROR.

65a3f316105fae298911606534d8182b.png


P - Gain of the proportional band (unitless).
I - Integral time, close to what he described. (1/s)
D - Derivative time, used to filter faster disturbances, usually not used for slow control. (s)

So you have calculations based of error. Output is increased proportionally (P*err), integrally (int(err) every 1/I seconds), and derivatively (derr/dt(err) from n-D to n)

the other scenario is less likely.

But hell, the devs could have designed it any way they want.
 
I implemented it with the standard function you defined, people are trying to make it easier to understand
 
There are several autotuning methods available. How difficult do you think it would be to add this sort of utility? Seems like there is a huge demand for it. Obviously you wouldn't want to autotune when mashing, but to do it once to get a ball park to how quickly your system registers temperature changes and the like.
 
The problem I have with autotuning is that I've seen people do it with 1 gallon in their vessel and complain it doesn't work. It's not difficult to understand how to tune it yourself then you can manually set the values depending on what you're doing, i.e. if you want to make a half batch.
 
Triggers were a fantastic idea, they work great.

How about a trigger on a timer that can go out to a LED or Buzzer via GPIO.

Thanks for the wonderful software, Doug.
 
Ha! Didn't realize the dev is the OP.

Don't worry, im on my way out ;)

Sorry, I was on my phone and the HBT app doesn't work well :( I welcome the input, but I am not an Engineer :) I've self taught myself this stuff.
 
Triggers were a fantastic idea, they work great.

How about a trigger on a timer that can go out to a LED or Buzzer via GPIO.

Thanks for the wonderful software, Doug.

Just add it as a pump, the pumps are going to renamed when I get round to it, but they are just dumb GPIO toggles. So you can create one called "LED" or "Buzzer" and have it activate after a timer step.
 
Just add it as a pump, the pumps are going to renamed when I get round to it, but they are just dumb GPIO toggles. So you can create one called "LED" or "Buzzer" and have it activate after a timer step.

Perfect! Keep up the GREAT work!

Wasn't a buddy of yours going to release a board to make GPIO config a little easier? What's the status?
 
Has anyone else had the triggers not be there when you come back to your system? I have used my set up a few times, but when i logged in last night to set for my brew day today my triggers where gone.
tried updates and pull nothing worked. New clone and its perfect again.

Thanks for all your work
 
Doug,
I am on a spending hiatus from brewing equipment for a while and was wondering about some modifications to the PH_sensor java file because I don't have a DS2450 converter. However I do have a MCP3008 ADC chip.

I have it hooked up to the Pi and can read ph values from it and was wondering if you could point me in the right direction to go in order to get Elsinore to read it.

D-out is on GPIO9 but Elsinore restricts to 7. Would it be possible to select which channel to read from the MCP3008 instead of which DS2450 address?

Here is the python code that I used to get a reading:
Code:
import spidev
import time
spi = spidev.SpiDev()
spi.open(0,0)
# read SPI data from MSP3008 chip, 8 possible adc's (0-7)
def readadc(adcnum):
	offset = .29
	if ((adcnum > 7) or (adcnum < 0)):
		return -1
	r = spi.xfer2([1,(8+adcnum)<<4,0])
	adcout = ((r[1]&3) << 8) + r[2]
	#formula to convert voltage into ph value (-.29 is my callibration offset)
	adcout = float(adcout*5)/1024*3.5-0.29
	return adcout

while True:
	#to read all 8 adc inputs 
	#for adcInput in range(0,8):
	#to just read channel 0
	for adcInput in range(0,1):
		#print "ADC(", adcInput,")=", readadc(adcInput)
		print readadc(adcInput)
	time.sleep(1)

Some sites I used to get MCP3008 info:
http://www.raspberrypi-spy.co.uk/2013/10/analogue-sensors-on-the-raspberry-pi-using-an-mcp3008/
http://raspberrypi-aa.github.io/session3/spi.html

And let me know if this is too much to ask for. :mug:
 
Has anyone else had the triggers not be there when you come back to your system? I have used my set up a few times, but when i logged in last night to set for my brew day today my triggers where gone.
tried updates and pull nothing worked. New clone and its perfect again.

Thanks for all your work

Yes, same thing happens to me - no triggers, until I new clone again.
 
Yes, same thing happens to me - no triggers, until I new clone again.

Do either of you two see any error messages on the console when it fails to add? Either the javascript console or the terminal console?

I haven't done any updates, and the triggers are only stored until Elsinore shuts down. They are not persistent.
 

Latest posts

Back
Top