迷走の果て・Tiny Objects

迷走する日々の覚え書きです。自分で分かってることは省略してますので、念のため。

脈拍センサーMAX30102を試す(1)

AliEXpressでMAX30102モジュールを購入しました。
前の記事でも書きましたがMAX30102にはガラスのカバーが付いてます。

商品ページには下図のようなブロックダイアグラムがありますが、これはMAX30102のレファレンスデザインボードのブロックダイアグラムです。
買ったAliのモジュールはこうなっていません、紛らわしいです
まぁ、商品写真を見ればわかりますが。
Ali_MAX30102page.jpg


モジュール裏の写真です。
Ali_MAX30102module裏3

左側:662K というチップが3.3Vのレギュレータ、
中央下:65K5 というチップが1.8Vのレギュレータ、おそらくXC6206シリーズ(または互換品)と思います。

右側の6pinのチップは回路構成からするとI2Cバスレベル変換をやっているはずで、おそらくデュアルMOSFETでしょう、レベル変換チップだったら最低でも7pin必要ですから。秋月さんで売ってる2N7002DWと同等品かと思います。

MOSFETによるI2Cバスのレベル変換についてはリンクさせていただいているエアバリアブルさんのI2Cインターフェースで異なる電圧の接続が大変参考になります。

MaximによるMAX30102のデモ動画、Arduino UNOとmbedで動かしてます。

詳しいことやArduinoスケッチなどは
MAXREFDES117#: HEART-RATE AND PULSE-OXIMETRY MONITOR
にありますが、このページのFirmware Files: -> Arduino Platform でダウンロードできるファイルには(今現在)問題があってArduino IDEでコンパイルするとエラーになります。

修正されたファイルはGitHubにあります。
MAXREFDES117 firmware for Arduino platforms

手持ちのUno互換機(びんぼうでいいのの旧タイプ)で動かしてみました。
MAX30102_UNO.jpg

メモリーの残りが少ないから気をつけてね、と出ます(汗)
RD117_ARDUINOスケッチ

シリアルモニター出力。
red、irはそれぞれledおよびIR ledの電流値に関する数値のようですが、単位が不明です。
HRは脈拍、HRvalidはHRが正しく測れているか否かをあらわすようで、正しくないと0になるようです。でも1でもとんでもない数値が出ることがあります。
SPO2は酸素飽和濃度、SPO2validはHRvalidと同様です。
MAX30102シリアルモニター出力

とりあえず、動作はしました。
スケッチやデータシートはまともに読んでません(汗)
スポンサーサイト

脈拍センサーMAX30100を試す(5)

心拍と脈拍は違うそうです。
MAX30100は脈拍センサーですので以後脈拍センサーと記します。過去記事の訂正までは(面倒なので)しません。

MAX30100データシートの1ページ目にこんな図があります。
ガラスのカバーが乗ってますが、MAX30100には付いていません。
(より新しいMAX30102にはガラスのカバーが付いています、Aliでポチりました^^;;)

MAX30100datasheet_page1.jpg

MAX30100モジュールに指を乗せていると、ヘッダピンや部品に指が当たるのが気になります。
そこで手持ちにあった0.5ミリ厚のアクリル板の切れ端を乗せてみました。

アクリルカバー2

これでもどうやら動作してます。
指を乗せたり、リセットしたりしても、すぐには正しい値は出ず8~10秒ぐらい待つ必要があります。
下のシリアルモニター出力ですが指を乗せてからリセットしました。スケッチの測定周期は2秒に変更してます。
REPORTING_PERIOD_MS_2000.jpg

なおスケッチには他にもいくつか変更点があります。

LED currentを4.4mAに変更。
onBeatDetected() を変更。
脈拍値を整数型に変更、小数点二桁までは必要ないでしょう。
REPORTING_PERIOD_MS 2000に変更。

スケッチはこちらにアップしてます。

MT3608モジュールを使ったDSO Shell用電源

前の記事でテストしたMT3608モジュールを使ってDSO Shell用電源を作りました。
単三電池が四本入る電池ボックスを使い何とか押し込みました。
DSO_Shell用電源

蓋はぎりぎり閉まるんですが、電圧調整が出来ないんで格好悪いんですが、切り欠き作って収めました。
DSO_Shell用電源3

出力には手持ちにあった太陽誘電製の22μHのインダクタと1.5μFの積セラでフィルタを入れてあります。手持ち部品を使っただけで定数についてちゃんと検討したわけではありません。
DSO_Shell用電源4

DSO_Shell用電源2

フィルタの入出力波形です、負荷は200Ω抵抗三本並列。出力電圧8.0Vにセット。
上が(当然)出力波形です。
フィルタ追加

脈拍センサー MAX30100を試す(4)MAX30100_Registers.h を調べる。

スケッチMAX30100_Minimalの55行~57行に

// The default current for the IR LED is 50mA and it could be changed
// by uncommenting the following line. Check MAX30100_Registers.h for all the
// available options.


とありますので、調べてみました。
Arduino/libraries/MAX30100lib/src にあります。
MAX30100lib_src_20170513032653369.png


他にもいくつかヘッダファイルがあります。
これらを調べて理解しないと使いこなせないでしょうね、もちろんMAX30100のデータシートも。

MAX30100_Registers.h でLEDの電流設定に関する部分を抜き出してみました。

// LED Configuration register
#define MAX30100_REG_LED_CONFIGURATION 0x09
typedef enum LEDCurrent {
MAX30100_LED_CURR_0MA = 0x00,
MAX30100_LED_CURR_4_4MA = 0x01,
MAX30100_LED_CURR_7_6MA = 0x02,
MAX30100_LED_CURR_11MA = 0x03,
MAX30100_LED_CURR_14_2MA = 0x04,
MAX30100_LED_CURR_17_4MA = 0x05,
MAX30100_LED_CURR_20_8MA = 0x06,
MAX30100_LED_CURR_24MA = 0x07,
MAX30100_LED_CURR_27_1MA = 0x08,
MAX30100_LED_CURR_30_6MA = 0x09,
MAX30100_LED_CURR_33_8MA = 0x0a,
MAX30100_LED_CURR_37MA = 0x0b,
MAX30100_LED_CURR_40_2MA = 0x0c,
MAX30100_LED_CURR_43_6MA = 0x0d,
MAX30100_LED_CURR_46_8MA = 0x0e,
MAX30100_LED_CURR_50MA = 0x0f
} LEDCurrent;


MAX30100.h を読むとデフォルトでLED電流は50mAとなっており、明るすぎてセンサーが飽和したのが最初うまく動かなかった原因のようです。
MAX30100.h から抜き出しました。

#define DEFAULT_MODE MAX30100_MODE_HRONLY
#define DEFAULT_SAMPLING_RATE MAX30100_SAMPRATE_100HZ
#define DEFAULT_PULSE_WIDTH MAX30100_SPC_PW_1600US_16BITS
#define DEFAULT_RED_LED_CURRENT MAX30100_LED_CURR_50MA
#define DEFAULT_IR_LED_CURRENT MAX30100_LED_CURR_50MA
#define EXPECTED_PART_ID 0x11



ただ闇雲にあれこれやってもダメですね、ちゃんと理解しないと。
というわけでデータシートとヘッダファイルを読んでみます。次の更新は未定・・・ほかに面白そうなことを見つけたら放置かも。
いつものことですが(汗

脈拍センサー MAX30100を試す(3)正常動作??

MAX30100のデータシートも、スケッチもろくに読まずに実験するものだからダメなんですね。

先の記事で使ったスケッチMAX30100_Minimalの58行目のコメントアウトを外しました。
これでLEDの電流が50mAから7.6mAに減ります。
コメントアウトを外す

どうやらまともな数値が出るようになりました。
正常動作?



脈拍センサー MAX30100を試す(2)スケッチとライブラリー

まだちゃんと動かせてませんが(汗
現状のアップを続けます。

こちらのスケッチとライブラリーをそのまま使わせていただきました。
Arduino library for MAX30100, integrated oximeter and heart rate sensor


Clone or download をクリック
oxullo_MAX30100.jpg


Download ZIP をクリックして保存、このZipファイルは展開(解凍)しないでおきます。
oxullo_MAX30100_DOWNLOAD_ZIP.jpg


Arduino IDE(私はver1.8.1を使いました)のスケッチメニューから ライブラリをインクルード -> ZIP形式のライブラリをインストールとし、先に保存したZipファイルを選びます。
ZIPライブラリインストール


Max30100libが表示されればOK。
ライブラリ確認


サンプルスケッチがあるので、ファイルメニューから スケッチ例 -> MAX30100lib で選びます。
スケッチ例


MAX30100_Testerを動かしたところです、ちゃんとつながっていればこのようにシリアルモニタに出ます。
MAX30100_Tester_OK.jpg


わざとMAX30100モジュールを外すと当然エラー。
MAX30100_Tester_NG.jpg


MAX30100_Minimal を走らせます、指をモジュールの上に置くとなにやらそれらしい数値が出ますが・・・、
Heart rate が30 ??、安静時心拍数は、人間の場合、男性で60~70程度ですから明らかにおかしいです。
MAX30100_Milimal1.jpg


指をどけると今度は200越え?!、机の蛍光灯スタンドを消すと0になりました。外光の影響があるようです。
MAX30100_Milimal2.jpg


指をモジュールから少し離すとそれらしい数値が出ますが、安定しませんし、それで正しいのかも判断できません。
さてどうしたものやら。





脈拍センサー MAX30100を試す(1)

AliExpressからMAX30100を買いました。
Facebookのあるグループで知って、面白そうなのでついポチりました(汗

今現在、まともに動かせてません。

動いてから記事にしようかと思ったのですが、いつになるやらわからないのでとりあえず現状をアップしておきます。

MAX30100のメーカーサイトはこちら
既に全バージョンが製造中止だそうで、maximaはMAX30101かMAX30102を検討してくれ、との事です。そんな事言われてもねぇ。

買ったモジュールのアップ。
MAX30100モジュール

モジュールの回路図。
MAX30100モジュール回路
MAX30100は1.8V動作、LEDは3.3Vで動かしてます。
ちょっと面白そうなのが回路図中央上のRCWL9183というチップ。入力電圧が1.8V~5Vとなってるのに出力は3.3V。
昇降圧DCDCコンバータでしょうか??C3のつなぎ方がICL7660スイッチトキャパシタ電圧コンバータみたいです。検索しましたが見つかりません。

このモジュールをArduino miniにつないでやろうと思ったのですが、I2Cバスのレベルが合いません。
そこでデジットでサンハヤトのバスレベル変換モジュールを購入しました。

回路図です。
MAX30100モジュールテスト回路
MAX30100モジュールから1.8Voutが出てますが、これはバス変換モジュールにMAX30100の動作電圧と同じ1.8Vを供給するためです。
わざわざ別に用意するのも馬鹿らしいのでMAX30100モジュールから出しました。モジュールは7ピンですが、8ピンのヘッダーピンをつけて8ピン目に1.8Vをつなぎました。MAX30100モジュール回路図のC6のプラス側から1.8Vを取り出してます。
MAX30100_1V8.jpg

実験の様子。
実験の様子

I2Cバスレベル変換の確認。
上がMAX30100のSDA、下がArduinoのSDAです。どうやらレベル変換はうまくいってるようです。
I2Cバスレベル変換

続く(たぶん)

Studuino用電池ボックスを作る(2)

先の電池ボックスですが、接触不良が頻発します。
どうにも使ったスイッチがよくなかったようで、結局スイッチを付け替えました。
作ったもののずっと使ってない装置から外しました。今度は大丈夫。
新電池ボックス2

ついでなので消費電流を測ってみました。
スイッチに0.1Ωを繋ぎDSO Shellで測定します。
電流測定2

最大で10mVということは最大100mA流れていることになります。もうちょっと多いのかと思ってました。
二つのモーターの回転方向と速度を一定時間ごとにランダムに変えるスケッチで動かしているので、両モーターとも全速で動かせばもっと多くなるかもしれません。
電流測定

それにしても、買って良かったDSO Shell

Studuino用電池ボックスを作る

月に二回、子度向けロボットプログラミング教室で講師をしています。
Studuinoをベースとした教材を使っています。Studuinoの回路はこちら
クロック8MHzで3.3V動作ですが、DCモータ駆動用DualブリッジドライバTB6552を乗せているのが特徴で、教材に二つあるDCモーターを使っていろいろと面白いことができます。

ちょっと問題なのが電池ボックス。
Studuino用の台座には空きスペースがあります。
空きスペース

ちょうど単三電池が三本乗ります。
単三を乗せる

でも使っているのがスイッチ付き電池ボックスであるため、スイッチの分だけ長くなって空きスペースに乗らないのです。
不安定なため動かしているとよく電池ボックスが落ちてしまいます。子供たちが固定に苦労してるのがちょっとかわいそう。
denti.jpg

思いついて手持ちのスイッチなし電池ホルダーにスイッチをホットボンドでくっつけました。
スイッチつき電池ボックス1
斜めになってしまった(汗)
スイッチつき電池ボックス裏

これでOK。
新電池ボックス

スイッチの許容電流がちょっと心配です、モーターを二つ回すと結構電流が流れるでしょうから。
使ったのはデジットで買った定格不明のスライドスイッチ、50円也。

 | HOME | 

文字サイズの変更

プロフィール

edy

最新記事一覧(サムネイル画像付き)

脈拍センサーMAX30102を試す(1) May 25, 2017
脈拍センサーMAX30100を試す(5) May 20, 2017
MT3608モジュールを使ったDSO Shell用電源 May 16, 2017
脈拍センサー MAX30100を試す(4)MAX30100_Registers.h を調べる。 May 13, 2017
脈拍センサー MAX30100を試す(3)正常動作?? May 12, 2017
脈拍センサー MAX30100を試す(2)スケッチとライブラリー May 10, 2017
脈拍センサー MAX30100を試す(1) May 08, 2017
Studuino用電池ボックスを作る(2) May 06, 2017
Studuino用電池ボックスを作る May 05, 2017
MT3608モジュールのテスト Apr 30, 2017

全記事表示リンク

全ての記事を表示する

ブログリンク

リンク

このブログをリンクに追加する

月別アーカイブ

05  04  03  02  01  12  11  10  09  08  07  06  05  04  03  02  01  12  11  10  09  08  07  06  05  04  03  02  01  12  11  10  09  08  07  06  05  04  03  02  12  11  10  09  07  05  04  03  04  03  01  12  11  10  08  07  06  05  03  02  01  12  11  10  09  08  07  06  05  04  03  02  01  12  11  10  09  08  07  06  05  04  02  01  12  10  09  08  07  06  05  04  03  02  01  12  11  10  09  08  07  06  05  03  02  01  12  11  10  09  08  07  06  05  04  03  02  01  12  10  09  08  07  06  05  04  03  02  01 

カテゴリ

プログラミング (0)
freescale (1)
AVR (3)
テルミン (16)
緊急警報放送 (3)
78K (1)
PSoC (295)
地上デジタル放送 (2)
電子工作 (400)
HX711 (2)
ACS712 (6)
数学 (6)
パソコン (12)
PLC (14)
未分類 (39)
ブログ関係 (20)
スカイプ (37)
ロボット (1)
LTSpice (8)
OCXO (0)
arduino (28)
maxima (1)
フランクリン発振回路 (3)
GPS (3)
DTMF (1)
Linux (1)
KOMAINO (7)

タグリスト

最近のコメント

最近のトラックバック

メールフォーム

名前:
メール:
件名:
本文:

検索フォーム

アクセス

RSSリンクの表示

フリーエリア

FC2Ad

まとめ

Template by たけやん