找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6211|回復: 3
打印 上一主題 下一主題
收起左側(cè)

STM32 Nucleo板-無線心率心電監(jiān)測設計方案

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:127084 發(fā)表于 2016-6-17 17:06 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
   拿到手STM32F072的板子已經(jīng)到手很久了,直到今天才來這里寫這個方案分享,是因為這個項目的編程比較復雜,周期也比較長,現(xiàn)在大體上有不少進展,沐紫編輯也很關心方案進度總是在督促我,哈哈好吧。之前沒寫過嘛。申請這個板子主要是想試用F0的單片機,之前一直是在用F1系列的單片機進行項目的開發(fā),但是F1系列的單片機雖然功能強大適用性強但是很多開發(fā)用不了這么多的資源,而STM32F0在低功耗和成本上對于可穿戴設備或者電池供電的系統(tǒng)都有很大的優(yōu)勢。

   STM32F0系列的單片機不僅帶來了低廉的價格而且?guī)砹烁碌墓牡切阅軈s沒有打多大的折扣,低于得成本和低功耗的設計是十分合適的。我的項目本身是在F1系列上開發(fā),但是考慮到其以后的成本,想在開發(fā)后再移植到F0單片機上,所以以下的一些介紹可能跟F1單片機聯(lián)系比較多,而F0系列的單片機我是通過了學習掌握了其基本用法,利用MX和MBED進行了一些基本的例程的使用,還沒用將我所有的程序移植到我們的F0單片上,畢竟一個新的產(chǎn)品還是先在自己熟悉的片子上跑比較合適,這樣畫PCB板子的時候會成功率高一些。


  我的預想方案是基于F0單片機的無線心率心電監(jiān)測系統(tǒng),病人或者老人通過將電極放在身體的測量位置就可以讀取心電圖和心率通過無線的方式將其傳送到網(wǎng)絡中,監(jiān)護人員可以通過檢測被檢測人員的心率和心電圖可以對他的身體狀況作出判斷,其優(yōu)勢是便攜,可以有很多結(jié)點同時采集,這個可能用到ZIGBEE組網(wǎng)技術(shù)這里先不提到了,這是后面的工作了。接下來我從電路和編程兩個方面來分享我的開發(fā)方案。


先上一張實物圖。


之所以沒有用開發(fā)板板子連接器件的原因我之前已經(jīng)說過了,在F1上完成設計后只需要移植核心代碼就可以在F0上繼續(xù)運行所以不必糾結(jié)于是否在開發(fā)板上開發(fā),再者我使用的心率檢測芯片是BGA封裝的芯片,我只能為其設計新的電路板才能讓其正常工作。而電路板的反復設計修改測試也花費了不少的時間,只要功能能夠完成,程序的移植是很方便的。
接下來是硬件電路的設計:

     這個設計的難點在于采用的心率檢測芯片的電路設計和驅(qū)動程序的編寫,之前采用了一款BMD101的心率采集芯片其只有一路心率的檢測也能提供很好的中文支持但是我的設計需求是能有多路的采集,如果用BMD101來完成設計就會讓開發(fā)成本變得很高,也就沒有意義,所以經(jīng)過考慮采用了TI出的ADS1293來采集心率數(shù)據(jù)。這樣就要自己根據(jù)全英文的官方說明書來設計硬件電路和編寫驅(qū)動程序了。這樣降低了硬件成本但是大大加大了開發(fā)難度。
  這個是STM32的基本系統(tǒng)電路圖:

SWD下載調(diào)試電路:

采用TPS系列3.3V穩(wěn)壓芯片來獲得工作電壓電源用了簡單的濾波設計,給芯片更穩(wěn)定的模擬電壓:


USB通信電路:


簡易電池充電電路:


模擬前端信號采集電路:

最后是測試用的無線通信模塊:

接下上電路板的正面:



反面:


接下來介紹這次設計的核心器件ADS1293,他是TI出的一款低成本的心率檢測芯片:


利用它優(yōu)異的性能和低廉的價格可以開發(fā)出低成本你的應用。
這是他的引腳介紹。
實物連接圖:


上位機效果圖:


接下來是程序設計啦:

利用數(shù)據(jù)書冊中的SPI時序模擬通信寫出基本的讀取程序之后的開發(fā)將建立在這樣的基礎上。
下面是STM32的附件程序,使用MDK5.1編寫。實現(xiàn)了基本的數(shù)據(jù)讀寫和采集,之后項目將轉(zhuǎn)向ZIGBEE組網(wǎng)開發(fā),將獲取的數(shù)據(jù)經(jīng)過網(wǎng)絡再傳輸?shù)娇偡⻊掌魃稀OM麑Υ蠹矣兴鶐椭?br />

  1. #include "stm32f10x.h"
  2. #include "SPI_NRF.h"
  3. #include "usart1.h"
  4. #include "delay.h"
  5. #include "misc.h"
  6. #include "Stm32_Ads1293_spi.h"
  7. #include "TI_ADS1293.h"


  8. u8 txbuf[32]= {6,0x88,0xA1,0x02,0x00,0x00,0x00};                                       //發(fā)送緩沖
  9. u8 rxbuf[32];                                                                                          
  10. u8 crc;                                                                                      


  11. int main(void)
  12. {
  13.    u8 i,j;
  14.          uint8_t reg_write_data, reg_read_data, reg_read_default;
  15.    SPI_NRF_Init();
  16. // USART1_Config();
  17.    TI_ADS1293_SPISetup();        
  18.         
  19.         reg_read_default = TI_ADS1293_SPIReadReg(TI_ADS1293_CONFIG_REG);             // Read default config register value     
  20.   reg_write_data = 0x02;                                                       // new value to write
  21.   TI_ADS1293_SPIWriteReg(0x01, reg_write_data);               // Write to register
  22.   reg_read_data = TI_ADS1293_SPIReadReg(0x11);                // Read back the value written
  23.         
  24. //        
  25. //        if (reg_write_data == reg_read_data)
  26. //  {
  27. //    TI_ADS1293_SPIWriteReg(TI_ADS1293_CONFIG_REG, reg_read_default);           // Write to CONFIG register default value
  28. //    while (1)                                                                  // no error: blink LED continuously
  29. //    {
  30. //        __delay_cycles(250000);
  31. //        __delay_cycles(250000);
  32. //        TI_ADS1293_LED_PxOUT ^= TI_ADS1293_LED_PIN;        
  33. //    }      

  34. //  } else
  35. //  {
  36. //        TI_ADS1293_LED_PxOUT &= ~TI_ADS1293_LED_PIN;                               // error: Set LED OFF  
  37. //  }
  38.     txbuf[4] = reg_read_default;
  39.                 txbuf[5] = reg_read_data;
  40. while(1)
  41.                 {
  42.                     crc=0;
  43.                                 crc=0x88+0xA1+0x02+txbuf[4]+txbuf[5];
  44.                                 txbuf[6]=crc;        
  45.                         
  46.       NRF_TX_Mode();
  47.             NRF_Tx_Dat(txbuf);
  48.                         Delay(5000000);
  49.   
  50.                                 
  51.            }
  52.         
  53.         
  54. }
復制代碼

項目開發(fā)程序.rar (1.64 MB, 下載次數(shù): 89)

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏5 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:184767 發(fā)表于 2017-3-30 12:48 | 只看該作者
能幫我做一個嗎。價格好說
回復

使用道具 舉報

板凳
ID:258520 發(fā)表于 2019-4-14 17:35 | 只看該作者
上位機呢  
回復

使用道具 舉報

地板
ID:824459 發(fā)表于 2020-9-29 08:47 | 只看該作者
好東西,thank u very much!!
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表