2017年2月14日火曜日

AD7124-4

「チューブラーがパンクしちゃったつもり貯金」で製作するパワーメーター「TP-002」に採用したADコンバーターltc2472の読み取り値が安定しない。
とある週のゼロオフセット値(負荷ゼロでクランクを地面に垂直に向けたときの値)
火曜日:745
水曜日:746
木曜日:743
金曜日:750
土曜日:728

ADコンバーターが週末で心躍ったのか、値が大きくずれる。
これでは、週末に必ずゼロオフセット値を校正しなければならない。
原因はあれこれ考えられるが、思い切ってADコンバーターを24bitのAD7124-4に変えてみた。




早速クランクに付けたひずみゲージの値を取得。


有効ビット数は約20bitか。これは期待できる。

TP-002を仮組して、パワータップハブと比較してみた。


TP-002とパワータップハブのそれぞれについて、3回計測平均値をグラフ化。
縦軸がワット数。
上下の振れが大きい方がパワータップハブ。
24bitADコンバーターは16bitよりも安定した数値を得られ、
「今のは明らかに数値がおかしいだろ」というのがない。

グラフの後半、TP-002の値がパワータップハブより低めに出ている。
これは、ひずみゲージに電流を流しすぎた結果と推測。
ひずみゲージは電流制御をしないと、最初の数十分は数値が少しずつ、ずれてしまう。
今回も、電流制御なしの簡易セットアップだったので、その点が正確にデータに現れていると思う。

「最初の20分は安定しないパワーメーター」が某メーカーから市販されていたこともあった。


実験を繰り返すも、AD7124-4でもゼロオフセット値が日によってずれると判明。
ひずみゲージが壊れてるのか?

(2017年3月21日更新)
ひずみゲージではなく、ひずみゲージのブリッジ回路が損傷しており、ゼロオフセット値がずれる現象がでていました。







2017年2月1日水曜日

PZ4980修正点

4980円で製作するポン付できるパワーメーターPZ4980、ひずみゲージにこちらのタイプ(shear gauge)を試していた。



メリットは、クランクの腹につけるので、目立たない。

PZ4980を仮組して、ケイデンス60回転で回してみた。

シューズをMTBのクリートでペダルと固定している状態でも、ペダルの外側を踏むようにすると、クランクアームが外側にしなる力やクランクが捻じれる力も拾ってしまい、パワー値が異常に上がる。




同一負荷、(ほぼ)同一のケイデンスで、200w弱だったパワーがペダルの外側方向を踏んだだけで、250wオーバーに。
結論としては、このひずみゲージは、ボツだと思うクランクのねじれを測定し、ペダルの内側か外側か、どの位置を踏んでいるか検出するのにつかうべき。

また、上記のパワー値の推移も、上下に振れが大きすぎる。
16BitのADコンバーターが怪しいが、扱いが楽なので、なんとか使い続けたい。

こう悩んでいると追い打ちをかけるように、PZ4980に採用したArduino Leonardoがソフトウェアの書き込み失敗で動作不能に。

まあ、ゆっくりやっていこう。

2017年1月24日火曜日

nRF52 SPIにハマる

nRF52はSPIのピンアサインを自由に変えられる。

SPIのピンアサインをADコンバーターのSPIピンに向かい合うように設定すると、結線の半田付を楽できる。


しかし、ここでもハマった。

sdk_config.hにあるSPIのピンアサインを変更するだけでは動かない。

..\nRF5_SDK_12.1.0_0d23e2a\examples\bspにある
pca10040.hとd52_starterkit.hも修正してなんとか動いた。

#define SPIM0_SCK_PIN   7  // SPI clock GPIO pin number.
#define SPIM0_MOSI_PIN  2  // SPI Master Out Slave In GPIO pin number.
#define SPIM0_MISO_PIN  6  // SPI Master In Slave Out GPIO pin number.
#define SPIM0_SS_PIN    11  // SPI Slave Select GPIO pin number.

さらにADコンバータにコマンドを送る際は、SPI MODE2に設定する必要あり。

これで動いたと思いきや、今度は、ADコンバーターにノイズが多く、コンバートされたひずみゲージの値が、期待されている値と程遠い値を返す。
毎晩、nRF52を張り付けたクランクを外して、nRF52のソフトウェアを書き換え、またクランクを付け直してペダリング、結果NG、を繰り返し悩むこと1週間。

原因は、ひずみゲージへの配線の半田付不良だった。
不器用なことには絶対の自信があるので、こんなことも仕方がない。

半田を正確につけると、期待通りの数値がでているように見える。

これで、「チューブラーがパンクしちゃったつもり貯金」で製作するANT+対応パワーメーター「TP-002」の試作も峠を越えたか。




2017年1月16日月曜日

nRF52到着

nRF52の開発キットが到着。

nRF52はANT/BLE送信機付マイコンで、パワーメーターには最適なチップ。
おそらく市販品のパワーメータもnRF52の前モデルnRF51を使用していると推測。

これでパワーメーターを作ると、ひずみゲージ、ADコンバーター、nRF52、ボタン電池およびREEDスイッチでできてしまう。


前作の2013年バージョンより大幅に小型化でき、消費電力も低いため、市販品のようにボタン電池駆動が可能。
配線も少なく、誰でも作れてしまうかも。

製作コストは4980円を超えると予想するが「チューブラーがパンクしちゃったつもり貯金」でまかなえるのでモデル名はTP-002(仮称)

ADコンバータとnRF52の重量は合計で1グラムぽっきり。



nRF52を使用したシステムの開発は苦戦中。
1990年代のPCのようで、お買い得SCSIカードを買ったものの、CONFIG.SYSのメモリ設定とマザーボード上のIRQジャンパ設定を合わせ、且つ物理的はPCIコネクタの微妙な接続がうまくできると、はじめて動作する、そんな感じ。
現代のようにUSBポートに刺せば何でも動くというわけにはいかない。
でもANT+対応のお手軽パワーメーターの製作という夢(妄想?)を実現するには、このハードルは超えなければ。

nRF52SDKにあるバイク用パワーメーターのサンプルコードをコンパイルしても、そのままでは動かなかった。

以下、ハマったところ。
1.以下のヘッダファイルをpathの通ったフォルダへ。
..\nRF5_SDK_12.1.0_0d23e2a\components\softdevice\s212\headers

2.以下のヘッダファイル内にANTキーを記入
..\nRF5_SDK_12.1.0_0d23e2a\components\ant\ant_key_manager\config
ant_key_manager_config.h

苦闘の末、なんとか任意のワット数(555(GoGoGo)ワット)をANT+規格で送信し、PCおよびANT対応スマホで受信するとこまでは漕ぎつけた。


つづく