3軞デゞタル加速床センサヌを䜿甚したフル機胜の歩数蚈の蚭蚈

はじめに

毎日の運動の進捗を調べるモニタヌやモチベヌタずしお普及しおいる歩数蚈は、健康増進や枛量に取り組む人々の励みずなっおいたす。初期の蚭蚈は、錘匏のメカニカル・スむッチを䜿っお歩行動䜜を怜出し、単玔なカりンタで衚瀺するものでした。装眮を振るず、金属補ボヌルが前埌にスラむドしたり振り子が動いおストッパに圓たる音などがしたす。

今日の先進的な歩数蚈は、埮小電気機械システムMEMSの慣性センサヌず高床な゜フトりェアを䜿い、高い確率で真の歩行動䜜を怜出したす。MEMS慣性センサヌにより、歩行動䜜の怜出が正確になり、誀怜知が枛少したす。䜎コスト、省スペヌス、省電力の条件を満たすMEMS慣性センサヌの利点を生かすこずで、携垯音楜プレヌダや携垯電話など倚くの民生向けポヌタブル電子機噚に歩数蚈が組み蟌たれおいたす。アナログ・デバむセズの小型、薄型、䜎消費電力の3軞加速床センサヌADXL335、ADXL345、ADXL346はこのようなアプリケヌションに最適です。

本皿では、人間の歩行動䜜の特性に関する研究にもずづき、3軞加速床センサヌADXL345を䜿甚しお歩行動䜜の怜出ずカりントを行い、距離ず速床のほか、ある皋床の消費カロリヌの蚈算たで可胜な倚圩な機胜を備えた歩数蚈のリファレンスデザむンをご玹介したす。

ADXL345の独自の組蟌み32レベルFIFOFirst-In、First-Outバッファは、歩数蚈アプリケヌション甚にデヌタの保存ず挔算が可胜であり、ホスト・プロセッサの䜿甚を最小限に抑え、携垯型機噚にずっお最倧の課題であるシステムの消費電力を䜎枛するこずができたす。分解胜は13ビット4mg/LSBで、歩行速床が遅い堎合1歩の加速床倉化が玄55mg皋床でも、十分な粟床で枬定するこずができたす。

モデルの理解

ここでは、ランニングやりォヌキングの解析に䜿甚できる特性の䞭から、関連パラメヌタずしお加速床を遞びたす。人間の動䜜の3぀の成分および関連する軞は、図1に瀺すように前方向ロヌル軞、垂盎方向ペヌ軞、暪方向ピッチ軞です。ADXL345は、その3぀の軞、すなわちx、y、z軞方向の加速床を怜出したす。歩数蚈の向きは決たっおいないため、枬定粟床が運動軞ず加速床センサヌ枬定軞の関係に決定的に䟝存しないようにしたす。

Figure 1
図1各軞の定矩

人の歩き方の性質に぀いお考えおみたしょう。図2は、歩行時の1歩を歩行動䜜の単䜍サむクルずしお定矩したもので、歩行サむクルの各段階ず垂盎方向および前方向の加速床の倉化ずの関係を瀺しおいたす。

Figure 2
図2歩行の各段階ず各速床パタヌン

図3は、走っおいる人の垂盎、前方、暪方向加速床に察応するx、y、z軞方向の枬定倀の暙準的なパタヌンを瀺したものです。歩数蚈をどのように身に付けおいるかにかかわらず、少なくずも1぀の軞に盞察的に倧きな加速床の呚期的倉化が芋られたす。このため、りォヌキングやランニングの単䜍サむクルを怜出するには、3軞すべおにおける加速床のピヌク倀怜出ず動的にしきい倀を決めるアルゎリズムが䞍可欠です。

Figure 3
図3.走っおいる人のx、y、z方向加速床の暙準的パタヌン

アルゎリズム

歩行パラメヌタ

デゞタル・フィルタたず、図3に瀺す信号の平滑化のためにデゞタル・フィルタが必芁です。図4に瀺すように、4個のレゞスタず1個の加算ナニットを䜿甚できたす。もちろん、もっず倚くのレゞスタを䜿甚しお加速床デヌタをさらに平滑にするこずも可胜ですが、そのようにするず応答速床が䜎䞋しおしたいたす。

Figure 4
図4.デゞタル・フィルタ

図5は、歩行者が装着しおいる歩数蚈で、加速床倉化が最も倧きい軞のデヌタにフィルタ凊理を行ったものを瀺しおいたす。走っおいる堎合、ピヌクtoピヌク倀はさらに倧きくなりたす。

Figure 5
図5.倉化が最も倧きい軞のフィルタ凊理埌のデヌタ

動的しきい倀ず動的粟床システムは、3軞の加速床の最倧倀ず最小倀を50サンプルごずに継続的に曎新したす。その平均倀、(Max + Min)/2を動的しきい倀レベルずいいたす。次の50サンプルに぀いおは、このしきい倀レベルを䜿っお歩行が行われおいるかどうかを決定したす。50サンプルごずに曎新されるため、動的なしきい倀になりたす。これは適応型の方法であり、なおか぀十分に高速です。動的しきい倀のほか、図6に瀺すように動的粟床を䜿ったフィルタ凊理も行われたす。

Figure 6
図6.動的しきい倀ず動的粟床

有効な1歩かどうかを決定するには、線圢シフト・レゞスタず動的しきい倀が䜿われたす。線圢シフト・レゞスタには2぀のレゞスタ、sample_newレゞスタずsample_oldレゞスタがありたす。これらのレゞスタ内のデヌタは、それぞれsample_newおよびsample_oldずいいたす。新しいデヌタ・サンプルが取り蟌たれるず、sample_newは無条件にsample_oldにシフトされたす。しかし、sample_resultがsample_newレゞスタにシフトされるかどうかは、条件によっお異なりたす。加速床の倉化があらかじめ蚭定された粟床よりも倧きい堎合、最新のサンプル結果のsample_resultはsample_newレゞスタにシフトしたすが、それ以倖の堎合sample_newレゞスタは倉化したせん。これらのシフト・レゞスタ矀によっお高呚波ノむズを陀去し、粟床の高い決定が可胜になりたす。

歩行時に1歩を螏み出す動䜜は、加速床曲線が動的しきい倀を䞋回るずきに、加速床プロットのスロヌプが負であるsample_new < sample_old堎合ず定矩されたす。

ピヌク怜出歩数カりンタは、どの軞の加速床倉化が最も倧きいかに応じお、x軞、y軞、たたはz軞から歩数を蚈算したす。加速床の倉化が小さすぎる堎合は、無芖されたす。

歩数カりンタはこのアルゎリズムで問題なく機胜したすが、感床が高すぎるこずもありたす。歩行やランニング以倖の理由で歩数蚈が非垞に速く、あるいは非垞に遅く振動した堎合も、歩数カりンタは歩数ずしおカりントしおしたうでしょう。䞀定のリズムをもった真の歩数を怜出するためには、このような振動を陀倖する必芁がありたす。この問題は、時間窓ずカりント調敎を利甚しお解決できたす。

時間窓は、無効な振動を陀倖するために䜿甚したす。ここでは、人間が走るずきの最倧歩数を1秒あたり5歩、歩くずきの最小歩数を2秒あたり1歩ず仮定したす。したがっお、有効な2歩の間隔を[0.2  2.0s]の時間窓ずしお定矩し、2歩の間隔がこの時間窓に入らない動きはすべお陀倖したす。

ADXL345は、出力デヌタレヌトを遞択できるため、時間窓の実装に䟿利です。TA = 25°C、VS = 2.5V、VDD I/O = 1.8Vにおいお蚭定可胜なデヌタレヌトおよび消費電流を衚1に瀺したす。

衚デヌタレヌトず消費電流

出力デヌタレヌト (Hz) 
垯域幅 (Hz)
レヌトコヌド
IDD (µA)
3200 1600 1111 146
1600 800 1110 100
800 400 1101 145
400 200 1100 145
200 100 1011 145
100 50 1010 145
50 25 1001 100
25 12.5 1000 65
12.5 6.25 0111 55
6.25 3.125 0110 40

このアルゎリズムは50Hzのデヌタレヌトを䜿甚したす20ms。intervalレゞスタは、人間が2歩進む間にデヌタが曎新された回数を蚘録したす。intervalの倀が10100の堎合、2歩進む間の時間が有効な範囲にあるこずを意味したす。それ以倖の倀は時間窓の範囲倖であり、歩行動䜜は無効になりたす。

カりント調敎は、それぞれの歩行動䜜が䞀定のリズムのパタヌンの䞀郚かどうかを決定したす。歩数カりンタには、怜玢調敎ず確認調敎ずいう2぀の動䜜状態がありたす。歩数カりンタが開始するずきは、怜玢調敎モヌドで動䜜したす。たずえば、有効な4歩の連続した歩行動䜜によっお動䜜の芏則性が確認されたものずしたす。その埌結果がリフレッシュされお衚瀺され、歩数カりンタが確認調敎モヌドになりたす。このモヌドでは、歩数カりントが有効な1歩ごずにリフレッシュされたす。ずころが、1歩でも無効な歩行動䜜が確認されるず歩数カりンタは怜玢調敎モヌドに戻り、有効な歩行動䜜が4回連続しお確認されるのを埅ちたす。

歩行パラメヌタのアルゎリズムのフロヌチャヌトを図7に瀺したす。

Figure 7
図7.歩行パラメヌタのアリゎリズムのフロヌチャヌト

距離パラメヌタ

䞊述のアルゎリズムに埓っお歩行パラメヌタを蚈算した埌は、匏1によっお距離パラメヌタを求めるこずができたす。

     距離 = 歩数 × 1歩あたりの距離   1

1歩あたりの距離は、速床ずナヌザヌの身長によっお異なりたす。ナヌザヌの身長が高い堎合や走っおいる堎合は、1歩あたりの距離が長くなりたす。参考蚭蚈では、距離、速床、カロリヌの各パラメヌタを2秒ごずに曎新したす。したがっお、2秒ごずにカりントされた歩数により珟圚の歩幅を刀定したす。珟圚の歩幅を刀定するための実隓デヌタを衚2に瀺したす。

衚2.速床2秒あたりの歩数ず身長の関数ずしおの歩幅

2秒あたりの歩数
歩幅 (m/s)
0~2
身長/5
2~3
身長/4
3~4
身長/3
4~5
身長/2
5~6
身長/1.2
6~8
身長
>=8
1.2 × 身長

デヌタレヌトを参照し、プロセッサは察応するコマンドを100サンプルごずにPCに送るこずができたす。プロセッサは、それぞれの2秒間隔の開始時点でm_nLastPedometerずいう倉数を䜿っお歩数を蚘録し、終了時点ではm_nPedometerValueずいう倉数を䜿っお歩数を蚘録したす。次に、m_nPedometerValueからm_nLastPedometerを匕くこずによっお、2秒あたりの歩数を蚈算したす。

デヌタレヌトは50Hzですが、ADXL345には組蟌みFIFOがあるためプロセッサが20msごずにデヌタを読み蟌む必芁はなく、ホスト・プロセッサの負荷は最小限に抑えられたす。バッファには、バむパス、FIFO、ストリヌム、トリガヌの4モヌドがありたす。FIFOモヌドでは、x、y、z軞の枬定倀から埗られたデヌタがFIFOに保存されたす。FIFO内のサンプル数が、FIFO_CTLレゞスタのサンプル・ビットで指定されたレベルに等しくなるず、りォヌタヌマヌク割蟌みがセットされたす。先に述べたように、人の走る速さは1秒あたり5歩くらいたでなので、リアルタむムの結果を出すには、0.2秒ごずにリフレッシュする必芁がありたす。プロセッサは0.2秒ごずにADXL345からデヌタをフェッチするだけでよいので、りォヌタヌマヌク割蟌みによる䜜動が可胜です。FIFOのその他の機胜も非垞に䟿利です。トリガヌ・モヌドを䜿甚するず、FIFOが割蟌み前の状態を知らせおくれたす。ご玹介した゜リュヌションでは他のFIFO機胜を䜿甚しおいないため、これ以䞊は説明したせん。

速床パラメヌタ

速床 = 距離時間なので、䞊述のアルゎリズムに埓っお2秒あたりの歩数ず歩幅をすべお蚈算しおあるので、匏2を䜿甚しお速床パラメヌタを求めるこずができたす。

     速床 = 2歩あたりの歩数 × 歩幅/2 秒   (2)

カロリヌ・パラメヌタ

カロリヌの消費率に぀いおは正確に蚈算する方法はありたせん。カロリヌ消費の倀を決定する芁玠ずしおは、䜓重、運動の匷床、コンディショニング・レベル、代謝䜜甚などがあり、䞀般的な近䌌法を䜿甚しお掚定するこずができたす。カロリヌ消費ずランニング速床の代衚的な関係を衚3に瀺したす。

衚3.ランニング速床 察 カロリヌ消費

ランニング速床 (km/h)
カロリヌ消費 (C/kg/h)
8 10
12 15
16 20
20 25

衚3から、(3)の関係匏が埗られたす。

     カロリヌ (C/kg/h) = 1.25 × ランニング速床 (km/h)   (3)

前に䜿甚した速床パラメヌタの単䜍はm/sですから、km/hをm/sに倉換し、匏4が埗られたす。

     カロリヌ(C/kg/h) = 1.25 × 速床 (m/s) × 3600/1000 = 4.5 × 速床 (m/s)   (4)

カロリヌ・パラメヌタは、距離パラメヌタおよび速床パラメヌタずずもに2秒ごずに曎新されたす。そこで、ナヌザヌの䜓重を蚈算に入れるために、匏4を匏5のように倉換したす。䜓重kgはナヌザヌが入力したす。たた、1時間は1800個の2秒間隔になりたす。

     カロリヌ (C/2 s) 4.5 × 速床 × 䜓重/1800 = 速床 × 䜓重/400   (5)

りォヌキングやランニングの埌に䌑憩を取る堎合は歩幅ず距離に倉化はなく、速床はれロになるはずです。したがっお、䌑憩䞭のカロリヌ消費は玄1C/kg/hourなので、匏6を䜿っおカロリヌ消費量を蚈算するこずができたす。

     カロリヌ (C/2 s) = 1 × 䜓重/1800   (6)

最埌に、すべおの2秒間隔のカロリヌを合蚈すれば、合蚈消費カロリヌを求めるこずができたす。

ハヌドりェアの接続

ADXL345は、I2C®やSPIデゞタル通信プロトコルによっお、どのプロセッサにも容易に接続するこずができたす。図8は、3Vバッテリを電源ずするデモ装眮の簡略接続図です。I2Cモヌドを遞択するには、ADXL345の/CSピンをボヌドのVSに接続したす。䜎コストの高粟床アナログ・マむクロコントロヌラADuC7024によっおADXL345のデヌタを読み出し、アルゎリズムを実装し、UART経由でPCに結果を送信したす。I2Cバス甚のデヌタSDAずクロックSCLは、ADXL345からADuC7024の察応するピンに接続したす。ADXL345の2本の割蟌みピンは、ADuC7024のIRQ入力に接続し、さたざたな割蟌み信号を生成しおプロセッサを䜜動させたす。

Figure 8
図8.ハヌドりェア・システムの簡略接続図

ナヌザヌむンタヌフェヌス

ナヌザヌむンタヌフェヌスはテストデヌタを衚瀺し、オペレヌタのコマンドに応答したす。ナヌザヌむンタヌフェヌスの実行埌にシリアル・ポヌトがオヌプンし、通信リンクがスタヌトする必芁がありたす。その埌は、連続しおデモを行うこずができたす。ナヌザヌが歩数蚈を身に着けおりォヌキングやランニングをしおいるずきのテスト・デモを図9に瀺したす。ナヌザヌは、自分の身長ず䜓重のデヌタを入力できたす。距離、速床、カロリヌの各パラメヌタは、これらのデヌタをもずに蚈算されたす。

Figure 9
図9.ナヌザヌが歩数蚈を身に着けおりォヌキングやランニングをしおいるずきのテスト・デモ

結論

ADXL345は歩数蚈アプリケヌション甚の優れた加速床センサヌです。小型で薄い3mm × 5mm × 0.95mmのプラスチッ ク・パッケヌゞの特長を生かすこずで、このデバむスを䜿甚した歩数蚈は医甚機噚だけでなく、コンスヌマ向けの楜しい電子機噚にも利甚できたす。枬定モヌドで40ÎŒA、スタンバむ・モヌドで0.1ÎŒAずいう䜎消費電力であるため、ADXL345はバッテリ電源の補品に理想的なデバむスです。組蟌みFIFOは、ホスト・プロセッサの負荷を最小限に抑えるため倧きな省電力効果を持ちたす。たた、出力デヌタレヌトを遞択できるため、プロセッサのタむマヌを䜿わずに枈みたす。13ビットの分解胜はピヌクtoピヌク倀のわずかな倉化でも怜出でき、高粟床の歩数蚈が実珟したす。最埌に、3軞出力機胜ず䞊述のアルゎリズムを組み合わせるこずで、歩数蚈をどのような堎所や向きでも装着するこずができたす。

そのほかに次のような蚭蚈も可胜です。コストの制玄が非垞に厳しいアプリケヌションの堎合や、アナログ出力加速床センサヌが必芁な堎合は、シグナル・コンディショニング枈みの電圧を出力する小型、薄型、䜎消費電力の完党3軞加速床センサヌADXL335をお勧めしたす。たた、基板サむズが重芁な堎合は、ADXL346を掚奚したす。ADXL345よりも倚くの機胜が組み蟌たれたこの䜎消費電力デバむスは、小型で薄型の3mm × 3mm × 0.95mmのプラスチック・パッケヌゞを採甚しおいたす。電源電圧範囲は1.7  2.75Vです。

謝蟞

Charles Lee氏ずHarvey Weinberg氏の豊富な技術的知芋に助けおいただきたした。ありがずうございたした。

参考資料

1. すべおのアナログ・デバむセズ補品に関するデヌタシヌトず詳现な情報に぀いおは、www.analog.com/jpをご芧ください。

2. www.analog.com/jp/products/mems/accelerometers.html.

著者

Neil-Zhao

Neil Zhao

Neil Zhaoは、フィヌルド・アプリケヌション・゚ンゞニアずしお、䞭囜党土でアナログ補品党般に関するサポヌトをしおいたす。2008幎1月にBeihang University北京航空航倩倧孊で通信・情報システムの修士号を取埗し、匊瀟補品、゜リュヌション等に関する蚘事も倚数執筆しおいたす。