I. 摘要:解碼應用

  1. 電壓感測器輸出值為16進位代碼, 由於沒有轉換公式, 無法正確得知量測電壓, 我們嘗試以數據建模方式來推導可能的公式.

  2. 在了解該感測器相關規格, 以及用途後, 考慮了需要的量測準確度 (例如實驗儀器的選擇), 量測次數, 需要的感測器數量, 來進行收集數據的實驗規劃.

  3. 最終產生了有效的電壓轉換公式 (R square > 0.9999), 並且找出各感測器可能的操作電流, 後者是非預期的發現.

工作流程示意圖

工作流程示意圖

  1. 資料概述

    1. sensor_id: 感測器ID

    2. sensor_mac: 與sensor_id同功能

    3. volt_code: 感測器輸出的電壓代碼

    4. volt_set: 感測器連結的已知電壓源

感測器輸出-電壓原始資料
sensor_id sensor_mac volt_code volt_set
0114 84:DD:20:E0:B3:E4 5100268602E1 9.005
0114 84:DD:20:E0:B3:E4 5100268302E1 9.005
0114 84:DD:20:E0:B3:E4 5100268802E2 9.005
0115 84:DD:20:E0:BB:65 510026630310 9.005
0115 84:DD:20:E0:BB:65 5100265F030E 9.005
0115 84:DD:20:E0:BB:65 5100265E0310 9.005
0148 84:DD:20:E0:B0:FA 5100267302F6 9.005
0148 84:DD:20:E0:B0:FA 5100267102F9 9.005
0148 84:DD:20:E0:B0:FA 5100266C02F8 9.005
0149 84:DD:20:E0:B6:45 5100266C02EA 9.005
0149 84:DD:20:E0:B6:45 5100265C02EC 9.005
0149 84:DD:20:E0:B6:45 5100266402EC 9.005
0170 84:DD:20:E0:B1:9D 510026610302 9.005
0170 84:DD:20:E0:B1:9D 510026670308 9.005
0170 84:DD:20:E0:B1:9D 5100266D0308 9.005
0171 84:DD:20:E0:BB:21 5100264C02FA 9.005
0171 84:DD:20:E0:BB:21 5100264702F8 9.005
0171 84:DD:20:E0:BB:21 5100265602FC 9.005
0172 84:DD:20:E0:B1:8C 5100265802FE 9.005
0172 84:DD:20:E0:B1:8C 5100265002FD 9.005
0172 84:DD:20:E0:B1:8C 5100265002FC 9.005
0173 84:DD:20:E0:B4:E9 5100266B033C 9.005
0173 84:DD:20:E0:B4:E9 5100266C033C 9.005
0173 84:DD:20:E0:B4:E9 51002667033E 9.005
0174 84:DD:20:E0:B6:06 5100265D02F9 9.005
0174 84:DD:20:E0:B6:06 5100265D02F8 9.005
0174 84:DD:20:E0:B6:06 5100265402F6 9.005
0114 84:DD:20:E0:B3:E4 5100276002E2 9.205
0114 84:DD:20:E0:B3:E4 5100276202E6 9.205
0114 84:DD:20:E0:B3:E4 5100276C02E2 9.205
0115 84:DD:20:E0:BB:65 510027400310 9.205
0115 84:DD:20:E0:BB:65 5100273E030E 9.205
0115 84:DD:20:E0:BB:65 51002744030E 9.205
0148 84:DD:20:E0:B0:FA 5100274402F8 9.205
0148 84:DD:20:E0:B0:FA 5100275502F9 9.205
0148 84:DD:20:E0:B0:FA 5100273F02F8 9.205
0149 84:DD:20:E0:B6:45 5100274C02ED 9.205
0149 84:DD:20:E0:B6:45 5100273C02EA 9.205
0149 84:DD:20:E0:B6:45 5100275B02EC 9.205
0170 84:DD:20:E0:B1:9D 510027510305 9.205
0170 84:DD:20:E0:B1:9D 510027540305 9.205
0170 84:DD:20:E0:B1:9D 5100274C0306 9.205
0171 84:DD:20:E0:BB:21 5100273A02FA 9.205
0171 84:DD:20:E0:BB:21 5100273002FA 9.205
0171 84:DD:20:E0:BB:21 5100273202F9 9.205
0172 84:DD:20:E0:B1:8C 5100273A02FC 9.205
0172 84:DD:20:E0:B1:8C 5100273D02FE 9.205
0172 84:DD:20:E0:B1:8C 5100273802FE 9.205
0173 84:DD:20:E0:B4:E9 5100274E033D 9.205
0173 84:DD:20:E0:B4:E9 51002747033A 9.205
0173 84:DD:20:E0:B4:E9 51002744033C 9.205
0174 84:DD:20:E0:B6:06 5100274C02F8 9.205
0174 84:DD:20:E0:B6:06 5100274602F6 9.205
0174 84:DD:20:E0:B6:06 5100273E02F9 9.205
0114 84:DD:20:E0:B3:E4 5100284B02E2 9.405
0114 84:DD:20:E0:B3:E4 5100284802E4 9.405
0114 84:DD:20:E0:B3:E4 5100284E02E5 9.405
0115 84:DD:20:E0:BB:65 51002827030E 9.405
0115 84:DD:20:E0:BB:65 510028240310 9.405
0115 84:DD:20:E0:BB:65 51002822030D 9.405
0148 84:DD:20:E0:B0:FA 5100283402F9 9.405
0148 84:DD:20:E0:B0:FA 5100283802F9 9.405
0148 84:DD:20:E0:B0:FA 5100284702F8 9.405
0149 84:DD:20:E0:B6:45 5100283002EC 9.405
0149 84:DD:20:E0:B6:45 5100283702E9 9.405
0149 84:DD:20:E0:B6:45 5100283302EA 9.405
0170 84:DD:20:E0:B1:9D 510028340308 9.405
0170 84:DD:20:E0:B1:9D 510028310305 9.405
0170 84:DD:20:E0:B1:9D 510028340305 9.405
0171 84:DD:20:E0:BB:21 5100282002F9 9.405
0171 84:DD:20:E0:BB:21 5100281A02FA 9.405
0171 84:DD:20:E0:BB:21 5100282802FA 9.405
0172 84:DD:20:E0:B1:8C 5100281902FD 9.405
0172 84:DD:20:E0:B1:8C 5100282402FC 9.405
0172 84:DD:20:E0:B1:8C 5100282402FC 9.405
0173 84:DD:20:E0:B4:E9 5100282B0338 9.405
0173 84:DD:20:E0:B4:E9 5100282F0339 9.405
0173 84:DD:20:E0:B4:E9 5100282E033C 9.405
0174 84:DD:20:E0:B6:06 5100282102F9 9.405
0174 84:DD:20:E0:B6:06 5100282C02FA 9.405
0174 84:DD:20:E0:B6:06 5100282202F8 9.405
0114 84:DD:20:E0:B3:E4 5100292E02E4 9.605
0114 84:DD:20:E0:B3:E4 5100292F02E4 9.605
0114 84:DD:20:E0:B3:E4 5100293402E5 9.605
0115 84:DD:20:E0:BB:65 510029120311 9.605
0115 84:DD:20:E0:BB:65 5100290A030C 9.605
0115 84:DD:20:E0:BB:65 5100290B0310 9.605
0148 84:DD:20:E0:B0:FA 5100291802F8 9.605
0148 84:DD:20:E0:B0:FA 5100291902F8 9.605
0148 84:DD:20:E0:B0:FA 5100291F02F8 9.605
0149 84:DD:20:E0:B6:45 5100291F02ED 9.605
0149 84:DD:20:E0:B6:45 5100291A02EA 9.605
0149 84:DD:20:E0:B6:45 5100291B02EC 9.605
0170 84:DD:20:E0:B1:9D 510029130309 9.605
0170 84:DD:20:E0:B1:9D 510029180306 9.605
0170 84:DD:20:E0:B1:9D 510029170308 9.605
0171 84:DD:20:E0:BB:21 510028FB02F9 9.605
0171 84:DD:20:E0:BB:21 510028FB02FA 9.605
0171 84:DD:20:E0:BB:21 5100290402FC 9.605
0172 84:DD:20:E0:B1:8C 5100290202FC 9.605

II. 分析感測器變數與隨電壓分佈之關係

  1. 感測器回傳的代碼有12個 (例如5100268602E1), 我們可以將其1, 2, 4…個代碼做為一組來觀察, 最後發現以2個代碼為一組有較好的效果.

  2. 定義5100268602E1中的51, 00, 26, 86. 02, E1分別為變數V1, V2, V3, V4, V5, V6, 觀察各個變數轉為10進位後, 其值與量測電壓間的關係.

  3. **V1與V2*: 只有單一值, 完全不隨電壓變化, 可能是類似型號的代碼.

  1. **V3與V4*: V3與電壓呈明顯的正相關, 而V4則呈現特殊的分布, 我們可以在某一個電壓範圍 (例如10~11 V), 隨著電壓升高, V4會變小, 而這個現象會持續重複.

  1. **V5與V6*: 與電壓無明顯的相關性, V5只有兩個值, V6一樣有特殊的分布. 後續研究發現它可能與感測器操作電流有關 (詳述於V小節).

  1. 進一步將V3, V4及電壓視覺化:

    1. 可以看出在同一個V3時 (例如49), 當V4越大, 電壓也越大; 此外, 我們也可以看到(V3, V4) = (48, 248) 與 (49, 4) 的電壓是相同的, 這可能指出V4可進位到V3.

    2. 此外, V4也隨著電壓有週期性的變化, 該週期長度約1.8 V.

III. 代碼說明與建模結果

  1. 感測器回傳的代碼, 以5100268602E1為例來進行說明:

    前四碼5100可能是型號代碼

    中四碼2686為測得電壓代碼, 轉10進位後, 再乘以特定係數, 代表量測到的電壓 (單位V).

    V = (hextodec(26) + hextodec(86)/256)*alpha

    末四碼02E1為測得電流代碼, 轉10進位後代表感測器測得的電流 (單位A), 詳見後續感測器分析.

    A = hextodec(02) + hextodec(E1)/256

  2. 轉換公式如下:

    \[ V = V3 + V42/256 \] \[ Vsqr = V**2 \] \[ Vroot = V**0.5 \] \[ Volt = V*0.3161134 + Vsqr*-3.1363203\times 10^{-4} + Vroot*-0.8342468 + 2.4996032\]

    Vsqr: V平方, Vroot: V平方根

  3. 模型分析:

    3.1 R square與MAE:

    在< 0.1%的顯著水準之下, volt與V呈正相關, 但與V_sqr及V_root呈負相關.

    決定係數 (R square) > 0.9999: 代表變數幾乎可完全可解釋電壓變化

    在9V到15V的範圍內, 平均絕對誤差 (MAE) 0.008, 最大絕對誤差0.041: 可做為後續電池壽命分析中, sliding windows演算法中的誤差閾值之參考值.

    誤差可能來自於感測器本身, 電源供應器, 三用電表, 或其它環境因子. 在後續感測器分析中, 會更進一步說明感測器的影響.

    3.2 殘差分析可以看出殘差呈現隨機分佈, 代表有效處理遺漏變數或非線性關係.

    3.3 再以四種診斷圖觀察模型, 可以發現殘差相當接近常態分布, 也具有好的同質變異性質.

## [1] "模型結果"
## 
## Call:
## lm(formula = volt_set ~ BV + BV_sqr + BV_root, data = df)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.036941 -0.006006 -0.000305  0.006802  0.037763 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  2.500e+00  6.211e-01   4.025 6.19e-05 ***
## BV           3.161e-01  2.424e-02  13.042  < 2e-16 ***
## BV_sqr      -3.136e-04  7.775e-05  -4.034 5.96e-05 ***
## BV_root     -8.342e-01  2.318e-01  -3.600 0.000336 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.01064 on 887 degrees of freedom
## Multiple R-squared:      1,  Adjusted R-squared:      1 
## F-statistic: 9.51e+06 on 3 and 887 DF,  p-value: < 2.2e-16
## [1] "左: 模型預測值 (pred) 對實際值 (volt) 散佈圖; 右: 預測值對殘差的散佈圖"

## [1] "模型基本診斷"

IV. 感測器分析1: 殘差隨實際電壓之變化

  1. 觀察每個感測器殘差值隨實際電壓之變化.

  2. 可以發現0114 (感測器id) 在低電壓時預測值明顯較實際值低, 而0148則相反在高電壓值時有高估的預測值. 這可能導致模型為了最小化誤差值, 而傾向在低電壓時高估, 在高電壓時低估.

  3. 由於此類感測器出現的機率可能超過20%, 因此目前較好的做法是讓模型考慮這樣的變異去妥協, 避免它們產生更大的誤差影響後續電池壽命實驗的分析與判斷.

  4. 未來如果有考慮進行品管篩選感測器, 可再修改模型後, 評估各感測器於實際電壓9V及15V時之殘差, 若大於設定閾值則剔除.

## [1] "顏色代表不同的感測器, 點為實際誤差值, 線則是配適資料產生的趨勢線"

V. 感測器分析2: 16進位代值末四碼可能是感測器的操作電流

  1. 由V3和V4間的進位關係, 可以發現V5和V6間也有類似的關係, 但需要從感測器角度來觀察. 由圖可以看出, 當感測器V5 = 2時, V6範圍將介於225~250, 當V5 = 3時, V6範圍將介於0~62. 特別是觀察感測器id 0172, 可以看到其由(2,250) 及 (3,0).
  1. 而從V5和V6計算出來的A, 我們觀察到,對於每個感測器來說, A不隨volt變化,而是接近一個定值, 且其值與規格書操作電流相當 (~3mA), 因此我們可以推測它代表了感測器量測到的電流.

  2. A也許可用來判斷感測器的品質或其他應用.

email: chtsai0108@gmail.com