測量環(huán)境參數(shù)的能力可以作為在工廠和工業(yè)應用以及智能建筑,家電和個人產(chǎn)品中建立成熟的健康和安全特征的基礎(chǔ)。然而,為了提供這些功能,有助于滿足法規(guī)要求,開發(fā)人員需要找到有效地合并來自多個傳感器,最大限度地減少空間,功耗和成本效果的一種手段,同時確保最高的準確度,精確度和可靠性。
為了實現(xiàn)這一點,開發(fā)人員現(xiàn)在可以求助于復雜的傳感器融合算法,能夠產(chǎn)生大約空氣質(zhì)量,溫度,濕度,和總體舒適的信息。
本文將展示如何使用Bosch Sensortec的單個設(shè)備和軟件,特別是BME680及其相關(guān)的支持硬件和軟件,以最小的努力完成此項工作。
駕駛空氣傳感器發(fā)展的法規(guī)
健康和舒適水平與環(huán)境因素密切相關(guān),遠遠超出對基本參數(shù)的簡單測量。舒適溫度的人類感覺不僅取決于溫度,還取決于濕度水平。健康專家將溫度和濕度結(jié)合起來,形成一個“高溫指數(shù)”,高度警示重大健康風險。正如熱指數(shù)所預測的那樣,在特定溫度的環(huán)境中工作的人在濕度升高時可能面臨嚴重的健康風險(圖1)。
圖1:人類受溫度和相對濕度組合的影響,使其同時測量更有用。
人為因素的專家進一步研究,根據(jù)“有效溫度”的一個新的參數(shù)定義了一個主觀的“舒適區(qū)”,將溫度和濕度結(jié)合成一個單一的指標。溫度或濕度的變化會迅速導致典型個體感到不舒服的環(huán)境(圖2)。
圖2:人類認為溫度和相對濕度的變化使得舒適區(qū)狹窄,極端情況下會導致包括中暑在內(nèi)的重大健康風險。
與熱指數(shù)一樣,舒適區(qū)以外的溫度,濕度或兩者的劇烈變化都可能迅速造成不僅令人不舒服的情況。高于溫度依賴的濕度水平,個體甚至可能面臨中暑的危險。工作環(huán)境中的舒適區(qū)的概念是如此重要,以至于其操作參數(shù)在由美國國家標準學會(ANSI)批準的美國加熱,制冷和空調(diào)工程師協(xié)會(ASHRAE)的標準55中規(guī)定。
盡管舒適區(qū)之外的重大短途旅行可能會影響健康,但即使溫度有限的變化也會影響人的表現(xiàn)。在對這個話題進行實驗性研究的調(diào)查中,研究人員發(fā)現(xiàn),在相對較窄的有效溫度范圍之外,工作性能一直在下降(圖3)。
圖3:研究人員始終發(fā)現(xiàn),當有效溫度超出相對較窄的范圍時,性能會下降。
同時,溫度和濕度決不是單獨影響健康。揮發(fā)性有機化合物(VOCs)由多種天然和人為來源引起,對空氣質(zhì)量構(gòu)成了特別隱蔽的威脅。由于空氣質(zhì)量對健康至關(guān)重要,美國環(huán)境保護署(EPA)等組織將各種空氣質(zhì)量參數(shù)壓縮為單一指標(圖4)??諝赓|(zhì)量指數(shù)(AQI)通常作為城市和較大地理區(qū)域的健康指標呈現(xiàn),可直接應用于小氣候,建筑物和其他高占用率地區(qū)。大型建筑物中的高級加熱,通風和空調(diào)(HVAC)系統(tǒng)通常依賴于空氣質(zhì)量的一些度量作為其氣流過程控制設(shè)計的一部分。
圖4:環(huán)境和健康組織使用標準的空氣質(zhì)量指數(shù)來警告當?shù)鼐用竦目諝赓|(zhì)量狀況,可能會導致一系列的健康風險。
對于工程師來說,溫度,濕度和揮發(fā)性有機化合物等基本因素之間復雜的相互關(guān)系,對于健康和健康傳感系統(tǒng)的設(shè)計來說是一個巨大的挑戰(zhàn)。在最基本的層面上,設(shè)計師必須準確地測量每個因素。
過去,開發(fā)人員通過將傳感器與定制信號鏈相結(jié)合來處理原始電壓和電流輸出,從而解決了這些類型的傳感問題。智能傳感器的出現(xiàn)極大地簡化了傳感系統(tǒng)的開發(fā)。通過集成傳感器,傳感器信號鏈,模數(shù)轉(zhuǎn)換器(ADC)和控制邏輯,智能傳感器可以向主MCU提供準確的溫度補償數(shù)字傳感器數(shù)據(jù)。開發(fā)人員只需通過集成傳感器通常支持的SPI或I 2 C接口將這些設(shè)備連接到MCU 。
盡管如此,對于諸如舒適區(qū)和AQI等派生分析,即使是單個智能傳感器的集合也沒有提供有效的解決方案。而且,多個傳感器的使用導致更大的設(shè)計復雜性,更大的BOM和更大的物理足跡。這就降低了開發(fā)人員滿足客戶對更小,更高效設(shè)計的需求的能力。
也許更糟的是,使用多個傳感器,甚至是智能傳感器的設(shè)計在滿足功能要求方面面臨重大問題。即使與有效溫度一樣重要,派生測量也需要開發(fā)人員同步底層傳感器測量結(jié)果以用于傳感器融合算法。博世Sensortec BME680消除了這些設(shè)計限制,使開發(fā)人員能夠使用單個設(shè)備和相關(guān)聯(lián)的傳感器融合庫,以快速滿足健康和保健應用的需求。
集成智能傳感器
BME680是一款集成式環(huán)境傳感器,將溫度,濕度,壓力和氣體傳感器集成在一起,尺寸僅為3 x 3 x 1 mm,采用8引腳LGA封裝。特別是,該裝置的氣體傳感器支持基于各種氣體測量的空氣質(zhì)量測量。
該器件實現(xiàn)了高線性度和高準確度,而正常工作時功耗僅為微安(μA),睡眠模式下僅為0.16μA。在典型的操作過程中,BME680的溫度測量功耗僅為1.0μA。對于濕度,壓力和溫度的組合測量,器件僅使用3.7μA。對于氣體傳感,傳感器子系統(tǒng)的性質(zhì)導致功耗從0.09毫安(mA)到12毫安(取決于工作模式)。
氣體感測的較高功耗源自兩階段過程。氣體傳感器本身是一種基于金屬氧化物的裝置,當它與各種各樣的VOC或其他環(huán)境污染物接觸時,其電阻會發(fā)生變化。但是,在傳感器運行之前,氣體傳感器子系統(tǒng)中的加熱器將溫度升高到確保準確測量所需的水平。在氣體傳感器子系統(tǒng)內(nèi),加熱器控制模塊使用控制回路來控制集成數(shù)字 - 模擬轉(zhuǎn)換器(DAC)的輸出。反過來,DAC輸出用于調(diào)整注入電阻加熱器元件的電流量以提高溫度。
BME680為開發(fā)人員提供了幾種控制氣體感應功耗的方法。使用三種不同的操作模式,開發(fā)者可以交換功耗的更新速率。對于需要最大更新速率的應用,氣體傳感器可以以每秒更新一次的連續(xù)模式運行,耗電量為12 mA。
對于更新要求較低的應用程序,開發(fā)人員可以選擇兩種不同的模式。在低功耗模式下,氣體傳感器每3秒更新一次讀數(shù),在此過程中消耗0.9 mA。對于功率限制大于更新速率的應用,開發(fā)人員可以在超低功耗模式下操作氣體傳感器,該模式僅消耗0.09 mA,但每300秒更新一次。
這兩種模式除了在更新速率和功耗上的差異之外,在氣體傳感器的響應時間上差別很大。在低功耗模式下,氣體傳感器子系統(tǒng)的典型響應時間為1.4 s。超低功耗模式會導致響應時間明顯變慢,通常為92 s。
開發(fā)人員還可以通過控制加熱過程對功耗進行一定程度的控制。通常,為了達到所需的溫度水平,在氣體傳感器測量之前,該裝置需要約30ms的加熱時間。開發(fā)人員可以通過編程加熱持續(xù)時間在1毫秒到4032毫秒范圍內(nèi)來控制加熱持續(xù)時間并影響功耗。
感測序列
為了避免不必要的功耗,BME680在睡眠模式下啟動,等待測量命令。在大多數(shù)情況下,開發(fā)人員以強制模式操作設(shè)備,使設(shè)備依次自動采樣每個傳感器(圖5)。
圖5:在強制模式運行狀態(tài)下,Bosch Sensortec BME680在采樣之前,先加熱氣體傳感器,然后對其溫度,壓力和濕度傳感器進行采樣。
在強制模式下,在進行氣體傳感器測量之前所需的加熱之前,設(shè)備將完成溫度,壓力和濕度傳感器的測量。在加熱階段期間,加熱元件通常達到200℃和400℃之間的目標溫度,并且維持該程序的加熱持續(xù)時間的溫度。通過僅在初始傳感器測量之后執(zhí)行該加熱階段,該裝置避免了加熱元件對那些傳感器測量的任何直接影響。最后,當加熱階段達到指定的時間后,器件的ADC產(chǎn)生氣體傳感器電阻值。
BME680信號鏈為開發(fā)人員提供了優(yōu)化某些測量的方法。為了減少測量RMS噪聲,開發(fā)人員可以對器件進行編程,以對其溫度,濕度和壓力傳感器進行過采樣。還可以選擇啟用集成式無限脈沖響應(IIR)濾波器,以減少瞬態(tài)事件對溫度和壓力傳感器測量的影響。盡管內(nèi)部IIR濾波器可以降低這些測量的帶寬,但它將分辨率從16位提高到20位。請注意,由于他們的測量方法,這種類型的過濾不是濕度和氣體傳感器所必需的。
除了配置傳感器的測量過程之外,設(shè)計人員可以單獨啟用或禁用個別溫度,濕度和壓力傳感器的測量。但是,Bosch Sensortec建議開發(fā)人員始終啟用溫度測量,因為相關(guān)的軟件包使用溫度數(shù)據(jù)來校正其他傳感器測量值。
盡管過采樣和濾波可以降低噪聲并提高分辨率,但BME680的最終輸出最終將采用由器件內(nèi)部ADC產(chǎn)生的未經(jīng)補償?shù)膫鞲衅髦档男问?。開發(fā)人員需要應用存儲在設(shè)備中的校準參數(shù)來產(chǎn)生準確的結(jié)果。幸運的是,設(shè)備驅(qū)動程序包含處理該任務(wù)的應用程序編程接口(API)。
用BME680設(shè)計和開發(fā)
為了幫助啟動設(shè)計,Bosch Sensortec提供了一個完整的驅(qū)動程序和API,簡化了使用BME680進行設(shè)計的軟件開發(fā)。對于數(shù)據(jù)補償?shù)然静僮?,開發(fā)人員只需要為每個傳感器調(diào)用不同的API函數(shù)。例如,calc_gas_resistance函數(shù)的調(diào)用參數(shù)包括氣體傳感器ADC輸出和BME60數(shù)據(jù)結(jié)構(gòu)(清單1),用于訪問存儲在設(shè)備中的校準數(shù)據(jù)。
struct bme680_dev {
/*! Chip Id */
uint8_t chip_id;
/*! Device Id */
uint8_t dev_idDK;
/*! SPI/I2C interface */
enum bme680_intf intf;
/*! Memory page used */
uint8_t mem_page;
/*! Ambient temperature in Degree C*/
int8_t amb_temp;
/*! Sensor calibration data */
struct bme680_calib_data calib;
/*! Sensor settings */
struct bme680_tph_sett tph_sett;
/*! Gas Sensor settings */
struct bme680_gas_sett gas_sett;
/*! Sensor power modes */
uint8_t power_mode;
/*! New sensor fields */
uint8_t new_fields;
/*! Store the info messages */
uint8_t info_msg;
/*! Burst read structure */
bme680_com_fptr_t read;
/*! Burst write structure */
bme680_com_fptr_t write;
/*! Delay in ms */
bme680_delay_fptr_t delay_ms;
/*! Communication function result */
int8_t com_rslt;
};
清單1:Bosch Sensortec開源BME680驅(qū)動程序提供了與BME680交互的所有基本軟件支持,并說明了包含關(guān)鍵配置值的關(guān)鍵軟件結(jié)構(gòu)。(代碼來源:Bosch Sensortec)
根據(jù)設(shè)備中存儲的參數(shù),該功能返回修正后的氣體傳感器結(jié)果(清單2)。
static uint32_t calc_gas_resistance(uint16_t gas_res_adc, uint8_t gas_range, const struct bme680_dev *dev)
{
int64_t var1;
uint64_t var2;
int64_t var3;
uint32_t calc_gas_res;
var1 = (int64_t) ((1340 + (5 * (int64_t) dev-》calib.range_sw_err)) *
((int64_t) lookupTable1[gas_range])) 》》 16;
var2 = (((int64_t) ((int64_t) gas_res_adc 《《 15) - (int64_t) (16777216)) + var1);
var3 = (((int64_t) lookupTable2[gas_range] * (int64_t) var1) 》》 9);
calc_gas_res = (uint32_t) ((var3 + ((int64_t) var2 》》 1)) / (int64_t) var2);
return calc_gas_res;
}
清單2:BME680驅(qū)動程序包含傳感器特定的例程,例如此功能,該功能可使用存儲在設(shè)備內(nèi)的傳感器校準數(shù)據(jù)將原始氣體傳感器數(shù)據(jù)轉(zhuǎn)換為校準讀數(shù)。(代碼來源:Bosch Sensortec)
然而,如前所述,從原始溫度,濕度和氣體傳感器數(shù)據(jù)算法得出更有用的量,如有效溫度,舒適度和空氣質(zhì)量。例如,空氣質(zhì)量不僅取決于來自氣體傳感器的VOC讀數(shù),還取決于有效溫度,取決于這些傳感器的溫度和濕度結(jié)果。除了這個算法復雜性之外,傳感器的自然漂移要求定期使用校準方法來保持精確的結(jié)果。在博世軟件環(huán)境集群(黑海經(jīng)濟合作組織)軟件包解決這些問題,使開發(fā)人員能夠輕松地生成健康和保健應用程序所需的復雜信息。
基于開源BME680驅(qū)動程序集,BSEC是一個封閉的二進制包,實現(xiàn)了傳感器融合所需的算法。例如,使用BME680傳感器讀數(shù),BSEC算法會生成一個反映圖4所示標準空氣質(zhì)量指標的室內(nèi)空氣質(zhì)量指標。
博世傳感器提供了黑海經(jīng)濟合作組織作為主要的指令集架構(gòu),包括ARM二進制分發(fā)?的Cortex ? -M,Espressif系統(tǒng)ESP8266和瑞薩 RL78 MCU的。BESC發(fā)行版還包括用于BESC API的C語言頭文件以及說明BSEC傳感器融合API使用的示例軟件。例如,示例主程序(清單3)演示了一個完整的傳感器程序,僅使用兩個函數(shù)來初始化設(shè)備并定期對BME680傳感器進行采樣。
int main()
{
/* Call to the function which initializes the BSEC library
* Switch on low-power mode and provide no temperature offset */
bsec_iot_init(BSEC_SAMPLE_RATE_LP, 0.0f, bus_write, bus_read, sleep);
/* Call to endless loop function which reads and processes data based on sensor settings */
bsec_iot_loop(sleep, get_timestamp_us, output_ready);
return 0;
}
清單3:博世軟件環(huán)境集群(BSEC)軟件分發(fā)包括示例軟件,例如說明設(shè)備初始化和傳感器采樣的主程序。(代碼來源:Bosch Sensortec)
開發(fā)人員使用該bsec_iot_init函數(shù)來指定采樣率,溫度偏移以及樣本之間的睡眠時間。兩個額外的參數(shù),bus_write, bus_read允許開發(fā)人員交換不同的總線訪問方法來讀取和寫入BME680寄存器。
作為系統(tǒng)配置的一部分,開發(fā)人員可以指定自己的軟件例程來進行總線寫入和讀取。例如,他們可以使用Arduino Wire庫進行總線I / O(清單4),在Arduino平臺上輕松運行驅(qū)動程序或BESC包。驅(qū)動程序和BESC每個都使用包含指向這些自定義I / O例程的指針的設(shè)備結(jié)構(gòu)。在程序執(zhí)行期間,工作代碼使用設(shè)備結(jié)構(gòu)中的指針引用的軟件I / O例程執(zhí)行總線操作。
#include 《Wire.h》
int8_t bus_write(uint8_t dev_addr, uint8_t reg_addr, uint8_t *reg_data_ptr, uint8_t data_len)
{
Wire.beginTransmission(dev_addr);
Wire.write(reg_addr); /* Set register address to start writing to */
/* Write the data */
for (int index = 0; index 《 data_len; index++) {
Wire.write(reg_data_ptr[index]);
}
return (int8_t)Wire.endTransmission();
}
清單4:使用Bosch Sensortec BME680驅(qū)動程序和BESC軟件包,開發(fā)人員可以使用其特定于平臺的總線I / O軟件例程,例如此總線寫入例程,該例程使用Arduino Wire庫在Arduino兼容的硬件平臺上操作。(代碼來源:Bosch Sensortec)
對于開發(fā)平臺本身,用戶可以利用兼容Arduino的評估板以及Bosch Sensortec提供的板卡。該公司的BME680穿梭板簡單地提出了BME680器件的V DD模擬電源,地,V DDIO數(shù)字電源,地和串行接口(片選,串行數(shù)據(jù)輸入,串行數(shù)據(jù)輸出,串行時鐘輸入)。開發(fā)人員可以在自己定制的基于MCU的設(shè)計中使用穿梭板,或者將穿梭板插入Bosch Sensortec自己的應用板。
對于Arduino開發(fā)人員,MikroElektronika MIKROE-2467 MikroBUS點擊板為連接兼容的開發(fā)板提供了一個簡單的選擇。隨著BME680,點擊板添加一個USB接口和電源穩(wěn)壓器。開發(fā)人員可以單獨使用點擊板,或者將其插入MikroElektronika MIKROE-2340開發(fā)板(如圖6)等MikroBUS兼容硬件。
圖6:通過將MikroElektronika MIKROE-2467 MikroBUS點擊板插入MikroElektronika MIKROE-2340開發(fā)板,開發(fā)人員可以快速開始開發(fā)基于BME680的應用程序,該開發(fā)板在板的一側(cè)提供MikroBUS連接器,在另一側(cè)提供Arduino連接器。(圖片來源:MikroElektronika)
該電路板包含Microchip Technology 32位PIC32MZ2048EFH100 MCU,該器件將高性能MIPS32 M級處理器內(nèi)核,浮點單元,2 MB閃存,512 KB SRAM,豐富的模擬外設(shè)和標準數(shù)字接口。除了標準連接器外,MIKROE-2340板還帶有開發(fā)端口,并提供用于簡單用戶通知的LED指示燈。
該電路板的獨特功能是支持MikroBus和Arduino連接器,可在該雙面電路板的任一側(cè)使用。對于軟件設(shè)計,該開發(fā)板支持chipKIT,一個兼容Arduino的開源嵌入式開發(fā)環(huán)境。使用熟悉的Arduino環(huán)境,設(shè)計人員可以利用廣泛的Arduino生態(tài)系統(tǒng)快速實施環(huán)境感測系統(tǒng)。
結(jié)論
Bosch Sensortec BME680與博世軟件環(huán)境集群和驅(qū)動程序結(jié)合使用,大大降低了環(huán)境傳感的硬件和軟件設(shè)計的復雜性,成本和占地面積。
這種組合提供了對空氣質(zhì)量,有效溫度和舒適度的數(shù)值評估,使開發(fā)人員能夠創(chuàng)建更復雜的設(shè)計,以滿足工業(yè),城市和家庭應用中與健康有關(guān)的健康和安全要求。
評論