2011-10-16 51 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設置。

相關問題