← プロジェクト概要に戻る Stretch ①C Step3 合格

エンコーダでホイール角速度を見る — AS5600 → ww

倒立はできた。でもホイールが一方向に加速して張り付く問題が残っていた。
解決の第一歩は「疑似 bias」ではなく、本当の角速度 ωw を測ること。 磁気エンコーダ AS5600 を付け、無線コンソール JC4827 の画面と CSV に ww を載せた(外ループはまだ入れない)。

2026年9月10日 | slug rw-pendulum-stretch-1c | 正本 rw-pendulum-wheel-bias | env balance_atoms3jc4827

Step 3 合格(2026-09-10)
LINK 中に JC4827 LIVE 行の ww が手回しで動く。CSV は asOk=1。 制御(PID)は変えていない — 測って見せるだけ
Stretch ①C Step3 — ATOM 倒立機と JC4827。LIVE に ww18.98 表示、LINK・SAFE
Step3 実機 — 上: ATOM+AS5600 付きリアクションホイール。下: JC4827 に ww18.98(ホイール角速度 rad/s)が表示されている

Chocofon(B)

ホイールがずっと同じ向きに回り続ける… 見えないものを測らないと直らない?

AIチューター

まず机上で読む → 筐体に付ける → テレメに載せる。外ループは最後。

管理人

①C GO。Step ごと確認。Step3 合格。Step4(外ループ)は別 GO。

なぜエンコーダか

ミニ④’ で分かったこと:

  • 機械の左右偏りはおもりでだいたい潰せる
  • ソフトの疑似 bias(指令 u の積分)では「両方向行き来」まで届かない
  • 足りないのは 外側の自由度 — ホイール角速度 ωw → 0 に寄せる外ループ

そのためにまず ωw を測り、TX/CSV で見えるようにする(このページの Step0〜3)。 外ループ本体は Step4 以降。

呼称の注意: これはミニ⑤(自律立ち上がり)ではないStretch ①C(段C・エンコーダ)

この Stretch の Goal

完走定義:
ホイール角速度 ωw を測り、外ループで ωw→0 に寄せて、 一方向加速に張り付かない倒立を机上で示す。
区分内容
合格(全体) 倒立 30秒級を維持したまま、ホイールが両方向に行き来する(または一符号に張り付かない)
測る量 AS5600 → ωwe / u / pwm、hold(JC4827 CSV)
汚さない ATOM 制御ループで重い printf しない。ログは JC4827/CSV

Step 0〜3 まで(ここまでの結果)

Stepやったこと結果
0・2 取付台・マグネット・すき間調整(写真) 取付済。すき間はモータ位置で合わせ、モータねじで固定
1 机上読取だけ(as5600_readout_atoms3・モータ OFF) 手回しで角度/ω が滑らか。agc=255 は残るが実用可
2 筐体前面に固定・読取確認 読取は実用レベルで OK
3 テレメに ww(rad/s)を載せる。外ループなし 合格 — 画面・CSV で ww が動く。asOk=1
4 外ループ(ωw→0)を薄いゲインで入れる 管理人 GO 待ち
5 評価 CSV+グラフで Before/After 未着手

Step 0〜2:AS5600 の取り付け

ホイールの中心マグネットと、前面のAS5600で角度(→角速度 ωw)を読む。 センサ側の台を先に作り、マグネットをホイールに付け、最後にすき間を合わせる。

すき間の合わせ方(ポイント)
センサ台を無理に前後させず、モータ(ホイール)の位置をスライドして調整する。
決まったらモータねじで固定。目安はマグネット〜センサ面 1〜2 mm

1. AS5600 取り付け台を作る

3D プリントの三又台に AS5600 基板をねじ止め。配線は Port.A 向け (SDA=G1 / SCL=G2、VCC・GND。DIR は GND 側)。

AS5600 基板を白い三又取り付け台にねじ止めしたところ
取り付け台 — 中央に AS5600。DIR / SCL / SDA / GPO 側から線を出す

2. ホイールにマグネットを装着

黄色いリアクションホイールの回転中心にネオジムマグネットを付ける。 センサは、このマグネットの真向かいになる位置に来る。

黄色いホイール中心のマグネットと、取り付け台上の AS5600
中心の銀マグネット(ホイール側)と AS5600(台側)。中心合わせが大事

3. 筐体に載せ、すき間をモータ位置で調整

取り付け台をロッド側に固定し、ホイール前面と向かい合わせる。 すき間はセンサ台ではなく、モータ/ホイールを前後して合わせ、モータねじでロックする。

ATOM・黄ホイール・前面 AS5600 が並んだ側面。マグネットとセンサのすき間が見える
側面 — ホイール中心マグネットと AS5600 のすき間(約 1〜2 mm)
前面から見た三又取り付け台と黄ホイール。ロッドに台を固定
前面 — 三又台をロッドに載せた状態。すき間が決まったらモータねじで固定

このあと Step1 の机上読取(as5600_readout_atoms3)で手回し確認 → Step3 で ww テレメへ。

Step 3 でわかったこと

見える数字

名前意味どこで見る
omega 振子の角速度(dps) 従来どおり CSV/画面
ww ホイール角速度 ωwrad/s JC4827 LIVE 行・CSV 末尾付近
asOk AS5600 認識(1=OK) CSV(flags bit1)

ハマりどころ(学び)

最初 Wire1(I2C1)で Port.A を読もうとしたら、IMU と同じバスと衝突して ww がずっと 0.00 になった。
正解は M5.Ex_I2C(I2C0)。ピンは Step1 と同じ SDA=G1 / SCL=G2
  • ATOM と JC4827 は TeleTelemetry同時更新(片方だけだと LINK が取れない)
  • 制御ループ内では AS5600 を読むだけで printf しない(遅延で倒立が崩れる)

CSV 列(評価用)

t_ms,seq,link,peer,armed,e,omega,u,pwm,hold,kp,kd,ki,trim,bias,biasOn,asOk,ww

JC4827 Serial で v → CSV ON。手回しで末尾 ww が動くことを確認。

再現(書き込み)

# ATOM(倒立 + AS5600 → tele)
cd PlatformIO/PlatformIO_Projects/rw_pendulum_torque
pio run -e balance_atoms3 -t upload

# JC4827(画面 ww + CSV)— 同時更新必須
cd PlatformIO/PlatformIO_Projects/jc4827_tx_tuner
pio run -e jc4827 -t upload
pio device monitor -e jc4827 -b 115200

机上読取だけ戻すとき: pio run -e as5600_readout_atoms3 -t upload

次にやること

管理人:
Step3 合格を認める。外ループ(Step4)は別途 GO。
測れて見せられる状態になったので、ゲイン入れは慎重に・薄くから。
  • Step 4 — ωw→0 の外ループ(薄いゲイン)
  • Step 5 — 評価 CSV+グラフで Before/After

正本: rw-pendulum-wheel-bias.md | コード: src_balance_atom/main.cpp | 評価: JC4827 無線コンソール
前: ミニ④’ 片側回転調査プロジェクト概要