【PMM2018】脈波センサ矩形波を超音波センサで伝送実験<シンプルで低エネルギー>

●これまでの経緯
耳たぶ心拍センサをヘルメットに搭載して、無線で脈波波形をマイコンに送信する方式ですが、Xbeeの場合、エンドデバイスとしてCPUレスで送信するとサンプリングレートが50msecと遅く脈波波形のエッジ測定精度が悪くてつかえないためCPUもヘルメットに搭載してXbeeのシリアル転送モードで心拍数を測定計算して送信する方式で試作しました。しかし、電力を食う、基板が大きい
部品が多いなどで、実際に走行で使うと不具合多発で、この方式以外の手段を考え直すことにしました。
●命題
心拍センサの信号伝送方法を一から見直して、シンプル、省電力な方式を検討してます。
命題:「ゆっくりとした心拍矩形波を伝送するのにCPUや無線モジュールが必要なのだろうか?」答えは、NOだと思います。そこで、根本的に考え直しました。

●無線規格以外の物理的な伝送方式を検討する
一般に多く使われているのが赤外線と超音波があると思います。家庭用リモコンの方式の歴史の解説がありました。
http://eetimes.jp/ee/articles/0906/30/news096.html
 最近は、赤外線でなくRF方式にかわりつつあるそうです。
①赤外線
昔は超音波があったのですがコスト高で赤外線になって
現在は、RFに移行しようとしているみたいです。
赤外線LEDが数十~百mA消費するので、RF方式もそれに匹敵できるようになっているそうです。
脈波波形の伝送という目的からするとヘルメットに装着した送信センサからハンドルに装着した受信センサまで、広角で送受信しなければなりません。少なくとも1m範囲で60度角以上
ないとうまく受信できないと思います。
GaAs赤外LED 945nm L2388-01
赤外線センサでも高性能のものなら数十mAで60度くらいのものがあります。GaAsLED L2388-1  浜松エレクトロニクス
http://akizukidenshi.com/download/ds/Hamamatsu/l2388-01.pdf
これだと定格電流が80mAと食います。

●超音波
超音波距離センサとして、たくさんあります。手持ちでも
HC-SR04という中華超音波センサをもってます。
超音波距離センサー HC-SR04
http://akizukidenshi.com/catalog/g/gM-11009/
この仕様をみると
http://akizukidenshi.com/download/ds/sainsmar/hc-sr04_ultrasonic_module_user_guidejohn_b.pdf
電流値が非常に少なくて数mAで送受信してます。
これは発信が10μsecしかないためだと思います。
広角が狭く40~50度程度ですが、
測距離ではなく発信の有無だけなので
ラフな受信なら広角になるのではないかと思い。
実験することにしました。

●脈波波形の超音波伝送実験
①センサの原理学習
Arduinoでたくさん事例があったのでそっくりやってみて学習しました。https://deviceplus.jp/hobby/entry016/
 ブレッドボードに解説どおりに配線してスケッチをコピーして
一発で動作しました。

プログラムを見て分かったのは、送信部と受信部は独立していて
送信波形を送ってから受信波形がでてくるまでの割り込みでタイマーカウントしていました。

②脈波センサをトリガーとして受信波形をオシロ観察
上記基本例では、送信のトリガー(trg)端子に5Vを10μsecという短い時間入力してますが、ここを脈波センサの矩形波を直接入力してみてその結果放出された超音波の反射波を受信部で検出すれば脈波のエッジタイミングの伝送ができるのではないかと思い
オシロで確認してみました。
青が脈波センサの出力でHC-SR04のtrg端子に接続して入力
黄色がHC-SR04のecho端子からの出力です。
脈波エッジの立下りタイミングから数百μsec~数msec遅れて
受信信号が立ち上がってますので、エッジ検出誤差としては
Xbeeの50msecよりは相当良くて、使えるれべるだと思います。

③mbedで波形エッジタイマー処理

5V信号入力なので、LPC1768でタイマー処理プログラム作って脈波から心拍数がとれるか実験しました。

超音波の反射で受信しているので、反射物によって変わるかと思ったのですが、そほど変わらずに、反射波を受信した瞬間でカウントしているみたいです。ときどき値が振れるのがまだ、分かりませんが、正規にセンサを2個用意して距離方向角度を管理しながらどれだけ遅延があるか実験評価していけば分かります。
プログラムは p15のピン割り込みを使ってます

include “mbed.h”
Serial pc(USBTX,USBRX);
DigitalOut led1(LED1);
DigitalOut led4(LED4);
//DigitalOut trg(p21);// LPC1768
InterruptIn echo(p15);// LPC1768
Timer t0;
Timer t1;
void rcv(){
led4=0;
t0.stop();
int period=t0.read_ms();
int hertrate=int(60000/period);
pc.printf(“echo time=%d,hertrate=%d\n\r”,period,hertrate);
t0.reset();
t0.start();
led4 = 1;
}int main() {
pc.baud(115200);
//echo.mode(PullDown);
echo.fall(&rcv);
//trg=0;
t0.start();
while(1) {
//trg=1;
//wait_ms(200);//10usecwait
//trg=0;
//t0.start();}
}

 

●以後
超音波センサは、アマゾンで4個で1000円で売っているのでさっそく注文しました。ヘルメットに1個、ハンドルに1個とりつけて、ヘルメットでは送信部を使って、ハンドルでは受信部を使うという方式で実験します。
赤外線センサは、秋月なので他の部品とまとめて買いしますので
後日、超音波センサで壁にぶち当たったら次にトライしてみます。
天気がよくなったら、ProcessingのNaNエラー対策も込みで実走行を再開します。

 

 


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です