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・第三角法)

はめあい(H7/k5 など)・幾何公差・表面性状・部品欄・表題欄まで、図面の PDF のとおりに表示しています。拡大して見るときは PDF をお使いください。
歯車の諸元(計算書から)
| 項目 | 1 段目 | 2 段目 |
|---|---|---|
| モジュール | 0.8 | 1.0 |
| 歯数(小 / 大) | 20 / 70 | 18 / 62 |
| 減速比 | 3.500 | 3.444 |
| 中心距離 [mm] | 36.00 ± 0.02 | 40.00 ± 0.02 |
| かみ合い率 | 1.682 | 1.660 |
| バックラッシ(円周)[mm] | 0.060 | 0.080 |
| 曲げの安全率(小歯車) | 18.5 | 14.1 |
| 面圧の安全率 | 2.30 | 1.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 枚)

シミュレーション(AI の出した CSV から描き直したグラフ)
刻み 5 ns でスイッチングをそのまま解いた結果(スイッチング回路の方程式を前進オイラー法(刻み 5 ns)で時間積分)。負荷を 1 A から 3 A に増やしたときの下がりは 172 mV(計算の目安 177 mV)、3 A のときのリップルは 6.3 mV p-p。
区間ごとに一定の入力の線形な常微分方程式を、行列の指数関数(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 も一致しました。

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




検証の結果(39 項目・自動で判定)
| テストベンチ | ID | 検査の内容 | 結果 | 詳細 |
|---|---|---|---|---|
| tb_encoder | E1 | 正転 100 周期(400 エッジ)で位置 = +400 | PASS | pos=400(期待 400) |
| tb_encoder | E2 | 逆転 150 周期で位置 = -200 | PASS | pos=-200(期待 -200) |
| tb_encoder | E3a | 各エッジに 2〜4 回のバウンド(1〜12 クロック)をつけた正転 200 エッジ | PASS | 増分=200(期待 200)、数えた回数=200(期待 200)、不正遷移=0 |
| tb_encoder | E3b | バウンドつきの逆転 200 エッジ | PASS | 増分=-200(期待 -200)、数えた回数=200(期待 200)、不正遷移=0 |
| tb_encoder | E3c | 停止中に A・B へ 1〜15 クロックのひげを 200 回入れても数えない | PASS | 増分=0、数えた回数=0(どちらも期待 0)、不正遷移=0 |
| tb_encoder | E4 | A・B の同時変化は不正遷移として検出し、位置は変えない | PASS | err_pulse=1 回、位置の変化=0 |
| tb_encoder | E5a | 正転 50 カウント/ms の速度を 1 ms ごとに計る | PASS | 3 回とも speed=50 か: 最後=50 カウント/ms(期待 50) |
| tb_encoder | E5b | 逆転 -120 カウント/ms の速度を計る | PASS | 3 回とも speed=-120 か: 最後=-120 カウント/ms(期待 -120) |
| tb_encoder | E6 | 動作中に位置を 0 にしても速度は跳ばない | PASS | クリアした周期=38(0〜50)、次の 2 回=50 か(最後=50)、pos=226 |
| tb_encoder | E7 | 位置が 0 を挟むとき(下位 16 ビットの桁借り・桁上げ)も正しい | PASS | 0 → -5 → +5 の各エッジで一致、最後の pos=5 (0x00000005) |
| tb_encoder | E8 | 全期間で位置は 1 クロックに ±1 しか変わらない | PASS | 1 クロックに 2 以上変わった回数=0 |
| tb_pwm | P1 | PWM の周期 = 2400 クロック(20 kHz) | PASS | 周期=2400 クロック(20.000 kHz) |
| tb_pwm | P2 | パルス幅 = デューティ d クロック(d = 0, 1, 2, 3, 100, 1199〜1201, 2398〜2400) | PASS | 11 通りすべてで幅 = d(0〜2400、2401 段階 = 11.2 ビット) |
| tb_pwm | P3 | パルスの中心が周期の中心(cnt = 1200)から 0.5 クロック以内 | PASS | 中心のずれの最大 = 0.5 クロック(d が奇数のとき 0.5) |
| tb_pwm | P4 | 周期の途中でデューティを変えても、その周期は前の値のまま(二重化) | PASS | 変えた周期の幅=800(期待 800)、次の周期=2000(期待 2000) |
| tb_pwm | P5 | デッドタイム = 設定値(クロック)、ハイサイドの幅は d - dt | PASS | dt = 1, 24, 48, 100 で両方向の間 = dt、ハイサイド幅 = 1200 - dt |
| tb_pwm | P6 | デッドタイムより短いパルスはハイサイドを ON にしない | PASS | d=30、dt=48 でハイサイドの幅=0(期待 0) |
| tb_pwm | P7 | 過電流の入力から 1 クロック以内に PWM の 4 本を止める | PASS | 20 回すべて次の立ち上がりで 4 本とも 0。遅れの最大 = 20.34 ns(1 クロック = 20.83 ns) |
| tb_pwm | P8 | 故障のラッチ・非常停止(kill_sync)の間は 4 本とも 0 | PASS | 3 周期のあいだ 4 本とも 0 |
| tb_pwm | P9 | 全期間で、同じ相のハイサイドとローサイドが同時に ON にならない | PASS | ハイサイドとローサイドが同時に 1 のクロック数 = 0 |
| tb_pi | Q6 | 計算の遅れ = 8 クロック(1 ms の制御周期に対して 0.02 %) | PASS | start を取り込んだクロックから done まで 8 クロック |
| tb_pi | Q1 | 乱数 3000 回で u と積分が参照モデル(理想の整数演算)とビット単位で一致 | PASS | 3000 回のうち不一致 0 回 |
| tb_pi | Q2 | 大きな正の偏差で u = +1200 に飽和し sat_hi = 1 | PASS | u=1200 sat_hi=1 |
| tb_pi | Q3 | 飽和中は積分を止め(増え続けない)、偏差が反転した最初の周期で u ≤ 0(すぐ止める向き) | PASS | 飽和中 200 周期で積分 110520 → 最大 110520(Q.8)、符号反転の最初の周期で u=-1 |
| tb_pi | Q4 | 大きな負の偏差で u = -1200 に飽和し sat_lo = 1、積分は止まる | PASS | u=-1200 sat_lo=1、100 周期で積分の変化なし |
| tb_pi | Q5 | 停止(enable = 0)で積分と u がすぐに 0 | PASS | enable=0 の 2 クロック後に u=0、積分=0 |
| tb_system | S1 | 起動直後は非常停止の状態で始まり、PWM を出さない | PASS | 応答 R01(期待 R01)、起動後 2000 クロックの PWM は 4 本とも 0 |
| tb_system | S2 | C で解除して運転中になる | PASS | C → OK、R → R20(期待 R20 = 運転中) |
| tb_system | S3 | 目標速度 50 カウント/ms に落ち着く(± 2)。整定 30 ms 以内 | PASS | V → V0032(= 50 カウント/ms)、整定時間(±2 に入って出ない)= 5 ms、最大 51 |
| tb_system | S4 | P で読んだ位置が、模型が出したエッジの数と一致(± 3) | PASS | P → P00000782(= 1922)、模型のエッジ数 1922(差 0) |
| tb_system | S5 | 目標 -50(FFCE)で逆転して落ち着く | PASS | V → VFFCE(= -50 カウント/ms、期待 -50 ± 2) |
| tb_system | S6 | D コマンドでデッドタイムを変えられる(0x18 = 24 クロック = 0.5 us) | PASS | D18 → OK、A 相の H→L 間 = 24、L→H 間 = 24 クロック(期待 24) |
| tb_system | S7 | K・I(ゲイン)の設定、小文字・空白入りのコマンドも受け付ける | PASS | K0C00 / i 0266 → OK、v → VFFCE |
| tb_system | S8 | 知らないコマンド・桁数の誤り・16 進でない文字には ? を返す | PASS | X、S12、S12345、P1、@、SZZZZ の 6 つすべてに ? |
| tb_system | S9 | E(非常停止)は文字を受けた時点で PWM を止め、目標を 0 にする | PASS | E のストップビットの中央から 167 ns で 4 本とも 0(行末の前)、1 ms 止まったまま、R → R01 |
| tb_system | S10 | 過電流の入力から 1 クロック以内に PWM を止め、故障をラッチする | PASS | oc_n の立ち下がりから 13.53 ns 後のクロックで 4 本とも 0、ピンが戻っても 2 ms 停止のまま、R → R02 |
| tb_system | S11 | 過電流のピンが有効な間は解除を断り、戻ってから C で再開する | PASS | ピン有効中の C → NG、戻してからの C → OK、35 ms 後 V = 50 |
| tb_system | S12 | Z で位置を 0 にする | PASS | Z → OK、直後の P = 25(Z から約 0.6 ms 分の移動 ≈ 30) |
| tb_system | S13 | 全期間で貫通なし、バウンドつきのエンコーダーでも不正遷移なし | 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 通り変えても、すべて目標を満たしました。
| 資源 | 使った数 | 全体 | 割合 |
|---|---|---|---|
| LUT4 | 1166 | 5280 | 22.1 % |
| FF | 936 | 5280 | 17.7 % |
| CARRY | 480 | 5280 | 9.1 % |
| BRAM (EBR 4kbit) | 0 | 30 | 0.0 % |
| DSP (SB_MAC16) | 2 | 8 | 25.0 % |
| IO | 12 | 96 | 12.5 % |
| PLL | 1 | 1 | 100.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 段階で解き、答えの分かっている問題でソルバーを確かめ、手計算と比べました。
出力軸(S45C)・ミーゼス応力
結果の 3D は、AI が書き出した glTF(ミーゼス応力を頂点の色にしたもの・1 つ約 3 MB)。ハウジングの赤い点は、取付け穴を完全に固定した理想化による値で、評価は穴から 1.5 mm 以上離れた所で行っています。
結果(細かいメッシュ)
| 出力軸(S45C) | リヤハウジング(A5052) | |
|---|---|---|
| 最大ミーゼス応力(定格 / 起動時の最大) | 62.6 / 94.0 MPa | 0.226 / 0.338 MPa |
| 場所 | キー溝の底の丸み(キーが押す側の壁の付け根) | 出力軸の軸受の座 Ø21 の内側のふち |
| 最大変位(定格 / 起動時の最大) | 1.43 / 2.14 μm | 0.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)。



前提と限界(報告書に明記)
- 線形・静的の解析。起動と停止のくり返しに対する疲れ強さは評価していない(別に確かめるよう勧めている)
- 軸受は 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 の内部ブロック図に近い書き方)

赤い破線が、どの成果物にも無いつながり。! の番号は、下の食い違いの一覧の番号です。システムのまとめは、解析(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 h | LP-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.02 | gearbox/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 µs | FPGA: tick_gen・speed_meter・pi_ctrl | fpga 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 PASS | 50 / −50 カウント/ms で ± 2 以内 | 合格 |
| REQ-13 | PWM | 20 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 µs | LP-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 以内に運転に戻れる。原因が残る間は NG | LP-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_sync | fpga S9 PASS | 167 ns | 合格 |
| REQ-20 | 非常停止(ハードウェア) | 非常停止スイッチ(b 接点)を開くと ≤ 10 ms で H ブリッジが全 OFF | (入力が無い) | fpga/rtl/top_up5k.v のポート driver/scripts/parts.py J2 | どの成果物にも非常停止の入力が無い | 不適合 |
| REQ-21 | 電源投入のときに動かない | 電源投入から解除まで、4 本のゲートと EN がすべて L | FPGA: 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 W | LP-MD-01: F1・D1・P-MOSFET × 2・UVLO・TPS54560 | driver/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・TPS70950 | driver/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 h7 | LP-GB-01: 出力軸・リヤハウジング | gearbox/drawings/LP-GB-01_drawings.pdf(LP-GB-01-001・003) | 出力軸端 Ø10・平行キー 3×3×12・取付けフランジ 4 × Ø4.5・印籠 Ø28 h7 | 合格 |
| REQ-32 | FPGA の実装の余裕 | 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³ |
| 減速比 i | 12.0556 | 12.0556 | 一致 |
| 1段 中心距離 a1 [mm] | 36 | 36 | 一致 |
| 2段 中心距離 a2 [mm] | 40 | 40 | 一致 |
| 1段 かみ合い率 | 1.68224 | 1.68224 | 一致 |
| 2段 かみ合い率 | 1.65977 | 1.65977 | 一致 |
| 出力トルク [N·m] | 0.570268 | 0.570268 | 一致 |
| 出力回転数 [rpm] | 497.696 | 497.696 | 一致 |
| 1段 曲げ安全率(小歯車) | 18.5289 | 18.5289 | 一致 |
| 1段 曲げ安全率(大歯車) | 24.7819 | 24.7819 | 一致 |
| 2段 曲げ安全率(小歯車) | 14.0871 | 14.0871 | 一致 |
| 2段 曲げ安全率(大歯車) | 19.3177 | 19.3177 | 一致 |
| 1段 接触の安全率 | 2.29917 | 2.29917 | 一致 |
| 2段 接触の安全率 | 1.93798 | 1.93798 | 一致 |
| 軸 ねじりの安全率(最小) | 5.06246 | 5.06246 | 一致 |
| キー 安全率(最小) | 3.7877 | 3.7877 | 一致 |
| 軸受 L10h の最小 [h] | 5.47511e+06 | 5.47511e+06 | 一致 |
| 1段 バックラッシ(モデルで測定)[mm] | 0.0600184 | 0.0600184 | 一致 |
| 2段 バックラッシ(モデルで測定)[mm] | 0.0800496 | 0.0800496 | 一致 |
| 総質量 [g] | 907.195 | 907.195 | 一致 |
| 3D 干渉 0.001 mm³ 以上の組 | 0 | 0 | 一致 |
| 3D 干渉を調べた組の数 | 79 | 79 | 一致 |
| 図面 PDF のページ数と図番 | 4 枚 | 4 枚 | 一致 |
| STL の三角形の数(36 ファイル) | 127,380 | 127,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 # フロント端壁の内面
LP-GB-01 ・ i = 12.056
2 つの版は同じ縮尺で表示しています。歯車が大きくなった分、ハウジングも広がっています。
LP-GB-01 と LP-GB-02 の違い
| 項目 | LP-GB-01 | LP-GB-02 | 変化 |
|---|---|---|---|
| 1段 モジュール / 歯数 | m0.8 z20/z70 | m0.8 z20/z96 | 変更 |
| 2段 モジュール / 歯数 | m1 z18/z62 | m1 z18/z75 | 変更 |
| 全体の減速比 | 12.0556 | 20.0000 | +65.9 % |
| 1段 中心距離 [mm] | 36.00 | 46.40 | +28.9 % |
| 2段 中心距離 [mm] | 40.00 | 46.50 | +16.2 % |
| 出力回転数 [rpm] | 497.7 | 300.0 | -39.7 % |
| 出力トルク [N·m] | 0.570 | 0.946 | +65.9 % |
| 外形 長さ × 幅 × 高さ(フランジ・軸端を含む) [mm] | 159.0 × 100.0 × 73.0 | 182.4 × 114.4 × 73.0 | 変更 |
| 総質量 [g] | 907.2 | 1158.6 | +27.7 % |
| 2段 歯面の接触 | 1.94 | 1.74 | -10.3 % |
| 出力軸(軸端 有効 Ø8.2) ねじり | 5.06 | 3.05 | -39.7 % |
全 65 項目は v1_v2_compare.xlsx に。干渉の確かめは両方とも 0 組・NG 0。
組立図も、同じスクリプトから描き直し

変数を変えるだけでは作れなかった。AI が見つけて直したこと
- 図番と注記の直書き: 図番(27 か所)と、ハウジングの注記の中心距離「36±0.02・40±0.02」がスクリプトに直接書かれていた。変数から決める形に直した
- 黙って飛ばされていた確かめ: すき間を調べる部品を、歯数入りの名前で指定していたため、新しい版では 12 組のうち 10 組の確かめが黙って飛ばされていた。番号で探し、見つからなければ止める形に直した
- 図の置き場所: 決まった座標に置いていたため、大きくなった図が用紙からはみ出した。形の大きさから決める形に直した
- 前回の組立図の誤り: 直す途中で、前の版の組立図で右側面図の高さが主投影と 5 mm ずれていたことに気づき、直した(第三角法ではそろえる)。このページの図面は直したあとのものです
COST
このページの作例に、かかったもの。
月額の費用はなく、使った分だけです。AI が計算と確かめをくり返すほど、時間とクレジットは多くかかります。小さな部品や 1 枚の回路図なら、もっと短く少なく済みます。
| 作例 | 届いたもの | できあがりまで | クレジット | 道具 |
|---|---|---|---|---|
| 機構: 2 段の平歯車の減速機 | STEP・STL・glTF・図面 4 枚・計算書・スクリプト | 約 1 時間 27 分 | 約 2,305 | 111 回 |
| 回路: モーター駆動基板 | 回路図 3 枚・部品表・計算書 23 ページ・シミュレーション | 約 1 時間 4 分 | 約 2,288 | 115 回 |
| 論理: FPGA の制御回路 | RTL 13 モジュール・検証 39 項目・合成と配置配線・設計書 | 約 1 時間 16 分 | 約 2,138 | 120 回 |
| 解析: 有限要素法 | 応力と変位・収束・手計算との比べ・報告書 | 約 2 時間 41 分 | 約 3,310 | 140 回 |
| 再現性: もう一度流す + 1/20 の版 | 一致の表・LP-GB-02 の 3D・図面・計算書 | 約 2 時間 16 分 | 約 4,518 | 84 回 |
| システム: 要求からトレーサビリティ | 要求仕様・構成図・インターフェース・FMEA・設計書 | 約 28 分 | 約 1,395 | 74 回 |
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 クレジットを差し上げます(予算に達し次第終了)。くわしくは料金のページをご覧ください。