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