Max fan RPM auto calibration

This commit is contained in:
seerge
2023-03-30 00:00:20 +02:00
parent bb947bf8bf
commit 1d43ca3ce4
3 changed files with 22 additions and 10 deletions

View File

@@ -108,6 +108,8 @@ public class AppConfig
if (device == 1) if (device == 1)
name = "gpu"; name = "gpu";
else if (device == 2)
name = "mid";
else else
name = "cpu"; name = "cpu";

View File

@@ -18,7 +18,7 @@ namespace GHelper
{ {
if (percentage == 0) return "OFF"; if (percentage == 0) return "OFF";
return (200 * Math.Round((float)(MinRPM + (MaxRPM - MinRPM) * percentage * 0.01) / 200)).ToString() + unit; return (200 * Math.Round((float)(MinRPM*100 + (MaxRPM - MinRPM) * percentage) / 200)).ToString() + unit;
} }
void SetChart(Chart chart, int device) void SetChart(Chart chart, int device)
@@ -89,14 +89,8 @@ namespace GHelper
InitializeComponent(); InitializeComponent();
InitTheme(); InitTheme();
MinRPM = 1800; MinRPM = 18;
MaxRPM = HardwareMonitor.GetFanMax();
if (Program.config.ContainsModel("401"))
MaxRPM = 7200;
else if (Program.config.ContainsModel("503"))
MaxRPM = 6800;
else
MaxRPM = 5800;

View File

@@ -14,6 +14,19 @@ public static class HardwareMonitor
public static string? gpuFan; public static string? gpuFan;
public static string? midFan; public static string? midFan;
public static int GetFanMax()
{
int max = 58;
if (Program.config.ContainsModel("401")) max = 72;
else if (Program.config.ContainsModel("503")) max = 68;
return Math.Max(max, Program.config.getConfig("fan_max"));
}
public static void SetFanMax(int fan)
{
Program.config.setConfig("fan_max", fan);
}
private static string FormatFan(int fan) private static string FormatFan(int fan)
{ {
// fix for old models // fix for old models
@@ -23,10 +36,13 @@ public static class HardwareMonitor
if (fan <= 0 || fan > 100) return null; //nothing reasonable if (fan <= 0 || fan > 100) return null; //nothing reasonable
} }
int fanMax = GetFanMax();
if (fan > fanMax) SetFanMax(fan);
if (Program.config.getConfig("fan_rpm") == 1) if (Program.config.getConfig("fan_rpm") == 1)
return " Fan: " + (fan * 100).ToString() + "RPM"; return " Fan: " + (fan * 100).ToString() + "RPM";
else else
return " Fan: " + Math.Min(Math.Round(fan / 0.6), 100).ToString() + "%"; // relatively to 6000 rpm return " Fan: " + Math.Min(Math.Round((float)fan/fanMax*100), 100).ToString() + "%"; // relatively to 6000 rpm
} }
public static void ReadSensors() public static void ReadSensors()