• 18.04.2024, 03:39
  • Registrieren
  • Anmelden
  • Sie sind nicht angemeldet.

 

Setpoint PID Controller Not Working?

Dienstag, 23. April 2019, 23:01

Hey all,

I have what might be a little unusual setup. I have a systme with an Aquaero 6, two groups of PWM controlled fans (using PWM splitters) one PWM pump, and a flow sensor. I have installed 4x Calitetemp sensors in my loop, one right before and after my GPU block, and one right before and after my CPU block. The intent of this is to measure the temperature delta across the blocks, and use the max of the delta across the two blocks to control the pump speed. While not perfect (due to temperature sensor drift, even after calibrating with an offset, the delta T figures are a little erratic) it generally works well enough.

You can see some evidence of it in action with a "curve controller" here:



As can be seen, as the CPU load increases slightly, this causes the CPU delta to increase, resulting in a small increase to the flow.


Here are my curves:



As you can see, everything seems to work OK when I use curve controllers.


I am looking to migrate all of my controls to setpoint controllers to reduce the inefficiency of having to run the fans and pump faster than needed when below the target temperature which inherently results from curve controllers. My plan was to do custom optimization with the PID controller function using the Ziegler-Nichols Method.

The Ziegler-Nichols method is a heuristic optimization scheme that functions as follows:

1.) Set P, I and D all to zero.

2.) Gradually increase P until the system starts a sustained oscillation.

3.) Note the minimum value of P at which the sustained oscillation occurs as Ku.

4.) Measure the period (in seconds) of the oscillation as Tu

5.) Set P, I and D as follows:




The "Classic PID" values will create overshoot, but ought to stabilize relatively quickly.

The "Pessen Integral Rule" should create faster response at the expense of more overshoot.

The "Some Overshoot" settings will have less overshoot than classic, at the expense of slower response.

The "no overshoot" settings should have no overshoot at all, but will be much slower to respond.

Read more on Wikipedia here.


I decided to do the pump first, as there is less inertia than there is with heating and cooling the coolant, I figured it would be easier to establish the point of oscillation using the experimental method, so it would be a good proof of concept, and I'd do the slower fan speed setpoint later

So, I followed the Ziegler-Nichols method, assigned my pump to a Setpoint controller in manual mode, set P, I and D to 0, and start ramping up P.

The problem is, not only do I never get to a point where it oscillates. No matter what I do, the pump goes to 100% PWM duty cycle and stays there. I ahve tried just about everything. It just stays at 100%.



Is the PID Controller fully functional currently or is it broken maybe? Is there anything else I should try?

I'd appreciate any suggestions. I'd really like to get a custom optimized PID controller setup working.

Thanks,
Matt

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »mattlach« (23. April 2019, 23:03)

Mittwoch, 24. April 2019, 00:06

This PID business is well above my pay-grade, and if that is really what you want to do, then unfortunately, I can't help you.

But if your interest is cooling your processors, just set your pump(s) to yield 2 to 3 lpm, and leave them alone.
Then using a curve controller, adjust the radiator fan's RPM per a virtual temperature between the coolant-temperature/ambient-temperature delta.

vvv850

Junior Member

Donnerstag, 25. April 2019, 07:39

The reason you are experiencing this is because the minimum PWM value for the pump is set to 0%. Usually the pump works in full speed when the PWM is set to 0%.

To counteract this, go to FANS, and set the minimum PWM value for the Pump output to, lets say, 30% and check Keep minimum value (or something). This way the Pump will be at 30% while the PID Controller is at 0%.

Another thing, as InfoSeeker stated, is that it is better to set the pump at speed that gets you 0.6-1 GPM. There is no reason to modulate the pump according to temps.

My setup and procedure is as follows:
1. Set the minimum values for all AQ6 outputs so that the fans are spinning and are silent.
2. Check Keep minimum value
3. Add a set point controller with Average Water temperature as input, 33-35C as set point and all the fan outputs as Outputs (the pump remains fixed as stated above)

This way I always know what the maximum temps are for the water cooled components as the water temp doesn't go over 33-35 (maybe higher with a slight overshoot).

Cheers.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »vvv850« (25. April 2019, 07:57)

Donnerstag, 25. April 2019, 18:35

The reason you are experiencing this is because the minimum PWM value for the pump is set to 0%. Usually the pump works in full speed when the PWM is set to 0%.


Doh, that makes perfect sense. I knew this behavior about the pump, I should have thought of that.


To counteract this, go to FANS, and set the minimum PWM value for the Pump output to, lets say, 30% and check Keep minimum value (or something). This way the Pump will be at 30% while the PID Controller is at 0%.


Have you actually gotten this to work? I've never tried to set minimum speeds for the pump, but I have for the fans, and it just does not work. I go in to the fans page, set them to PWM controlled, and it gives me th eoption to se min and max RPM's (not duty cycle percent) but when I set those values it simply ignores them, and goes below the min and above the max anyway. Maybe there is something I am missing.



But if your interest is cooling your processors, just set your pump(s) to yield 2 to 3 lpm, and leave them alone.



Another thing, as InfoSeeker stated, is that it is better to set the pump at speed that gets you 0.6-1 GPM. There is no reason to modulate the pump according to temps.


I disagree with this a little bit, for two reasons.

Firstly, while pumps generally are pretty quiet, they are not perfectly silent. I use an XSPC Photon 270 D5 Pump/Res combo. The pump it came with (5 speed selector D5) obviously had something wrong with it, because it was pretty loud. I did all sorts of decoupling and vibration dampening and still it was much louder than my fans at idle. Shifting the speed setting didn't do much about the noise. It shifted the pitch up and down, but the noise level was still pretty much the same. I used it this way for three years because I didn't know any better, because it was my first custom loop.

Two weeks ago I bought a new D5 pump (EK D5 G2 PWM) and attached it to the XSPC reservoir, and damn. At below 70% I can't hear it at all without putting my ear up to the case. Above 70% it has a slight pitch to it, which under load is inaudible under the fans, but at idle is slightly annoying. (I have a good amount of radiator capacity so my fans run very slow and quiet. Silence is a big priority for me in my builds).

At the same time I broke into the loop to install the new EK pump, I also installed a Aquacomputer High Flow meter. It tells me that at 100% duty cycle, I get about 0.95 GPM. At ~70% Duty cycle I get about 0.5GPM and at ~50% duty cycle I get ~0.25GPM.

So, from the perspective of silence, I'd like to have it below 70% at idle, so I don't hear the pitch, yet kick up to the full 100% to maximize performance at load.

Another motivation for keeping the pump speed low when not needed is heat. A D5 at full speed dumps about 25W of heat into a loop. I first realized how much of a contributor of heat the pump really is when I did my first offline leak test when I first built the loop. I filled it and ran it for a few days with just the pump plugged into an external power supply, and everything else disconnected, even the fans. The radiators got really warm to the touch from nothing else but he power of the pump. So, the thought here is, if the pump is only running at the speed it needs to run, it will dump less heat into the loop, and the fans in turn can spin slightly slower. I have already noticed that my fans run slower since getting the PWM pump and having it slow down when not needed.



Thing is, I like zero computerize solutions. I want all the cooling performance I can get when the system is under load, yet

I am currently accomplishing this with fan curves, and it works pretty well, but I am wondering if the setpoint configuration can do it better, because while a curve controller does great at optimizing the speed at full load and at idle, it often runs the connected device (fan/pump/whatever) faster than it needs to at pints in between the two.



Then using a curve controller, adjust the radiator fan's RPM per a virtual temperature between the coolant-temperature/ambient-temperature delta.


I don't like this control method. Firstly, curves are inefficient (as noted above) and secondly using the Ambient to loop delta T for control means your components will run hotter on a warmer day than they do on a colder day. I'd like my max temps at load to be independent of room temperature.


Add a set point controller with Average Water temperature as input, 33-35C as set point and all the fan outputs as Outputs (the pump remains fixed as stated above)

This way I always know what the maximum temps are for the water cooled components as the water temp doesn't go over 33-35 (maybe higher with a slight overshoot).


Same. My curves are currently set to keep the loop temperature to 34.5C. I find at this temp my overclocked Pascal Titan X has a core temp below 40C at all times, resulting in maximum boost clocks.

The problem with the curves though, is that they make the fans work harder than they need to at in between loads. If my goal is to keep the temp at 34.5C at full load, why should my fans spin faster than they need to to keep it at 33C when I am at 75% load? I try to solve this with a exponential style curve, increasing fast towards the end, but still a curve can never adequately solve this suboptimal condition. A setpoint PID controller can!

I guess I just need to figure out why my minimum speed limits are not working for my PWM fans and pump. I tried the set points on my fans as well, but it kept dropping the fan speeds so low that they shut off (I use Noctua iPPC-2000 PWM fans and that's how they behave). This resulted in a wild oscillation between off and 100% fan speed. I tried to limit them to a minimum of 450rpm (where they are completely silent to my ears) in the fan setup screen, but as mentioned before this does not seem to have any effect at all. Even with th e450 minimum set, the setpoint controller still allows them to drop to 0 and turn off.

Anyway, appreciate the feedback! Please let me know if you have any thoughts regarding my minimum speed issue.

I'm going to try it again when I get home, and post screenshots if I can't figure it out.




Then using a curve controller, adjust the radiator fan's RPM per a virtual temperature between the coolant-temperature/ambient-temperature delta.

vvv850

Junior Member

Donnerstag, 25. April 2019, 20:55

I completely agree with what you said.

Regarding the pump, I basically did the same thing (except I have dual D5 G2). I found the most silent speed and checked to see if the flow is between those values. 1GPM at 86% PWM.
My pump resonate differently, but are silent at 86 and 95%. At 95%, though, they increase the water temps by about 1-2C so I stayed at 74%. Also, I found that the D5 pumps perform exponentially better at higher speeds (eg. 86% - 1GPM, 100% - 1.7GPM).

Regarding the setup and output settings:
- Pump output (disregard the chart as I was testing to see the flow):




- Fan Output




- Controllers:




Basically, the Pump is at a fixed output and the Fans are controlled by the PID.

The min max RPM setting is only for Speed Controlled fans option not PWM option.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »vvv850« (25. April 2019, 20:59)

Freitag, 26. April 2019, 20:54

Thanks for your suggestions.

I have been able to get the minimum speed controls to work now. I think what was throwing me off was that it said "power" and the voltage field changed when I changed the percentage. I didin't think this applied to me since I am all PWM.

Now that I have both minimum pump and fan speeds set, the set point control actually appears to work.

I have up on controlling the pump speed based on the difference in temperature before and after the blocks. It just wasn't accurate enough and the drift was screwing me up.

Instead I have fan speed controlled based on the max of the input temps to the GPU and CPU, and the pump speed controlled by the max of the output temps of the two blocks.

I have my pump set to a minimum speed of 50%, and the fans to a minimum speed of 27% (~480rpm) so at idle it is dead silent unless I put my ear up against the case. I'm loving it!

The default setpoint settings are surprisingly good, but not perfect. I am going to see if I can optimize the PID settings for my loop over the weekend.



Also, I found that the D5 pumps perform exponentially better at higher speeds (eg. 86% - 1GPM, 100% - 1.7GPM).


Yeah, I found the same thing. It was a big surprise to me, as I always expect the opposite, diminishing returns as you crank things up.