ADS1292R的使用


隨着人們越來越重視醫療健康,相對應的產品也隨之推出。TI的計划就很好的走在前面,對於生理電采集方面相繼推出了ADS124x系列和ADS129x系列。

這篇博文主要介紹ADS1292R這片芯片是如何使用的,可以方便的采集到心電和呼吸信號。同理ADS1291和ADS1292也可以參考此設計。

ADS1292R具有特性:
1、兩個低噪聲可編程增益放大器器(PGA)和和兩個高分別率模數轉換器器(ADC),集成了心電采集所需要的部件,方便設備小型化。
2、低功耗:每通道道335μW,使得可以作為長時間監控成為可能。
3、輸入參考噪音::8μVPP(150HzBW,G=6),共模抑制比比(CMRR):–105dB。這個參數足以進行心電采集。
ADS1292R應用范圍:
醫療測量儀器(心電圖圖(ECG))包括:病人看護:動態心電圖圖(Holter)、、事件、應激、和包括心電圖圖(ECG)在在內的生命體征、自動體外除顫器、和遠程醫療。體育運動和健身(心率、呼吸、和和ECG)高精度、同步、多通道信號采集。


數據手冊介紹到此結束。不廢話,接下來介紹電路原理圖和PSB布局有關事項。

原理圖也是根據數據手冊的典型應用得到的。

 

圖中部分電路1是呼吸檢測的濾波電路。呼吸檢測是使用了阻抗檢測的方法,使用了的32KHz(或者64KHz)高頻方波輸入到人體,然后經過電路濾波后可以計算出兩片電極之間的阻抗變化的大小。這里有趣的是呼吸檢測和心電檢測使用的是同一電極,由於心電信號一般在100Hz下,對於高頻的檢測呼吸的方波是可以通過ADS1292R里面EMI電路濾掉的。

圖中部分電路2是右腿驅動電路,對於右腿驅動的作用,在這里有兩大作用,其中一點是書上所說的去除共模電壓,通過放大器反向放大之后輸入到人體,第二個作用是提供了一個電壓抬升,將測量電壓抬升到(AVDD+AVSS)/2左右,保證了輸入電壓是在芯片的檢測范圍內。

 

電路介紹之后就是驅動程序方面,博主用的是STM32驅動的,使用了硬件SPI接口,但是驅動部分代碼與平台無關。

初始化ADS1292R需要根據數據手冊上面所說的,需要一個復位信號,等待1S之后芯片穩定后再進行寄存器寫入。

/**ADS1292R上電復位 **/
void ADS1292R_PowerOnInit(void)
{
__IO uint8_t device_id ;

ADS1292R_START_L;
ADS1292R_CMD(ADS1292R_SDATAC);//發送停止連續讀取數據命令

delay_ms(1);
while(device_id!=0x73) //識別芯片型號,1292r為0x73
{
device_id = ADS1292R_REG(ADS1292R_RREG|ADS1292R_ID,0X00);
LED0_Toggle;
delay_ms(200);
OLED_PrintfString(0,1,"ADS1292R NO FOUND");
OLED_PrintfNum(100,1,device_id,4);
}
OLED_PrintfString(0,1,"ADS1292R Detected");

ADS1292R_REG(ADS1292R_WREG|ADS1292R_CONFIG2, 0XE0); //使用內部參考電壓
delay_ms(10);//等待內部參考電壓穩定
//ADS1292R_REG(ADS1292R_WREG|ADS1292R_CONFIG1, 0X02); //設置轉換速率為500SPS
ADS1292R_REG(ADS1292R_WREG|ADS1292R_CONFIG1, 0X01); //設置轉換速率為250SPS
//ADS1292R_REG(ADS1292R_WREG|ADS1292R_CONFIG1, 0X00); //設置轉換速率為125SPS
ADS1292R_REG(ADS1292R_WREG|ADS1292R_LOFF, 0XF0);
ADS1292R_REG(ADS1292R_WREG|ADS1292R_CH1SET, 0X00); //放大倍數6倍
ADS1292R_REG(ADS1292R_WREG|ADS1292R_CH2SET, 0x00);
ADS1292R_REG(ADS1292R_WREG|ADS1292R_RLD_SENS, 0x30);
ADS1292R_REG(ADS1292R_WREG|ADS1292R_LOFF_SENS, 0x3F);
ADS1292R_REG(ADS1292R_WREG|ADS1292R_RESP1, 0xDE); //開啟呼吸檢測(ADS1292R特有)
ADS1292R_REG(ADS1292R_WREG|ADS1292R_RESP2, 0x07);
ADS1292R_REG(ADS1292R_WREG|ADS1292R_GPIO, 0x0C);
}

讀取ADS1292R的數據使用SPI連續讀的方式,一次讀取9個字節。其中前3個字節包含了電極狀態,后面3+3個字節分別表示兩個通道的數據。
void ADS1292R_ReadData(void)
{
ADS1292R_CS_L;
// HAL_SPI_TransmitReceive(&SPI1_Handler, temp1292r, ads1292r_data_buff, 9, 10);
// ADS1292R_CS_H;
HAL_SPI_Receive_DMA(&SPI1_Handler, ads1292r_data_buff, 9);
}

這里給出的代碼使用了DMA傳輸,CS片選信號需要在DMA傳輸完成之后置1,保證數據傳輸完成,若使用輪詢讀數據的方式則選用注釋掉的代碼。

 

讀取到的數據是一補碼的形式存儲的,需要經過處理再傳給上位機,為避免上位機不好處理24位的數據,博主在單片機程序中做了數據處理,簡單來說就是3字節的數據最高位(數據的24位)做了異或(^)處理。

 

最后通過藍牙發送到手機編寫的APP中,畫圖顯示波形。上圖是呼吸波,下圖是心電。由於沒有使用右腿驅動,噪聲略微明顯。

 

 

如果將PGA放大倍數設置為12倍,使用右腿驅動的話,效果更好,如下圖所示:

 

 

ADS1292R性能還是很強的,不僅在被試不動的情況下可以精確地檢測到心電信號,細節也非常清晰,同時也能在被試運動的情況下也能檢測到心電的波形,通過實驗可以清晰的辨認出RS波,下圖是被試在奔跑的狀態下檢測到的波形(使用了40Hz的低通濾波):

 

 

 


最后附上ADS1292R的驅動代碼:http://download.csdn.net/detail/devintt/9849642
————————————————
版權聲明:本文為CSDN博主「DevinTT」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/devintt/article/details/72636642

https://blog.csdn.net/devintt/article/details/72636642


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM