• 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.
Hello.
I've done another test with the values​​:
-set point 50
-Duty time 2
-p 1
-i 0
d 0

Everything runs very slow. Something that directly takes about 3 minutes with this setup takes more than half an hour.

The temperature curve rises moderately, and then becomes very slow, and never finishes to reach the target temperature. Spending never ends 48.5 degrees.

The curve of duty, is decreasing very slowly, when it should be the opposite. Should rise quickly, and when near the target temperature, and grow very slowly, to maintain it.

Under the graph to see the times and curves.

capt.jpg
 
OK, this is where you need to start tuning the values, increase the P value until it starts to work much faster and osscilates around the target temperature. Then you can tune the I value.

It's not very likely that you'll need to tune the D value at all.
 
Hello. This afternoon I made ​​a battery of tests.

1 / With I = 0 and D = 0 constants, I climbed slowly up the value of P 15.
Then I dropped it to 12, because 15 was too much inertia and it passed by the target temperature.

2 / P = 12 and D = 0 constants, I have increased the value of I. The problem is that when I> 0 duty cycle is at 100% and does not stop at the target temperature. It is impossible put I to 1 or higher.

3 / P = 12 and I = 0 constants, I varied the value of D. I put 1, then 10 and then 100. I have not noticed any change. It was always -0.5ºC target temperature. I can not see changes from P = 12 I = 0 D = 0.
Then I put d = 1000 and there seem passed between 1 and 2 degrees of the target temperature. As if it were increased very little by little, almost imperceptible to + 1.5ªC target temperature.

I guess with this parameter (D) is regulated to stay closer to the target temperature, is below or above that if we put a very high value or low value. In my tests if D = 100 is stable at -0.5 ° C of the target temperature, and if D = 1000 is stable at +1.5 degrees of the target temperature.

4 / With P = 12 and D = 1000 constants, if I put I = 1 again losing control, and does not stop at the target temperature, and must be stopped manually.

Conclusions for the test, with about 1 liter of water, and 10 minutes maximum time tests:


-The ideal value of P should be between 10 and 15, With 12 seems to be going well, but it seems that there is some inertia. We will have to do more tests.

-the ideal value of D would be between 100 and 1000. At 100 is -0.5 ° C and 1000 is + 1.5 ° C over target temperature. Probably a good value is 250 or 300.

-The value of I can not be greater than 0. If set> 0 does not stop at the target temperature. There's probably a bug in the code this variable.

Is pending reach to ideal values ​​in next tests. Once achieved ideal values ​​may make tests of long-term stability (over 40-50 minutes).

(Sorry if I repeat myself, but it is to be understood well with you, because my English is weak).

Greetings.
 
So a few things.

You're using 1L of water, are you brewing with 1L of water? If not, you're going to need to calibrate with the total amount of water that you'll be using, there's going to be a different thermal mass and thermal intertia with different sized batches.

And you can use decimals, and negative numbers it all depends on your setup and how the math works out.

99% of systems use PI only values, they rarely use D.

This is called tuning, your numbers will not be the same as my numbers (well, I know they're not) and everyone with a different setup will have them.
 
Update! NLS Support!

When you start elsinore you'll see an extra output line:

Code:
INFO: Debug System property: null
Language: en_US
Server started, kill to stop.

The "Language" line should match your system language. For me, I have an English United States system.

If you want to provide translations for your language, you'll just need to send me a copy of:

https://github.com/DougEdey/SB_Elsi...5/src/com/sb/elsinore/nls/messages.properties

With the translations and the language line.

If you want to test it yourself, set your system up to build Elsinore, which should be as simple as importing the project to Eclipse (since that's what I use).

Then create a copy of src/com/sb/elsinore/nls/messages.properties but change the name to almost match your language, just change the _ to a -. i.e. en_US becomes en-US.

Then create the matching file: src/com/sb/elsinore/nls/messages_<language_output>.properties. for my system it would be src/com/sb/elsinore/nls/messages_en-US.properties
 
Hello.
I used a liter of water to learn and PID ready. Yesterday I made more than 20 tests, and could not be emptied twenty or thirty liters per two or three tests. This is the first step. Once I mastered the process of tuning, I will now do it in real conditions (30 liters).

I will use decimal value for "I" in the next tests. Anyway I find it strange that it can not put 1 or higher. All calibrations examples I've seen in the internet had a "I" value greater than 0.

I understand that the tunning numbers are not the same as those of others, but to explain the process with data from real test can help those who want to learn to tune. I really would have helped a lot if I had seen before something similar to understand the system faster.

I do not think that is detrimental we post our settings as it could provide knowledge and experience.

As I can will perform the translation. I hope to have soon.
 
I understand that the tunning numbers are not the same as those of others, but to explain the process with data from real test can help those who want to learn to tune. I really would have helped a lot if I had seen before something similar to understand the system faster.

I do not think that is detrimental we post our settings as it could provide knowledge and experience.

That's fine, I just want to ensure people don't start plugging in random numbers to their system.

I'll double check the math, but it should be sound. I've not heard of anyone else with an issue though.

Stuff like the tuning may be easier to do on a build thread, so you can show off your system at the same time and it makes it easier to find.
 
Correct suggestion. When finished I will open a thread. So do not overload this, and can contribute experiences.

Check the mail, just send translation.
 
castreixanas: I've updated the PID Calculations in a seperate branch.

Can you try running:

Code:
git fetch
git checkout new_pid_calc

Then run Elsinore and see if the PID calculations work better? I'm not able to test until the weekend at the earliest. I did a sanity check and used the settings you tried originally (where it was hitting 40% output) and it went straight to 100%
 
OK, spanish translation is added, it looks like it "works" I have no idea if I'm swearing at any Spanish users though :)

I've also merged everything to master after more testing tonight.
 
Hello.
All right!

Now can put the parameter "I" greater than 0!
I tried with 1 and then 10 and it works well. When it reaches the target temperature stops.

Now I have to do tests to calibrate more tightly, but what good is that already works well.

The translation is also good. :mug:
Maybe a couple of small details. But let me a few days to think those words better.

Following a suggestion:

Can you put the legend of the graphic to the left instead of right? (right is where the temp lines are updated and legend blocked view the lines)
In the large graph, could quit the small circles of the nodes? (this cluttering the graph and can not see the clean lines (it is sometimes difficult to see how many degrees is the line).


Is possible that check for updates option could be put into edit mode and not leave in the lock mode? (this for more clear work screen). And so the option of selecting the logo file, could appear only in edit mode?

And one last suggestion: as you can see from the picture I have two probes and mark different temperatures, despite being together in testing. Can you put a text field in the configuration of each probe (where name options, GPIO, etc) which can adjust the temperature?

For example if I have two probes, and get stuck and also hit a good thermometer that is calibrated, and take the temperature of the three:
If I have Probe 1 = 45ºC, probe 2 = 46,3ºC and good calibration thermometer= 46 °. It would configuration probe1= + 1 , and configuration Probe2 = -0.3 °. So would the two probes calibrated exactly. The default value of the field calibration would be 0.

With this program would be a highly polished.

grafbolas.jpg


sugselsinore.jpg
 
Can you put the legend of the graphic to the left instead of right? (right is where the temp lines are updated and legend blocked view the lines)
In the large graph, could quit the small circles of the nodes? (this cluttering the graph and can not see the clean lines (it is sometimes difficult to see how many degrees is the line).


Is possible that check for updates option could be put into edit mode and not leave in the lock mode? (this for more clear work screen). And so the option of selecting the logo file, could appear only in edit mode?

And one last suggestion: as you can see from the picture I have two probes and mark different temperatures, despite being together in testing. Can you put a text field in the configuration of each probe (where name options, GPIO, etc) which can adjust the temperature?

For example if I have two probes, and get stuck and also hit a good thermometer that is calibrated, and take the temperature of the three:
If I have Probe 1 = 45ºC, probe 2 = 46,3ºC and good calibration thermometer= 46 °. It would configuration probe1= + 1 , and configuration Probe2 = -0.3 °. So would the two probes calibrated exactly. The default value of the field calibration would be 0.

With this program would be a highly polished.

Great suggestions, and they're all done and pushed.

There's a couple more translations to do, at the bottom of the files, you'll be able to tell which ones are missing because in the web UI they'll either be surrounded by [] or a really stupidly long string.

Oh, and with "Do not show decimal zeroes" in your image, do you mean they should be shown?
 
...

Oh, and with "Do not show decimal zeroes" in your image, do you mean they should be shown?


Sorry, I have not explained well.
When the decimal places are xxx.00, zeros are not displayed. That is, the mask is 000.nn. To be zeros should be 000.00.
In the example capture it would be 029.00. But appears only 029.
Anyway to ºC numbering could be three positions, two for grades and one for the tenth. With tens of degrees is sufficient because the probes are not accurate. The mask could be n00.0 in degrees Celsius. (in example 29.0)
(n=show number, but not 0 and 0=show all numbers)

Tomorrow I look translations.
¿same file message.properties (2 days old)?
 
The links on the github page for "Setup Instructions" are not working for me. It opens a page with the following message:
"Sorry this page does not exist =("
 
DougEdey you are my new hero! Maybe I missed it but do you or are you planning on supporting liquid volume readings?

I can't wait to deploy this tonight on a BBB working towards replacing my Brewtroller...
 
Hey Doug, I had a question. I'm getting set up to read PH from and analog probe using a ado to the pi. Would it be hard to have a PH output?
 
DougEdey you are my new hero! Maybe I missed it but do you or are you planning on supporting liquid volume readings?

I can't wait to deploy this tonight on a BBB working towards replacing my Brewtroller...

Already supported: Main setup, look for "Volume". It uses the same HW setup as brewtroller, though with their shutdown I need to stop linking to them as a reference, and I had the blessing of the person who created the HW & design for Brewtroller (he was looking to make a custom BBB output, but I don't know where that went).
 
Hey Doug, I had a question. I'm getting set up to read PH from and analog probe using a ado to the pi. Would it be hard to have a PH output?


It wouldn't be hard, I just don't have one *hint*, and it'd depend if it's a linear or logarithmic scale. I want to add one, but I don't know where to get them from without paying too much.
 
This looks great. I'll be setting up a beaglebone or put to test this over the weekend. Is there a capability to setup profiles for which pumps/valves are on and off? For example... Fill, strike, refill, mash, sparge, recirc...
 
This looks great. I'll be setting up a beaglebone or put to test this over the weekend. Is there a capability to setup profiles for which pumps/valves are on and off? For example... Fill, strike, refill, mash, sparge, recirc...

Not at the moment, mainly since I don't use valves, so I don't have any need for it.
 
what os do you recommend on the bbb for this?

Whichever one you're most comfortable with, as long as it supports one wire, Java 7 and above, and allows you access to the capemanager so you can export the One Wire and GPIO pins.
 
Hello. I am perfecting the translation.
Would need to know the exact definition of hysteria.
Is it something like thermostat?


Report a bug: the timer does not work. No start.
 
Hello. I am perfecting the translation.
Would need to know the exact definition of hysteria.
Is it something like thermostat?
Hysteria is the mode where it turns on when the temperature goes below the low value, and off when it goes above the off value. It's like a thermostat.

Report a bug: the timer does not work. No start.

Can you check the console? To see if there are any exceptions? What did you call the timer?
 
OK. Thanks

Java exceptions for timer:

Server started, kill to stop.

Warning: NLS unused message: CHANGE_SCALE in: com.sb.elsinore.nls.messages
java.lang.NullPointerException
at com.sb.elsinore.BrewDay.stopTimer(BrewDay.java:168)
at com.sb.elsinore.BrewServer.serve(BrewServer.java:1129)
at com.sb.elsinore.NanoHTTPD.serve(NanoHTTPD.java:315)
at com.sb.elsinore.NanoHTTPD$HTTPSession.execute(NanoHTTPD.java:920)
at com.sb.elsinore.NanoHTTPD$1$1.run(NanoHTTPD.java:192)
at java.lang.Thread.run(Thread.java:724)
java.lang.NullPointerException
at com.sb.elsinore.BrewDay.stopTimer(BrewDay.java:168)
at com.sb.elsinore.BrewServer.serve(BrewServer.java:1129)
at com.sb.elsinore.NanoHTTPD.serve(NanoHTTPD.java:315)
at com.sb.elsinore.NanoHTTPD$HTTPSession.execute(NanoHTTPD.java:920)
at com.sb.elsinore.NanoHTTPD$1$1.run(NanoHTTPD.java:192)
at java.lang.Thread.run(Thread.java:724)
java.lang.NullPointerException
at com.sb.elsinore.BrewDay.stopTimer(BrewDay.java:168)
at com.sb.elsinore.BrewServer.serve(BrewServer.java:1129)
at com.sb.elsinore.NanoHTTPD.serve(NanoHTTPD.java:315)
at com.sb.elsinore.NanoHTTPD$HTTPSession.execute(NanoHTTPD.java:920)
at com.sb.elsinore.NanoHTTPD$1$1.run(NanoHTTPD.java:192)
at java.lang.Thread.run(Thread.java:724)
 
Back
Top