天天看點

基于ADS1298的心電圖儀

一、前言。

在醫療領域常常使用的心電圖儀并不是很複雜的儀器。其原理跟示波器非常相似,隻不過,心電圖儀測量的是低頻小信号。

心電信号(也叫ECG信号)的幅值一般在0.05mV~4mV之間,要求分辨力至少為0.1mV,其頻率在0.05~100Hz之間,主要的頻率成份集中在5~20Hz之間。

一般的示波器垂直刻度最小為10mV/div,分辨力約為0.4mV。其次,把探頭接在左右手,在示波器上隻會觀察到50Hz的工頻幹擾。是以,示波器并不适合測量心電信号。

制作心電圖儀,可以使用多級放大,再配合低精度的ADC來達到采樣的要求。但是這種方案比較煩瑣,而且使用的元器件太多,不利于産品的小型化。

二、方案。

本文是采用TI的ADS1298,一塊晶片內建了EMI抑制器、PGA、高精度24位ADC、内部高精度基準源、SPI接口。其方案如下圖所示。

基于ADS1298的心電圖儀

該方案有以下特點:

1、模拟電源和數字電源獨立供電,模拟地和數字地通過0R電阻隔離,可以大大減少ECG前端采集的幹擾。

2、模拟電源用幹電源供電,沒有50Hz工頻幹擾,信噪比非常高,ADS1298輸入短路噪聲均值約為250uV,輸入引起噪聲約為4uVpp。

3、選用STM32單片機,可以利用ST官方提供的驅動庫,大大提高了開發效率。

4、LDO選用TPS73201MDBVREP,其差壓非常低,在250mA滿載的情況下隻有40mV差壓,其靜态電流達到uA級,可以讓幹電源使用更長的時間。

5、使用CH340做USB轉TTL序列槽,讓STM32和PC機通信,成本低,又能達到通信速率的要求。

6、使用ADS1298的內建方案,大大縮小的産品的體積,讓産品更便攜。

7、使用光耦做電量檢測,把數字電源的幹擾隔離開。

8、使用ESP8266做WIFI通信,體積小,成本低。

9、使用防水型DS18B20做體溫計,體積小,接口簡單。

三、實物圖。

12導聯心電圖儀實物如下圖所示。

基于ADS1298的心電圖儀
基于ADS1298的心電圖儀

四、導聯的連接配接方式。

基于ADS1298的心電圖儀
基于ADS1298的心電圖儀
基于ADS1298的心電圖儀

五、導聯與ADS1298的ADC通道連接配接,如下圖所示。

基于ADS1298的心電圖儀

肢體導聯當中的I、II、III,隻需要接其中兩個即可,另外一個可以通過計算得到。

六、硬體調試。

硬體設計部分遇到LDO嘯叫的問題。

基于ADS1298的心電圖儀

C67設定為0.1uF,發現LDO嘯叫,将其去掉即可。

七、ADS1298的讀寫操作。

ADS1298有連續采樣和突發采樣兩種工作方式,本文使用連續采樣方式。

STM32通過SPI接口從ADS1298擷取3個狀态寄存器和8個通道的資料,其時序圖如下圖所示。

基于ADS1298的心電圖儀

ADS1298讀寫寄存器時,操作碼1(OPCODE1)是0x20加上要讀寫的寄存器位址,操作碼2(OPCODE2)是要讀寫的位元組數-1。

基于ADS1298的心電圖儀

假設隻讀ID一個寄存器,操作碼1隻需要發送(0x20 | 0x00),0x00是ID号的寄存器位址,而操作碼2隻需要發送0x00,這裡讀一個位元組,1-1=0。代碼如下所圖所示,cmd可以是任意寄存器位址,這裡隻能讀一個位元組。而寫操作與讀操作相似,這裡不再贅述。

八、上位機。

利用上位機采集到的心電信号,如下圖所示,存在基線漂移。aVF有明顯的基線漂移現象,而其它導聯則是超過了顯示範圍。

基于ADS1298的心電圖儀

增加了中值濾波後,修正了基線,如下圖所示(測試對象1)。

基于ADS1298的心電圖儀

如下圖所示(測試對象2,隻接了肢體導聯)。

基于ADS1298的心電圖儀

如下圖所示(測試對象3,隻接了肢體導聯)。

基于ADS1298的心電圖儀

如下圖所示(測試對象1,坐着測,腿發麻,增加了檢測導聯脫落功能)。

基于ADS1298的心電圖儀

通過算法能識别出R波,進而推算出RR間隔和心率,如下圖所示。

基于ADS1298的心電圖儀

九、溫度補償。

基于ADS1298的心電圖儀

可以利用上圖的溫度曲線,用曲線拟合來補償ADC的參考源。

十、注意事項。

1、導聯必須連接配接正确,否則波形有異常。

2、增加右腿驅動,可以抵消人體的共模幹擾,否則難以觀察到心電信号。

3、晶片虛焊,可能導緻采集到的資料異常。

4、先采集ADS1298内部的測試信号,如果沒問題,再去采集外部的心電信号。

5、ADS1298采集到的資料,是以二進制補碼的形式存儲,需要轉成原碼,再計算電壓值。

6、去耦電容,建議使用NPO或C0G材質的電容,可以減少幹擾,提高系統的穩定性。

7、ADS1298的SPI接口,CPOL=0,CPHA=1,編寫單片機代碼時,需要特别注意。

8、配置好ADS1298,在24号引腳才會出現2.4V的參考電壓,否則不出現。

9、ADS1298的通道懸空時,采集到的電壓為Vref,因為其差分輸入的正端有上拉電阻,而負端有下拉電阻。

10、右腿驅動,可以使用内部的參考源。

11、ADS1298虛焊或外部晶振虛焊時,測到37号引腳CLK,電壓為2.3V,正常工作時,電壓為VDD的一半(即1.6V),這裡的VDD為3.3V。

12、ADS1298的START、RESET操作,可以通過SPI讀寫寄存器來完成,也可以通過拉引腳電平來完成(其作用沒有差別),這裡START是拉引腳電平,而RESET是讀寫寄存器。

13、ADS1298複位時間為2^18次方*clk周期,這裡為50us。

14、靜坐也是可以測到心電圖,但是可能會出現少量噪聲,建議平躺着測。

15、建議先在皮膚上塗一些酒精再接導聯,被測的人體要放松,手腳不能用力或者移動,否則有可能測不出心電圖,或者測出來幅度特别小。

十一、其它問題。

A、8通道的ADS1298怎樣做12導聯?

标準I是可以通過計算得到的。

基于ADS1298的心電圖儀

由上圖所示(參考标準 YY 1139-2013)。II-III=(F-R)-(F-L)=L-R=I。

而aVR,aVL,aVF均可以由I、II、III計算得到。

aVR = -0.5 * ( I + II )

 aVL = I - 0.5 * II

aVF = II - 0.5 * I

也就是說隻要用一片ADS1298采樣v1~v6,(I、II、III的其中任意兩路),這8路,可以滿足12導聯的要求。

而12導聯隻有10根信号線,分别是v1~v6,左手、右手、左腿、右腿。

B、導聯的美标、歐标。

美标:RL,LL,RA,LA,V1,V2,V3,V4,V5,V6。

歐标:RF, F, R  ,L  ,C1,C2,C3,C4,C5,C6。

C、胸導聯位置。

基于ADS1298的心電圖儀

1、胸骨右緣第四肋間。

2、胸骨左緣第四肋間。

3、為2~4的中點。

4、左鎖骨中線與第五肋間交點。

5、為4水準與左腋前線交點。

6、為4水準與左腋中線交點。

D、肢體導聯與皮膚的連接配接。

基于ADS1298的心電圖儀

E、為什麼沒有50Hz陷波濾波器?

使用線性電源給心電圖供電時,是接220V市電,再經過變壓器和LDO,最終得到ADS1298的供電電壓,這個電壓包含了市電50Hz的工頻幹擾。工頻幹擾對于ADS1298是緻命的,是以要增加50Hz陷波濾波器。我這裡是使用電池供電,沒有工頻幹擾,是以不需要使用50Hz陷波濾波器。

F、為什麼沒有前端放大電路?

ADS1298已經內建了濾波、放大、ADC,不需要再增加放大電路。

G、動态心電圖。

動态心電圖又叫Holter,其導聯的接法如下圖所示。可用于經常活動的應用場景,或是給殘障人士測心電圖。

基于ADS1298的心電圖儀
基于ADS1298的心電圖儀

H、肌電圖儀。

請參考本部落格的《基于ADS1298的肌電圖儀》。

十二、示範視訊。

https://www.bilibili.com/video/av58871584/

十三、參考資料。

ADS1298晶片手冊

PhysioBank資料庫

标準 YY 1139-2013

醫療器械指令與認證程式

繼續閱讀