G001 Mod100/Ser1
平行模型 · 2026-09-08 · ET v.7.4 p.4「c」版 截距④(PFG-ET-ai1c_G001(p4)-260908)
最後更新:Embedded Table(RUDA 參數):2026-09-08 · ET v.7.4 p.4「c」版 截距④(PFG-ET-ai1c_G001(p4)-260908) · 韌體 commit:2026-09-08(ae0685a)
★ 現行作用中模型(26-0908 起「c」版);BD+SF v.3.1 + ET p.4 截距④(h0 224.395);Rm 已刪除、4010 no-op;v.2.5「b」版以 tag 凍結
0 · 專案組成速覽
PFG100 是一具角速度感測器(Angular Rate Sensor):受控光源照射感測元件,光電差動訊號經 24-bit ΔΣ ADC 取得差壓 Vd(Pdi),再由 STM32H7 韌體做溫度補償與 scale-factor 換算,輸出角速度 W (dps) 與累積角度 A (°)。完整規格見 主規格。
- 硬體
- MCU STM32H7B0RBT6(舊板
230718-H7B0RBT6/新板 v.254120260121) · 主 ADC MCP3561 24-bit ΔΣ(SPI2,讀 Pdi=Vd) · 內建 ADC1 8ch/ADC2 6ch scan · eDAC MCP4726(I2C3 @0x61) · 轉動源 Faulhaber 2342_CR + IE3-1024 編碼器 + MCDC3006 - 韌體 repo
- kuohsuanlo/H743VIT6 · 主線分支
STM32-Diff-Mode-v2310-#G26· Keil MDK 專案20260121-H7B0RBT6/MDK-ARM/H7B0RBT6-20260121.uvprojx· 每個 G00X = 同一份程式碼 + 不同 Embedded Table 常數,各自編成hex-files/<日期>/G00X.hex - 上位機 repo
- kuohsuanlo/ARSnav-2405-graph-file · 最新分支
STM32-H7-SingleEnded(4140e38, 2026-06-16「add latest 4019 commands」) · C# WinForms/.NET Framework 4.6 x86,產出ARSnavPFG100.exe· 主要檔App.cs/DAQSTM32.cs/H7Command.cs/MotorCommandSender.cs· 即時繪圖 + DAQ + 馬達控制(Faulhaber MCL 腳本)
註:master(299054a)仍停在 2023-08,已由上述分支取代;比對分支時以STM32-H7-SingleEnded為準。 - 規格文件
- 演算法
BD+SF_algorithm_ai1-*.pdf(現行 v.2.5/26-0727) · Embedded TablePFG-ET-ai1_*.pdf(現行 v.7.4/26-0727) · 指令集CommandSet+ReleaseLog_B0-*.pdf(A/B/C/D/E 五類) · 規格由 RUDA 定義、Tony 建進韌體 - 共用演算法積木
- 溫補多項式 → Vb · SF → W=SF·V · bias nulling (B110) · 光源功率收斂 (B111–113) · BWEMA (B150/151) · 人工死區濾波 (B16x–B19x) · 靜態歸零 (B200) · 角度積分 (C003/D023) · 診斷串流 (D008–D024,含 Td 與 Laguerre L-filter)
- 模型
- G001–G009 為並行維護的校正模型(彼此平行,非世代),各自對應一張 Embedded Table。目前作用中:G002 (2026rev1);前一版主線為 G008。
- 應用
- 成大 (NCKU) 無人船 (USV) 於亞航 (AIDC) 廠的航向/角度量測(G004 部署),並用於 dT/dt 溫度微分模型研究。
本版變更 · BD+SF v.3.1(26-0908)· 「c」版 · ET p.4 截距④
- 26-0918
8b5c6f4:主線同步 B191(26-0917)與 B221/B220(26-0918),G001 參數與 v.3.1 演算法不變;供 G003/4/5 之後沿用。B191 then-branch 改Wi = W(i−1) + dWi/8;B2212221 R在最終 Vb、SF 後 Vb×R、SF÷R。 - 26-0920
1341986:主線同步 B2X1/B2X0(B211/B221/B231,取代 B221-only)。Ruda 26-0920:v3.x 留給 G004/5/1 或 G002/3 碰瓶頸時再導入,G001 c 線暫停在此。 - 26-0908 16:22
ae0685a:改試 BD+SF v.3.1 + ET p.4(Ruda 同日 16:22 信)。v.3.1 只改權重次方:P3 = Q⁵、P2 = Q³ − P3、P1 = 1 − P2 − P3(v.3.0 為 Q²、Q−P3)。截距改回 p.4 的方案④:a0/b0/c0 = Vdc − 原值 = 0.015845 / 0.010690 / 0.015865,h0 仍 224.395。韌體以#define BDSF_VB_VER 31切換(30 = v.3.0)。Ruda:p.3 的 c 版「好像也沒比 b 好」,v.3.1 配 p.4 若 OK 就停在此組合跑一陣子,資料分析徹底後再處理最後的 residue。用 9/4、9/7、9/8 資料預估:v.3.1 與 v.3.0 各時刻差 <0.02 dps,p.4 比 p.3 高 0.4 dps(暖機 68 分鐘靜止 W 約 −3.8 dps),Tao≈18 mV 時權重 0.057/0.036/0.906,Vb 雜訊 5.9 µV;暖機 17 mV 殘差不受這兩項影響。 - 26-0908 12:08
0192c98「c」版:演算法換成 BD+SF v.3.0(Ruda 26-0907 附檔)。溫度權重改為Q = exp(−|Ta−To|)、P3 = Q²、P2 = Q − P3、P1 = 1 − P2 − P3,Vb = P1·A + P2·B + P3·C。v.2.5 的 Tab/Tob/tt、固定 Q1/Q2/Q3 與 R 混合全部刪除。Ruda:「原來的 Qi 是固定預設值,現在是狀態的評估值;P1+P2+P3=1」。 - Rm 自演算法刪除:
V = Vd − Vb,不再乘 Rm = Vmc/⟨Vm⟩。韌體 Rm 恆為 1 僅供 4007 第 14 欄輸出相容;4010 改為 no-op(不再切換 RmOff);k[]/k_RmOff[] 仍同值。Vmc 成為未使用常數。 - ET p.3 26-0908(PFG-ET-ai1c_G001(p3)-260908):
a0 = b0 = c0 = Vdc = 0.017604(表上原值 0.001759/0.006914/0.001739 劃除,即 26-0906 討論的方案②),h0 225.076 → 224.395;a1…a7、b1…b3、c1…c7、h1…h7、k1…k7 與 26-0902 相同。 - 版本命名與保留(Ruda 26-0908):v.2.5 為「b」版,以 tag
G001-v25-option4(ed24645,hex-files/2026-09-07/G001-4.hex)與G002-2026rev1-frozen(5b0c17d,hex-files/2026-07-28/G002-re-B1X1.hex)凍結;G002 不換版,G003/4/5 之後才跟進 v.3.0。 - 用 26-0907 的 4007 錄製預估 c 版靜止 W(Wz=0):剛開機 −0.30、6 分鐘 −0.74、開機 60 分鐘 −4.34 dps(Vd−Vb = −19 mV)。權重在 Tao≈0.02 V 時為 P1≈P2≈0.02、P3≈0.96,Vb 幾乎等於 C(To);暖機期間 dPdi/dTo 實測 −0.39 V/V、模型 +0.011 V/V,17 mV 暖機漂移仍未被溫度模型涵蓋——Ruda 預期下一步以「To/a/b/c 以外的微變參數」逐步壓低,驗收準則:|Vd−Vb| 多數時間 < 0.0x 甚至 0.00x,偶爾脫鉤但看得出回追。
- (v.2.5 期間,26-0902~0907)全新擬合 ET v.7.4 p.3(26-0902)取代 2025-06 的舊 G001:T 20→25 °C、Vdc 0.000751→0.017604、Vmc 0.893→1.718、a/b/c/h/k 全部重擬;RmOff=1(Ruda 確認 Rm Off)、Q/R 沿用 v.2.5 的 0.07/0.03/0.9·0.2;截距經 26-0905~0906 討論改為方案④(Vdc−原值,3c60ff1→182f22b→475b1d1),因 p.3 的 a0/b0/c0 少了 +Vdc 使 Vb 貼底。
- 數值檢查:
k2/k0 = 1.57%,SF 在 120→600 deg/s 漂 +10.8%(G002-260729 為 +10.6%、G008 為 +9.4%,同一級);h0 改 224.395 後 SF 全區間僅低 0.68 dps/V。 - 26-0903
f6f07b1:新增 4017 指令 {Vd, Vb, S1…S7, Δt}(CommandSet v.26-0902 p.3 增項)。S1…S7 = ADC1 rank 1…7 = PC0 PC1 PC2 PC3 PA0 PA1 PA4 → 韌體變數 Vs Vm To Ta Tb Vx Vmd(9963a9a依 Ruda 26-0903 腳位表修正)。同時把 ADC1/ADC2 全部 14 路 SamplingTime 由 8.5 → 16.5 cycles;472605d修正 MX_ADC2_Init 誤校正 hadc1。
1 · 模型參數
- 單元
- Model 100 / Ser 1
- 校正溫度 T
- 25 °C
- Vdc / Vsc / Vmc
- 0.017604 / 0 / 1.71784
- Toc / Tac / Tbc / Tcc
- 1.70617 / 1.67288 / 1.73511 / 1.74617
- 演算法版本
- BD+SF v.3.1(26-0908)· 「c」版 · ET p.4 截距④
- SF 表示法
- h[] 多項式 k0(v.2.5,無 Szc)
2 · 多項式係數(i = 0…7)
| i → | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|---|---|
| a[i] | 0.015845 | -0.06577 | 0.54027 | -0.36227 | -9.73699 | 27.8683 | 40.6003 | -128.915 |
| b[i] | 0.01069 | 0.004328 | -0.95356 | 5.67093 | 0 | 0 | 0 | 0 |
| c[i] | 0.015865 | -0.06429 | 0.594169 | -0.78111 | -10.9551 | 38.00878 | 49.99546 | -182.019 |
| h[i] | 224.395 | -0.03571 | 11.9084 | -5.0783 | -131.8 | -411.528 | 0 | 0 |
| k[i] | 0 | -1.4764 | 3.5334 | -0.1803 | 0.543 | 0.0275 | -0.0339 | -0.0078 |
a/b/c 溫度補償多項式;k scale-factor 多項式;h SF 零次項溫補。
3 · 演算法(本模型)
套用 主規格 §5 共用訊號鏈,差別只在本頁參數:
溫度 To/Ta/Tba/b/c 多項式
→
Vb偏壓補償
→
V=Pdi−Vbv.3.0:Rm 已自演算法刪除,V = Vd − Vb
→
SF=Σk·Vⁱk0≈224.395
→
W=SF·Vdps
- 溫度補償:a/b/c 對 (To−Toc)/(Ta−Tac)/(Tb−Tbc) 各算 8 階多項式 → 權重 Q=exp(−|Ta−To|)、v.3.1:P3=Q⁵、P2=Q³−P3、P1=1−P2−P3(v.3.0:Q²、Q−P3;P1→A、P2→B、P3→C,和恆為 1) → 混合得 Vb。
- 有效訊號:V = Pdi − Vb(v.3.0:Rm 已自演算法刪除,V = Vd − Vb)。
- Scale factor:v.2.5 表示法:ET 已取消 Szc 欄位,k0 全由 h[] 決定 —— 執行期
k0 = Σ h[n]·zⁿ(z = To−Toc,n = 0…7),SF = k0+k[1]·V+…+k[7]·V⁷。z=0 時 k0 = 224.395;數值掃描 z∈[−0.5, +0.5] 時 k0 落在 167–188 之間,平滑無發散。 - 角速度:W = SF·V(dps)→ 扣靜態 Wz → B16x–B19x 濾波 → 積分成角度 A。
演算法定義信件(共用,可點開):Rm 式 (RmOff/Rm 公式) · 死區 B170/71 · 變化率 B2190/1 · 統一濾波 B1X0/1 · 角度輸出 Command 4023 · Td / D024 (硬體vs軟體 TD) · BD+SF v.3.0 (26-0907) — Q=exp(−|Ta−To|) 權重、Rm 刪除 · BD+SF v.3.1 (26-0908) — P3=Q⁵、P2=Q³−P3;配 ET p.4
4 · 出處與更新
- 最後更新
- Embedded Table(RUDA 參數):2026-09-08 · ET v.7.4 p.4「c」版 截距④(PFG-ET-ai1c_G001(p4)-260908) · 韌體 commit:2026-09-08(ae0685a)
- 原始碼
- main.c 的
PFG100-G001區塊 ·hex-files/<日期>/G001.hex