きっかけ
Mini-Zのギヤを自作・比較していく中で、写真から歯先径・歯元・圧力角・偏心量・歯形の左右差といった幾何学的な精度を測る取り組みを続けている。しかし以前、PETG製8Tギヤが市販POM製ギヤより歯形のばらつきは大きいのに、実走行での性能はむしろ良いという結果が出た。つまり、幾何学的な精度だけではギヤの実性能を説明しきれない。
そこで、幾何学的特徴と「RPM対電流」「RPM対騒音」という実測の特性曲線――いわばギヤの性能指紋――を対応づけられれば、単一の寸法数値では見えない性能差の原因に迫れるのではないか、と考えた。そのための自動測定装置を組んだ記録が本稿である。
装置の全体構成
- Arduino UNO
- IRLZ44N(ロジックレベルNチャネルMOSFET)によるモーターのローサイドスイッチ制御
- 赤外線モジュールによるRPM検出(割り込み方式)
- INA231(I2C)による電流測定
- アナログマイクによる簡易騒音測定
- 定電圧電源(4.8V固定)
- 増設プロトシールドの汎用スイッチによる手動トリガ
回路はシンプルで、Arduinoの1本のPWM出力(D9)でIRLZ44Nのゲートを駆動し、モーター電源側の+を直接モーターへ、-をIRLZ44NのDrain-Source経由でGNDへ落とす、一般的なローサイドスイッチ構成である。ゲートには100〜220Ωの直列抵抗と10kΩのプルダウンを入れ、モーター端子間にフライホイールダイオードを入れている。
毎回同じ条件で測るための自動プロファイル
測定のたびに手でスロットルを操作していては、条件を揃えるのが難しい。そこで、スイッチ(またはシリアルコマンド)を1回押すと
- 0%→設定デューティまで、指定時間かけて直線的にランプアップ
- 設定デューティを一定時間保持
- 0%まで指定時間かけてランプダウン
という固定プロファイルを自動実行し、その間の時刻・PWM値・デューティ・RPM・電流・騒音をCSV形式でシリアル出力する仕組みを組んだ。これにより「スイッチを押すだけで、毎回同じ条件の試験が走る」という再現性を確保した。
つまずいた点と、それぞれの対処
ここからが本題である。単純な仕組みに見えて、精度を追い込む過程でいくつもの問題にぶつかった。
① ランプ時間が急すぎた
最初はランプアップ3秒で組んだが、急激すぎるとの指摘を受け30秒に変更した。これにより加速カーブ上のサンプル点数も約10倍に増え、後述の異常値判定とも相性が良くなった。
② モーターがPWMなしで回り出す(配線ミス)
ある時点で、Arduinoを繋がずゲートを直接GNDに落としても、電源を入れただけでモーターが回り出す症状が発生した。FETを完全に取り外しても症状が消えなかったため、原因はFETではなく別経路にあると判明。最終的に、単純な配線の誤りが原因だった。
③ 無負荷で低デューティでも頭打ちになる
デューティ20〜25%程度で早くも無負荷最高回転数(6500rpm付近)に達し、それ以上デューティを上げても回転数がほとんど変わらず、電流だけが増え続ける現象が発生した。これは、ArduinoのanalogWrite()のデフォルトPWM周波数(約490Hz)が低すぎ、無負荷状態で電流がPWM周期ごとにゼロまで落ちきる「不連続導通」が起きていたためと考えられる。この状態では、実効電圧がデューティ比の単純計算より高くなり、低デューティで早期に頭打ちになる。
対策として、Timer1のプリスケーラを変更し、D9のPWM周波数を約31.25kHzまで引き上げた。
TCCR1B = (TCCR1B & 0b11111000) | 0x01;
これにより、デューティに対する回転数の伸びがかなり素直になり、中間RPM帯にも測定点が広がるようになった。
④ PWM周波数を上げたら、今度はRPMが実際より高く出た
レーザー回転計での実測が4100rpm程度なのに対し、装置側は7300〜7400rpmと、約1.8倍の水増しが発生した。原因は、PWM周波数を約64倍に引き上げたことでIRLZ44Nのスイッチング回数が激増し、そのノイズがフォトセンサーの信号線に伝導ノイズとして乗り、余分なパルスとして誤カウントされていたためだった。
調査の結果、フォトセンサーのGNDが、IRLZ44NのSource(モーター電流が最も暴れる場所)のすぐ隣のピンに挿さっていたことが判明。これをArduinoのGNDピンの、Sourceからできるだけ離れた位置に挿し直したところ、RPMの水増しは大幅に改善した(7300rpm→4200〜4800rpm程度)。放射ノイズではなく、GND経由の伝導ノイズ(グランドバウンス)が主因だったと考えられる。
⑤ ソフトウェアデバウンスの追加と改良
物理対策後も、単発の飛び値(本来値の1.5〜2倍程度)がわずかに残っていたため、ソフトウェア側でも対策を入れた。
最初は「4000μs(15000rpm相当)未満のパルス間隔は無視する」という絶対閾値でのデバウンスを実装したが、これは高RPM域(周期が短い)でノイズによる半周期パルスをすり抜けさせてしまう欠点があった。そこで、「直近の正常な周期の半分未満なら捨てる」という相対判定に変更した。
unsigned long threshold = (lastAcceptedPeriod > 0)
? (lastAcceptedPeriod / 2)
: MIN_PULSE_INTERVAL_US;
if (p < threshold) {
return; // ノイズとみなして周期にもlastPulseTimeにも反映しない
}
これにより、RPM帯によらず一貫した基準でノイズパルスを弾けるようになった。
⑥ RPM算出方式の見直し
当初は直近1回転だけの周期からRPMを計算していたが、これは反応が速い反面、周期の揺らぎをそのまま拾ってしまう。目的が「正確なRPMに対する消費電流」の対応づけである以上、測定周期(200ms)内に入った全パルスの周期を合計し、パルス数で割って平均周期を出してからRPMに変換する方式に変更した。これは「周期を平均してからRPMに変換する」という数学的に正しい順序であり、固定回転数での平均に比べて、低RPM域での応答遅れが常に一定(最大200ms程度)に収まるという利点もある。
⑦ 後処理での外れ値除去
ハードウェア・ソフトウェア両面の対策を重ねてもなお、時系列近傍の値から大きく外れる単発点がわずかに残った。これは、固定のRPM値で足切りするのではなく、時系列で前後の値の中央値から一定割合(12%程度)以上ずれた点だけを外れ値として除外する、移動中央値フィルタで後処理することにした。固定閾値と違い、ギヤが変わって回転数レンジ自体が変化しても、同じロジックがそのまま使える。
⑧ 電流補正係数の見直し
既存の測定プログラムには、corrected_mA = SLOPE × raw_mA + INTERCEPT(SLOPE=1.14, INTERCEPT=18.0)という補正式が入っていた。電流センサーはINA226からINA231へ切り替えていたが、この補正係数はINA226時代に出したものだった。
定電圧電源側の電流表示が240mAのとき、この補正式をかけた測定値は280mAと、約17%も過大に出ていることが判明した。逆算すると、INA231の生値は約230mAで、電源実測との差はわずか10mA(4%)程度だった。これを受けて、SLOPE=1.0, INTERCEPT=0.0(無補正)に変更した。
なお、INA231とINA226のレジスタマップはTIの公式サポートフォーラムで同一であることが確認されており[1]、使用しているシャント抵抗も基板記載の「R100」表記から0.1Ωで、ライブラリの設定と一致していることを確認した。系統的なズレの主因は、レジスタやシャント抵抗値の不一致ではなく、旧チップ時代の経験的補正係数を新チップにそのまま流用していたことにあったと考えられる。
より高精度な校正のためには、定電流負荷装置(今回は15W・3〜21V対応のUSB電子負荷)を使い、複数の電流点で電源側の設定値とINA231の生値を突き合わせ、最小二乗法で正しいSLOPE・INTERCEPTを算出することが望ましい。固定抵抗と違い、狙った電流ぴったりで校正点を作れる利点がある。
送信機測定との数値の違い
同じモーター・同じギヤ・同じ4.8V電源で、送信機(ESC経由)で測定したデータとFET直結のベンチテストを比較したところ、4000rpm付近で送信機側が約400mA、ベンチテスト側が約270mAと、130mA近い差があった。
原因を切り分けたところ、送信機側の測定値には受信機・サーボの待機電流、およびミニッツ純正ESCのスイッチング損失やBEC回路の変換ロスが含まれていることが判明した。駆動系(デフ・シャフト・4輪含む)自体は両者で同一構成だったため、この差は電子部品側の消費であり、ギヤの機械的な性能とは別物である。
この結果から、ギヤ単体の性能を比較する目的においては、電子部品のノイズが乗らないFET直結のベンチテスト測定の方が適切である、という結論に至った。
現時点での到達点
一連の対策(PWM周波数変更、GND配置見直し、ソフトウェアデバウンス、時間窓平均、外れ値除去、電流無補正化)を積み重ねた結果、RPM対電流・RPM対騒音の6次多項式近似で、決定係数R²は電流0.92、騒音0.94程度まで到達した。対策前(R²≈0.70程度、RPM点が3000rpmと5000rpm付近の2箇所に偏る状態)と比べ、RPM全域にわたって滑らかで連続的な特性曲線が取れるようになっている。
今後の課題
- 電子負荷を使った複数点での正式な電流校正
- 同一ギヤの複数回測定によるばらつき(偶然誤差)の把握。数%規模の僅差を「意味のある差」と言えるかは、これによって判断できる
- 実際に複数のギヤ(PETG製・POM製など)でこの装置を使い、幾何学的特徴(歯先径・歯元・圧力角・偏心量・歯形の左右差・歯形のばらつき)とRPM-電流特性を対応づける相関解析
参考
[1] TI E2E Support Forums, "INA231: the difference of register map between INA231 & INA226" https://e2e.ti.com/support/amplifiers-group/amplifiers/f/amplifiers-forum/1069915/ina231-the-difference-of-register-map-between-ina231-ina226