Pump Vibration Isolation

Discussion in 'Water Cooling' started by Zarathustra[H], Mar 2, 2019.

  1. Zarathustra[H]

    Zarathustra[H] Official Forum Curmudgeon

    Messages:
    28,446
    Joined:
    Oct 29, 2000
    Yeah, you are right, that's how the term is usually used.

    I did some thinking about it and decided to try to use that as my pump speed control. The reason being is, the goal is to have the water flowing fast enough that you approximate a steady state where the water in the loop is mostly the same temperature. So, I figured the delta T across the blocks would be the most appropriate way to control this If there is a high delta T across the blocks, that means you need more flow.

    What I hadn't counted on was temperature sensors wouldn't be accurate enough to really do this delta, even the fancy, self calibrating Aquabus Calitetemp ones. They claim to be accurate to 0.01C, but that is a joke. They are no very linear, disagree with eachother, and drift all over the place relative to each other as the temperature changes, making the delta T across the block figure rather unreliable.

    My setup uses two coolant temperature sensors - one at the hottest and one at the coolest parts of the loop - averaged together for an overall coolant temp. Then I have three ambient air sensors - one each set on the fan frame behind my three 140mm "intake" fans - also averaged together. I did an initial one point offset calibration of the sensors during my leak test when they theoretically all should be at the same temp, but this really doesn't help much.

    As you can see, right now - for instance - I recently powered my system on, and it's getting up to a steady idle temp. the CPU temperature delta is behaving as expected, but for some reason the GPU temperature sensors have drifted to a 0.3C delta, which is what I would have expected to see during a ~50% GPU load. This is keeping the pump at a higher speed than I would have liked (ignore the 1 gal/min over the chart, for some reason it rounds to whole numbers only, so it only ever displays 1 gal/min or 0 gal/min depending on rounding. The chart is accurate though)

    upload_2019-4-21_17-53-8.png

    Yesterday it was doing the opposite, with the CPU having drifted out of control, and the GPU behaving as expected.



    The good news is that at least it errs in the right direction. I get full pump speed at load no matter what. It's just that I often get higher than desired pump speed also at idle, but sometimes not. So it's not the end of the world.

    Ahh, I have decided to control my fans based on absolute loop temp. I want to keep the water at or below 35C, because I now my GPU at full load tends to run 4C to 5C hotter than the loop temp, and I like to keep the GPU at or below 40C, because that's when I see the best boost clocks in my overclock.

    This used to be a huge problem with my old cheap linear eBay special Chinese fan controller. It worked well during the winter, but during the summer, the fans would spin like crazy even at idle, trying to - in some cases - bring the loop temp below ambient :p

    I got my Aquaero in December, so I ahve not yet experienced Summer with it yet, but I am hoping that since I have a curve that is long and flat in the beginning, but ramps up aggressively as I get closer to my target temp, I'll have reasonable fan speeds at idle, even during the summer.

    upload_2019-4-21_17-56-46.png

    This used to be my philosophy as well. My old pump was louder than I would have liked, but it was so across the range, only the pitch changed, so I left it permanently at full speed.

    With my new EK D5 G2 PWM, I can barely hear it at any speed, even in a quiet room. I decided it would be good to control pump speed anyway though, because both the pump and the friction through the loop dumps heat into the loop, so I figured if I could run the pump slower when it is not needed, I will have less of that pump/friction heat, which will means my fans (in theory) can run slower.
     

    Attached Files:

  2. Zarathustra[H]

    Zarathustra[H] Official Forum Curmudgeon

    Messages:
    28,446
    Joined:
    Oct 29, 2000
    Side note, while still sitting mostly idle on the desktop, this has now happened.

    Some unexplained CPU blips, and the GPU is slowly trending downward allowing the pump to slow down. (the pump speed controller input is the max of the two block deltas)

    upload_2019-4-21_18-1-47.png

    So yeah, temperature sensors just aren't all that great when you need precise decimal place accuracy.

    I wish that reading the motherboard (and on package) sensors was cross platform. If so I would use them for something, but since I dual boot back and forth between Linux and Windows, whatever I do has to work on both, which means only using sensors plugged in to the Aquaero.
     
    Last edited: Apr 21, 2019
  3. Zarathustra[H]

    Zarathustra[H] Official Forum Curmudgeon

    Messages:
    28,446
    Joined:
    Oct 29, 2000
    VanGoghComplex

    Hmm. Just realized there is a new version of the Aquasuite software. I'm running 2018-8, but 2018-11 was just launched.

    What has been your experience with Aquasuite upgrades. Do they generally just work, or can they mess up your configuration?
     
  4. Brian_B

    Brian_B 2[H]4U

    Messages:
    3,321
    Joined:
    Mar 23, 2012
    I know in industrial loop tuning - there is a thing called a PID Loop controller. If you have a PhD in voodoo, you can tune out all oscillations and lock in any kind of feedback control loop.

    Odds are this fan control just has a simple feedback loop programmed and oscillation is just something you will have to work around.

    Working dT across a block sounds dangerous without a max temp somewhere in the control.
     
  5. Zarathustra[H]

    Zarathustra[H] Official Forum Curmudgeon

    Messages:
    28,446
    Joined:
    Oct 29, 2000

    Lol.

    And now40 minutes later, the CPU delta has gone up for no reason, and the GPU delta has gone negative :p

    Those temperature sensors just keep drifting. :p

    upload_2019-4-21_18-49-42.png
     
  6. Zarathustra[H]

    Zarathustra[H] Official Forum Curmudgeon

    Messages:
    28,446
    Joined:
    Oct 29, 2000
    Sounds like the perfect application for some sort of design of experiments test :p

    Yeah, as powerful as it is compared to other fan controllers, the Aquaero is still arelatively simple device without advanced controls like that. IMHO, what it would take to avoid oscillations completely is some sort of smoothing average or other smoothing algorithm applied to the input. For now, just raising the minimum pump speed seems to have done the trick. When it was dropping down to 20% pump speed before I think it just didn't manage much flow at all, so this made the delta T's shoot up in a hurry, causing the oscillation behavior.

    That's unfortunately a feature the Aquaero lacks. You can create virtual sensors that perform some limited math on multiple sensors to control things, but you can't have multiple control curves and have a given fan or pump use the highest of the multiple PWM duty cycle inputs. That is a shame.

    I rarely leave my PC on for extended periods of time unattended. I have a server for that. So I am usually sitting right infront of it looking at the chart readouts when running, so I can catch it if it goes awry.

    As mentioned before as it stands right now, the delta readings across the blocks kind of have a mind of their own, but at the very least when you load them up, they move into high pump speed territory. So it may not actually slow the pump down at idle every time, but at the very least I have never seen it not speed the pump up to full speed during high load. So by random luck it seems to err on the side of caution. I'm going to keep on watching it though, just to make sure.
     
  7. VanGoghComplex

    VanGoghComplex [H]ard|Gawd

    Messages:
    1,769
    Joined:
    Apr 5, 2016
    The Aquaero does have a PID controller. If I recall, they call it a "setpoint" controller. More tonight when I'm in front of my computer. I've used it before but found it not to be a good match for my control setup.
     
  8. VanGoghComplex

    VanGoghComplex [H]ard|Gawd

    Messages:
    1,769
    Joined:
    Apr 5, 2016
    Yep, here we go:

    upload_2019-4-21_21-38-13.png

    Make a new "Set point controller" in Aquasuite, then under "Control speed" choose "User defined:" bam. PID controller.

    Your data source will be your process variable with the temperature being your setpoint, and your output will be your control variable. The controller will modulate the control variable in attempt to keep the process variable at the setpoint, and the numbers you enter will determine things like how fast it reacts, how aggressively it hunts, and how far ahead it tries to "guess" at what the resulting action will be.

    I could explain the PID loop better fresh out of college, there are literally books written on tuning the dang things. I actually set nine PID loops up last week in a chemical plant that I'm doing controls work in. For me, the SWAG method suffices, but I usually have to look up some kind of reminder or tutorial on how to do it, I do them so few and far between.
     
  9. Zarathustra[H]

    Zarathustra[H] Official Forum Curmudgeon

    Messages:
    28,446
    Joined:
    Oct 29, 2000
    Interesting.

    So this would replace typical control curves then?

    I may have to read up on it at some point. As it stands though, my current curves are doing the trick.
     
  10. VanGoghComplex

    VanGoghComplex [H]ard|Gawd

    Messages:
    1,769
    Joined:
    Apr 5, 2016
    Yep. Think of it as a more intelligent control method than a simple curve. Takes some fanangling to get it tuned right, but might be a better way to set up your fans given the block ∆T you want to use. With the right tuning you can get the PID loop to ignore the erratic fluctuations and consider the delta over a longer period of time.
     
    Zarathustra[H] likes this.
  11. FrgMstr

    FrgMstr Just Plain Mean Staff Member

    Messages:
    48,355
    Joined:
    May 18, 1997
    FWIW, I mounted my XSPC 270mm Rez/Pump combo directly to my case with included mounting foot, and had no issues with any sound. I did use nuts and bolts, 5 sets IIRC.
     
  12. Zarathustra[H]

    Zarathustra[H] Official Forum Curmudgeon

    Messages:
    28,446
    Joined:
    Oct 29, 2000
    Yep, I'm reading up on PID controllers now. Fascinating stuff. Having to learn a whole new vocabulary. Luckily there are several heuristic methods for tuning the variables. The Ziegler-Nichols method seems like the best balance between complexity and results from my brief reading.
     
  13. Zarathustra[H]

    Zarathustra[H] Official Forum Curmudgeon

    Messages:
    28,446
    Joined:
    Oct 29, 2000
    VanGoghComplex Brian_B

    Alright, in my brief reading I've come up with the following. Please correct me if I got any of this wrong.

    PID Controllers

    PID controllers are more optimal than fixed setpoint controllers because you don't need a predefined rampup and rampdown. It's essentially like having a little servant turn the knob up when the temperature is too high, and turn it down when it is too low many times a second.

    The downside is that it is very sensitive to timing issues, such as delay, inertia as well as noisy inputs, so the tuning factors are needed to account for these. There are many methods for optimizing the variables, some very complex. A simple heuristic (albeit flawed) one is Ziegler-Nichols developed in the 40's. It isn't perfect, but it should be OK for our PC applications, and seems much easier to apply than anything else out there.


    The Ziegler-Nichols Method

    While it can be caluclated using linear assumptions, this is ideally determined experimentally. Since we are dealing with delays, inertia and smoothing, we don't have to be at full load when doing our experiments. The important part is that we are in a range reasonably free of constraints. For instance, we want enough load on the system that the temps are high enough that the fans don't hit their minimum running speeds. In the case of my pump, my setpoint is intentionally lower than it can ever achieve at full system load, in order to firce it to run at 100% at those times. I want to avoid this when doing the experiments, instead running at a lower load.

    1.) Start with P, I and D at zero. (not sure what to do with the hysteresis and reset time variables, can't find those in my reading)

    2.) While monitoring the output (temperature) slowly increase P step by step and give it time to stabilize. The goal is to find the minimum value of P for which we have along term steady oscillation. This value of P becomes your Ku.

    3.) Now measure the period of the oscillations (in seconds?) This value is your Tu

    4.) Now set all of the values as follows:

    upload_2019-4-22_14-9-4.png

    Classic PID: appears to be the traditional setting. It has good amount of overshoot, but settles in after a little bit

    Pessen: appears to be for those who demand an immediate response, and dont care about overshoot. You wind up with more overshoot than the Classic.

    Some Overshoot: Like the classic PID, but less overshoot in exchange for a little longer delay

    No Overshoot: No overshoot at all, more delay

    Have I got it right thus far?

    The only part I am confused about are which variables are which. Kp, Ki and Kd are fairly straight forward. But what do I do with Ti and Td? And what about those Hysteresis and Reset Time fields?


    The pump should be fairly quick to determine the values for experimentally. I may even do it at idle.

    The fans will be trickier. I'll need to generate some heat, but not too much. Maybe half of my cores in Prime95? Prime95 is tricky as the load changes between runs. Maybe just a steady load on the GPU from, like 4K Heaven loop that ought to peg it at 100%?

    Since I have a large volume of coolant in my loop, there will be a lot of inertia here, so it will be tricky to see when I have oscillation quickly, and the oscillation will have a pretty long period.

    I'd appreciate any thoughts!
     
  14. VanGoghComplex

    VanGoghComplex [H]ard|Gawd

    Messages:
    1,769
    Joined:
    Apr 5, 2016
    You've honestly done more reading on PID loops this morning than I've done since 2012, but if memory serves it like you're on the right path. I can't add much you haven't already read; trial and error is my method, and while that's not the most informed method I can usually make it work. =P
     
    Zarathustra[H] likes this.
  15. Brian_B

    Brian_B 2[H]4U

    Messages:
    3,321
    Joined:
    Mar 23, 2012
    My not-very-technical-but-very-practical advice for PID loops. I was never able to get calculations to come out just right and had better luck playing it by ear (a lot of people call it an art):

    I apologize, it sounds like you may be well beyond this already, but I'll start near the beginning (in truth because i'm not much past that myself)

    Definitions:
    Process Variable (PV): What you are measuring & controlling
    Control Variable (CV): What you adjust to control what you are measuring
    Setpoint (SP): What you want the PV to be

    P = Proportional. The farther away the PV is from the SP, the more CV will be adjusted
    I = Integral (over time). The longer (as in time - microseconds, seconds, minutes) the PV is away from SP, the more CV will be adjusted
    D = Derivative (rate of change). The faster the PV is changing, the more the CV will be adjusted

    (these factors can all be negative as well, so more = less, etc)

    K = multiplier. For instance, one application may be 1V per 1F (Kd = 1), another may be 1mV per 1F (kD=0.01)

    T = time. For calculating the Integral/derivative. Usually in units of inverse seconds. Usually can leave them default value to start playing with.

    Most of my loops for industrial temperature controllers end up with a Kp between 1 and 5, and Kd between 0-100 (depends largely on loop transit time) , and a Ki between 0.1 to 0.0001, with Ti/Td of (I think) 1.

    Different controllers use different scales, so the math doesn't always come out exactly. In general, I start out with I and D at zero = no effect from those. I tune the P until I get it as tight as I am able. For most simple control loops, this will be sufficient for control. If there is some oscillation afterwards. I then tune D to eliminate the oscillation. Very rarely do I need to use I at all, but it's nice for very slow/long control loops, where you can use P/D to get the process stable and then I to just slowly nudge the PV to where it needs to be.

    I usually don't mind a bit of overshoot, and that's normal for a stable step change to see a somewhat large overshoot, and a much smaller undershoot, before the loop steadies out. What you don't want is oscillation, where the loop takes an excessive time to reach an equilibrium on a step change.

    In your case, since you are adjusting pump speed, your Tu is going to change with your CV, I don't know how you would work that math without getting into some graduate level stuff...

    Hysteresis/reset time applies to bistable operation - where you have a static setpoint and that controls a binary on/off... PID factors all of that out. If you wanted to have just a setpoint where the fan comes on/goes off, they would apply and that's what would keep your fan from toggling back and forth if the temperature were flickering right around the static setpoint. PIDs are analog output though and shouldn't use a hysteresis setting, as you would just adjust the PID numbers to account for your process.
     
    Last edited: Apr 22, 2019
    Zarathustra[H] likes this.
  16. Zarathustra[H]

    Zarathustra[H] Official Forum Curmudgeon

    Messages:
    28,446
    Joined:
    Oct 29, 2000

    Huh, well that was fun.


    Just got to pay around with it a little bit. Tried setting a setpoint with a target delta T across the blocks of 0.4C. No matter what I do with the P, I, D, Hysteresis or Reset Time values the pump is constantly pinned at 100%.

    Maybe it does some weird rounding or something and just doesn't like low numbers like that. What a shame. Back to my control curves until I figure it out.
     
  17. Randall Stephens

    Randall Stephens Limp Gawd

    Messages:
    473
    Joined:
    Mar 3, 2017
    Have you looked at a longer screw and a washer that wI'll compress more of the iso mount?
     
  18. Zarathustra[H]

    Zarathustra[H] Official Forum Curmudgeon

    Messages:
    28,446
    Joined:
    Oct 29, 2000
    I appreciate the suggestion, but it turns out my issue was not the isolation of the pump. It turns out I had a bad noisy pump. I replaced it and I have a perfectly silent system now!

    It's all detailed above :p
     
  19. Zarathustra[H]

    Zarathustra[H] Official Forum Curmudgeon

    Messages:
    28,446
    Joined:
    Oct 29, 2000

    I figured out the source of my problem. When I enabled the PID controller settings, I was well below my setpoint, so it set the pump to 0% PWM duty cycle. The pump in turn interprets 0% as "PWM not connected, lets go to 100%", keeping it at 100% and never budging.

    After going to the fans page and programming minimum PWM duty cycle settings (which Aquasuite confusingly calls min/max power) the setpoint controller is actually working quite well.

    I abandoned the pump speed control by temperature delta over the blocks idea. The temperature sensors just aren't accurate enough for that.

    Instead I have fan speed controlled by a setpoint based on the max of the blocks input temperatures, and pump speed controlled by the max of the blocks output temps.

    This way I figure that the pump will see if flow is too slow resulting in too high of an output temp from the block, and boost it up a bit.

    I have not optimized my own PID values yet. The default settings that come with the Aquaero are actually pretty good. I have the pump set to the highest speed preset, as I want it to react quickly to any elevated block output temp caused from load.

    The fans are set to the "normal" preset setting. I may even drop them down to "slow". I have a large amount of coolant in my system so there is a lot of inertia and the temperature changes slowly, so I don't need the fans to be very jittery and overreactive.

    I may still optimize my own PID settings using the Ziegler-Nichols method as discussed above, but considering how well the presets work, I'm not sure its worth the investment of time it would require.

    In the end, the result is exactly what I had hoped for. Dead silence.

    I'm hoping this holds up in the summer when things get warmer. It all depends on how close the loop temp gets to the setpoint at idle.