Arduino是一個極簡單的控制器,各位可以到www.arduino.org參考詳細資料
Arduino每個pin的最大輸出電流只有40mA,所以不能直接控制一些電器如過濾器的開關。要按制這些電器就需要借助transistor或power mosfet了。它們一般用於放大signal及開關應用。
用BD139做例子,從datasheet可看到它的特性:
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分鐘)
有關Arduino的細節,有興趣請到http://www.arduino.org官網參考。
Arduino每個pin的最大輸出電流只有40mA,所以不能直接控制一些電器如過濾器的開關。要按制這些電器就需要借助transistor或power mosfet了。它們一般用於放大signal及開關應用。
用BD139做例子,從datasheet可看到它的特性:
- Vce = 80V (可解作控制電器的最大電壓)
- Ic = 1.5A (可解作控制電器的最大電流)
- hfe = 40 – 160 (放大參數)
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官網參考。
留言