2016年4月1日 星期五

Arduino - 利用 pwm 來控制一般 pc 風扇

最近因為工作關係遇到一個需求需要控制風扇的轉速與相關應用,於是正式踏入 Arduino 研究領域,因為本身是非電子科出身,許多相關基本電學基礎及電子學均缺乏,也藉此從零開始學起,包含基礎電子電路、歐姆定律、電阻、電容、二極體、電晶體、麵包板、洞洞板、烙鐵焊接、vcc、gnd、gpio、直流電、交流電、直流馬達、步進馬達、伺服馬達、各類感測器 sensor 模組等,不過基本電學、電子學、電工、工業室內配線、工業配線等有太多專業知識,是需要不斷的去學習了解的,在此就不一一介紹,回過頭來思考本次專案,我們將利用 Arduino uno 板來連接 pc 風扇並控制其轉速,這邊可能需要注意,pc 風扇有分為 cpu 風扇、機殼風扇,pin腳有4pin及3pin,如果只想要讓風扇轉動,3pin即可,僅需在 Arduino 5v pin 腳位(vcc電源)及 gnd(接地) pin 腳位插上電線(通常是杜邦線),那麼風扇就可以轉動,但無法控制轉速,於是我們來研究 4pin 風扇,這四個 pin 腳會包含 vcc、gnd、sensor、pwm等,其中sensor 我們不需要只需要 pwm、vcc、gnd詳細說明如下
Arduino uno *1
4pin fan *1
可變電阻 *1
麵包板 *1
顯波器 *1
杜邦線 *13

程式碼如下
int fan = 9; //設定 Arduino 風扇腳位在 9 pin

void setup() {
 // 初始化傳輸速率設定為9600
 Serial.begin(9600);
 pinMode(fan, OUTPUT); //定義 pinmode 為 pin 9 OUTPUT 輸出
}

void loop() {
 // 讀取輸入 on analog pin 0:
 int pot = analogRead(A0); //設定A0 值為讀取類比訊號
 int fan_speed = pot * (255 / 1023.0); //這個公式將會計算風扇速度的pwm輸出介於 0-255
 analogWrite(fan,fan_speed); //我們設定 9 pin 為 pwm 風扇速度輸出
 Serial.println(fan_speed); //利用 Serial.println函數可以在序列監控視窗中輸出風扇速度的值
 delay(1000); // 我希望每秒鐘可以延遲印出值
}


實驗結果:
不同廠牌的風扇 pwm 轉速會不同,實際改接 12v 變壓器也會有影響轉速。


參考網址
https://technoobsite.wordpress.com/2016/01/23/fan-speed-control-with-arduino-using-a-potentiometer/

1 則留言:

  1. 您好!想請問你4線式的pwm風扇如果單純接上電源要如何回傳轉速到ARDUINO裡並顯示出來?有程式碼嗎?可以寄給我嗎?vu04leo@gmail.com 最近在研究

    回覆刪除