目前分類:PC風扇相關控制與偵測 (6)

瀏覽方式: 標題列表 簡短摘要

在前一個章節中我們已經可以利用MOSFET來控制電壓控制風扇轉速,

現在我們要結合前面章節中的轉速偵測,讓arduino可以控制電壓

並同時於LCD 1602A上顯示轉速。

 

/*

文章標籤

呂阿谷 發表在 痞客邦 留言(0) 人氣()

前文中已經可以使用Arduino的PWM 接腳來控制4pin PC風扇,

但實務上使用會遇到一些困難,首先就如同之前討論PC風扇的文章中所說,

4pin風扇較貴,且普及率遠不如另外兩種VC(電壓控制)與傳統2pin風扇,

所以可以利用Arduino的PWM輸出接腳來控制MOSFET,進而達到

控制所有種類風扇的轉速功能。

呂阿谷 發表在 痞客邦 留言(1) 人氣()

PC散熱風扇之研究三:PWM風扇進階研究一文中介紹過用PWM控制

PC風扇轉速,而Arduino本身就提供好幾個PWM輸出腳位,可以直接

拿來控制PC上的散熱風扇。

 

先看Arduino UNO的介面圖:

文章標籤

呂阿谷 發表在 痞客邦 留言(0) 人氣()

前面兩文介紹了兩種量轉速的方法,本文介紹另一種。

用中斷(interrupt)來進行風扇轉速量測很方便,

但也有佔用中斷的問題發生,而且對UNO這類的只有

兩個中斷的低階CPU來說問題會比較大。

所以有人專門開發了量測風扇轉速用的程式庫,可以

呂阿谷 發表在 痞客邦 留言(1) 人氣()

官網後段也有改進之後的程式:

  // read RPM
 int half_revolutions = 0;
 int rpm = 0;
 unsigned long lastmillis = 0;
 void setup(){
 Serial.begin(9600); 
 attachInterrupt(0, rpm_fan, FALLING);
 }
 void loop(){
 if (millis() - lastmillis == 1000){ //Uptade every one second, this will be equal to reading frecuency (Hz).
 detachInterrupt(0);//Disable interrupt when calculating
 rpm = half_revolutions * 60; // Convert frecuency to RPM, note: this works for one interruption per full rotation. For two interrups per full rotation use half_revolutions * 30.
 Serial.print("RPM =\t"); //print the word "RPM" and tab.
 Serial.print(rpm); // print the rpm value.
 Serial.print("\t Hz=\t"); //print the word "Hz".
 Serial.println(half_revolutions); //print revolutions per second or Hz. And print new line or enter.
 half_revolutions = 0; // Restart the RPM counter
 lastmillis = millis(); // Uptade lasmillis
 attachInterrupt(0, rpm_fan, FALLING); //enable interrupt
  }
 }
 // this code will be executed every time the interrupt 0 (pin2) gets low.
 void rpm_fan(){
  half_revolutions++;
 }

這個程式改進了上一個程式時基不固定的缺點,改用等待1000mS也就是一秒鐘之後統計

中斷次數並乘以60,也就是一分鐘的換算RPM值輸出到com port。

不過這樣的算法會造成RPM數值為兩倍,因為每轉一次會輸出兩個pluse,所以算式要調整除以二:

 rpm = (half_revolutions * 60)/2; 

文章標籤

呂阿谷 發表在 痞客邦 留言(0) 人氣()

利用Arduino可以偵測與控制PC風扇,

本文介紹如何讀取風扇轉速的第一種方式。

之前在PC風扇研究中有說過3pin 4pin風扇可提供

轉速偵測功能,請參考本文

現在就來實做使用Arduino來偵測風扇轉速。

文章標籤

呂阿谷 發表在 痞客邦 留言(4) 人氣()