GROM 納車

主に通勤の足として HONDA - GROM を購入して3週間ほど経過した。 自分の覚えに納車前後のことをメモしておく。

購入先は高松のGRAND PRIX

2026年3月に中古でも良いので GROM がないか相談したところ、原付ニ種はそもそもあまり出てこないこと(使い勝手が良く、使い潰す人が多いのでは?とのこと)、今年モデルチェンジする予定があるとの話が聞けたので、2026年モデルの発表を待って2026年5月23日に予約した。 事故防止のためには目立ってなんぼの精神で、かつ迷った時は高いものを選ぶという家訓を元に、アンダーカウル標準装備のゲイエティーレッドを選択した。2026年モデルはカラーリング変更だけで、性能的には前と変わらず、型式もJC92のまま(ただし、値段は引き上げられた)。

20年以上前にバイクに乗ってた際に使っていたヘルメットは保管していたが、加水分解等でボロボロになっていた。 予約後、納車前に今どきのヘルメットを見学するためパーツランド イワサキに寄ったところ、ちょうどバイザー付きでシールドタイプのSHOEI - HORNET ADVの割引セールをしていた。 店頭在庫はXLまでで希望のXXLはなかったが、取り寄せすると何週間も待たされること、XXLは外郭はXLと変わらず、内装は店頭で調整(カット)できます、とのことでその場でXLで購入を決めて、調整してもらった。ヘルメットも派手なものにしたかったが、こちらはペイントだけで値段が数万円違う世界だったので、性能に差がなければ良しとして白を選択した。

発売日の2026年6月19日はバイク屋までヘルメット等を持参し、琴電と徒歩で移動して GROM を受け取った。

受け取り後は慣らし運転も兼ねて、50Kmほど走って三豊の「はまんど」に昼飯を食べに行った。 燃費は燃費計上で70Km/L超と優秀だった。

公式ドキュメント

2026-04-28 DCモーター風ブラシレスモーター(その2)

「GA24Y-2430」と「GA24Y-2418」には5ピンのコネクタ(SH ?)があり、4本繋げば動作する。 一般的なDCモーターと異なり、駆動用電源のプラス・マイナスを逆接続しても動作しない

  • 黒:駆動用電源プラス
  • 赤:駆動用電源マイナス
  • オレンジ:モーター回転方向制御
  • 白:モーター速度制御。負論理のPWM指定。arduinoなら analogWrite(PIN, 255) で停止し、analogWrite(PIN, 0) で最高速となる。
  • 残りの1本(黄)は、回転速度の確認用。

自分の購入したものは、片側が配線済みのコネクタ付属で、細い線に心配したが、消費電流が少ないため、特に問題なく動作している用に見える。回転数が近い以下で動作確認した。

GA24Y-2430 12V版 ギヤ比16:1

  • 無負荷時:375rpm、0.18A
  • 定格負荷:300rpm、0.5A、0.6Kg.cm
  • ストール時:2Kg.cm、1.9A

GA24Y-2418 24V版 ギヤ比25:1

  • 無負荷時:360rpm、0.1A
  • 定格負荷:304rpm、0.2A、0.8Kg.cm
  • ストール時:2.5Kg.cm、0.86A

1モーターあたりPWM出力が1本、デジタル出力が1本なので、ATMEGA328Pでも4モーターを動かす事ができる。 その1の動画では次のような回路で4モーターを制御した。(黄は未使用)

DCモーター風ブラシレスモーター(その1)

aliexpressなどで、遊星ギヤボックスとの組み合わせで販売されているDCモーター風のブラシレスモーターがある。

precisionminidrives.com

precisionminidrives.com

「GA24Y-2430」と「GA24Y-2418」という型番で、どちらもギヤボックス部分は遊星ギヤで、

  • 出力軸は4mmか6mmのDカットシャフト
  • 対応電圧は12Vと24V
  • 2430のモーターについてはマブチモーターの「RE-280」と大体同じサイズでモーター長が約30mm、2418はモーター長が約18mm

一般的なブラシレスモーターと異なり、モータードライバ内蔵のため、マイコンからの信号線は直結で動かすことができるのが特徴で、aliexpressのショップでは1つ2,000円ほどで販売されている。 なお、GA24Y-2430と同サイズで「GA24Y-370」という型番もあるが、こちらは一般的なDCモーターになっている。

内部構造は正確かどうかは分からないが、コチラ「https://ja.aliexpress.com/item/1005009554914369.html」で確認できる(「さらに表示」で開く)。

PD20Vで最大1.5Aの「Xiaomi 33W Power Bank 10000 (Integrated Cable) 仕様、機能 | Xiaomi 日本」を動力源にGA24Y-2418 を4本搭載したロボットの動きがこのような感じで、比較的トルクもあるように思う。

BNO055のyaw軸の問題

こちらのブログでBNO055の問題点を知った。

l52secondary.blog.fc2.com

yaw軸の問題については同様に体験していたので、クォータニオンについていろいろ調べてみたが、よく理解できなかったため、とりあえず先のブログのコードを参考にクォータニオンで値を取得し、オイラー角に変換してみた。改善したように思うが、それでもずれるときはずれるみたい。

旧版C-Style Ver.190706で動作確認してみた。 「C:\Daisen\C-Style for TJ3B V190706\Build\Build_V190617\D_I2C.c」の「UINT get_bno(BYTE dno)」を次のように書き換えると試せる。 (注意)以下のコードは無保証です。

UINT get_bno(BYTE dno)
{
    BYTE adrs = BNO_ADRS;
    BYTE n;
    U_UINT d;
    float wf, xf, yf, zf, ysqr, t0, t1, t2, t3, t4;
    int xd, yd, zd;
    // DSR1603:9D-Compass(BNO055)の初期設定
    if (gIsSetDSR1603 == false) set_bno();
    /*
     * BNO055 datasheet
     * https://cdn-shop.adafruit.com/datasheets/BST_BNO055_DS000_12.pdf
     * 3.4 Axis remap 
     * 3.6.5.5 Orientation (Quaternion)
     */
    n = 0;
    gI2C_Buf[n++] = 0x20; // Register 0x20:AZIMUTH(LSB-MSB), 0x22:ROLL(LSB-MSB), 0x24:PITCH(LSB-MSB), 0x26:PITCH(LSB-MSB)
    if (i2c_send(adrs, n) == false) return(gDeg[dno]);
    if (i2c_recv(adrs, 8) == false) return(gDeg[dno]);
    //
    n = 0;
    d.L = gI2C_Buf[n++];
    d.H = gI2C_Buf[n++];
    wf = (int) d.W;
    d.L = gI2C_Buf[n++];
    d.H = gI2C_Buf[n++];
    xf = (int) d.W;
    d.L = gI2C_Buf[n++];
    d.H = gI2C_Buf[n++];
    yf = (int) d.W;
    d.L = gI2C_Buf[n++];
    d.H = gI2C_Buf[n++];
    zf = (int) d.W;
    wf /= 16384; // 2^14
    xf /= 16384;
    yf /= 16384;
    zf /= 16384;
    /**
     * クォータニオン→オイラー角変換は以下を参考にした
     * http://l52secondary.blog.fc2.com/blog-entry-50.html
     * センサモニタ
     * 0(dir(yaw)), 1(pitch), 2(roll)
     * yaw   :左向359←0→1右向
     * pitch :前下がり90←180→前上げ270
     * roll  :右下がり0←90→右上がり180
     */
    ysqr = yf * yf;
    // X-axis rotation
    t0 = 2.0 * (wf * xf + yf * zf);
    t1 = 1.0 - 2.0 * (xf * xf + ysqr);
    xd = (int)(atan2(t0, t1) * 57.2957795131) + 180; // オリジナルとオフセットを揃える
    xd = (xd + 360) % 360;
    gDeg[1] = (UINT) xd;  // pitch
    // Y-axis rotation
    t2 = 2.0 * (wf * yf - zf * xf);
    if (t2 > 1.0) {
        t2 = 1.0;
    } else if (t2 < -1.0) {
        t2 = -1.0;
    }
    yd = (int)(- asin(t2) * 57.2957795131) + 90; // オリジナルと向き・オフセットを揃える
    yd = (yd + 360) % 360;
    gDeg[2] = (UINT) yd;  // roll
    // Z-axis rotation
    t3 = 2.0 * (wf * zf + xf * yf);
    t4 = 1.0 - 2.0 * (ysqr + zf * zf);
    zd = (int)(- atan2(t3, t4) * 57.2957795131); // オリジナルと向きを揃える
    zd = (zd + 360) % 360;
    gDeg[0] = (UINT) zd;  // yaw
    return(gDeg[dno]);
}

ばらせないオムニホイール(その2)

前回からの続き。

Fusionで作成したデータをボディごとに「メッシュとして保存」でSTL化すると、パーツが多い場合にスライサー側での位置合わせは不可能といえるので、1データをまるごとSTL化する。

まずは新規デザインを作成。

新規デザインに先ほど作成したデータをドラッグ&ドロップ。

初期位置は適当にOKする。印刷向きはスライサーでも変更できる。

ドラッグ&ドロップしたデータがコンポーネントとして作成されるので、それを「メッシュとして保存」し、STL化する。

スライサー(Bamboo Studio)で保存したSTLを開き、印刷向きは自動調整。

レイアウトも自動で調整。A1 miniだと柱に近い位置にレイアウトされる。

あとは適宜印刷。