From 7abda9914cdbfc04c91ba0d5eca18f0f6351e909 Mon Sep 17 00:00:00 2001 From: ozbibi <8536684+ozbibi@users.noreply.github.com> Date: Sat, 25 Nov 2023 15:38:50 +1100 Subject: [PATCH] Fix formula for automatic fan control and adjust minimum fan speed (#59) * Fix formula for the automatic fan control --- main/tasks/power_management_task.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/main/tasks/power_management_task.c b/main/tasks/power_management_task.c index f85a3c8b..a8d4eea8 100644 --- a/main/tasks/power_management_task.c +++ b/main/tasks/power_management_task.c @@ -143,20 +143,23 @@ void POWER_MANAGEMENT_task(void * pvParameters) } } -// all values input below 60 result in 38 but increases exponentially such that an input of 70 results in 100 +// Set the fan speed between 20% min and 100% max based on chip temperature as input. +// The fan speed increases from 20% to 100% proportionally to the temperature increase from 50 and THROTTLE_TEMP static void automatic_fan_speed(float chip_temp) { double result = 0.0; double min_temp = 50.0; + double min_fan_speed = 20.0; if (chip_temp < min_temp) { - result = 25; + result = min_fan_speed; } else if (chip_temp >= THROTTLE_TEMP) { result = 100; } else { - double range = THROTTLE_TEMP - min_temp; - result = ((chip_temp - min_temp) / range) * 100; + double temp_range = THROTTLE_TEMP - min_temp; + double fan_range = 100 - min_fan_speed; + result = ((chip_temp - min_temp) / temp_range) * fan_range + min_fan_speed; } EMC2101_set_fan_speed((float) result / 100); -} \ No newline at end of file +}