YOBITSUGI AI呼継AI 無料ではじめる

設計・エンジニアリングの方へ

要求から、図面と検証まで。

機構の 3D モデルと図面、回路図と部品表、HDL の設計と波形、有限要素法の解析。ふつうの言葉で頼むと、YOBITSUGI AI がスクリプトから組み立て、開ける形式のファイルで届けます。スクリプトも一緒に残るので、同じものをもう一度作れます。

このページの 3D・図面・回路図・波形・解析は、すべて YOBITSUGI AI に頼んで作った実物です。

2 段の平歯車の減速機。透明にしたハウジングの中に、4 枚の歯車と 3 本の軸、6 個の玉軸受

LP-GB-01 ・ 36 parts ・ glTF

01 ・ MECHANICAL

歯車の減速機を、歯形から。

頼んだのは「小型の DC モーター用の、2 段の平歯車の減速機」。インボリュートの歯形をラックの創成と同じ式で作り、36 部品の組み立て、組立図と部品図、計算書までを、スクリプトから組み立てました。

  • 36部品(STEP・STL・glTF)
  • 4枚の図面(A3・PDF・DXF)
  • 11本のスクリプト(3,140 行)
  • 15項目の確かめ(すべて OK)

頼んだ文(そのまま)

専門の言葉で、条件を箇条書きにしただけです。図面の枚数や形式も、文で指定しました。

機械設計の見本として、小型の電動アクチュエーター用の「2 段の平歯車の減速機」を、パラメトリックな 3D CAD で設計してください。数値はすべてスクリプトの先頭の変数から決まるようにし、同じスクリプトを流せば同じ形ができるようにしてください。

条件:
- 入力: 小型の DC モーター(軸径 5 mm・定格 6000 rpm・0.05 N·m 程度)。出力の回転は 1/12 前後(2 段の合計)。モジュール 0.8 と 1.0 の標準の平歯車(圧力角 20°)。歯形はインボリュートで正しく作る(歯数・ピッチ円・歯先円・歯底円を計算して、表にも出す)
- 部品: 歯車 4 枚(ボスとキー溝またはDカット)・軸 3 本・ハウジング(2 つ割り・合わせ面にボルト穴とノックピン穴・軸受の座・リブ・取付けのフランジ)・軸受(6800 番台の玉軸受を寸法どおりの簡略形で)
- かみ合いの中心距離・バックラッシ・歯車の干渉がないことを計算とモデルの両方で確かめる。各部品の体積と質量(アルミ A5052 と S45C で)も出す

作ってほしいもの(lp-engineering/gearbox に保存):
1. 組み立ての STEP(部品ごとの名前つき)と、部品ごとの STEP と STL。Web で表示するための glTF(.glb・部品ごとに色分け)
2. 2D の図面の PDF(A3 横): 組立図(断面つき)と、ハウジングと出力歯車の部品図。三面図・寸法・はめあいの記号・幾何公差・表面性状の記号・表題欄(図番・材質・尺度・投影法の記号)。DXF も
3. 歯車の諸元表・部品表(BOM)・計算の記録(減速比・中心距離・強度の簡単な確かめ)を Excel と PDF で
4. 使ったスクリプト一式と、もう一度作るための手順(README)
5. 全体を斜めから見た画像(PNG)と、分解図の画像

ライブラリは必要なものを入れて使ってください(build123d や CadQuery など)。できたファイルは、ほかのソフトで開けることを確かめてください(STEP を読み直して部品の数と体積が合うか、など)。

届いたもの

できあがりまで 約 1 時間 27 分・約 2,305 クレジット(1 クレジット = 税抜 1 円)。そのあいだに AI は、スクリプトを書いては流し、できた形や図面を見て直すことを、道具を 111 回使ってくり返しました。

  • README.md 12 KB
  • drawings/ 5 ファイル・911 KBLP-GB-01-001_assembly.dxf ・ LP-GB-01-002_housing_front.dxf ・ LP-GB-01-003_housing_rear.dxf …
  • images/ 3 ファイル・6.5 MBgearbox_exploded.png ・ gearbox_iso.png ・ gearbox_seethrough.png
  • report/ 5 ファイル・1.9 MBLP-GB-01_calc.pdf ・ LP-GB-01_calc.xlsx ・ calc_results.json …
  • repro/ 7 ファイル・61 KBREADME_repro.md ・ build_all_log.txt ・ compare_runs.py …
  • requirements.txt 1 KB
  • scripts/ 11 ファイル・171 KBbuild_all.py ・ calc.py ・ drawing.py …
  • step/ 39 ファイル・32.4 MB01_Housing_Front.step ・ 02_Housing_Rear.step ・ 03_Gear1_z20_m0.8.step …
  • stl/ 36 ファイル・6.4 MB01_Housing_Front.stl ・ 02_Housing_Rear.stl ・ 03_Gear1_z20_m0.8.stl …
  • web/ 5 ファイル・10.5 MBgearbox.glb ・ gearbox.prep.glb ・ gearbox_exploded.glb …

図面(A3・第三角法)

2 段平歯車減速機の組立図

はめあい(H7/k5 など)・幾何公差・表面性状・部品欄・表題欄まで、図面の PDF のとおりに表示しています。拡大して見るときは PDF をお使いください。

歯車の諸元(計算書から)

項目1 段目2 段目
モジュール0.81.0
歯数(小 / 大)20 / 7018 / 62
減速比3.5003.444
中心距離 [mm]36.00 ± 0.0240.00 ± 0.02
かみ合い率1.6821.660
バックラッシ(円周)[mm]0.0600.080
曲げの安全率(小歯車)18.514.1
面圧の安全率2.301.94

全体の減速比 12.056(狙い 1/12 に対し +0.46 %)・出力 497.7 rpm・0.570 N·m・効率 約 94.6 %。値はスクリプト(calc.py)が出した計算書の値です。

届けたファイルを、別のソフトで確かめた結果

AI が自分で、書き出したファイルを読み直して確かめました。

  • OK組立 STEP: 部品名(テキストで数える)PRODUCT の名前 36 / 36 個が一致・MANIFOLD_SOLID_BREP 36 個・AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }
  • OK組立 STEP: 読み直し(build123d / OpenCascade)部品 36 / 36 個・名前つき・体積の差の最大 1.13e-11 %
  • OK組立 STEP: 別のソフト(gmsh 4.15.2)で読み直し立体 36 個・体積の合計 247739.1 mm³(モデル 247739.1 mm³・差 6.13e-12 %)
  • OK部品ごとの STEP(36 ファイル)すべて読み直せて体積が一致
  • OKSTL(36 ファイル・trimesh)すべて閉じた形(watertight)・三角形にした体積の差の最大 0.176 %
  • OKglTF gearbox.glbメッシュの節 36 個(部品名つき)・材質 11・大きさ 0.159×0.073×0.100 m(Y が上)
  • OKglTF gearbox_exploded.glbメッシュの節 36 個(部品名つき)・材質 11・大きさ 0.159×0.210×0.100 m(Y が上)
  • OKglTF gearbox_seethrough.glbメッシュの節 36 個(部品名つき)・材質 11・大きさ 0.159×0.073×0.100 m(Y が上)
  • OK図面 PDF4 ページ・1191 × 842 pt(A3 横 = 420 × 297 mm)
  • OK図面 PDF の文字(図番・投影法・はめあい)見つかった: LP-GB-01-001・LP-GB-01-002・LP-GB-01-003・LP-GB-01-004・第三角法・H7・断面 A-A・要目
  • OKDXF(ezdxf の監査)LP-GB-01-001_ 1492 図形・LP-GB-01-002_ 728 図形・LP-GB-01-003_ 773 図形・LP-GB-01-004_ 439 図形・エラーなし
  • OKDXF を別のソフト(LibreCAD)で開いて印刷4 枚とも A3 の PDF に印刷できた(線・線種・画層を読めた。LibreCAD は日本語フォントを持たないため日本語の文字は ? になる)
  • OKExcel の式を LibreOffice で計算し直すPython の計算と一致: i=12.0556・a1=36.0000・a2=40.0000・ε1=1.6822・ε2=1.6598・T3=0.5703・σH2=268.3203
  • OKExcel の部品表の質量の合計合計 908.4 g(止めねじ 3 個 1.2 g を含む)
  • OK計算書 PDF5 ページ(A4)

02 ・ ELECTRICAL

モーターの駆動基板を、データシートから。

24 V から 12 V と 3.3 V を作る電源、MOSFET 4 個の H ブリッジ、電流の検出と過電流の保護。部品は実在する型番から選び、主要な IC の数値はデータシートの PDF から読み取って、定格に対する余裕を 1 項目ずつ確かめました。

  • 123部品(65 行の部品表)
  • 3枚の回路図(A3)
  • 195項目の定格の確かめ(要確認 0)
  • 23ページの計算書(Excel の式つき)

できあがりまで 約 1 時間 4 分・約 2,288 クレジット・道具 115 回。もう一度流して、数値のファイルが 1 回目とまったく同じ(SHA-256 が一致)になることも確かめています。

回路図(A3・3 枚)

モーター駆動基板の回路図 1/3 電源

シミュレーション(AI の出した CSV から描き直したグラフ)

12 V 降圧の起動と負荷の急変(24 V 入力・1 A → 3 A → 1 A)
04812024680246電流 [A]電圧 [V]時間 [ms]インダクター電流出力電圧負荷電流

刻み 5 ns でスイッチングをそのまま解いた結果(スイッチング回路の方程式を前進オイラー法(刻み 5 ns)で時間積分)。負荷を 1 A から 3 A に増やしたときの下がりは 172 mV(計算の目安 177 mV)、3 A のときのリップルは 6.3 mV p-p。

負荷の急変の拡大(4.3〜7.3 ms)
11.8511.9512.0512.154.55.56.5電圧 [V]時間 [ms]出力電圧(リップルの幅)
H ブリッジでモーターを動かしたときの電流(デューティ 50 %・20 kHz)
01230204060電流 [A]時間 [ms]モーターの電流

区間ごとに一定の入力の線形な常微分方程式を、行列の指数関数(scipy.linalg.expm)で厳密に解く。起動のピーク 2.73 A・定常 1.50 A・リップル 150 mA p-p(式の値 150 mA)。

主な設計値

12 V
TPS54560・400 kHz・インダクター 22 µH。位相余裕は 18 通りの条件で最小 86°
3.3 V
TPS54202(10 µH)
H ブリッジ
CSD18531Q5A × 4・IR2184S × 2。デッドタイムは必要な値の 1.51 倍。接合温度は定格 1.5 A で 53 °C、6 A が続いても 70 °C
電流検出・過電流
5 mΩ + INA240A1 で 0.1 V/A。±7.46 A を超えたら約 3.6 µs で止めてラッチ(部品の誤差を全部組み合わせて 7.14〜7.79 A)
入力の保護
ヒューズ 5 A・TVS SMBJ33A・P-MOSFET 2 個(逆接続を止め、突入電流を約 0.24 A に)

設計の途中で、AI が自分で直したこと

  • 回生対策の TVS: SMBJ15A ではゲートドライバーの電源(絶対最大 25 V)に対して余裕が足りなかった(97.6 %)ため、SMBJ13A に替えた
  • 入力のセラミックコンデンサー: 電解コンデンサーに流れるリップル電流が許容値を超えていたため、4 個から 6 個に増やした
  • ピン配置: データシートで確かめ、TPS70950 の EN(6.5 V まで)を 12 V につながず開放に。IR2184S のピン配置もデータシートに合わせた

試作で確かめること(AI の報告から)

  • モーターの定数・MOSFET の熱抵抗・コンデンサーの直流バイアスでの容量・内部の傾斜補償は仮定の値(計算書 11 章に一覧)
  • 減速するとモーターの発電で 12 V が上がる。FPGA 側で減速をゆっくりにするか、両ローサイドをオンにするブレーキを使う
  • 基板の図の部品の大きさは目安。製造の前に、基板 CAD で実際のフットプリント・配線・DRC を行う

03 ・ DIGITAL / EDA

FPGA の制御回路を、検証と配置配線まで。

エンコーダーの読み取り、中心揃えの PWM とデッドタイム、速度の PI 制御、UART のコマンド、過電流での即時の遮断。Verilog で設計し、テストベンチで自動判定の検証をし、論理合成・配置配線・ビットストリームまでを通しました(対象は Lattice iCE40 UP5K・48 MHz)。

  • 13モジュール(Verilog 1,317 行)
  • 39/39項目の検証に合格(自動で判定)
  • 53.79MHz(目標 48 MHz・配置配線後)
  • 4/4通りの「わざと壊した版」を検出

できあがりまで 約 1 時間 16 分・約 2,138 クレジット・道具 120 回。別の一時フォルダーで作り直した 62 ファイルの SHA-256 も一致しました。

iCE40 UP5K のブロック図。encoder_if・speed_meter・pi_ctrl・pwm_center・deadtime・cmd_parser・uart、過電流の入力から 1 クロック以内に 4 本の PWM を止める経路
ブロック図(doc/block_diagram.svg)。赤い線が、過電流の入力を同期化せずに出力の FF へ入れ、1 クロック以内に 4 本とも止める経路

RTL(deadtime.v・そのまま)

13 モジュールのうちの 1 つ。ポートと動きの説明を、日本語のコメントで書いています。

1// =============================================================================2// deadtime.v -- デッドタイムの挿入と、過電流・停止による即時の遮断(1 相分)3// -----------------------------------------------------------------------------4// 理想の PWM(pwm_in)から、ハーフブリッジのハイサイド(hs)とローサイド(ls)の5// ゲート信号を作る。6//   * OFF にする側は、pwm_in が変わった次のクロックですぐ OFF にする。7//   * ON にする側は、pwm_in が変わってから dt クロック待ってから ON にする。8//   → hs と ls が両方 OFF の時間(デッドタイム)は max(dt, 1) クロック。9//     hs と ls が同時に ON になることは、構造上ない。10//   * dt より短いパルスは ON にならない(最小パルスの抑制)。11//12// 遮断(kill):13//   kill_async(過電流のピンを同期化せずにそのまま)と kill_sync(ラッチした14//   故障・非常停止)のどちらかが 1 なら、hs と ls を両方 OFF にする。15//   出力のフリップフロップの D 入力の直前で止めるので、kill_async が 1 になってから16//   最初のクロックの立ち上がりで出力が 0 になる(1 クロック = 20.8 ns 以内)。17//   kill_async は同期化していないため、クロックのエッジのごく近くで変わると18//   出力のフリップフロップが一瞬不安定になりうるが、そのときも「次のエッジで必ず 0」19//   であり、ON 側に誤って倒れ続けることはない。20//21// ポート:22//   pwm_in     : 理想の PWM(1 = ハイサイド ON)23//   dt         : デッドタイム(クロック数、0..255。0 は 1 として働く)24//   kill_async : 非同期の遮断要求(過電流のピン、1 = 遮断)25//   kill_sync  : 同期の遮断要求(ラッチした故障・非常停止、1 = 遮断)26//   hs, ls     : ハイサイド・ローサイドのゲート信号(1 = ON)27// =============================================================================28`default_nettype none2930module deadtime (31    input  wire       clk,32    input  wire       rst,33    input  wire       pwm_in,34    input  wire [7:0] dt,35    input  wire       kill_async,36    input  wire       kill_sync,37    output reg        hs,38    output reg        ls39);40    reg       p_d;    // 1 クロック前の pwm_in41    reg [7:0] cnt;    // pwm_in が最後に変わってからのクロック数(255 で止まる)4243    wire kill    = kill_async | kill_sync;44    wire settled = (pwm_in == p_d) && (cnt >= dt);4546    always @(posedge clk) begin47        if (rst) begin48            p_d <= 1'b0;49            cnt <= 8'd0;50            hs  <= 1'b0;51            ls  <= 1'b0;52        end else begin53            p_d <= pwm_in;54            if (pwm_in != p_d)      cnt <= 8'd1;55            else if (cnt != 8'hFF)  cnt <= cnt + 8'd1;5657            hs <= ~kill &  pwm_in & settled;58            ls <= ~kill & ~pwm_in & settled;59        end60    end61endmodule6263`default_nettype wire
デッドタイム(テストベンチの波形)
ローサイドを切ってから 48 クロック後にハイサイドを入れるデッドタイムの波形
過電流での遮断
過電流の入力から 1 クロック以内に PWM が止まる波形
チャタリングの除去
エンコーダーの入力のひげを数えない波形
全体の閉ループ: テストベンチの中にモーターとエンコーダーの模型を置き、UART でコマンドを送って動かした速度のステップ応答
目標速度と計った速度のステップ応答。非常停止と過電流からの解除も含む

検証の結果(39 項目・自動で判定)

テストベンチID検査の内容結果詳細
tb_encoderE1正転 100 周期(400 エッジ)で位置 = +400PASSpos=400(期待 400)
tb_encoderE2逆転 150 周期で位置 = -200PASSpos=-200(期待 -200)
tb_encoderE3a各エッジに 2〜4 回のバウンド(1〜12 クロック)をつけた正転 200 エッジPASS増分=200(期待 200)、数えた回数=200(期待 200)、不正遷移=0
tb_encoderE3bバウンドつきの逆転 200 エッジPASS増分=-200(期待 -200)、数えた回数=200(期待 200)、不正遷移=0
tb_encoderE3c停止中に A・B へ 1〜15 クロックのひげを 200 回入れても数えないPASS増分=0、数えた回数=0(どちらも期待 0)、不正遷移=0
tb_encoderE4A・B の同時変化は不正遷移として検出し、位置は変えないPASSerr_pulse=1 回、位置の変化=0
tb_encoderE5a正転 50 カウント/ms の速度を 1 ms ごとに計るPASS3 回とも speed=50 か: 最後=50 カウント/ms(期待 50)
tb_encoderE5b逆転 -120 カウント/ms の速度を計るPASS3 回とも speed=-120 か: 最後=-120 カウント/ms(期待 -120)
tb_encoderE6動作中に位置を 0 にしても速度は跳ばないPASSクリアした周期=38(0〜50)、次の 2 回=50 か(最後=50)、pos=226
tb_encoderE7位置が 0 を挟むとき(下位 16 ビットの桁借り・桁上げ)も正しいPASS0 → -5 → +5 の各エッジで一致、最後の pos=5 (0x00000005)
tb_encoderE8全期間で位置は 1 クロックに ±1 しか変わらないPASS1 クロックに 2 以上変わった回数=0
tb_pwmP1PWM の周期 = 2400 クロック(20 kHz)PASS周期=2400 クロック(20.000 kHz)
tb_pwmP2パルス幅 = デューティ d クロック(d = 0, 1, 2, 3, 100, 1199〜1201, 2398〜2400)PASS11 通りすべてで幅 = d(0〜2400、2401 段階 = 11.2 ビット)
tb_pwmP3パルスの中心が周期の中心(cnt = 1200)から 0.5 クロック以内PASS中心のずれの最大 = 0.5 クロック(d が奇数のとき 0.5)
tb_pwmP4周期の途中でデューティを変えても、その周期は前の値のまま(二重化)PASS変えた周期の幅=800(期待 800)、次の周期=2000(期待 2000)
tb_pwmP5デッドタイム = 設定値(クロック)、ハイサイドの幅は d - dtPASSdt = 1, 24, 48, 100 で両方向の間 = dt、ハイサイド幅 = 1200 - dt
tb_pwmP6デッドタイムより短いパルスはハイサイドを ON にしないPASSd=30、dt=48 でハイサイドの幅=0(期待 0)
tb_pwmP7過電流の入力から 1 クロック以内に PWM の 4 本を止めるPASS20 回すべて次の立ち上がりで 4 本とも 0。遅れの最大 = 20.34 ns(1 クロック = 20.83 ns)
tb_pwmP8故障のラッチ・非常停止(kill_sync)の間は 4 本とも 0PASS3 周期のあいだ 4 本とも 0
tb_pwmP9全期間で、同じ相のハイサイドとローサイドが同時に ON にならないPASSハイサイドとローサイドが同時に 1 のクロック数 = 0
tb_piQ6計算の遅れ = 8 クロック(1 ms の制御周期に対して 0.02 %)PASSstart を取り込んだクロックから done まで 8 クロック
tb_piQ1乱数 3000 回で u と積分が参照モデル(理想の整数演算)とビット単位で一致PASS3000 回のうち不一致 0 回
tb_piQ2大きな正の偏差で u = +1200 に飽和し sat_hi = 1PASSu=1200 sat_hi=1
tb_piQ3飽和中は積分を止め(増え続けない)、偏差が反転した最初の周期で u ≤ 0(すぐ止める向き)PASS飽和中 200 周期で積分 110520 → 最大 110520(Q.8)、符号反転の最初の周期で u=-1
tb_piQ4大きな負の偏差で u = -1200 に飽和し sat_lo = 1、積分は止まるPASSu=-1200 sat_lo=1、100 周期で積分の変化なし
tb_piQ5停止(enable = 0)で積分と u がすぐに 0PASSenable=0 の 2 クロック後に u=0、積分=0
tb_systemS1起動直後は非常停止の状態で始まり、PWM を出さないPASS応答 R01(期待 R01)、起動後 2000 クロックの PWM は 4 本とも 0
tb_systemS2C で解除して運転中になるPASSC → OK、R → R20(期待 R20 = 運転中)
tb_systemS3目標速度 50 カウント/ms に落ち着く(± 2)。整定 30 ms 以内PASSV → V0032(= 50 カウント/ms)、整定時間(±2 に入って出ない)= 5 ms、最大 51
tb_systemS4P で読んだ位置が、模型が出したエッジの数と一致(± 3)PASSP → P00000782(= 1922)、模型のエッジ数 1922(差 0)
tb_systemS5目標 -50(FFCE)で逆転して落ち着くPASSV → VFFCE(= -50 カウント/ms、期待 -50 ± 2)
tb_systemS6D コマンドでデッドタイムを変えられる(0x18 = 24 クロック = 0.5 us)PASSD18 → OK、A 相の H→L 間 = 24、L→H 間 = 24 クロック(期待 24)
tb_systemS7K・I(ゲイン)の設定、小文字・空白入りのコマンドも受け付けるPASSK0C00 / i 0266 → OK、v → VFFCE
tb_systemS8知らないコマンド・桁数の誤り・16 進でない文字には ? を返すPASSX、S12、S12345、P1、@、SZZZZ の 6 つすべてに ?
tb_systemS9E(非常停止)は文字を受けた時点で PWM を止め、目標を 0 にするPASSE のストップビットの中央から 167 ns で 4 本とも 0(行末の前)、1 ms 止まったまま、R → R01
tb_systemS10過電流の入力から 1 クロック以内に PWM を止め、故障をラッチするPASSoc_n の立ち下がりから 13.53 ns 後のクロックで 4 本とも 0、ピンが戻っても 2 ms 停止のまま、R → R02
tb_systemS11過電流のピンが有効な間は解除を断り、戻ってから C で再開するPASSピン有効中の C → NG、戻してからの C → OK、35 ms 後 V = 50
tb_systemS12Z で位置を 0 にするPASSZ → OK、直後の P = 25(Z から約 0.6 ms 分の移動 ≈ 30)
tb_systemS13全期間で貫通なし、バウンドつきのエンコーダーでも不正遷移なしPASS貫通 0 クロック、エンコーダー不正遷移 0、R → R20

39 / 39 項目が合格(results/sim/results.md をそのまま表にしたもの)。

検査の強さの確認(わざと壊した版)

RTL を 1 か所だけ壊した版を作り、テストがきちんと落ちるかを確かめました。最初はチャタリング除去を弱めた版を見逃していたため(ひげが +1 と −1 で打ち消し合い、位置だけでは分からない)、数えた回数も検査するように AI が直しています。

  • M1チャタリング除去を 16 → 3 クロックに弱めるtb_encoder で検出(落ちた検査: E3a,E3b,E3c)
  • M2ハイサイドのデッドタイムを無くすtb_pwm で検出(落ちた検査: P5,P6)
  • M3過電流のピンの直結(即時の遮断)を外すtb_pwm で検出(落ちた検査: P7)
  • M4積分の止め(アンチワインドアップ)を外すtb_pi で検出(落ちた検査: Q1,Q3)

論理合成と配置配線

最初の版は 17 MHz しか出ませんでした。演算の段を細かく分け、大小比較の書き方を変えて、48 MHz の目標を満たすまで上げています。配置の乱数の種を 5 通り変えても、すべて目標を満たしました。

53.8種 153.1種 255.9種 351.1種 453.5種 5目標 48 MHz最大の周波数 [MHz]
資源使った数全体割合
LUT41166528022.1 %
FF936528017.7 %
CARRY48052809.1 %
BRAM (EBR 4kbit)0300.0 %
DSP (SB_MAC16)2825.0 %
IO129612.5 %
PLL11100.0 %

実機で確かめること(AI の報告から)

  • 確かめたのは RTL のシミュレーションと配置配線後のタイミング解析まで。配線の遅れを入れたシミュレーションと実機の試験はしていない
  • PI のゲインの初期値は模型のモーターに合わせたもの。実機では UART の K・I のコマンドで調整する
  • 過電流のピンは 1 クロック以内に止めるため同期化していない。ノイズで誤って止まらないよう、基板側に RC フィルターなどを入れる
  • ピンの割り当ては評価ボード(iCEBreaker)の例。基板に合わせて up5k_sg48.pcf を書き換える

Icarus Verilog 11.0 ・ Verilator 5.006 ・ Yosys 0.23 ・ nextpnr-ice40 0.4 ・ IceStorm

04 ・ CAE / FEM

有限要素法で、軸とハウジングの強さを。

機構の章の減速機の STEP と計算書を読み、出力軸(S45C)とリヤハウジング(A5052)を解析しました。メッシュは 2 次の四面体で 3 段階、答えの分かっている問題でソルバーを確かめてから解き、手計算と比べて、差の理由まで書いています。

  • 3.7降伏に対する安全率(出力軸・起動時の最大)
  • 778,269自由度(出力軸・細かいメッシュ)
  • +4.7 %中 → 細かいメッシュの最大応力の差
  • 0.00 %片持ちばりの曲げ応力の理論との差(ソルバーの確かめ)

できあがりまで 約 2 時間 41 分・約 3,310 クレジット・道具 140 回。メッシュを 3 段階で解き、答えの分かっている問題でソルバーを確かめ、手計算と比べました。

出力軸のミーゼス応力の色の図。最大はキー溝の底で 94.0 MPa

出力軸(S45C)・ミーゼス応力

出力軸・起動時の最大0 → 94.0 MPa

結果の 3D は、AI が書き出した glTF(ミーゼス応力を頂点の色にしたもの・1 つ約 3 MB)。ハウジングの赤い点は、取付け穴を完全に固定した理想化による値で、評価は穴から 1.5 mm 以上離れた所で行っています。

結果(細かいメッシュ)

出力軸(S45C)リヤハウジング(A5052)
最大ミーゼス応力(定格 / 起動時の最大)62.6 / 94.0 MPa0.226 / 0.338 MPa
場所キー溝の底の丸み(キーが押す側の壁の付け根)出力軸の軸受の座 Ø21 の内側のふち
最大変位(定格 / 起動時の最大)1.43 / 2.14 μm0.068 / 0.102 μm
降伏に対する安全率(起動時の最大)3.7(σy 345 MPa)473(σy 160 MPa)
収束(中 → 細かい)応力 +4.7 %・変位 +1.7 %応力 +0.4 %・変位 +0.1 %
細かいメッシュ160,198 要素・778,269 自由度101,647 要素・521,781 自由度

2 次の四面体要素・線形の静解析。起動時の最大は定格の 1.5 倍(計算書の使用係数)。値は results/*.json から。解き方は direct (Intel MKL PARDISO, symmetric positive definite, 1 thread)。

メッシュの収束(粗い → 中 → 細かい)
出力軸とハウジングの最大応力と最大変位の、メッシュの細かさによる変化。STEP のままの鋭い角では応力が上がり続ける
STEP のままの鋭い角(赤)は、細かくするほど応力が 43.9 → 61.0 → 69.6 MPa と上がり続けた(特異点)。そこで隅の丸み(段 R0.3・R0.5、キー溝の底 R0.16 = JIS の上限)を仮定した形で評価し、図面で丸みを指定するよう勧めています。
手計算との比べ(定格)
出力軸の応力集中の場所ごとの、手計算と有限要素法の比べ
段の部分は手計算と合いました(z=33 で 7.85 → 8.14 MPa)。キー溝が手計算の 4〜7 倍になる理由も確かめています。キーを押さずにトルクだけを通すと 8.38 MPa(Peterson の係数による見積り 8.54 MPa と 2 % の差)。本来の荷重では、キーの面圧が溝の壁を板のように曲げ、その付け根に応力が集まる。この効果は係数にも計算書にも入っていない、という説明です。
ソルバーの確かめ(片持ちばり・丸棒のねじり)
片持ちばりと丸棒のねじりで、理論の値と解析の値の差

前提と限界(報告書に明記)

  • 線形・静的の解析。起動と停止のくり返しに対する疲れ強さは評価していない(別に確かめるよう勧めている)
  • 軸受は 1 個 20 N/μm のばね。キーと歯車は接触を解かず、面圧の分布を仮定。キー溝の底の応力はこの仮定に強く左右されるため、正確には接触の解析が要る
  • もう一度解くには run_all.py(1 コアで約 50 分・メモリ最大約 6 GB)。1 スレッドで動かすので、同じ版のライブラリなら同じ結果になる(粗い・中のメッシュを流し直して確かめた)

05 ・ SYSTEMS ENGINEERING

3 つをつないで、食い違いを洗い出す。

減速機・駆動基板・FPGA を、1 つの製品「小型の電動アクチュエーター LP-ACT-01」として束ねました。それぞれは単体の検証に合格しています。それでも、つなぐと動かない・止められない点が見つかりました。AI が 3 つの成果物のファイルを読み、そこに書いてある値だけを根拠に、要求からトレーサビリティ、FMEA までをまとめています。

  • 32件の要求(測れる合格の基準つき)
  • 17 / 5 / 10合格 / 未検証 / 不適合
  • 28件の食い違いと未決定(高 8 件)
  • 25件の FMEA(RPN は Excel の式)

できあがりまで 約 28 分・約 1,395 クレジット・道具 74 回。3 つの成果物のファイルを実際に読み、そこに書いてある値だけを根拠にしています(読んだファイルの SHA-256 も記録)。

構成とつながり(SysML の内部ブロック図に近い書き方)

LP-ACT-01 の構成図

赤い破線が、どの成果物にも無いつながり。! の番号は、下の食い違いの一覧の番号です。システムのまとめは、解析(04)が終わる前に作ったため、解析の値は途中(22:52 時点)のものを使っています。

重要度が高い食い違い

X-01 高ゲート信号の形と本数の意味FPGA ↔ 駆動基板 ・ 食い違い
事実(成果物に書いてあること)
FPGA は 4 本のゲート信号を直接出す(pwm_ah・pwm_al・pwm_bh・pwm_bl、1 = ON・相補・デッドタイムつき)。駆動基板の J2 は PWM_A・PWM_B・DIR・EN を受け、U7・U8 で入れ替えて IR2184 の IN(1 = ハイ・0 = ロー)と nSD に入れる(符号+大きさの駆動)。
影響
本数が同じ 4 本なので取り違えやすい。そのままつなぐと EN が来ず動かないか、DIR・EN にゲート信号が入り予期しない動きになる。停止のとき FPGA は「全 OFF = 惰性」のつもりでも、IN = L はローサイド ON(ブレーキ)になる。
直し方の案
FPGA を直す(推奨): 最上位に PWM_A = pwm_a(デッドタイム前の理想の PWM)・PWM_B = pwm_b・DIR = 0 固定・EN = run かつ過電流でない、を出す。deadtime は使わない(IR2184 の 280〜520 ns に任せる)。停止は EN = L(nSD)で全 OFF にする。基板は変えない。
X-02 高過電流のラッチを解除できないFPGA ↔ 駆動基板 ・ 食い違い
事実(成果物に書いてあること)
基板の U9(74LVC1G74)は過電流で nFAULT = L にラッチし、EN の L → H でだけ解除する(計算書 11 章)。FPGA には EN の出力が無い。FPGA の C は「過電流のピン(oc_n)が有効なら NG」なので、nFAULT が L のままだと永遠に NG。
影響
一度でも過電流が起きると、電源を切るまで再開できない。
直し方の案
FPGA を直す: EN の出力を足す。C を受けたら EN を L にして 1 µs 以上待ち、L → H で基板のラッチを解除し、nFAULT = H を確かめてから運転に戻す。「ピンが有効なら NG」の判定は、EN を上げたあとの nFAULT で行う。
X-03 高デューティの上限FPGA ↔ 駆動基板 ・ 食い違い
事実(成果物に書いてあること)
基板: デューティ 100 % は使わない(ブートストラップの再充電のため最大 98 %)。FPGA: u = ± 1200 まで出し、片方の脚がデューティ 100 %(2400 / 2400)になる。
影響
飽和が続くとハイサイドのブートストラップが下がり(保持 約 11.5 ms)、MOSFET が半オンで発熱する。
直し方の案
FPGA を直す: pi_ctrl の UMAX を 1152(98 %・16 の倍数)にする。tb_pi・tb_system の期待値も直す。
X-04 高モーターの想定が違う減速機 ↔ 駆動基板(モーター) ・ 食い違い
事実(成果物に書いてあること)
減速機: 入力 6000 rpm・0.05 N·m・軸 Ø5。駆動基板: 12 V・定格 1.5 A・Ke = Kt = 0.025(無負荷 約 4500 rpm の仮定)・R 2 Ω。どちらもモーターの型番が無い。
影響
出力は定格で 0.385 N·m・278 rpm になり、減速機の設計点 0.570 N·m・498 rpm に届かない。0.05 N·m を出すには 2.15 A が要る(基板の定格 1.5 A を超える)。
直し方の案
システムで決める: まずモーターを選んで型番を決める。そのうえで (a) 減速機の前提を選んだモーターに合わせて直す、(b) 要求 REQ-01・02 を下げる、(c) gearbox-v2(i = 20.0)でトルクを上げる、のどれかにする。(c) を選ぶなら、出力の回転数が下がること(REQ-01)と、v2 の計算書がまだ無いことに注意する。
X-07 高回生の扱い駆動基板 ↔ FPGA ・ 未決定
事実(成果物に書いてあること)
基板: 減速の回生で 12 V が上がる。FPGA 側で減速の傾きを抑えるか、両ローサイドのブレーキ。D5 は最後の守り。FPGA: S は段で変わり、PI は逆向きに最大まで出せる。減速の傾きの制限もブレーキの動きも無い。
影響
運動のエネルギー 0.42 J が全部戻ると、計算ではバスが 50 V まで上がりうる(D5 のクランプ 21.5 V に頼る)。IR2184 の VCC の絶対最大 25 V・TPS54202 の 28 V に近い。
直し方の案
FPGA を直す(まず): 目標速度の傾きの制限(加減速の上限)と、回生の向きの操作量の制限を入れる。基板(次の版): バスの電圧を FPGA に返すか、ブレーキの抵抗とスイッチを足す。
X-15 高回転の向きの決まり(極性)モーター ↔ 駆動基板 ↔ FPGA ・ 未決定
事実(成果物に書いてあること)
FPGA: u > 0 で A 相の脚が高く、A 相が B 相より進むと位置が増える。モーターの線(J3)とエンコーダー(J4)の向きの組合せの決まりが、どこにも無い。
影響
組合せが逆だと正帰還になり、最高速で暴走する(電流は大きくないので過電流でも止まらない)。
直し方の案
システムで決める: 「J3-1(MOT_A)が + のとき、出力軸から見て時計回り・A 相が進む」と決めて図面と配線表に書く。FPGA に「操作量が飽和したまま速度が逆向きか 0」が続いたら止める監視を足す。
X-17 高ハードウェアの非常停止が無いシステム ・ 未決定
事実(成果物に書いてあること)
非常停止は UART の E だけ。駆動基板にも FPGA にも非常停止の入力が無い。
影響
上位・ケーブル・FPGA が故障すると止められない。
直し方の案
システムで決める: 非常停止スイッチ(b 接点)を EN の線に直列に入れ(基板の U10 の前)、FPGA にも estop_n の入力を足して状態に反映する。さらに 24 V を切るリレーも検討する。
X-28 高拘束(ロック)の保護が無い駆動基板 ↔ FPGA ・ 未決定
事実(成果物に書いてあること)
拘束の電流は約 5.9 A で、過電流の遮断の最小 7.14 A より小さい。FPGA に拘束の監視も、電流の値も無い。
影響
出力軸が止められると、6 A 近くが流れ続けてモーターが焼ける。MOSFET は 6 A が続いても 70 °C の計算。
直し方の案
FPGA を直す: 「操作量が飽和し、速度がほぼ 0」が 0.5 s 続いたら止めて故障にする。ADC を足せば(X-09)電流の I²t でも見る。

重要度が高い 8 件を表示しています(中 13 件・低 7 件を含む全 28 件は、食い違いの一覧の Excel と設計書に)。

要求のトレーサビリティ(要求 → 設計の要素 → 検証 → 結果)

要求名前合格の基準満たす設計の要素確かめた検証得られた値結果
REQ-01出力の回転数出力軸 ≥ 480 rpm(定格の負荷・入力 24 V)モーター(未選定)
LP-MD-01: 12 V 降圧・H ブリッジ
LP-GB-01: 歯車1〜4(i)
gearbox/report/calc_results.json output.n
driver/calc/LP-MD-01_calc.pdf 11 章(モーターの仮定)
system: syscalc n_out_rated
278 rpm(12 V・デューティ 98 %・1.5 A。無負荷 363 rpm)不適合
REQ-02定格の出力トルク出力軸 ≥ 0.55 N·m(連続・周囲 50 °C)モーター(未選定)
LP-MD-01: 定格 1.5 A
LP-GB-01: i・効率
gearbox/report/calc_results.json output.T
driver/calc/design_results.json Im_rated・Ke・I0m
system: syscalc T_out_rated
0.385 N·m(Kt 0.025 × (1.5 − 0.15) A × i × η)。減速機の前提 0.05 N·m には 2.15 A が要る不適合
REQ-03起動のトルク出力軸 ≥ 1.5 N·m(起動電流のとき・短時間)LP-MD-01: 起動 6 A・過電流 7.5 A
LP-GB-01
driver/calc/design_results.json Im_start
system: syscalc T_out_start
1.67 N·m合格
REQ-04減速比i = 12.0 〜 12.12(1/12 の +1 % 以内)LP-GB-01: 歯車1(z20)・歯車2(z70)・歯車3(z18)・歯車4(z62)gearbox/report/LP-GB-01_calc.pdf 1 章・3 章
gearbox 3D の回転の確かめ(10 位置)
i = 12.0556(+0.46 %)合格
REQ-05過負荷での強さと寿命過電流の遮断の上限のトルクで、静的な安全率 ≥ 1.2(歯面・軸・キー・FEM の降伏)。軸受 L10h ≥ 5,000 hLP-GB-01: 歯車4・出力軸(キー溝)・キー 4×4・6801ZZ
LP-MD-01: 過電流のしきい値
gearbox/report/calc_results.json stages・shafts・keys・bearings
fem/results/shaft_fillet_fine.json
system: syscalc SH2_trip・SF_key_trip・fem_SF_trip
見積もり(倍率 2.55): 歯面 1.21・キー 1.49・軸(公称)1.99・FEM キー溝 1.44。L10h 最小 5.48e+06 h。減速機の計算書と FEM はこの荷重を扱っていない(疲労も未評価)未検証
REQ-06出力のバックラッシ出力軸で ≤ 0.25°(中心距離の許容差込み)LP-GB-01: 歯厚の減少(jt 0.06 / 0.08 mm)・中心距離 ± 0.02gearbox/report/calc_results.json stages.jt・jt_max
system: syscalc backlash_out_deg
0.184°(最大 0.219°)合格
REQ-07位置の計測の分解能と範囲出力軸で ≤ 0.02°/カウント・± 10,000 回転まで巻き戻らない・0 をまたいでも正しいモーターのエンコーダー(500 PPR・仮定)
FPGA: encoder_if・quad_decoder(32 ビット)
system: syscalc res_pos_deg・pos_range_rev
fpga E1 PASS・E2 PASS・E7 PASS・E8 PASS
0.0149°/カウント(24111 カウント/回転)・± 89,066 回転合格
REQ-08位置決めの制御目標の位置に ± 0.25° 以内で止まる(出力軸)FPGA: 速度の PI のみ(位置のループなし)
cmd_parser: P は読むだけ
fpga/rtl/motor_ctrl.v・cmd_parser.v(位置の指令なし)位置の指令と位置のループが無い不適合
REQ-09速度の計測出力軸で ≤ 3 rpm の分解能。モーター 6,000 rpm(1 相 50 kHz)でエッジを取りこぼさないFPGA: sync_filter(2 段 + 16 クロック)・speed_meter(1 ms)
LP-MD-01: R/C フィルター・74LVC2G17
system: syscalc res_speed_out・enc_min_spacing_fpga
fpga E3a PASS・E3c PASS・E5a PASS・E5b PASS
driver/calc/LP-MD-01_calc.pdf 8 章
2.49 rpm。FPGA が通せる最短のエッジ間隔 375 ns < 要る間隔 2500 ns合格
REQ-10制御の周期と計算の遅れ周期 1 ms・速度の計測から操作量まで ≤ 1 µsFPGA: tick_gen・speed_meter・pi_ctrlfpga Q6 PASS
fpga/rtl/motor_ctrl.v CTRL_HZ
1000 Hz・8 クロック(0.17 µs)合格
REQ-11速度のステップ応答目標 ± 2 カウント/ms に 50 ms 以内に入り、行き過ぎ ≤ 10 %(出力軸に負荷の慣性をつけた状態)FPGA: pi_ctrl(Kp・Ki)
モーター・減速機の慣性
fpga S3 PASS(模型 K 200・τ 5 ms)
system: syscalc tau_mech
模型では 5 ms・最大 51(目標 50)。実機の見積もり(全開 146 カウント/ms・τm 12.8 ms)と模型が違う未検証
REQ-12定常の速度の誤差± 2 カウント/ms(出力軸で ± 5 rpm)以内FPGA: pi_ctrl(積分あり)fpga S3 PASS・S5 PASS50 / −50 カウント/ms で ± 2 以内合格
REQ-13PWM20 kHz ± 1 %・中心揃え・分解能 ≥ 11 ビット・周期の途中で値が変わっても割れないFPGA: pwm_center
LP-MD-01: IR2184・ブートストラップ
fpga P1 PASS・P2 PASS・P3 PASS・P4 PASS
driver/calc/design_results.json f_pwm
20.000 kHz・2401 段階(11.2 ビット)合格
REQ-14デューティの上限どちらの脚もデューティ ≤ 98 %FPGA: pi_ctrl UMAX・motor_ctrl の duty_a / duty_b
LP-MD-01: C27・C28(1 µF)
driver/calc/LP-MD-01_calc.pdf 11 章
fpga/rtl/motor_ctrl.v(UMAX = HALF)
fpga P2 PASS(d = 2400 を出す)
FPGA は 100% まで出す(u = ± 1200)不適合
REQ-15貫通の防止同時 ON 0 回・デッドタイム ≥ MOSFET が切れるのに要る時間LP-MD-01: IR2184(内蔵 280〜520 ns)
FPGA: deadtime(初期値 1.0 µs)
driver/calc/LP-MD-01_calc.pdf 6 章
fpga P5 PASS・P9 PASS・S13 PASS
IR2184 280〜520 ns(要る値の 1.51 倍)。FPGA 単体でも同時 ON 0合格
REQ-16過電流の遮断しきい値 7.5 A ± 5 %(7.13〜7.88 A)・検出から遮断まで ≤ 5 µsLP-MD-01: R21・INA240A1・LM393・U9・U10(nSD)
FPGA: oc_n → kill_async
driver/calc/LP-MD-01_calc.pdf 7 章(誤差の総当たり)
fpga P7 PASS・S10 PASS
7.14〜7.79 A・3.58 µs(基板)。FPGA は 20.3 ns合格
REQ-17過電流のあとの復帰nFAULT が戻ったあと、C で 100 ms 以内に運転に戻れる。原因が残る間は NGLP-MD-01: U9(EN の立ち上がりで解除)
FPGA: cmd_parser の C・oc_fault
fpga S11 PASS(FPGA 単体)
driver/scripts/parts.py U9・U10
fpga/rtl/top_up5k.v(EN の出力なし)
FPGA に EN の出力が無く、基板のラッチを解除できない(C は NG のまま)不適合
REQ-18拘束(ロック)の保護拘束から 1 s 以内に電流を止め、故障として知らせるLP-MD-01: 過電流 7.5 A
FPGA: 拘束の監視なし・電流の ADC なし
driver/calc/design_results.json Rm・I_trip_wc_min
fpga/rtl/motor_ctrl.v
拘束の電流 ≈ 5.88 A(12 V × 98 % ÷ 2 Ω)< 遮断の最小 7.14 A → 止まらない不適合
REQ-19非常停止(通信)E の受信から ≤ 1 µs で 4 本のゲートが OFF・目標 0・解除まで止まったままFPGA: cmd_parser(E は行末を待たない)・deadtime の kill_syncfpga S9 PASS167 ns合格
REQ-20非常停止(ハードウェア)非常停止スイッチ(b 接点)を開くと ≤ 10 ms で H ブリッジが全 OFF(入力が無い)fpga/rtl/top_up5k.v のポート
driver/scripts/parts.py J2
どの成果物にも非常停止の入力が無い不適合
REQ-21電源投入のときに動かない電源投入から解除まで、4 本のゲートと EN がすべて LFPGA: estop の初期値 1・PLL のロックまでリセット
LP-MD-01: R28〜R31(100 kΩ 引き下げ)
fpga S1 PASS
driver/scripts/parts.py R28〜R31
R01 で起動・PWM 0。基板は EN が L で止まる合格
REQ-22故障の解除で勝手に動かないC のあと、目標速度は 0(S を送るまで回らない)FPGA: cmd_parser(C は target を変えない)fpga S11 PASS(解除の 35 ms 後に V = 50)
fpga/rtl/cmd_parser.v
過電流のあとの C で、前の目標のまま再始動する不適合
REQ-23通信の途絶コマンドが 100 ms 来なければ非常停止と同じ動きFPGA: cmd_parser(監視なし)fpga/rtl/cmd_parser.v監視が無い(最後の目標で回り続ける)不適合
REQ-24回生12 V のバス ≤ 16 V(TPS54202・IR2184 の定格の内側)LP-MD-01: D5(SMBJ13A)・C22
FPGA: 減速の傾きの制限なし
driver/calc/LP-MD-01_calc.pdf 11 章
fpga/rtl/cmd_parser.v(S は段で変わる)
運動のエネルギー 0.42 J に対し、バスの容量で吸えるのは 20 mJ。FPGA に対策が無い不適合
REQ-25電源の入力18〜30 V で動く・逆接続で壊れない・突入電流 ≤ 1 A・入力 ≤ 40 WLP-MD-01: F1・D1・P-MOSFET × 2・UVLO・TPS54560driver/calc/LP-MD-01_calc.pdf 5 章
driver/calc/design_results.json
UVLO 起動 15.9 V / 停止 14.4 V・突入 0.24 A・入力最大 38.6 W合格
REQ-26ロジックの電源FPGA 側の 3.3 V の電流 ≤ 100 mA(J2 から供給する場合)LP-MD-01: TPS54202(0.5 A)・J2-1
FPGA 基板(未設計)
driver/scripts/parts.py J2
fpga/README.md(iCEBreaker の例)
FPGA 側の消費電流と、1.2 V の作り方が成果物に無い未検証
REQ-27上位との通信115200 bps・8N1・3.3 V・コマンド S/P/V/R/E/C/K/I/D/Z・誤りには ?FPGA: uart_rx・uart_tx・cmd_parser
LP-MD-01: J5・TPD4E05U06・R39・R40
fpga S2 PASS・S7 PASS・S8 PASS・S12 PASS
driver/scripts/parts.py J5
コマンドと応答がすべて合格合格
REQ-28周囲温度部品の接合温度 ≤ 0.85 × 150 °C(定格の連続)LP-MD-01: MOSFET・TPS54560・TPS54202・TPS70950driver/calc/LP-MD-01_calc.pdf 2〜6 章最大 89 °C(TPS54560)・MOSFET 53 °C合格
REQ-29外形と質量減速機部 ≤ 160 × 100 × 75 mm・≤ 950 g。モーター・基板を含む全体は TBD(モーターを決めてから)LP-GB-01: ハウジング
LP-MD-01: 60 × 40 mm
モーター(未選定)
gearbox/README.md 主な諸元
driver/README.md 主な諸元
減速機 159 × 100 × 73 mm・907 g(軸受は簡略形で重め)。全体は不明未検証
REQ-30モーターの取付けモーター軸 Ø5(Dカット)・印籠 Ø22 H8・M3 × 2(PCD 29)に合うモーターLP-GB-01: フロントハウジングの筒・入力軸(カップリング)
モーター(未選定)
gearbox/README.md 設計の前提と省略
gearbox/drawings LP-GB-01-002
モーターの型番が無い未検証
REQ-31負荷と取付けのインターフェース出力軸 Ø10・平行キー 3×3・取付けフランジ 4 × Ø4.5・印籠 Ø28 h7LP-GB-01: 出力軸・リヤハウジングgearbox/drawings/LP-GB-01_drawings.pdf(LP-GB-01-001・003)出力軸端 Ø10・平行キー 3×3×12・取付けフランジ 4 × Ø4.5・印籠 Ø28 h7合格
REQ-32FPGA の実装の余裕48 MHz に対して最大周波数 ≥ +5 %・LUT ≤ 50 %FPGA: 全体(top_up5k)fpga/results/pnr/summary.md・summary.json
fpga ミューテーション 4 通りすべて検出
最大 53.79 MHz(+12.1 %)・LUT 1166 / 5280(22 %)合格

06 ・ REPRODUCIBILITY

同じものを、もう一度。値を変えて、もう一度。

減速機の会話の続きで、2 つ頼みました。1 つ目は、同じスクリプトを何も変えずにもう一度流して、前回と比べること。2 つ目は、変数だけを変えて減速比 1/20 の版(LP-GB-02)を作ること。かかったのは、2 つ合わせて約 2 時間 16 分・約 4,518 クレジットです。

① もう一度流した結果

形と数値はすべて一致しました。違ったのは作成日時などの記録と、組立 STEP の色の表の並び順(OpenCascade がメモリの番地の順に並べるため)だけで、形の部分は 1 字も違いません。

項目1 回目2 回目判定
部品ごとの体積(組立 STEP を読み直し)36 部品36 部品一致 差の最大 0 mm³
減速比 i12.055612.0556一致
1段 中心距離 a1 [mm]3636一致
2段 中心距離 a2 [mm]4040一致
1段 かみ合い率1.682241.68224一致
2段 かみ合い率1.659771.65977一致
出力トルク [N·m]0.5702680.570268一致
出力回転数 [rpm]497.696497.696一致
1段 曲げ安全率(小歯車)18.528918.5289一致
1段 曲げ安全率(大歯車)24.781924.7819一致
2段 曲げ安全率(小歯車)14.087114.0871一致
2段 曲げ安全率(大歯車)19.317719.3177一致
1段 接触の安全率2.299172.29917一致
2段 接触の安全率1.937981.93798一致
軸 ねじりの安全率(最小)5.062465.06246一致
キー 安全率(最小)3.78773.7877一致
軸受 L10h の最小 [h]5.47511e+065.47511e+06一致
1段 バックラッシ(モデルで測定)[mm]0.06001840.0600184一致
2段 バックラッシ(モデルで測定)[mm]0.08004960.0800496一致
総質量 [g]907.195907.195一致
3D 干渉 0.001 mm³ 以上の組00一致
3D 干渉を調べた組の数7979一致
図面 PDF のページ数と図番4 枚4 枚一致
STL の三角形の数(36 ファイル)127,380127,380一致 ファイルのバイトも 36 / 36 同じ

② 変えたのは、この行だけ(params.py の差分)

歯数の組は、切下げ・干渉・かみ合い率・強度・隣の軸とのすき間を満たす 1,513 組を総当たりして選び、減速比はちょうど 20.000 です。

--- gearbox/scripts/params.py+++ gearbox-v2/scripts/params.py@@ -10,7 +10,7 @@ import math  # ---------------------------------------------------------------- 図番・名称-PROJECT      = "LP-GB-01"+PROJECT      = "LP-GB-02" TITLE        = "2段平歯車減速機" DESIGNER     = "YOBITSUGI AI" DATE         = "2026-10-20"@@ -29,8 +29,8 @@ C_COEF       = 0.25       # 頂げき係数 RHO_COEF     = 0.38       # 歯元すみ肉半径係数(工具の刃先丸み) # 段:   (モジュール, 小歯車の歯数, 大歯車の歯数, 小歯車の歯幅, 大歯車の歯幅, 円周方向バックラッシの狙い)-STAGE1 = dict(m=0.8, z_p=20, z_g=70, b_p=7.0, b_g=6.0, jt=0.06)-STAGE2 = dict(m=1.0, z_p=18, z_g=62, b_p=9.0, b_g=8.0, jt=0.08)+STAGE1 = dict(m=0.8, z_p=20, z_g=96, b_p=7.0, b_g=6.0, jt=0.06)+STAGE2 = dict(m=1.0, z_p=18, z_g=75, b_p=9.0, b_g=8.0, jt=0.08) CENTER_TOL   = 0.02       # 中心距離の許容差 ± [mm] GEAR_GRADE   = "JIS B 1702-1 N8級" SPAN_TOL     = 0.030      # またぎ歯厚の許容差(下の許容差・上は 0)[mm]@@ -66,10 +66,10 @@ # ---------------------------------------------------------------- 歯車のボス・ウェブ G1_HUB = dict(d=14.0, L=3.5)                          # 歯車1 ボス(後ろ側)・止めねじ M3 G2_HUB = dict(d=18.0, L=3.0)                          # 歯車2 ボス(後ろ側)-G2_WEB = dict(t=3.0, rim_d=48.0, holes=6, hole_d=8.0, pcd=34.0)+G2_WEB = dict(t=3.0, rim_d=68.0, holes=6, hole_d=12.0, pcd=43.0) G3_HUB = dict(d=14.0, L=4.0, lip_d=12.5, lip_L=0.5)    # 歯車3 ボス(後ろ側)・止めねじ M3・端は内輪押さえ G4_HUB = dict(d=22.0, L=4.5, lip_d=14.5, lip_L=0.5)    # 歯車4 ボス(後ろ側)・端は内輪押さえ-G4_WEB = dict(t=4.0, rim_d=54.0, holes=6, hole_d=9.0, pcd=40.0)+G4_WEB = dict(t=4.0, rim_d=66.0, holes=6, hole_d=12.0, pcd=44.0)  # ---------------------------------------------------------------- 軸方向の配置(z) Z_FRONT_IN  = 4.0         # フロント端壁の内面
減速機の 3D(ハウジングを透かした状態)

LP-GB-01 ・ i = 12.056

2 つの版は同じ縮尺で表示しています。歯車が大きくなった分、ハウジングも広がっています。

LP-GB-01 と LP-GB-02 の違い

項目LP-GB-01LP-GB-02変化
1段 モジュール / 歯数m0.8 z20/z70m0.8 z20/z96変更
2段 モジュール / 歯数m1 z18/z62m1 z18/z75変更
全体の減速比12.055620.0000+65.9 %
1段 中心距離 [mm]36.0046.40+28.9 %
2段 中心距離 [mm]40.0046.50+16.2 %
出力回転数 [rpm]497.7300.0-39.7 %
出力トルク [N·m]0.5700.946+65.9 %
外形 長さ × 幅 × 高さ(フランジ・軸端を含む) [mm]159.0 × 100.0 × 73.0182.4 × 114.4 × 73.0変更
総質量 [g]907.21158.6+27.7 %
2段 歯面の接触1.941.74-10.3 %
出力軸(軸端 有効 Ø8.2) ねじり5.063.05-39.7 %

全 65 項目は v1_v2_compare.xlsx に。干渉の確かめは両方とも 0 組・NG 0。

組立図も、同じスクリプトから描き直し

LP-GB-02 の組立図

変数を変えるだけでは作れなかった。AI が見つけて直したこと

  • 図番と注記の直書き: 図番(27 か所)と、ハウジングの注記の中心距離「36±0.02・40±0.02」がスクリプトに直接書かれていた。変数から決める形に直した
  • 黙って飛ばされていた確かめ: すき間を調べる部品を、歯数入りの名前で指定していたため、新しい版では 12 組のうち 10 組の確かめが黙って飛ばされていた。番号で探し、見つからなければ止める形に直した
  • 図の置き場所: 決まった座標に置いていたため、大きくなった図が用紙からはみ出した。形の大きさから決める形に直した
  • 前回の組立図の誤り: 直す途中で、前の版の組立図で右側面図の高さが主投影と 5 mm ずれていたことに気づき、直した(第三角法ではそろえる)。このページの図面は直したあとのものです

COST

このページの作例に、かかったもの。

月額の費用はなく、使った分だけです。AI が計算と確かめをくり返すほど、時間とクレジットは多くかかります。小さな部品や 1 枚の回路図なら、もっと短く少なく済みます。

作例届いたものできあがりまでクレジット道具
機構: 2 段の平歯車の減速機STEP・STL・glTF・図面 4 枚・計算書・スクリプト約 1 時間 27 分約 2,305111 回
回路: モーター駆動基板回路図 3 枚・部品表・計算書 23 ページ・シミュレーション約 1 時間 4 分約 2,288115 回
論理: FPGA の制御回路RTL 13 モジュール・検証 39 項目・合成と配置配線・設計書約 1 時間 16 分約 2,138120 回
解析: 有限要素法応力と変位・収束・手計算との比べ・報告書約 2 時間 41 分約 3,310140 回
再現性: もう一度流す + 1/20 の版一致の表・LP-GB-02 の 3D・図面・計算書約 2 時間 16 分約 4,51884 回
システム: 要求からトレーサビリティ要求仕様・構成図・インターフェース・FMEA・設計書約 28 分約 1,39574 回

1 クレジット = 税抜 1 円(税込 1.1 円)。時間は依頼してから AI が答え終わるまで。どれも 2026 年 10 月 20 日に、本番の YOBITSUGI AI に頼んで作りました。合わせて約 15,954 クレジット。

SCOPE

できること、しないこと。

できること

  • 3D モデル(STEP・STL・glTF)と、2D の図面(PDF・DXF)
  • 計算書(式が入った Excel と PDF)・部品表
  • 回路図(PDF・SVG)・部品表・設計の計算・回路の数値シミュレーション
  • HDL(Verilog)の設計・テストベンチ・論理合成と配置配線(オープンソースのツール)
  • 有限要素法の解析(線形・静的)と、手計算との比べ
  • 使ったスクリプトと、もう一度作るための手順(README)

しないこと

  • お使いの CAD・EDA・CAE の製品の置きかえ(できたファイルは、それらで開いて続きに使えます)
  • 設計の判断、強度や安全の最終の確認、出図の承認(資格と経験のある技術者が行ってください)
  • 実機の試験の代わり
  • 社内の PDM・PLM・設計の環境とのつながり(受け渡しはファイルで)

DATA

図面と仕様の、扱い。

学習に使いません

当社は、依頼の内容やファイルを AI の学習に使いません。

会話とファイルは国内

当社が管理する日本国内のサーバーに保存します。

処理のために送る先

依頼の内容は、処理のために AI の提供元(海外を含む)へ送ります(プライバシーポリシー 第 3 条)。

取引先との約束

取引先の図面や仕様は、秘密保持の約束と社内の規程の範囲で扱ってください。外に出せない技術の情報は入れずに。

よくある質問

CAD や EDA のソフトを持っていなくても使えますか?

使えます。YOBITSUGI AI の作業場で、必要なライブラリやツール(build123d・OpenCascade・Icarus Verilog・Yosys・nextpnr・gmsh など)をその場で入れて組み立て、STEP・STL・glTF・DXF・PDF・Verilog などのファイルで届けます。お手元の CAD・EDA で開いて、続きの設計に使えます。

いま使っている CAD・EDA・CAE の代わりになりますか?

なりません。作るのは、たたき台の設計と、図面・計算書・検証の下書きです。製品の設計の判断、強度や安全の最終の確認、出図の承認は、資格と経験のある技術者が行ってください。実機の試験の代わりにもなりません。

作ったファイルは、ほかのソフトで開けますか?

このページの作例では、STEP を別のソフト(gmsh)で読み直して体積が一致すること、DXF を LibreCAD で開いて印刷できること、Excel の式を LibreOffice で計算し直して一致することを、AI が自分で確かめています。お使いのソフトや形式の版(STEP AP214・AP242 など)を指定して頼むこともできます。

同じものを、もう一度作れますか?

作れます。寸法や条件はスクリプトの先頭の変数にまとまっていて、README の手順で流すと同じものができます。このページの回路と論理の作例では、もう一度流した結果のファイルの SHA-256 が一致することまで確かめました。値を変えて頼み直せば、図面や計算書も一緒に作り直します。

取引先の図面や、社外秘の仕様を入れても大丈夫ですか?

取引先との秘密保持の約束と、社内の規程の範囲で扱ってください。当社は、依頼の内容やファイルを AI の学習に使いません。会話とファイルは国内のサーバーに保存し、依頼の内容は処理のために AI の提供元(海外を含む)へ送ります(プライバシーポリシー 第 3 条)。外に出せない技術の情報は入れないでください。

どのくらいの費用と時間がかかりますか?

月額の費用はなく、使った分だけです(1 クレジット = 税抜 1 円)。このページの作例は、1 つあたり約 30 分〜2 時間 40 分・約 1,400〜4,500 クレジットでした(作例ごとの内訳は「費用」の章に)。AI が計算と確かめをくり返すほど多くかかります。小さな部品や 1 枚の回路図なら、もっと短く少なく済みます。新規登録で 300 クレジットを差し上げます(予算に達し次第終了)。くわしくは料金のページをご覧ください。

まずは、手元の設計で。