譚一柳,劉安華,王軒
(1.江西省水務集團有限公司,江西南昌,330000; 2.維沃移動通信有限公司,廣東東莞,523000; 3.靖安綠地申飛置業有限公司,江西宜春,336000)
本設計主要采用STM32F103C8T6單片機控制心率模塊、計步模塊和溫度模塊進行數據采集,再控制顯示模塊對采集的數據進行顯示,可實現以下功能:采用LCD1602液晶屏顯示當前的步數、溫度值、心率值和報警值;采用光電傳感器ST188實現心率測量;采用DS18B20溫度傳感器對溫度進行檢測;當所測量的心率、體溫參數超過上、下限報警值時實現聲光報警;采用3軸加速度傳感器模塊ADXL345實現計步功能,系統結構框圖如圖1所示:

圖1 系統結構框圖
STM32F103C8T6單片機(如圖2所示)具有低功耗性能和處理速度快的特點,同時其在嵌入式的硬件開發上也有優秀的仿真性能,可以實現很好的集成化效果。本設計在系統開發上需要使用到較多的模塊器件,所以在單片機的選擇上STM32F103系列單片機優勢明顯,在存儲空間和引腳等方面的應用上都具有很好的適配性,并且在與外部設備連接以及軟件的應用開發上兼容性極高,所以本次設計選擇STM32F103C8T6單片機作為控制芯片。

圖2 STM32F103C8T6管腳圖
本設計在數據顯示方面采用了LCD1602液晶顯示模塊來對溫度、心率、計步等數據進行顯示。字符式液晶模塊,是一款專門設計用來顯示字母、數碼、音符等點陣形式的液晶顯示模塊,其工藝設計原理主要是由許多個點陣字符組成,在本設計顯示字符上具有很高的適用性,如圖3所示。

圖3 LCD1602液晶顯示電路原理圖
本設計使用的ADXL345加速度傳感器為數據采集模塊的核心元器件,ADXL345是一種小而薄的超低效率三軸加速度儀,分辨率設置較高(13位),測試幅度達±16g,信息輸出數據為十六位二進制補碼形式,可透過SPI(3線或4線)或I2C信號數據端口進行。ADXL345傳感器模塊(如圖4所示)主要通過檢測物體的傾斜角度和動態加速度變化來計算出相應人體運動的步數以及距離等方面的運動狀況,其在本設計中起到很好的計步作用。

圖4 ADXL345模塊原理圖
該模塊電路可以通過比較x、y或z軸中任意一軸上的加速度變化值和提前設定的閾值來檢測有沒有運動性動作的發生,然后把人們走路的動作轉化為ADXL345傳感器中的電壓信號變化。在VCC腳接5V電源進行供電,而SDA引腳和SCL引腳則與處理器的PB1和PB0引腳進行相連,對模塊進行驅動。
2.4.1 ST88光電傳感器及信號采集電路
ST88光電傳感器主要由紫外線感光二極管和紫外線信號接收三極管所構成。使用GaAs紅外發光二極管作照明源時,能控制因呼氣運動而引起的脈搏心率波曲線的漂移。紅外線接收三極管在紅外線的輻射下也可形成電能,它的主要特點就是把光信息轉化為電信號。圖5為模塊的心率信息采集電路,U1為紅外光發送和接收裝置,因為紅外發光二極管中的電流密度愈大,輻射角就愈小,所形成的輻射強度也愈大,所以對R1阻值的選擇要求比較高。而R1選擇47Ω,同樣就是根據紅外接收三極管探測紅外光敏感度確定的。若R3不足,即由于紅外輻射二極管的出口電流偏小,則紅外接收三極管就無法區分有脈搏心率與無脈搏心率信息。反之,如果R3過小,由于使用的電壓偏大,因此紅外接收三極管也就沒法正確地識別有脈搏心率和無脈搏心率時的訊號,當手指離開感應器并監測到比較強烈的干擾光線時,輸入端的直流電壓也會發生較大改變,為使其不會因泄漏電流至LM358輸入端口而引起的錯誤指示,因此可用C1型耦合電容器將其隔離,再由R4、C2濾波在去除了高頻擾動之后,加在線性的放大輸入端,如圖5所示。

圖5 ST88光電傳感器信號采集電路
2.4.2 放大電路和波形整形電路
按人體心率在運動后跳躍次數達200次/分鐘的計算方式來設計低通放大器,結果如圖6所示。R5、C3構成了低通濾波器以繼續消除剩余的影響,截止頻率由R5、C3決定,運放LM358對信號進行放大,放大倍率按R6與R10之間的比例確定。

圖6 放大電路與整形電路圖
LM358也是一種電壓比較器。當有輸入信息時,LM358在比較器注入信息的每一個后沿出現時產生最低電平,由感光二極管D1進行脈搏心率的狀態指示,在脈搏心率計算時每跳過一個感光二極管就亮一個。同樣,將該脈動電平送入單片機/INTO腳,就完成了平均心率的狀態運算與顯示,如圖6所示。
DS18B20模塊具有單線接口達到雙線傳輸數據的功能,在和單片機之間只要進行單線接口連接即可使用;其與單片機之間是以9到12位的串行數字傳輸,并且測試范圍很廣,在應用于嵌入式硬件電路設計時都不需要和其他的元器件組合使用,單獨接線單片機就可以正常工作,使用時接上3到5V的電源即可。其中GND插針直接接地,DQ插針與處理器的PB5信號引腳連接起來,而VDD插針則與電源連接起來,最終實現溫度檢測的功能,如圖7所示。

圖7 DS18B20溫度傳感器原理圖
心率檢測是測量一分鐘內心臟跳動的次數,心率也會分為平均心率和瞬時心率兩種測量,本設計通過ST188光電傳感器對心率進行實時的監測采集,主要通過模塊對手指端脈搏的跳動產生不同的透光率來獲取模擬信號量的變化,再設定一個固定的閾值點計算得出實時的心率數據值。
定時器中斷服務程序主要由1分鐘定時、按鍵時間測量、有無測試信息判斷等部分構成。在定時器暫停服務時,先對分鐘進行定時,在1秒計時到后測量下1秒,然后等到60秒時間到了再暫停,并存儲測量的脈搏心率次數。并且還能夠通過按鍵控制進行測試,而且只要恢復了測試值就能夠再次進行測量。主要完成1分鐘的計時功能,以及保存測得者的脈搏心率次數。外部中斷服務程序完成對外部信息的檢測與計算。
設計采用ADXL345作為系統計步模塊來實時測量步數和距離。距離主要通過加速度狀態下跨出每步的距離長度和步數值計算得到。用ADXL345檢測到的x、y和z上的加速度作為參數分析跑步或步行的特征,選擇具有相對較大的周期性加速度變化的那個軸來計算步數,對變化不明顯的可以忽略不計。系統對加速度進行了連續采樣,取標準差與最小值的平均數為動態閾值并不斷改變,以此來判斷是否有步行或跑步動作發生。此外,因為在某些是非步行的跑步運動中也會被ADXL345監測到加速度變化,因此必須剔除這種無用腳步,在這里我們可以通過“時間窗口”來剔除被檢測到的非步伐的加速度變化,利用“計數規則”來判斷速度變化是不是作為節奏系統的重要組成部分,進而清除無用腳步,提高精確度。
本設計采用DS18B20溫度數據采集模塊來實時監測溫度變化,主要通過采集手指端表面皮膚的實時溫度來反映人體溫度是否處于正常范圍。
首先對系統時鐘進行初始化工作,初始化IO口以及定時器和串口。定時讀取溫度以及偏移角度是否到達,如果是則進行溫度及步數的采集,否則跳過直接進行下一步,判斷單位時間心率數據是否采集完成,若心率采集完成則進行心率采集計算,如果沒有則跳過心率計算,所檢測的情況通過液晶顯示屏進行顯示,如此循環進行心率體溫計步的檢測工作,如圖8所示。

圖8 系統運行流程圖
系統電路板通過檢測和調試,確認所設計的基于單片機的計步器健康系統可以實現計步、心率、溫度檢測功能。通過幾個獨立按鍵可以對計步器進行功能設置,液晶顯示屏顯示計步器系統的數據信息,如圖9所示。

圖9 實物圖