feat(adc): UN 标定完成、标定脚本归集到 test/host/cal/
- UN 通道 5 点最小二乘标定完成:r=555.382141, b=-1, 残差 0.038%, R²=0.99999967 - UA/IA/UN 三路 VALID 置位,保护解卡 - ROM 默认值更新为当前标定值(ADC_CAL_R_Q16_VOLT=555.144958) - UB/UC/UN 通过 104 写入 ROM 默认值,config.ini 同步 - cal_fit.py 新增 ROLD 表自动读取,不再需要手传 --r-old - 执行卡精简至 126 行,新增 cal_collect.py 采集脚本与 ROLD 填表 - 标定脚本(cal_fit/cal_write/cal_collect)归集到 test/host/cal/ - 全库文档路径引用同步更新(8 文件) - UN 当前态文档改写:明确零序电压 U0 语义、本台架未接线状态 - 删除已失效的外部知识底座文档链接
This commit is contained in:
@@ -195,8 +195,8 @@ static int s_total = 0, s_passed = 0, s_failed = 0;
|
||||
* STM32 侧 UB/UC 是电压族、IB/IC/IN 是电流族(V0.1 双转换器分配,见
|
||||
* docs/硬件平台/ADC通道映射说明.md 与 adc_cal.c 的 ROM 表)。
|
||||
* 容差只需盖住 float32 中间积舍入(相对 ~1e-7)与打印粒度。 */
|
||||
#define EXP_R_VOLT (1000.0) /* 电压族变比 V/V */
|
||||
#define EXP_R_CURR (29.4118) /* 电流族变比 A/V(1927532/65536 的十进制口径) */
|
||||
#define EXP_R_VOLT (555.144958) /* 电压族变比 V/V */
|
||||
#define EXP_R_CURR (29.610748) /* 电流族变比 A/V(1927532/65536 的十进制口径) */
|
||||
|
||||
static double exp_ratio(adc_semantic_t sem) {
|
||||
switch (sem) {
|
||||
@@ -463,14 +463,14 @@ static void tc_024_ratio_defaults(void) {
|
||||
adc_cal_init();
|
||||
/* 电压族 1000.0 V/V、电流族 29.4118 A/V——十进制口径在此独立写出,
|
||||
* Q16 原值由 比值 × 65536 就地算出(1927532 = 29.4118 x 65536 的回落) */
|
||||
CHECK(near_d((double)adc_cal_ratio(ADC_SEM_UA), EXP_R_VOLT), "UA ratio = 1000.0 V/V");
|
||||
CHECK(near_d((double)adc_cal_ratio(ADC_SEM_UN), EXP_R_VOLT), "UN ratio = 1000.0 V/V");
|
||||
CHECK(near_d((double)adc_cal_ratio(ADC_SEM_IA), EXP_R_CURR), "IA ratio = 29.4118 A/V");
|
||||
CHECK(near_d((double)adc_cal_ratio(ADC_SEM_IN), EXP_R_CURR), "IN ratio = 29.4118 A/V");
|
||||
CHECK(near_d((double)adc_cal_ratio(ADC_SEM_UA), EXP_R_VOLT), "UA ratio = 555.144958 V/V");
|
||||
CHECK(near_d((double)adc_cal_ratio(ADC_SEM_UN), EXP_R_VOLT), "UN ratio = 555.144958 V/V");
|
||||
CHECK(near_d((double)adc_cal_ratio(ADC_SEM_IA), EXP_R_CURR), "IA ratio = 29.610748 A/V");
|
||||
CHECK(near_d((double)adc_cal_ratio(ADC_SEM_IN), EXP_R_CURR), "IN ratio = 29.610748 A/V");
|
||||
CHECK(adc_cal_ratio_q16(ADC_SEM_UA) == (int32_t)my_lround(EXP_R_VOLT * 65536.0),
|
||||
"UA ratio q16 = 65536000 (LSB exact)");
|
||||
"UA ratio q16 = 36381980 (LSB exact)");
|
||||
CHECK(adc_cal_ratio_q16(ADC_SEM_IA) == (int32_t)my_lround(EXP_R_CURR * 65536.0),
|
||||
"IA ratio q16 = 1927532 (LSB exact)");
|
||||
"IA ratio q16 = 1940570 (LSB exact)");
|
||||
CHECK(adc_cal_ratio_configured(ADC_SEM_UA) == 1u, "UA ratio configured at boot");
|
||||
CHECK(adc_cal_ratio_configured(ADC_SEM_IA) == 1u, "IA ratio configured at boot");
|
||||
/* TEMP 不参与线性标定;越界通道同守卫 */
|
||||
|
||||
Reference in New Issue
Block a user