【参考資料】投稿記事 「心電計の製作

更新日 /2006/05/27/
最終更新日 /2009/01/27/


   



 

トランジスタ技術 20061月号
心電計の製作
【注意事項】
 本ドキュメントで紹介する製作物は、作り方や使用方法を誤ると人体に影響を及ぼす可能性があります。バッテリー駆動やAC結合、光絶縁など、安全には万全を期していますが、電子工学および医学に対する十分な知識と電子回路の製作経験が少ない方は決して製作しないで下さい。                                    Tomoaki Ueda  (上田智章)
Page 9

このドキュメントの先頭へ戻る

戻る

進む

トップページに戻る


【予告】この記事は古くなったのでもうすぐ再編集されます。

【交流ノイズの除去方法】

 一般家庭の壁や床にはAC100V電源が原因となる漏れ電流が流れており、心電図測定を行うと交流ノイズが重畳します。しかし、本心電計には交流ノイズを除去するための電子回路を実装しておらず、病院で使うような静電防止シートも使いません。A-D変換された生データを取り出せば交流ノイズがかなりの振幅で重畳しているはずです。今回は電子回路の規模を抑えるために、PICマイコンにノイズを除去させています。

ノイズ除去のアルゴリズム
 リスト1の処理をタイマ割り込み処理の中でリアルタイムに実行しています。図11にこのアルゴリズムの内容を示します。商用周波数が60Hzであれば1秒間に1920回(約521μ秒)、50Hzであれば1秒間に1600回のタイマ割り込み処理を行います。タイマ割り込みごとにA-D変換を行い、32段のFIFOに格納すれば、FIFOにはちょうどノイズ1波形分が入ります。FIFOへの入力データdinとFIFOの出力データdoutを使って、sum=sum+din−doutを計算すれば、移動平均を求めることができ、ノイズの成分はちょうど1波分なので、sumからはノイズ成分が相殺除去されるのです。sumには10ビット精度のA-D変換値が32=2^5回加算された値が格納されているので、15ビットの値がタイマ割り込み処理ごとに得られます。FIFOは、データ・シフトに伴うデータ転送を避けるためにポインタptrを使ってリング・メモリを構成することにより実現しています。このアルゴリズムはノイズ振幅がA-Dの入力レンジに収まっている限り効果絶大です。
 トスリンクを介したEIA-232の最大通信速度は115200bpsですが、本心電計では19200bpsで使用しています。このために間引き処理を使い、タイマ割り込みが4回発生したら1回データを送信しています。ただし、送信処理がタイマ割り込みを妨げることがないように、送信バッファ空割り込みを使っています。ワード・データの1バイト目はタイマ割り込み中で送信し、送信バッファ空割り込みを許可します。2バイト目は送信バッファ空割り込みで送信し、送信バッファ空割り込みを非許可に戻します。

《アルゴリズム》
  Din = read_adc();                    /* A/Dコンバータからデータを読み込む */
    sum = sum - FIFO[ptr] + Din;   /* 変化成分だけを使って移動平均を計算する */
    FIFO[ptr] = Din;          /* FIFOにデータを格納する */
    ptr++;                /* FIFOポインタを更新する */
    if (ptr == nFIFO ) ptr = 0;    /* FIFOの深さ(nFIFO)を超えたらポインタをクリアする */