2011-10-16 44 views
0

我的粉丝有24个速度步。它认为热关断是105°C。空闲温度约为75°C。温度下限和温度上限并将其除以n个speedsteps是一个好的算法吗?什么是一个好的风扇速度算法?

编辑:ATM我用2个循环和85℃up_threshold不过那是以前,我知道大约24 speedsteps:

error |= ec_read(EC_RTMP, &ec_rtmp); 
if ((ec_rtmp < FAN_UPTHRESHOLD_TEMP && sloop < 0) || 
    (ec_rtmp < FAN_UPTHRESHOLD_TEMP && sloop == FAN_LOOP) || 
     (ec_rtmp < FAN_UPTHRESHOLD_TEMP && speed_switch == 1)  
    ) 
{ 
    speed_switch = 1; 
    sloop = FAN_LOOP;       // 20 * 10 sec 
    printk("Temp %dC: disabling fan\n", ec_rtmp); 
    set_fan_disabled(); 
    queue_delayed_work(my_workqueue, &work_object, FAN_JIFFIES_MS*HZ); 
} else 
{ 
    speed_switch = 0; 
    printk("Temp %dC: enable fan\n", ec_rtmp); 
    set_fan_enable(); 
    queue_delayed_work(my_workqueue, &work_object, 2*FAN_JIFFIES_MS*HZ); 
} 

编辑:我已经找到了一个很好的源代码:http://code.google.com/p/eeepc-fancontrol/wiki/Formular

+2

*不听起来像一个编程的问题。* –

+0

我GOOGLE了有2战略。 1是一种基于表格的方法。 – Bytemain

+0

@尼克,我不同意。操作系统也是程序。询问如何更改内核是一个编程问题。 – TMS

回答

4

您需要考虑很多因素,首先您不希望风扇在两个不同的步骤之间不断跳动,因此常见的技巧是仅在基于时间间隔的情况下更改风扇速度,或者如果风扇速度超过风扇的两个边界速度最后更改。

如果你的目标是阻止笔记本电脑变热,那么使用速度表的步骤将是最合适的,但它不会是理想的,并且可能使笔记本电脑变得比其他明智的需求更热成为。想象一下,如果你的风扇对于当前的热量输出总是比需要的慢一到两个设置。什么我得到的是风扇转速应与在温度不直接相关的温度改变,但同时不要完全拒绝的温度,你也需要有一个说风扇必须处于阈值表至少速度X当温度超过Y.

所以设计一个基于温度的增益/损失(△)在一时间间隔,而不是温度在给定时间点系统。

还有一点需要考虑的是风扇通常在冷却时不会随着转速的增加而线性增加,它们通常沿着钟形曲线效率提高,达到峰值冷却效率(vs RPM),然后随着转速提高它们在冷却时效率不会很高。你可能会发现,最后10%的风扇RPM增加了几个DB,但在去除热量方面可能做得不多。

我会建议使用最小风扇速度仅低于在那里你会一般都喜欢在安静的正常条件下运行的风扇。而不是仅仅进行10%,20%,30%,90%,100%的风扇转速,我会说从40%开始(或者什么感觉对你最好),然后以这个速度看看你的新的闲置温度是多少,然后用它作为增加风扇转速剩余的基点。

没有针对此问题,你会得到的东西,总是可以在基于相比,你现在是什么噪音是昂贵的解释输出热量来改善没有完美的通用的解决方案。因此,你应该实现不同的套设置quietofficegaming配置文件(根据您的重要性和系统负载将大致什么特定情况下)。很像汽车有sports modeoff road设置。

相关问题