Arduino定時過濾器

Arduino是一個極簡單的控制器,各位可以到www.arduino.org參考詳細資料

Arduino每個pin的最大輸出電流只有40mA,所以不能直接控制一些電器如過濾器的開關。要按制這些電器就需要借助transistor或power mosfet了。它們一般用於放大signal及開關應用。

用BD139做例子,從datasheet可看到它的特性:

  • Vce = 80V (可解作控制電器的最大電壓)
  • Ic = 1.5A (可解作控制電器的最大電流)
  • hfe = 40 – 160 (放大參數)
要控制一個12V,300mA過濾器的開關,要計算input signal的電流Ib,只要Ib在transistor的saturation region時就可以做到全開全關了。
Ib = Ic / hfe => Ib = 300 / 85 (從datasheet圖中看到當Ic = 300mA時hfe約85) => Ib = 0.35mA。則只要input signal的電流大過0.35mA便能控制風扇的開關,一般會把這電流乘大10至20倍則Ib = 3.5mA – 7mA。Arduino的輸出是5V,要輸出7mA便需要加粒電阻做限流,用V=IR計算電阻值得出714ohm (R = 5 / 0.007)。

所以transistor就能有效及安全地控制過濾器了。請選用到的transistor,mosfet & diode都要比實際需要的規格高。知道了甚樣控制開關後,那麼在Arduino中要用什麼指令呢?方法很簡單,假設控制過濾器的是pin 3時,要(開10分鐘/關10分鐘)

#define filterPin 3     // set pin3 for filter control
#define min 60000    // minute duration = 60000
void setup() {
  pinMode(filterPin, OUTPUT);  // set pin 3 as output
}
void loop() {
  digitalWrite(filterPin, HIGH);  // turn on filter
  delay( 10 * min);             // delay 10 minutes
  digitalWrite(filterPin, LOW);  // turn off filter
  delay( 10 * min);
}

有關Arduino的細節,有興趣請到http://www.arduino.org官網參考。

留言