通過給智能樓宇系統增加空氣質量傳感器,工程師可以實現有害氣體和化學物質聚積的早期預警,但商用空氣質量傳感器缺乏加入智能樓宇網絡所需的集成功能。然而,借助易于使用的開發套件,工程師可以增加所需的處理能力和無線功能以克服這一缺陷。
為確定環境中 CO2 或揮發性有機化合物 (VOC) 的 ppm 濃度,最受歡迎的空氣質量監測設備往往采用半導體電化學元件,這些元件可產生與被測氣體或化學物質的濃度成比例的輸出電壓。但是,溫度和濕度均會影響測量精度。溫度和濕度傳感器可以為連續補償算法提供數據以改善空氣質量傳感器輸出的精度,但并沒有常規性地與此類空氣質量傳感器集成。
此外,當前各類空氣質量傳感器缺乏其他類型傳感器常用的無線技術,而要連接到智能樓宇網絡必須有無線技術。
這些缺陷使得工程師更難以為家庭、商業和工業應用設計支持無線網絡的空氣質量傳感器。
不過,最近推出的適用于空氣質量監測產品的開發套件包含了溫度和濕度傳感器以及無線連接,因此相關設計挑戰迎刃而解。本文介紹如何使用這些開發套件來縮短空氣質量監測產品的設計周期。
MOS 傳感器特性
監測空氣質量的傳感器有多種類型。實例包括電化學 (EC)、非分散紅外 (NDIR)、光電離檢測器 (PID) 和熱類型。
但是,金屬氧化物半導體 (MOS) 類型最符合智能樓宇應用的監測要求。這些器件結構緊湊,價格相對便宜,可以采用電池供電(具有足夠容量定期為 MOS 傳感器的加熱器供電),檢測范圍與室內工作場所中典型的 C02 和 VOC 濃度相匹配(圖 1)。
圖 1:一天中臥室內 CO2 和 VOC 的濃度變化。(圖片來源:IDT)
在運行中,檢測元件被加熱到數百攝氏度 (?C)。精確的溫度決定了元件對特定氣體或化學物質的選擇性。靈敏度取決于材料的厚度。
傳感器采用 n-型或 p-型半導體檢測元件制造。檢測元件吸收(p-型)或解吸(n-型)目標化學物質,與目標化合物的電化學反應會增加或移除半導體導帶中的電子。電子遷移使檢測元件的電阻率或電導率從已知基線值呈線性變化(圖 2)。
圖 2:響應目標化學物質濃度的變化,MOS 傳感器元件的電阻率呈線性變化。本例中的化學物質為乙醇。(圖片來源:IDT)
ams 為智能家居應用提供了一種商用 MOS 傳感器:CCS811B 是一款數字 MOS 傳感器解決方案,集成了微控制器、模數轉換器 (ADC) 和 I2C 接口(圖 3)。該器件處理傳感器原始測量結果,輸出“等效總 VOC” (eTVOC) 和“等效 CO2” (eCO2) 值。該傳感器采用 10 引線 2.7 × 4.0 × 1.1 mm 封裝。
圖 3:ams 的 CCS811B 數字 MOS 傳感器集成一個板載微控制器,用于處理傳感器的原始數據。(圖片來源:ams)
對于給定的空氣成分、溫度和濕度,每個 MOS 傳感器都有一個特征基線電阻。它用作計算氣體或化學物質濃度的基礎:電阻相對于基線值的差異與氣體或化學物質濃度成比例。
實際應用中的環境溫度和濕度會影響傳感器元件的基線電阻,改變其靈敏度,進而改變其精度。例如,當環境溫度升高時,傳感器元件的基線電阻(濕度一定時)會提高,而濕度增加時,基線電阻(溫度一定時)會降低。
傳感器制造商建議將空氣質量傳感器與溫度和濕度傳感器配合使用,以便監控微處理器可以運行算法來連續補償基線電阻的變化。
針對此類應用,Bosch Sensortec 的 BME280 是一款頗受歡迎的器件。BME280 將數字濕度、壓力和溫度結合在一個 LGA 封裝中,基底面為 2.5 x 2.5 x 0.93 mm。該傳感器具有 I2C 接口,可與外部微處理器通信,并需要 1.71 至 3.6 V 的電源為傳感器供電。當傳感器處于休眠模式時,電流消耗降至 0.1 微安 (μA)。
商用 MOS 傳感器缺乏加入無線網絡所需的內置連接能力。然而,有許多低功耗無線芯片可專用于直接與傳感器介接。其中許多器件還包含非常強大的嵌入式微處理器,足以運行所需算法來處理原始傳感器數據及補償濕度和溫度變化。(有關適合此應用的無線技術的更多信息,請參見 Digi-Key 文章“低功耗無線技術之比較”。)
開發基礎型空氣質量傳感器
設計具無線連接功能的空氣質量監測器需要工程師將分立式 MOS 傳感器、濕度和溫度傳感器、無線收發器以及(某些情況下)微處理器結合成一個有效系統。這種復雜性使得該任務非常艱巨且耗時。
然而,市場上有一系列開發套件可供選擇,它們能大大簡化初始設計和測試過程。例如,SparkFun Electronics 用于空氣質量傳感器開發的 SEN-14348 Qwiic 環境型組合分線板將 CCS811B 空氣質量傳感器與用于溫度和濕度補償的 BME280 傳感器相結合,并含有兩個物理 I2C 接口,采用 4 引腳極化 Qwiic 連接器(圖 4)。
圖 4:SparkFun 的 SEN-14348 分線板結合了 CCS811B 傳感器和用于溫度和濕度補償的 BME280 器件。(圖片來源:SparkFun)
雖然 SEN-14348 可用作溫度和濕度補償型空氣質量傳感器設計的基礎,但它并不是一個綜合性解決方案。CCS811B 包含一個微處理器,但除了監控周期性測量和執行基線補償之外,該器件的能力有限。對于更復雜的應用,例如監測空氣質量閾值或計算氣體/化學物質長期濃度,則超出了該微處理器的能力。為利用 SEN-14348 支持更高級的應用,需要將其連接到功能更強大的微處理器。
對于初步開發,SparkFun 建議將 SEN-14348 分線板連接到 Arduino 兼容計算機,例如 RedBoard。RedBoard 通過 USB 電纜(其也為電路板供電)連接到 PC,以便從 Arduino IDE 上傳代碼。為將 RedBoard 與 Qwiic 分線板一起使用,計算機需要利用 DEV-14352 Qwiic 擴展板進行適配。擴展板含有一個 I2C 連接器,并將 5 V RedBoard 電源調節至 SEN-14348 分線板上傳感器所需的 3.3 V 電壓。
開始的時候,開發人員需要從 Github 下載 SparkFun CCS811 和 BME280 Arduino 庫。傳感器從 Arduino IDE 對采樣率、有限脈沖響應 (FIR) 濾波器系數和過采樣模式等信息進行配置。
下面的代碼片段顯示了獲取讀數之前初始化 BME280 傳感器的例程(CCS811 的初始化例程類似)。
#include 《SparkFunBME280.h》
#include 《SparkFunCCS811.h》
#define CCS811_ADDR 0x5B //Default I2C Address
//#define CCS811_ADDR 0x5A //Alternate I2C Address
//Global sensor objects
CCS811 myCCS811(CCS811_ADDR);
BME280 myBME280;
void setup()
{
Serial.begin(9600);
Serial.println();
Serial.println(“Apply BME280 data to CCS811 for compensatio
n.”);
//This begins the CCS811 sensor and prints error status of 。
begin()
CCS811Core::status returnCode = myCCS811.begin();
if (returnCode != CCS811Core::SENSOR_SUCCESS)
{
Serial.println(“Problem with CCS811”);
printDriverError(returnCode);
}
else {
Serial.println(“CCS811 online”);
}
//Initialize BME280
//For I2C, enable the following and disable the SPI section
myBME280.settings.commInterface = I2C_MODE;
myBME280.settings.I2CAddress = 0x77;
myBME280.settings.runMode = 3; //Normal mode
myBME280.settings.tStandby = 0;
myBME280.settings.filter = 4;
myBME280.settings.tempOverSample = 5;
myBME280.settings.pressOverSample = 5;
myBME280.settings.humidOverSample = 5;
//Calling .begin() causes the settings to be loaded
delay(10); //Make sure sensor had enough time to turn on.B
ME280 requires 2ms to start up.
byte id = myBME280.begin(); //Returns ID of 0x60 if successf
ul
if (id != 0x60)
{
Serial.println(“Problem with BME280”);
}
else {
Serial.println(“BME280 online”);
}
}
代碼片段 1:獲取讀數之前初始化 BME280 傳感器的例程。(代碼來源:SparkFun)
要從傳感器獲取讀數,必須在代碼(Arduino“草圖”)中添加一個 void 循環(代碼片段 2)。
void loop() {
if (myCCS811.dataAvailable()) //Check to see if CCS811 has n ew data (it‘s the slowest sensor)
{
myCCS811.readAlgorithmResults(); //Read latest from CCS81
1 and update tVOC and CO2 variables
//getWeather(); //Get latest humidity/pressure/temp data f
rom BME280
printData(); //Pretty print all the data
}
else if (myCCS811.checkForStatusError()) //Check to see if C
CS811 has thrown an error
{
Serial.println(myCCS811.getErrorRegister()); //Prints what
ever CSS811 error flags are detected
}
delay(2000); //Wait for next reading
}
代碼片段 2:從 CCS811 傳感器獲取讀數并輸出的例程。(代碼來源:SparkFun)
來自 BME280 的環境數據(“ENV_DATA”)被寫入 CCS811,因此可以將補償因子應用于基線電阻,以考慮溫度和濕度的影響。
濕度和溫度信息以無符號 16 位整數形式傳遞,分辨率為 1/512% RH 和 1/512 度。濕度的默認值為 50% (= 0x64, 0x00)。例如,48.5% 的濕度 = 0x61, 0x00。溫度讀數包括一個偏移,0 對應 -25°C。默認值為 25°C (= 0x64, 0x00)。例如,23.5°C = 0x61, 0x00。
從 BME280 向 CCS811 饋送溫度和濕度信息后,微處理器便可應用補償算法(代碼片段 3)。
void loop() {
//Check to see if data is available
if (myCCS811.dataAvailable())
{
//Calling this function updates the global tVOC and eCO2 v
ariables
myCCS811.readAlgorithmResults();
//printData fetches the values of tVOC and eCO2
printData();
float BMEtempC = myBME280.readTempC();
float BMEhumid = myBME280.readFloatHumidity();
Serial.print(“Applying new values (deg C, %): ”);
Serial.print(BMEtempC);
Serial.print(“,”);
Serial.println(BMEhumid);
Serial.println();
//This sends the temperature data to the CCS811
myCCS811.setEnvironmentalData(BMEhumid, BMEtempC);
}
else if (myCCS811.checkForStatusError())
{
Serial.println(myCCS811.getErrorRegister()); //Prints what
ever CSS811 error flags are detected
}
delay(2000); //Wait for next reading
}
代碼片段 3:饋送溫度和濕度數據以使 CCS811 傳感器能夠執行補償算法。(代碼來源:SparkFun)
給物聯網增加空氣質量傳感器
雖然利用 SparkFun SEN-14348 分線板、Arduino 計算機和擴展板可以控制和整理空氣質量數據,但該系統沒有無線連接能力。Cypress Semiconductor 的 CY8CKIT-042-BLE-A PSoC 4 BLE Pioneer 套件包含無線功能,可滿足無線連接要求。
PSoC 4 BLE Pioneer 套件是一款旨在幫助工程師開發無線傳感器應用的開發工具。該套件允許工程師編寫和編譯應用程序,然后將固件移植到 Cypress PSoC 4 低功耗藍牙 SoC。該 SoC 采用 32 位、48 MHz Arm? Cortex?-M0 處理器和低功耗藍牙無線電。
這種情況下,分線板的補償空氣質量數據通過分線板的 I2C 接口饋送到套件印刷電路板上的 I2C 連接器。除了從 I2C 接口的 SDA 線接收數據外,處理器還能復位、中斷傳感器及將其置于休眠狀態。
使用該套件時,需要進行一些開發工作來編程和調試空氣質量傳感器設計。Cypress 提供 Windows CySmart 主機仿真工具(在 PC 上運行)和低功耗藍牙適配器,以用于編碼和測試。在開發過程中,適配器和 Pioneer 套件可以同時連接到共用主機 PC(圖 5)。
圖 5:Cypress 提供低功耗藍牙開發工具和適配器(配置為低功耗藍牙中央器件),以幫助利用 PSoC 4 BLE Pioneer 套件進行應用固件開發。(圖片來源:Cypress Semiconductor)
采用 CY8CKIT-042-BLE-A PSoC 4 BLE Pioneer 套件的設計開發流程包括四個階段:
在 PSoC Creator 原理圖頁面中創建設計
編寫固件以初始化和處理低功耗藍牙事件
利用 Pioneer 套件對低功耗藍牙 SoC 進行編程
使用 CySmart 主機仿真工具(或手機應用)測試設計
(有關低功耗藍牙應用開發的詳細信息,請參見 Digi-Key 文章“兼容藍牙 4.1、4.2 和 5 的低功耗藍牙 SoC 和工具可應對物聯網挑戰”。)
借助應用程序固件,低功耗藍牙 SoC 得以整理和處理傳感器數據,并通過低功耗藍牙鏈路將信息傳輸到智能手機等設備進行分析和顯示。
然后,來自傳感器的數據可以從智能手機轉發到云服務器以保存數據,并可能基于數據觸發“If This Then That” (IFTTT) 通知。例如,若兒童臥室中的 CO2 讀數持續較高,可能會觸發父母智能手機通知,建議增加通風。
直接從傳感器連接到云要更復雜一點。低功耗藍牙 SoC(例如 Cypress 元器件)一般缺少本地 IPv6 網絡層。解決方案是將藍牙數據發送到一個使用替代協議的“網關”,從而連接到云(例如 Wi-Fi)。
Cypress 和 SparkFun 再次合作,使其成為可能。通過使用 Cypress CY8CKIT-062-BLE PSoC 6 BLE Pioneer 套件和 SparkFun DEV-14531 PSoC Pioneer 物聯網擴展板(配備 XB2B-WFWT-001 XBee Wi-Fi 模塊),工程師可以開發一個網絡,該網絡從傳感器獲取補償空氣質量數據,通過低功耗藍牙鏈路將數據從 CY8CKIT-042-BLE-A PSoC 4 BLE Pioneer 套件傳輸到 CY8CKIT-062-BLE PSoC 6 BLE Pioneer 套件,然后從那里通過 Wi-Fi 傳輸到云端(圖 6)。(有關使用 Wi-Fi 模塊連接到云的更多信息,請參見 Digi-Key 技術文章“802.11x 模塊及開發套件可幫助簡化物聯網無線設計工作”。)
圖 6:這個由 Cypress 和 SparkFun 開發套件構建的無線系統使用低功耗藍牙和 Wi-Fi 將空氣質量傳感器數據發送到云端。(圖片來源:Digi-Key Electronics)
總結
將空氣質量傳感器納入智能樓宇網絡變得越來越重要,因為人們日益意識到 VOC 及 CO2 等氣體在受控通風建筑物中聚積會給身體帶來有害影響。
商用空氣質量傳感器目前缺乏其他(模塊化)傳感器常見的強大集成微處理器和無線連接功能。然而,借助易于使用的設計工具,工程師不僅能夠補償原始空氣質量數據的溫度和濕度影響,還能通過低功耗藍牙網絡無線傳輸信息,利用智能手機網絡或 Wi-Fi 模塊將信息傳輸到云端。
評論
查看更多