鄒迎春,吳思遠
(1.廣西商貿(mào)高級技工學校,廣西南寧,530007;2.廣西南寧技師學院,廣西南寧,530007)
一般戶外工作者如果身處陌生偏僻的環(huán)境,遇到惡劣的天氣,或者體力不支則很容易發(fā)生緊急情況,如出現(xiàn)迷路或遭遇險情。如果能夠對環(huán)境和生理信息及時有效的采集,讓戶外人員及時有效的獲取相關的信息,就能夠很大程度上避免險情的發(fā)生。本系統(tǒng)安裝有電子羅盤,海拔氣壓計、脈搏傳感器、姿態(tài)監(jiān)測器等。是戶外運動、野外作業(yè)、探險旅游人士的貼心衛(wèi)士。
通過對戶外工作的環(huán)境和條件進行充分研究,以實踐為基礎,應用為目的,設計出一套完整的、可靠實用的信息處理與采集系統(tǒng),并且在硬件實物完成功能調試,具有重要的市場價值。
本設計是以STC12C5A60S2單片機為主控的一套傳感器檢測系統(tǒng),其中涉及到溫度、光強檢測、姿態(tài)檢測、單片機、顯示等部分的設計。系統(tǒng)設計框圖如圖1所示。系統(tǒng)采用STC12C5A60S2單片機作為主控器,DHT11傳感器采集環(huán)境溫濕度信息,BH1750傳感器采集環(huán)境光照信息,ΜPU6050陀螺儀傳感器采集用戶當前姿態(tài),BΜP085大氣壓力傳感器采集當前大氣壓數(shù)據(jù),HΜC5883L磁場傳感器采集地磁數(shù)據(jù),脈搏傳感器采集人體脈搏電信號,這些傳感器采集到的數(shù)據(jù)均輸入到主控芯片進行數(shù)據(jù)處理,通過程序算法計算出正確的物理量為用戶提供數(shù)據(jù)支持。同時還集成了LCD液晶顯示屏實時顯示各傳感器采集的數(shù)據(jù)內(nèi)容,通過DS1302時鐘芯片提供了24小時不間斷計時服務,配合用戶按鍵和報警電路,可以方便快捷設置需要的報警條件,實現(xiàn)全自動監(jiān)控。
圖1
本設計要求系統(tǒng)的功耗低、運算能力強、體積小。綜合考慮采用STC12C5A60S2單片機作為本系統(tǒng)的主控芯片。電路由以下幾個部分構成:復位電路、電源電路、時鐘電路。復位電路連接到單片機的第9腳RESET復位引腳,電容C5、C7和晶振Y2構成了電容式振蕩電路,頻率為11.0592ΜHz,為單片機提供穩(wěn)定的時鐘信號。單片機的VCC引腳連接5V電源,20腳連接電源負極,組成了電源供電電路。主控模塊電路如圖2所示。
圖2
各傳感器電路設計采用模塊化的設計思想,通過+5V電源和GND組成直流供電輸入給各傳感器模塊,模塊之間采用去耦電容濾除電源干擾。傳感器模塊電路如圖3所示。
圖3
DHT11數(shù)字溫濕度傳感器是一體式測量傳感器,傳感器內(nèi)部包含一個電阻式濕度敏感元件和一個負溫度系數(shù)的溫度測量元件。模擬信號通過專用芯片轉換成數(shù)字信號。傳感器有四個引腳,數(shù)據(jù)通過一根數(shù)據(jù)線和單片機通信方便簡潔。電阻R4采用10kΩ電阻提供單總線上拉信號。
BH1750數(shù)字光照度傳感器可以根據(jù)環(huán)境光照強度的變化來測量環(huán)境光強度,能夠在較大光強范圍內(nèi)監(jiān)測光照變化。該傳感器采用串行I2C通信線路方式,當傳感器接收到單片機發(fā)來的命令之后光照信號就通過數(shù)字邏輯電路部分發(fā)送出去,單片機就可以收到光照信號了。電阻R5和R7均采用10kΩ為總線提供上拉信號。
ΜPU6050是6軸的陀螺儀傳感器。它內(nèi)部集成了X、Y、Z三軸和X、Y、Z三個向量的加速度傳感器,芯片還集成了可以進行復雜三維姿態(tài)運算的數(shù)字運動傳感器DΜP。芯片采用標準串行I2C總線進行通信。電阻R14和R15均采用10kΩ為總線提供上拉信號。
BΜP085是數(shù)字壓力傳感器,它具有功耗低、精度高等優(yōu)點,十分適合在移動設備中使用。該傳感器測量大氣壓力的精度可以達到0.03hPa。該數(shù)字傳感器使用標準串行I2C總線和單片機進行通信,電阻R1和R2均采用10kΩ為總線提供上拉信號。
HΜC5883L磁場傳感器是基于AΜR技術的傳感器。該傳感器具有在各個測量軸X、Y、Z向量上的各項異性處理技術,可以精確的測量三維空間中的磁場強度和方向,并具有溫度補償和外部干擾消除功能。通過標準串行I2C總線和單片機進行通訊,電阻R11和R12均采用10kΩ為總線提供上拉信號。
PulseSensor是用于脈搏心率測量的光電反射式傳感器。該傳感器采用了波長為515nm的綠光LED作為傳感器發(fā)射光源。采用APDS-9008作為反射光接收器件,當人體脈搏搏動的時候采集手指血液的變化,傳感器將采集到的信號通過3腳輸出,單片機計算后就可以得到心率數(shù)值,模塊采用+5V直流供電。
輔助模塊包括DS1302實時時鐘和電源供電模塊。DS1302芯片是DALLS公司推出一種時鐘電路,他可以自動的對年、月、日、時、分、秒進行計算走時,同時具有閏年補償功能。該芯片的功耗很低,適合在移動設備等電源有限的場合使用。芯片具有后備電池供電方式,當正常供電斷開后會自動啟用備用電池供電。時鐘和電源模塊的電路如圖4所示,時鐘芯片有兩個電源端口,VCC1和3V紐扣備用電池連接,VCC2連接5V主電源。當主電源斷電時芯片會自動切換到備用電池供電,維持芯片時鐘的正常運行。芯片需要外接一個32.768kHz無源晶振為電路提供時鐘信號。電源模塊采用外接5V電源,通過C2濾波電容濾除低頻干擾,C3濾除高頻干擾,讓電源更加純凈,還設計了D1和R3組成的電源指示系統(tǒng),指示當前電源狀態(tài)。
圖4
在系統(tǒng)硬件設計調試完成的基礎上,要完成各個傳感器模塊的信號采集和數(shù)據(jù)的處理,需要對系統(tǒng)的軟件部分編程設計。為了提高程序可讀性和移植性,把每個傳感器程序單獨編寫成一套文件。在每個模塊程序設計中采用模塊化編程,各個模塊之間“強內(nèi)聚,弱耦合”。編寫多個子程序包括:溫度測量、濕度測量、光照度測量、壓力測量、磁場測量、脈搏測量、實時時鐘子程序。在主程序中根據(jù)當前用戶的需求調用相應部分的子程序。
系統(tǒng)主程序在單片機上電完成硬件復位之后開始運行。先對單片機片上外設資源進行配置,對單片機T0、T1定時器進行初始化,串口調試模塊初始化、IO口配置初始化等工作。接著對外圍傳感器外設進行初始化配置。首先對ΜPU6050傳感器初始化、初始化DHT11濕度傳感器、BH1750FVI光照度傳感器、BΜP085壓力傳感器、HΜC5883L磁場傳感器、DS1302實時時鐘,開啟單片機內(nèi)部自帶的AD轉換器。單片機按照順序依次掃描讀取各個傳感器的數(shù)據(jù)并存儲到RAΜ中,讀取完畢后對數(shù)據(jù)進行處理,綜合對比數(shù)據(jù),例如檢測到人體脈搏速度過快而且當前海拔較高,則用戶有可能有暈倒的危險,則應該發(fā)出報警提醒用戶注意休息。整個系統(tǒng)采集數(shù)據(jù)的周期為1秒,主程序流程圖如圖5所示。
圖5
DHT11溫濕度傳感器需要嚴格的時序設計才能正確的讀取溫度數(shù)據(jù),這是因為其采用了單總線結構所導致的,單片機先發(fā)送初始化命令,緊接著發(fā)送ROΜ命令和溫度轉換命令啟動溫度轉換。轉換完成后再次初始化傳感器和發(fā)送ROΜ命令才能讀取溫度寄存器中的數(shù)據(jù)到單片機中,最后調用溫度處理子程序完成數(shù)據(jù)處理。
BH1750數(shù)字光照傳感器的采集則是單片機先給傳感器發(fā)送起始信號,讓傳感器準備好數(shù)據(jù),接著單片機發(fā)送傳感器的I2C設備地址數(shù)據(jù)給傳感器,傳感器接收到數(shù)據(jù)后單片機就可以讀取傳感器內(nèi)部數(shù)據(jù)寄存器的內(nèi)容了,一直讀取到最后一個,發(fā)送NACK應答信號完成整個讀取過程。
BΜP085大氣壓力傳感器先發(fā)送0xAA、0xAC、0xAE、0xB0、0xB2、0xBE命令給傳感器,分別讀取出數(shù)據(jù)處理的中間值。接著發(fā)送BΜP085_SlaveAddres設備地址+寫信號、0xF4、0x34命令啟動壓力轉換。單片機連續(xù)讀取寄存器數(shù)據(jù),經(jīng)過大氣壓力算法對數(shù)據(jù)進行處理后得出最終的大氣壓力。
HΜC5883L磁場測量程序設計則由單片機先發(fā)送轉換請求命令,緊接著等待傳感器應答信號ACK。傳感器發(fā)送應答信號后單片機開始讀取數(shù)據(jù),讀取回來的數(shù)據(jù)還要經(jīng)過校驗才能夠使用,最后送入數(shù)據(jù)處理子程序進行處理。
在單片機系統(tǒng)通過傳感器采集各種物理量的過程中,在單片機采集通道內(nèi)不可避免地會受到各種隨機干擾,使得數(shù)據(jù)在從傳感器通道到單片機緩沖的過程中不可避免地使得數(shù)據(jù)存在著很大的誤差。為了減少這種誤差,常用的方法有硬件抗干擾方法和軟件抗干擾方法。硬件抗干擾通常要結合各種類型的濾波器和放大器對信號進行處理,從而得到相對平滑的信號。但是硬件抗干擾法通常要通過設計外部硬件電路模塊,使得系統(tǒng)的成本增加。另一種常用的是軟件抗干擾方法,即通過程序設計數(shù)字濾波器,對采集到的信號進行運算處理,從而減少或者消除干擾信號,提高測量的準確性和可靠性。這種方法使用起來十分靈活,可以匹配多種輸入信號,也不需要增加外部硬件電路,可以有效的降低系統(tǒng)成本,故在本系統(tǒng)中采用軟件抗干擾法設計數(shù)據(jù)處理程序。常用的軟件抗干擾法包括滑動平均濾波、中位值濾波、程序判斷濾波、一階滯后濾波等,結合傳感器的特性,本系統(tǒng)使用的是中位值平均濾波法,該方法相當于“中位值濾波算法”+“算數(shù)平均濾波算法”。它匯集了兩種算法的優(yōu)點:一是可消除大部分脈沖干擾引起的采樣偏差,二是對周期性隨機噪聲有良好的抑制作用,三是其濾波后平滑度高。數(shù)據(jù)處理部分程序如下所示:
unsigned int Μedian_Filter(unsigned int a[],unsig ned int n){
unsigned int i,j,t,flag=0;
for(i=0;i for(j=n-1;j>i;j--){ if(a[j-1]>a[j]){ t=a[j-1]; a[j-1]=a[j]; a[j]=t; flag=1; } } if(flag==0)break; else flag=0; } n/=2; return a[n]; //返回濾波值 } 本文研究了基于ΜCU的戶外環(huán)境監(jiān)測系統(tǒng)的設計。通過查閱大量的國內(nèi)外有關戶外傳感器監(jiān)測儀的論文資料,對比市面上的相關儀器產(chǎn)品,分析其優(yōu)缺點,設計出符合實際要求功能的監(jiān)測系統(tǒng)。系統(tǒng)整機測試如圖6所示。 圖6 本系統(tǒng)具有體積小、測量準確、功耗低,具有較好的便攜性,很適合長期從事野外作業(yè)、郊游探險、戶外愛好者使用,具有較好的應用前景。4 結語