// PM2.5 Sensor: OMRON B5W-LD0101
// Arduino Nano Board
// 接線方式
// Vcc: 5V
// Vout1: D2(INT0)
// GND: GND
// VTH: 3.3V
// Vout2: D3(INT1)
//~~~~~~ 宣告區 ~~~~~
//宣告 Vout1, Vout2 計數變數 初始值為 0
volatile int count_vo1 = 0;
volatile int count_vo2 = 0;
// 宣告 計數時間起始 starttime變數 初始值為 0
long starttime = 0;
// 當INT0 外部上升緣中斷; 大於PM0.5 數量+1
void sum_counts_vo1() {
count_vo1++;
}
// 當INT1 外部上升緣中斷; 大於PM2.5 數量+1
void sum_counts_vo2() {
count_vo2++;
}
//~~~~~~ 設定區 ~~~~~
void setup() {
attachInterrupt(0 , sum_counts_vo1 , RISING ); // 設定 INT0 外部中斷 上升緣中斷; –> 大於PM0.5 數量+1
attachInterrupt(1, sum_counts_vo2 , RISING ); // 設定 INT0 外部中斷 上升緣中斷; –> 大於PM2.5 數量+1
starttime = millis(); // millis() 取得開機到現在的毫秒數, 並指定給 計數時間起始 starttime變數
Serial.begin( 9600 ); // 設定 Baud 率 = 9600
Serial.println(“start”);
delay( 100 );
}
//~~~~~~ 主程式區 ~~~~~
void loop() {
long endtime = 0; // 宣告 計數時間結束 endtime變數 初始值為 0
// 間隔 2sec 檢測一次
do {
endtime = millis(); // millis() 取得開機到現在的毫秒數, 並指定給 計數時間結束 endtime變數
} while ( endtime – starttime < 2000 );
starttime = millis();
Serial.println(“————————-“);
Serial.print( “VOUT1( >=0.5um )=” ); // 顯示 大於PM0.5 細懸浮微粒 數量
Serial.println( count_vo1 );
Serial.print( “VOUT2( >=2.5um )=” ); // 顯示 大於PM2.5 細懸浮微粒 數量
Serial.println( count_vo2 );
Serial.print( “~~~~~~~~> PM2.5 =” ); // 顯示 PM0.5~PM2.5 細懸浮微粒 數量
Serial.println( count_vo1-count_vo2 );
//顯示結束, 歸零 PM0.5 PM2.5 計數變數 count_vo1, count_vo2
count_vo1 = 0;
count_vo2 = 0;
}
- 環境空氣品質監控
- 無塵室, 實驗室, 手術室, 隔離病房
- 材料,半導體, 食品蔬果, 藥品化妝品 .等製造工廠
- 換氣系統
- 空調系統
- 空氣濾淨系統.
- 學生專題製作