概要
自転車用のパワー・メータは、ペダルを漕ぐ力を計測するために使用されます。本稿では、パワー・メータを構成するシグナル・チェーンや、パワー・マネージメント・システム、マイクロコントローラについて解説します。まずは、自転車用のパワー・メータの動作原理と、電子回路を設計する際の基礎になる物理領域の理論について説明します。その上で、振幅の小さい信号を正確に増幅することが可能なパワー・メータ向けのソリューションを紹介します。そのソリューションは、低消費電力、低コスト、小型であることを特徴とします。
はじめに
自転車用のパワー・メータは、自転車を漕ぐ人(サイクリスト)が消費するパワーをW単位で測定するための機器です。主にトレーニング補助具として使われ、サイクリストに運動に伴う負荷の情報をフィードバックするために使用されます。例えば、あるサイクリストが上り坂で少なくとも200Wのパワーの出力を維持することを目標に掲げたとします。パワー・メータは、実際のパワーがその目標を下回った場合、そのことをサイクリストに通知します。それを受けたサイクリストは、ペダルを速く漕ぐか、ギア・チェンジを行うことによってパワーを高めるといった具合です。通常、パワーの測定結果は自転車のハンドル・バーに取り付けられたヘッド・ユニットに表示されます。多くの場合、パワー・メータとパワーを計算して表示する機器の間はワイヤレスで接続しなければなりません。パワーを計算するには、自転車のドライブトレインの一部にかかる機械的な歪みの値を測定する必要があります。そのためには、ホイートストン・ブリッジ回路に接続されたストレイン・ゲージが使用されます。通常、ホイートストン・ブリッジで生成されるのは、非常に周波数が低く非常に振幅が小さい信号です。そのため、入力オフセット電圧にドリフトが生じることがなく(ゼロドリフト)、高い精度が得られるアンプによってその信号を増幅する必要があります。また、パワー・メータは常に電池で駆動されます。したがって、トータルの消費電流を最小限に抑えなければなりません。
「MAX41400」は、低消費電力、高精度の計装アンプ(インアンプ)です。1.7V~3.6Vの電源電圧で動作し、入出力はレールtoレールに対応しています。ゲインは8種の固定値の中から選択可能です。周波数の低い信号を扱う場合には、CMOS入力アンプで生じる比較的大きな1/fノイズが問題になります。この問題は、入力オフセット電圧を1µV(代表値)に抑えつつゼロドリフトを実現することで回避しています。消費電流は65µA(代表値)であり、シャットダウン・モードではその値が0.1µAまで低減されます。パッケージは1.26mm×1.23mmの9ボールWLPまたは2.5mm×2mmの10ピンTDFNです。このような小型の製品であることから、サイズの要件が厳しい自転車用のパワー・メータに最適です。
マイクロコントローラ・ユニット(MCU)も、自転車用のパワー・メータで重要な意味を持つICです。アナログ・デバイセズの「MAX32666」は、この用途に最適なMCUです。同製品はArm® Cortex®-M4をベースとしており、Bluetooth® Low Energy(BLE)に対応する無線機能を内蔵しています。計装アンプからの信号は、逐次比較型A/Dコンバータ(SAR ADC)の「MAX11108」によってサンプリングするとよいでしょう。デジタル化されたサンプル・データは、ワイヤレスでAndroidベースの機器に送信されます。その機器ではアプリケーション・ソフトウェアが実行され、パワーの値の計算と結果のプロットが行われます。
パワー・メータの動作原理
本稿で紹介する自転車用のパワー・メータは、クランク・アームの曲げ歪みを測定することで力の値を導き出します。クランク・アームとは、一方の端にペダルが取り付けられ、もう一方の端がボトム・ブラケットに取り付けられているバーのことです。サイクリストがペダルを踏むとクランク・アームに力が加わり、力に依存する角速度で回転が実現されます(図1)。以下では、パワー・メータの動作の基礎となる物理領域の理論について説明します。
物理の世界で言う「仕事」は、力によってエネルギーを伝達することによって行われます。質量に力が加わり、その質量がある距離だけ変位したとき、仕事が行われたことになります。ある物体に力Fが加わることによって距離dの変位が生じたとします。その際に行われたる仕事Wは、以下の式で表されます。
このとき、仕事は、力のベクトルにおける変位の方向の成分だけによって行われます。SI単位系を使用し、力をN(ニュートン)、距離をm(メートル)で表すと、仕事はN・m(ニュートン・メートル)またはJ(ジュール)という単位で表されます。1Nの力が1mの距離にわたって作用した場合、1Jの仕事が行われたことになります。
一方、パワー(仕事率)とは単位時間に作用する仕事の量のことです(以下参照)。
上式において、PはW単位のパワー、WはJ単位の仕事、tは秒単位の時間です。
トルクとパワーの関係から、角速度(回転速度の変化率)がわかればパワーを計算することができます。パワーは([力]×[距離])/[時間]です。t秒間でちょうど1回転する自転車のクランク・アームについて考えてみましょう。ここでは、回転中に継続して一定の力が加わっていると仮定します。力が加わる距離は、半径rの円の円周として求められます。ここで、rは回転軸から力が加わる点までのクランクの長さです。この関係は以下の式で表されます。
トルクはF×rで求められます。これをτと表記することにします。また、t秒間で1回転(2π)する場合、角速度は2π/tとなります。これをωと表記することにします。すると、式(3)は以下のように書き換えることができます。
この式から、パワーを計算するには、トルクと角速度という2つの量を求める必要があることがわかります。上述したとおり、トルクは力とクランク・アームの長さの積(定数)です。従って、実際には加えられた力と角速度を測定する必要があるということです。なお、パワーに寄与するのは、力のベクトルの接線方向の成分だけです。言い換えれば、仕事は、この成分だけによって行われることになります。
ここまでは、話を簡素化するためにいくつかの仮定を行いました。その1つは、加えられる力はクランク・アームの回転中に一定であり続けるというものです。実際にはこの状態は成り立ちません。例えば、クランク・アームが垂直のとき(クランク・アームを時計の短針に見立てると、6時または12時の位置にあるとき)、力の接線方向の成分はゼロになります。一方、力の半径方向の成分は最大になりますが、それは何の作用も及ぼしません。力の接線方向の成分は、クランクが水平のとき(3時または9時の位置にあるとき)に最大になります。つまり、トルクは1回転の間に絶えず変化しているということです。そのため、回転中には、何度も力をサンプリングする必要があります。
本稿では、自転車用のパワー・メータが左側のクランク・アームに取り付けられていると想定します。また、一方の脚で消費されるパワーだけを測定し、もう一方の脚で消費されるパワーも平均的にはそれと同等の値になると仮定します。そこで、サイクリストが出力するトータルのパワーは、パワー・メータによって得られた測定値を2倍にすることで算出することにします。なお、より洗練された(そして高価な)パワー・メータでは、それぞれの脚のパワーが個別に測定されます。
先述したように、力はストレイン・ゲージを使用して測定します。一方、角速度は慣性計測ユニット(IMU)のジャイロ・スコープを使用して測定します。ただ、これについては、労力とコストを節約するための代替策があります。本稿の後半では、ストレイン・ゲージで取得した信号に処理を適用することで、角速度を推定する方法(IMUは使用しない)を紹介します。
力の測定
サイクリストの力により、クランク・アームには機械的な変形(この場合は曲げ歪み)が生じます。本稿で紹介するパワー・メータでは、この曲げ歪みを利用します。一方、ボトム・ブラケットを貫通するスピンドルなど、ドライブトレインの他の部品にはねじれ歪みが生じます。自転車用のパワー・メータの中には、このねじれ歪みを利用しているものもあります。
歪みの測定には、ストレイン・ゲージが一般的に使用されています。ストレイン・ゲージは、柔軟な素材に埋め込まれた非常に薄くて長い金属ワイヤとして実現されます。それを、歪みを測定したい物体の表面に貼り付けます。貼り付ける向きは、測定したい歪みに応じて異なります。物体が変形すると、ストレイン・ゲージ内のワイヤが伸長または圧縮します。ワイヤが伸張するということは、ワイヤが長く細くなるということです。ここで、ワイヤの抵抗値はその断面積に反比例し、長さに正比例します。そのため、ワイヤが伸長すると抵抗値が増大します。一方、ワイヤが圧縮されると、ワイヤは短く太くなります。その結果、抵抗値が低下します。変形していない状態のストレイン・ゲージは公称抵抗値を示します。標準的な値は、120Ω、350Ω、1kΩです。ストレイン・ゲージが圧縮/伸張すると、その抵抗値が公称値を中心としてわずかに変化します。本稿で例にとるパワー・メータでは、1kΩのストレイン・ゲージを使用することにします。その意図は、ホイートストン・ブリッジに流れる電流の量を最小限に抑えることにあります。
抵抗値のわずかな変化を測定したい場合には、ホイートストン・ブリッジがよく用いられます。
図2のように、ホイートストン・ブリッジは並列に接続された2つの分圧器で構成されます。ブリッジの上下には、励起電圧VEXが印加されます。この回路の出力電圧Voは、次式で表されます。
ブリッジが平衡状態にある場合、つまりR4/R3 = R1/R2である場合には、Vo = 0Vになります。よく使われるクォーターブリッジの構成では、4つの抵抗のうち1つをストレイン・ゲージに置き換えます。例えば、R4をストレイン・ゲージRgで置き換えるといった具合です。それにより、Rg(R4)の値が変化すると、ブリッジは非平衡の状態になります。結果として、差動電圧Voは0V以外の値になります。
本稿で例にとるパワー・メータでは、ハーフブリッジの構成を使用することにします。すなわち、R4とR3としてストレイン・ゲージを使用し、R1とR2として1kΩのダミーの抵抗を使用するというものです。ストレイン・ゲージを1つではなく2つ使用すると、ブリッジから得られる信号の振幅が2倍になります。また、本質的に温度補償が実現されます。温度が変化すると、ストレイン・ゲージのワイヤも伸張/収縮して抵抗値に変化が生じます。その変化は、機械的な歪みによるものと区別がつきません。それに対し、2つのストレイン・ゲージを近くに配置すると両者の温度はほぼ同じになります。そのため、温度に依存する抵抗値の変化が相殺されます。
システムの概要
本稿で紹介するシステムは、次のような要素で構成されます。左側のクランク・アームに取り付けた小型かつ細長いプリント回路基板、クランク・アームに貼り付けたストレイン・ゲージ、BLE経由で基板から未処理のデータを受信し、パワーを計算して表示するAndroid対応機器(スマートフォンやタブレット端末など)です。
図3は、基板に実装する回路の概要を示したものです。基板全体に対しては、1個のコイン型電池(CR2032)から電力を供給します。電池の3Vの電圧(公称値)は時間の経過に伴い変化します。また、電池の容量が消耗するにつれて徐々に低下していきます。ADCと計装アンプのリファレンス電圧ならびにブリッジの励起電圧は、正確に制御された安定したものでなければなりません。そこで、電池の電圧を昇圧コンバータ「MAX17227」によって3.8Vまで昇圧することにします。この3.8Vの電圧を基にして、電圧リファレンス「MAX6029」により、ブリッジ用の励起電圧とADC用のリファレンス電圧(いずれも3V)を生成します。ここで使用するすべてのICは3.0Vの電源電圧で動作します。この電源電圧は、LDOレギュレータ「MAX1725」を使用して生成します。
ブリッジから出力される差動電圧は、計装アンプ(MAX41400)によって増幅されると共に、シングルエンドの電圧に変換されます。計装アンプのREF入力には、分圧器を利用して1.5Vのリファレンス電圧が供給されます。このアンプで増幅されたストレイン・ゲージの信号は、ADC(MAX11108)でサンプリングされます。このSAR ADCは、分解能が12ビットで、SPI(Serial Peripheral Interface)を備える製品です。角速度は、MEMS(Micro Electro Mechanical System)ベースのIMUが備えるジャイロ・センサーを使用して測定します。このIMUは、I2Cのインターフェースを介し、MCU(MAX32666)によって制御します。
このMCUは、回路のパワー・サイクリングを制御するためのファームウェアを実行します。また、ADCとIMUから出力されるサンプル・データを収集します。更に、それらのデータをBLEのパケットに格納し、定期的に送信する役割を担います。
消費電力の最小化
基板上に実装された回路については、厳格なデューティ・サイクリングを適用します。その目的は、平均消費電力を最小限に抑えることです。力の検出はサンプリングによって行います。そのサンプリング・レートは25Hzです。それに応じ、40ミリ秒ごとに1回、MCUはディープ・スリープ・モードから復帰します。同モードにおいて、MCUの内部回路のほとんどは、電源がオフの状態または低消費電力の状態になっています。MCUが通常動作に復帰したらファームウェアが実行されます。それによって様々なアナログ回路が低消費電力の状態から復帰します。例えば、ストレイン・ゲージのブリッジには励起電圧が供給されます。そのパスにはスイッチとして機能するMOSFETが直列に配置されています。このMOSFETは、ブリッジが使用されていない期間はオフになります。つまり、ブリッジに流れるDC電流が遮断されるということです。このブリッジは、3VとGNDの間に配置された1kΩの抵抗と等価です。そのため、スイッチがオンになっているときには、ブリッジに3mAのDC電流が流れることになります。この電流が常に流れていると、トータルの平均消費電力が大幅に増加することになります。計装アンプは、シャットダウン用の入力ピンを備えています。このピンは、MCUのGPIO(General-purpose Input/Output)を介して制御されます。計装アンプは、力の信号がサンプリングされる短い期間を除いて、シャットダウンの状態で保持されます。同様に、ADCは、力の信号がサンプリングされて、そのデータが読み出される直前と直後を除けば、低消費電力の状態に維持されます。ADCを低消費電力の状態とアクティブな状態の間で遷移させるためには、SPIのコマンドを使用します。IMUの消費電流も最小限に抑えなければなりません。この例では、IMUのジャイロ・センサーだけを使用し、加速度センサーは使用しません。そこで、加速度センサーは常に低消費電力のモードに設定しておきます。ジャイロ・センサーは、サンプルを取得し、それを読み出すために必要な最小限の時間だけアクティブになります。残りの時間は低消費電力の状態に保持されます(後述しますが、IMUの使わなければ更に消費電力を削減できます)。角速度は、1.6Hzのレートでサンプリングされます。力と角速度のサンプリングを実行し、サンプル・データを保存したら、MCUはディープ・スリープ・モードに戻ります。一定数のサンプル・データが蓄積されたら、MCUはそれらをBLEのパケットにまとめて送信します。なお、この基板上の回路は使用しないときには電池から切り離します。そのためには、電池と直列に配置したスライド・スイッチを使用します。
IMUを含む基板上の回路が動作しているケースについて考えます。その場合、3Vの電源に対応する平均消費電流は760µAとなります。つまり、平均消費電力は2.3mWです。これは、ホイートストン・ブリッジを含むシステム全体の値です。電池(CR2032)のエネルギー容量が225mAh(代表値)である場合、その動作寿命は約296時間になります。ここで、IMUを使用しなければ、3Vの電源に対応する消費電流は640µAまで低下します。つまり、平均消費電力は1.9mWです。この場合、電池の寿命は352時間になります。
角速度の推定
ここで図4をご覧ください。これは、自転車のクランク・アームにかかる力を1回転にわたって測定した結果です。その力の接線方向の成分をN単位で示しています。これを見ると、クランク・アームが回転している際、加えられた力の接線方向の成分は周期的に変化することがわかります。
上記の内容を踏まえると、原理的には、力の信号に信号処理を適用することで角速度を計算できるはずです。つまり、IMUを使わなくても済みます。その信号処理のアルゴリズムは、例えばMATLAB®を使ってコーディングすることができます。基本的なアプローチは次のようなものになります。まず、連続した力のサンプルのベクトルを取得します。その上で、以下の式で与えられるサイン波にフィッティングします。
ここで、Aは振幅、ωは角速度、φは位相、Bはオフセットです。
最適化された目的関数(cost function)は次式のようになります。
この目的関数は、最小2乗法をベースとしています。ŷは測定されたデータ・ポイントのベクトル、yは式(6)の出力です。MATLABの最小探索非線形計画法ソルバ(minimum search nonlinear programming solver)を使用し、式(7)のCの値が最小になるA、ω、φ、Bの値を求めました。ここでは、得られたωの値だけを使用します(他の値は使用しません)。サンプル・データにおいて現在のベクトルのωを推定したら、次の連続した一連のサンプルを収集してそのプロセスを繰り返します。まれに、最小化探索が収束せず、コストが通常よりもはるかに高くなることがあります。そうしたケースでは、そのωの計算値を破棄し、前の値を使用するとよいでしょう。
このアプローチが適切であることを証明するために、BLE Snifferを使用して、自転車の運転中に送信された一連のパケットを取得しました。そのパケットには、角速度と力のサンプルの両方が含まれています。ここでは、パケットの内容を抽出し、MATLABのスクリプトを使用して後処理を実行しました。その結果を図5に示します。これは、1分間にわたる回転を対象とし、推定によって得た抑揚(cadence)とジャイロ・センサーによる実測結果に基づく抑揚をプロットしたものです。
エネルギーの測定
サイクリストによる機械的な仕事は、単にパワーの時間積分で表されます。本稿で示したシステムを使用すれば、サイクリストが消費したエネルギーを計算するためのデータを十分に得ることができます。アプリケーション・ソフトウェアは、パワーを数値的に時間積分し、実施された機械的な仕事をJ単位で算出します。その結果に対して変換係数をベースとしたスケーリングを適用すれば、J単位のエネルギーの値をkcal(キロカロリー)単位の値に変換することが可能です。ここでは、身体は1Jの仕事をするために4Jの化学エネルギーを消費するという仮定を使用します。そうすれば、更に4という倍率を使用することで、サイクリストが消費したkcal単位のエネルギーの値を推定することができます。
パワー・メータのデモンストレーション
筆者らは、本稿で説明したソリューションを定置型のエクササイズ・バイクに実装しました。そのデモンストレーションの様子を「Bicycle Power Meter」として公開しています。このデモでは、2つのストレイン・ゲージをエクササイズ・バイクの左側のクランク・アームに貼り付けています。また、電子回路を含む小さな基板をクランク・アームに取り付けてストレイン・ゲージに配線しました。
まとめ
本稿では、自転車用のパワー・メータによって力の値を検出するアプリケーションを紹介しました。そのための回路には、低消費電力で高精度の計装アンプとしてMAX41400を適用しています。また、MCUとしては低消費電力のMAX32666を使用しました。更に、アナログ・デバイセズが提供するいくつかのパワー・マネージメントICを組み合わせています。このソリューションの平均消費電力は、わずか2.3mWに抑えることができます。