找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4152|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

自制心率測量儀

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:71235 發(fā)表于 2014-12-27 21:11 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
花了整整18個小時,終于完成了這個心率測量儀,看圖:


    因為從策劃到制作完成經(jīng)歷了1年半多的時間,期間方案多次更改,所以很需要記錄一下整個過程。

    一、起源:
    靈感還是來自愛折騰,看了后當(dāng)時就想復(fù)制一個。

    二、準(zhǔn)備工作:
    愛折騰的這個制作包括模擬檢測、放大,單片機(jī)計數(shù)、顯示兩部分,模擬檢測通過紅外發(fā)射接收對管檢測指尖血流變化,經(jīng)過兩級放大、低通、高通濾波后,形成一個跟心率同步的脈沖,然后由單片機(jī)檢測計數(shù)后,送顯示器顯示。我的方案保留了模擬檢測部分,單片機(jī)選用了80C2051,脈沖檢測方式改為測量脈沖的周期,然后由周期推算出1分鐘的心率值,因而這個數(shù)值是動態(tài)的,省卻了啟動按鈕等操作。而原作是才用計數(shù)15秒內(nèi)的脈沖數(shù),再計算出1分鐘速率,單片機(jī)也是用PIC?紤]到測量脈沖周期需要標(biāo)準(zhǔn)的方波,所以我在模擬和單片機(jī)之間加上了一個555電路做的斯密特觸發(fā)器,對模擬脈沖進(jìn)行整形。
    方案定下后是先做個試驗,確認(rèn)模擬部分是否可行的。試驗在面板板上做的;這是2011年7月做的:

     電路中才用MCP602這一點很重要,因為普通的單電源運(yùn)放電壓輸出幅度只能達(dá)到2/3VCC,剛剛達(dá)到高電平門限,有可能造成后級單片機(jī)檢測失誤,試驗也證明了這一點。模擬電路通過后又用另外一塊面包板搭建了一個80C205電路,用三個微型的數(shù)碼管作為顯示器,因為心率脈沖周期常常大于1秒鐘,而單片機(jī)無法提供如此長度時間測量,所以采用5毫秒的定時器定時檢測脈沖,檢測到脈沖中斷后開始計數(shù),直到下一次中斷計數(shù)結(jié)束,然后計算一個脈沖周期的計數(shù)值,再乘以5毫秒,就是一個完整的心率周期了,而5毫秒的定時間隔對于心率這樣很長的脈沖,精度影響是很小的。單片機(jī)部分也取得了成功,這樣完整的系統(tǒng)就算定下來了。接下來是設(shè)計PCB,由于近年形成的習(xí)慣,做東西前都要選一下外殼,一定要根據(jù)外殼定電路,而且是殼越小越好,結(jié)果造成PCB設(shè)計很困難,因為自己只能做單面的,走線很不容易,這是2011年9月未設(shè)計完成的PCB:

    三、 成為Arduino的擴(kuò)展板
    認(rèn)識Arduino是在2012年的4月,Arduino這個平臺和適合做原型開發(fā),于是決定將擱置下來的心率測量儀在arduion上實現(xiàn)一下,6月份做成了這個擴(kuò)展板:





      實現(xiàn)了方案的模擬部分,單片機(jī)部分由arduino來實現(xiàn),程序原理也是照搬原來的方案,顯示器沒有使用數(shù)碼管,而是用了上次做便攜溫濕度氣壓計用過的4位液晶顯示器,可以說這是對心率測量儀等一次最接近實用的試驗。

     四、最終實現(xiàn)!
     也許最近是閑得慌吧,想要完成這個制作的念頭一下子冒了出來。不過方案又有了新的更新,這次突然想用attiny13來實現(xiàn)單片機(jī)部分了,因為最近5~6個制作都是用attiny13來實現(xiàn)的,手頭也有好幾片,冷靜思考了一天后又覺得不太可行,因為attiny13一般都是用內(nèi)置的RC振蕩器,據(jù)說誤差有10%,也即一分鐘60次心跳會有6次的誤差,這顯然有點大了,替代方案有兩個,一個是改用attiny24,可以外接晶振,程序空間也有2K,余地大點,二是attiny13接入有源晶振,但是有源晶振不便宜,而且占用占地兒。在確定最終方案前,先用手頭的一個attiny13開發(fā)板+上面的arduino心跳擴(kuò)展板做了一個測試,程序還是沿用原來的原理,簡單的程序很快就搞定了,build結(jié)果是962字節(jié),剛好沒溢出,又花了一個晚上將5毫秒定時搞精確,先是用對照實際心率調(diào)整定時器top值,后來是采用空余引腳輸出100HZ方波,用頻率計測量這個頻率,同時調(diào)整RC振蕩器的9.6m校準(zhǔn)值,最終將定時搞準(zhǔn)確。測試過程中發(fā)現(xiàn)溫度對頻率的影響只有1.5%,這樣的精度對心率完全夠用了,100次也就誤差1次而已,根據(jù)測試,555整形電路其實也是可以取消的。這樣整個方案就最終確定了,模擬不變,主控采用attiny13,不再采用整形電路!
      昨天早上開始設(shè)計PCB,從制作水晶發(fā)光底座開始(以后再撰文描述),就已經(jīng)開始大量實用貼片元件了,為此還買了個拆焊臺。這次PCB設(shè)計自然也是用貼片元件,由于模擬部分電路比較規(guī)律,單片機(jī)部分又比較靈活(輸入輸出引腳可以隨PCB設(shè)計需要更改),所以設(shè)計完成時,沒有一根跳線,電路中的1uf電容由于沒有找到替代的無極性電容,所以還是使用了直插的,紅外發(fā)射接受管也只能用直插的,而且要安裝在top層,除了一個SIP接口用了插針,LCD接線和電源接線采用直接焊接的方式,這次的機(jī)殼還是用上次便攜溫濕度氣壓計的外殼(mini數(shù)字磁帶盒),所以PCB為這個機(jī)殼而優(yōu)化,attiny13從SSU改成了SU,就是為了讓一部分線從芯片下走過。接著是腐蝕電路,在把電路板放入腐蝕劑不到一分鐘,突然發(fā)現(xiàn)熱轉(zhuǎn)印轉(zhuǎn)反了!趕緊撈出來重做。到傍晚時分,PCB制作完成。開始焊接元件,MCP602也是早上剛到的,其他的電阻電容也全都有,因此花了點時間還是完美完成了。


      調(diào)試:晚上開始調(diào)試。遇到的第一個問題就是模擬電路貌似不起作用,手劃過紅外管的時候,輸出指示燈會閃一下,手指頭按在紅外管則什么都沒有,郁悶了好久,找來那塊擴(kuò)展板,將那塊板的紅外輸出信號接入新板,發(fā)現(xiàn)新板的電路是好的,看了問題出在那個紅外發(fā)射接收模塊上,在換還是不換上猶豫了好久,最終決定換,換上擴(kuò)展板上的那一個,換好后,手指頭按在紅外管上,指示燈果然能一閃一閃跟著心跳節(jié)律閃動了。然后又花了2小時,把主控板、顯示器、鋰電池、鋰電池充電板、開關(guān)、充電插座硬塞進(jìn)了一個名片大小的盒子里了。已經(jīng)12點了,總裝完成了,該實際測試了,但是測試結(jié)果令人失望,顯示器顯示的數(shù)值比真實值少了20多,問題在哪兒呢?首先考慮是因為沒有整形電路,造成波形不規(guī)律,影響了測量的準(zhǔn)確性,用示波器測量輸出脈沖波形,發(fā)現(xiàn)幅度很小很小,只有1v多點,怎么回事呢,難道運(yùn)放是壞的,或者買錯了片子?再次郁悶。。。拿起探頭看看,上面的開關(guān)打在了10X上!猛然想起,ATTINY13每個片子的時鐘都要單獨校準(zhǔn)的,自從燒完片子后就沒想過這個問題,還是沿用老的校準(zhǔn)值,于是開動IDE和編程器,開始調(diào)整參數(shù),也許心太急,也許萬用表表筆碰了不該碰的地方,也許校準(zhǔn)值調(diào)的太低,反正是那塊attiny13再也不能編程了,那一刻真想放棄了,可是看到自己花了1年多時間,都已經(jīng)非常非常接近完成了,難道就因為換一塊芯片稍微有點麻煩就放棄了?換了后再次校準(zhǔn)、比較,顯示值終于正確了,此時已經(jīng)快2點了。

     結(jié)語:能夠完成一件盡管一點都不偉大,卻時?M繞在心頭的事情,感覺真好~~~


評分

參與人數(shù) 1黑幣 +1 收起 理由
handsomelchcpp + 1 贊一個!

查看全部評分

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

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表