尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

基于STM32的铅酸电池内阻测量仪:交流注入法从原理到实现

发布时间:2026/9/28 1:44:00

资讯中心
01
ARTICLE

基于STM32的铅酸电池内阻测量仪:交流注入法从原理到实现

基于STM32的铅酸电池内阻测量仪:交流注入法从原理到实现
铅酸蓄电池用久了内阻会慢慢变大容量跟着掉很多人只测电压就判断电池好坏结果一上负载就趴窝。我前两年给一个机房做后备电源巡检几十节12V铅酸电池用万用表量全是12.6V以上看着都挺健康结果停电切换时撑不过三分钟。后来借了一台专业内阻仪挨个测才发现有三节内阻已经飙到正常值的两倍多。那台仪器报价小一万我就琢磨着自己用STM32做一个成本压到两百块以内精度够巡检用就行。这篇文章就把整个方案从原理到代码完整拆一遍包括交流注入法怎么实现、模拟前端怎么设计、STM32的ADC和DMA怎么配合、以及我在实测中踩过的那些坑。适合有STM32基础、想做一个能落地的测量类项目的朋友也适合做毕业设计需要完整方案的同学。1. 为什么测内阻比测电压更能判断电池死活1.1 电压会骗人内阻不会铅酸电池的端电压在开路状态下只要还有一点活性物质基本都能维持在12V以上。你拿万用表一量12.5V、12.6V看起来都正常。但这个电压是虚的它只反映电池的电动势不反映电池带载能力。真正决定电池能不能输出大电流的是内阻。打个比方电池就像一个水池电压是水位高度内阻是出水管的粗细。水位再高管子堵了你放水的时候流量就是上不去。内阻大的电池一接负载端电压瞬间被内阻分压拉低设备就欠压保护了。内阻的变化是有物理依据的。铅酸电池老化过程中正极板栅腐蚀、负极硫酸盐化、电解液干涸这些都会导致内阻上升。行业经验数据是内阻比出厂值上升25%容量大概降到80%上升50%容量可能只剩一半。所以内阻是一个能提前预警的指标比等到电压掉下来再发现要主动得多。1.2 内阻测量到底测的是什么严格来说电池内阻不是一个纯电阻它包含欧姆内阻和极化内阻两部分。欧姆内阻来自极板、电解液、隔板的离子导电电阻响应速度极快微秒级。极化内阻来自电化学反应过程中的浓差极化和电化学极化响应慢毫秒到秒级。我们做巡检关心的是欧姆内阻因为它跟电池健康度的相关性最好而且测量速度快、重复性好。要测欧姆内阻就得用交流注入法给电池注入一个高频小信号交流电流测它两端的交流电压响应两者相除就是内阻。频率一般选1kHz这个频率下极化内阻基本来不及建立测到的接近纯欧姆内阻。注意用直流放电法测内阻虽然简单但会消耗电池能量而且大电流放电对电池有损伤不适合频繁巡检。交流注入法用mA级小信号对电池几乎无影响这是我选它的核心原因。1.3 目标指标定在哪里做之前先定指标不然方案会飘。我的目标是指标项目标值说明内阻测量范围0.1mΩ ~ 100mΩ覆盖12V/100Ah到12V/7Ah分辨率0.1mΩ能看出老化趋势激励频率1kHz避开极化内阻激励电流约100mA小信号不伤电池供电锂电池USB便携巡检成本200元不含外壳和屏幕这个指标不算高但足够做机房巡检和电动车电池筛选。专业仪器能到0.01mΩ分辨率但那是实验室级别我们做工程应用没必要追那么高。2. 交流注入法的模拟前端怎么搭2.1 整体信号链设计整个测量链路是这样的STM32产生1kHz方波经过低通滤波变成正弦波再经过恒流驱动电路注入电池。电池两端的交流响应电压经过隔直、放大、滤波送入ADC采样。同时采一路参考信号用来做相敏检波把同相分量提取出来。为什么要相敏检波因为电池两端的响应信号里除了我们注入的1kHz分量还有环境噪声、工频干扰、电池本身的直流分量。直接测幅值会被干扰带偏。相敏检波只提取与激励同频同相的分量抗干扰能力极强这是专业内阻仪的标准做法。信号链可以概括为激励源STM32定时器PWM → RC低通 → 运放缓冲 → 恒流源注入恒流源输出接电池正负极采集电池两端 → 隔直电容 → 仪表放大器 → 带通滤波 → ADC参考激励信号分一路 → 比较器整形 → 方波参考处理ADC采样 → 相敏检波 → 计算幅值 → 内阻2.2 恒流源为什么不能用电阻直接限流有人图省事用一个电阻串在激励源和电池之间靠电阻限流。这个做法在电池内阻变化时注入电流会跟着变因为负载阻抗变了。内阻从1mΩ变到100mΩ如果限流电阻是100Ω电流变化只有0.1%看起来还行。但问题是电池内阻很小你要产生100mA电流激励电压只需要10mV级别这个信号太弱容易被噪声淹没。正确做法是用运放搭恒流源。我用的是Howland电流泵结构一个运放加四个电阻输出电流由输入电压和电阻比值决定与负载无关。具体参数输入1kHz正弦波幅值1V反馈电阻取10Ω输出电流就是100mA。这个电路的好处是输出阻抗高电池内阻变化时电流基本不变。实际搭的时候要注意运放的压摆率和带宽。1kHz信号100mA输出如果运放带宽不够输出波形会失真谐波分量会干扰测量。我选的是OPA2188带宽2MHz压摆率0.8V/μs够用。供电用±5V保证输出摆幅能覆盖电池内阻上的压降。2.3 隔直和放大电路的关键细节电池两端有12V直流我们的响应信号只有几百微伏到几毫伏直接放大12V会把运放打饱和。所以必须先隔直。隔直电容选1μF配合后级输入阻抗高通截止频率设在100Hz左右1kHz信号能顺利通过直流被挡住。放大用仪表放大器AD620增益设100倍。为什么用仪表放大器而不是普通运放因为电池两端是差分信号而且共模电压有12V普通运放搭差分电路电阻匹配精度要求极高否则共模抑制比上不去。AD620的共模抑制比在1kHz下能到100dB以上12V共模被压到微伏级不会影响测量。放大之后再加一级带通滤波中心频率1kHzQ值取5左右。这一级的作用是进一步滤掉带外噪声尤其是工频50Hz和它的谐波。我用的是多重反馈带通结构一个运放搞定元件少调试方便。提示隔直电容的漏电流要小否则会在高阻节点上产生漂移。我一开始用了普通铝电解结果零点漂移严重换成钽电容后稳定了。这个细节在教科书上不会写但实际调试时很关键。2.4 ADC采样的时序安排STM32的ADC采样要和激励信号同步否则相敏检波算出来的相位会乱。我的做法是用同一个定时器触发PWM输出和ADC采样。定时器设成1kHzPWM模式输出方波同时更新事件触发ADC。这样每个激励周期采一个点采N个周期后做数字相敏检波。采样率就是1kHz每个周期采一个点。要恢复1kHz信号的幅值和相位理论上每个周期采两个点就够了但为了做相敏检波我采了4个点分别对应0°、90°、180°、270°。这样可以直接算出同相分量和正交分量不需要做FFT计算量小STM32F103完全跑得动。ADC用DMA搬运采满256个点后触发中断在中断里做相敏检波。256个点对应64个激励周期平均下来噪声被压得很低。实测下来这个方案的信噪比能到60dB以上测0.1mΩ分辨率没问题。3. STM32的代码框架和关键实现3.1 定时器与ADC的联动配置先看定时器配置。我用TIM2时钟72MHz预分频设71得到1MHz计数频率。自动重装载值设999这样更新频率是1kHz。PWM模式占空比50%输出到PA0。同时使能更新事件触发ADC。void TIM2_Config(void) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); TIM_TimeBaseStructure.TIM_Period 999; TIM_TimeBaseStructure.TIM_Prescaler 71; TIM_TimeBaseStructure.TIM_ClockDivision 0; TIM_TimeBaseStructure.TIM_CounterMode TIM_CounterMode_Up; TIM_TimeBaseInit(TIM2, TIM_TimeBaseStructure); TIM_OCInitStructure.TIM_OCMode TIM_OCMode_PWM1; TIM_OCInitStructure.TIM_OutputState TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse 500; TIM_OCInitStructure.TIM_OCPolarity TIM_OCPolarity_High; TIM_OC1Init(TIM2, TIM_OCInitStructure); TIM_SelectOutputTrigger(TIM2, TIM_TRGOSource_Update); TIM_Cmd(TIM2, ENABLE); }ADC配置成外部触发触发源选TIM2的TRGO。采样时间设长一点我设的是239.5个ADC周期因为前端输出阻抗不低采样时间短了采不准。DMA设成循环模式缓冲区大小256。void ADC_Config(void) { ADC_InitTypeDef ADC_InitStructure; DMA_InitTypeDef DMA_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 | RCC_APB2Periph_GPIOA, ENABLE); RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE); DMA_DeInit(DMA1_Channel1); DMA_InitStructure.DMA_PeripheralBaseAddr (uint32_t)ADC1-DR; DMA_InitStructure.DMA_MemoryBaseAddr (uint32_t)adc_buffer; DMA_InitStructure.DMA_DIR DMA_DIR_PeripheralSRC; DMA_InitStructure.DMA_BufferSize 256; DMA_InitStructure.DMA_PeripheralInc DMA_PeripheralInc_Disable; DMA_InitStructure.DMA_MemoryInc DMA_MemoryInc_Enable; DMA_InitStructure.DMA_PeripheralDataSize DMA_PeripheralDataSize_HalfWord; DMA_InitStructure.DMA_MemoryDataSize DMA_MemoryDataSize_HalfWord; DMA_InitStructure.DMA_Mode DMA_Mode_Circular; DMA_InitStructure.DMA_Priority DMA_Priority_High; DMA_Init(DMA1_Channel1, DMA_InitStructure); DMA_Cmd(DMA1_Channel1, ENABLE); ADC_InitStructure.ADC_Mode ADC_Mode_Independent; ADC_InitStructure.ADC_ScanConvMode DISABLE; ADC_InitStructure.ADC_ContinuousConvMode DISABLE; ADC_InitStructure.ADC_ExternalTrigConv ADC_ExternalTrigConv_T2_TRGO; ADC_InitStructure.ADC_DataAlign ADC_DataAlign_Right; ADC_InitStructure.ADC_NbrOfChannel 1; ADC_Init(ADC1, ADC_InitStructure); ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 1, ADC_SampleTime_239Cycles5); ADC_DMACmd(ADC1, ENABLE); ADC_ExternalTrigConvCmd(ADC1, ENABLE); ADC_Cmd(ADC1, ENABLE); ADC_ResetCalibration(ADC1); while(ADC_GetResetCalibrationStatus(ADC1)); ADC_StartCalibration(ADC1); while(ADC_GetCalibrationStatus(ADC1)); ADC_SoftwareStartConvCmd(ADC1, ENABLE); }这里有个坑ADC的外部触发和DMA要配合好如果DMA没使能就去触发ADC数据会丢。我一开始先启动定时器再配ADC结果前几个周期采到的全是零。正确顺序是先配好ADC和DMA最后启动定时器。3.2 数字相敏检波的实现采到256个点后在DMA传输完成中断里做相敏检波。原理很简单把采样序列分别乘以同相参考和正交参考然后累加平均。void DMA1_Channel1_IRQHandler(void) { if(DMA_GetITStatus(DMA1_IT_TC1)) { DMA_ClearITPendingBit(DMA1_IT_TC1); PSD_Process(); } } void PSD_Process(void) { float sum_i 0, sum_q 0; float ref_i, ref_q; uint16_t i; for(i 0; i 256; i) { ref_i sin_table[i % 4]; ref_q cos_table[i % 4]; sum_i (float)adc_buffer[i] * ref_i; sum_q (float)adc_buffer[i] * ref_q; } sum_i / 128.0f; sum_q / 128.0f; amplitude sqrtf(sum_i * sum_i sum_q * sum_q); phase atan2f(sum_q, sum_i); resistance amplitude / CURRENT_AMPLITUDE; }sin_table和cos_table就是0°、90°、180°、270°对应的值{0, 1, 0, -1}和{1, 0, -1, 0}。因为采样率是激励频率的4倍每个周期正好采4个点所以参考表就4个值循环。这里要注意ADC的直流偏置。前端电路把信号抬到了VCC/2所以adc_buffer里的值有个直流分量。做相敏检波之前要先减去这个直流分量否则算出来的幅值会偏大。我的做法是在初始化时采256个点求平均作为直流偏置存起来后续每次测量都减掉。提示sin_table的索引用i%4但如果采样率和激励频率不是严格的4倍关系相位会慢慢漂移。所以定时器的时钟要准我用的是外部晶振不用内部RC内部RC温漂大测出来数据会跳。3.3 校准和零点处理任何测量系统都要校准。我的校准分两步零点校准和增益校准。零点校准把测试夹短接理论上内阻为零测出来的值就是系统零点偏移。把这个值存到Flash里每次测量结果减去它。增益校准用一个已知阻值的精密电阻比如10mΩ/0.1%测出ADC读数算出比例系数。这个系数也存Flash。void Calibrate_Zero(void) { float sum 0; uint8_t i; for(i 0; i 16; i) { Start_Measure(); while(!measure_done); sum resistance; } zero_offset sum / 16.0f; Save_To_Flash(ADDR_ZERO, zero_offset); } void Calibrate_Gain(float known_resistance) { float measured; Start_Measure(); while(!measure_done); measured resistance - zero_offset; gain_factor known_resistance / measured; Save_To_Flash(ADDR_GAIN, gain_factor); }校准的时候要多次测量取平均单次测量有随机噪声。我一般取16次平均校准后的重复性能到0.05mΩ以内。3.4 温度补偿要不要做铅酸电池内阻对温度敏感温度每降10°C内阻大概上升10%到15%。如果你在冬天户外测和夏天机房测同一个电池读数会差不少。要不要做温度补偿取决于你的使用场景。如果只是做趋势对比每次都在类似环境下测不做补偿也能看出老化趋势。但如果要跟出厂值对比或者在不同季节做巡检记录最好加一个温度传感器把读数归一化到25°C。我加了一个DS18B20测电池表面温度补偿公式用简单的线性模型float Temp_Compensate(float r, float temp) { float k 0.012f; return r / (1.0f k * (temp - 25.0f)); }这个系数0.012是经验值不同厂家电池略有差异但用来做趋势判断足够了。注意温度传感器要贴在电池壳体上测的是电池温度不是环境温度。4. 实测中暴露的问题和解决过程4.1 第一次上电读数乱跳板子焊好代码烧进去第一次测一个12V/7Ah电池读数在5mΩ到50mΩ之间乱跳根本没法用。我先怀疑是代码问题把ADC原始数据打出来看发现波形上叠加了很大的50Hz干扰。排查过程是这样的先用示波器看前端输出确实能看到1kHz信号上叠了明显的工频。说明干扰是从空间耦合进来的不是电源纹波。我把测试线换成屏蔽线屏蔽层单端接地干扰小了一半但还有。继续查发现是恒流源的输出线太长形成了一个天线。把线缩短到20cm以内并且双绞干扰又小了一截。最后剩下的干扰来自电池本身——电池相当于一个大天线环境中的工频会在它两端感应出电压。这个没法从源头消除只能靠相敏检波来抑制。好在相敏检波对不相干的频率抑制很强50Hz和1kHz不同频累加256个点后基本被平均掉了。最终读数稳定在±0.2mΩ以内满足要求。注意如果你做类似项目前端屏蔽和布线比代码更重要。我见过有人代码写得漂亮但板子布局一塌糊涂测出来数据完全不能用。模拟部分的走线要短、要远离数字信号地平面要完整。4.2 恒流源带容性负载振荡第二个问题是恒流源接上电池后输出波形失真有时候还会振荡。用示波器看正弦波顶部被削平了。原因是电池本身有较大的等效并联电容加上测试线的分布电容恒流源驱动容性负载时相位裕度不够运放振荡了。解决办法是在恒流源输出串一个小电阻大概10Ω隔离容性负载。同时在运放反馈回路加一个小的补偿电容大概10pF降低高频增益。这两个措施下去波形恢复正常振荡消失。这个坑很典型。恒流源驱动容性负载是模拟电路的经典问题理论分析要用到运放的相位裕度和负载极点。实际调试时先串电阻隔离再调补偿电容基本都能解决。4.3 ADC采样值饱和第三个问题是ADC读数经常满量程。查了半天发现是仪表放大器的增益设太高了。我一开始设了1000倍想着信号小要多放大。但实际上电池内阻100mΩ时100mA电流产生的电压是10mV放大1000倍就是10V超过ADC的3.3V量程了。重新算ADC量程3.3V参考电压3.3V12位ADC1LSB对应0.8mV。前端增益设100倍10mV信号放大后是1V占ADC量程的30%留足了余量。对于0.1mΩ的最小信号10μV放大100倍是1mV对应1.25个LSB分辨率刚好够。所以增益不是越大越好要跟ADC量程匹配。我最后把增益改成100倍并且在软件里加了自动量程切换如果读数接近满量程就降低增益如果读数太小就提高增益。这样动态范围就宽了。4.4 电池连接电阻的影响这个问题最隐蔽。测试夹夹在电池极柱上接触电阻本身就有几毫欧而且每次夹的位置、力度不同接触电阻会变。你测出来的是电池内阻加接触电阻接触电阻不稳定读数就不重复。解决办法是用四线制测量也就是开尔文连接。两根线走电流两根线测电压电压线接在电流线内侧这样接触电阻不在测量回路里。具体做法是测试夹做成四线夹或者用两个夹子分开夹电流夹在外侧电压夹在内侧。我一开始用的是两线制同一个电池测三次读数能差2mΩ。改成四线制后重复性到了0.1mΩ以内。这个改进对测量精度的影响是决定性的做内阻测量必须用四线制。问题现象根本原因解决措施效果读数乱跳工频干扰耦合屏蔽线相敏检波稳定到±0.2mΩ波形失真振荡容性负载相位裕度不足串10Ω补偿电容波形恢复ADC饱和增益过高增益改100倍自动量程动态范围够用读数不重复接触电阻四线制开尔文连接重复性0.1mΩ5. 从能测到好用几个提升体验的改进5.1 自动量程切换的逻辑手动换挡太麻烦巡检时一节一节测谁也不想每次都调。自动量程的思路是先用一个中间增益测一次根据读数判断该用哪个档位再切过去测第二次。具体逻辑增益分三档10倍、100倍、1000倍。先用100倍测如果ADC读数小于量程的5%说明信号太小切到1000倍如果大于量程的80%说明信号太大切到10倍。切换后重新测量取稳定后的值。void Auto_Range_Measure(void) { float reading; Set_Gain(GAIN_100); Start_Measure(); while(!measure_done); reading Get_ADC_Percent(); if(reading 5.0f) { Set_Gain(GAIN_1000); Start_Measure(); while(!measure_done); } else if(reading 80.0f) { Set_Gain(GAIN_10); Start_Measure(); while(!measure_done); } }切换增益用模拟开关CD4051STM32的GPIO控制。切换后要等一小段时间让电路稳定我延时10ms实测够了。5.2 数据存储和趋势查看巡检的时候你肯定想记录每节电池的数据回去对比。我在板子上加了一个MicroSD卡槽用SPI接口把每次测量的时间、电池编号、内阻值、温度存成CSV文件。文件系统用FatFsSTM32F103的Flash够放。每次测量完按一下按键就存一条。CSV格式方便导到电脑上用Excel看趋势。void Save_Record(uint8_t battery_id, float resistance, float temp) { FIL file; FRESULT res; char buf[64]; UINT bw; res f_open(file, data.csv, FA_OPEN_ALWAYS | FA_WRITE); if(res FR_OK) { f_lseek(file, f_size(file)); sprintf(buf, %lu,%d,%.2f,%.1f\r\n, Get_Timestamp(), battery_id, resistance, temp); f_write(file, buf, strlen(buf), bw); f_close(file); } }时间戳用一个RTCSTM32内部RTC加32.768kHz晶振。如果没有晶振用内部RC也能凑合但走时不准几天就差几分钟。做巡检记录时间不准问题不大但如果你要精确记录还是加个晶振。5.3 低功耗和电池供电便携设备要考虑功耗。STM32F103全速跑的时候大概30mA加上模拟前端和屏幕整机100mA左右。用一块2000mAh的锂电池能连续工作20小时够一天巡检用了。如果想让续航更长可以在待机时把模拟前端断电STM32进Stop模式按键唤醒。Stop模式下STM32电流只有几微安整机待机电流可以做到1mA以下。不过巡检场景下设备一直在用待机功耗不是主要矛盾我最后没做深度低功耗够用就行。提示模拟前端的运放选低功耗型号比如OPA2333静态电流只有几十微安。但低功耗运放的带宽和压摆率会打折选型时要权衡。我用的OPA2188静态电流1mA左右不算低功耗但性能好我优先保性能。5.4 外壳和测试夹的选型外壳用3D打印ABS材料壁厚2mm够结实。屏幕用0.96寸OLEDI2C接口显示内阻、温度、电池编号。按键用三个轻触开关一个测量、一个存储、一个切换显示。测试夹是重点。我用的是纯铜鳄鱼夹夹口镀金接触电阻小。四线制的做法是每个夹子焊两根线一根粗线走电流一根细线测电压细线接在夹口内侧。线用硅胶线柔软耐折巡检时反复弯折不会断。电池极柱有时候氧化接触不好。我随身带一小块砂纸测之前把极柱打磨一下接触电阻能降不少。这个细节看着不起眼但对测量重复性影响很大。6. 精度验证跟专业仪器对比6.1 对比测试的方法做完了得验证精度。我借了一台专业内阻仪同一节电池同一位置两台设备轮流测各测10次取平均。对比了5节不同状态的电池从新电池到报废电池都有。电池编号专业仪器读数(mΩ)自制设备读数(mΩ)偏差(mΩ)偏差百分比18.28.40.22.4%212.512.3-0.2-1.6%325.826.50.72.7%448.347.1-1.2-2.5%585.688.22.63.0%偏差在3%以内对于巡检应用完全够用。偏差随内阻增大而增大的趋势主要来自恒流源的输出阻抗不是无穷大内阻大时注入电流略降。如果要做高精度可以在软件里做非线性校正用多项式拟合。6.2 重复性和稳定性测试精度是一方面重复性更重要。同一节电池连续测20次看读数波动。实测标准差0.08mΩ最大最小值差0.3mΩ。这个重复性足够看出电池老化的趋势了因为老化导致的内阻变化通常是毫欧级的。稳定性方面连续开机2小时每隔10分钟测一次标准电阻读数漂移小于0.1mΩ。漂移主要来自运放温漂和ADC参考电压温漂。如果要求更高可以用外部基准电压源比如REF3033温漂比STM32内部参考小一个数量级。6.3 什么情况下测不准这个设备也有测不准的时候得知道边界在哪。第一种是电池刚充完电表面电荷还没消散内阻读数会偏低。正确做法是静置半小时再测或者带一个小负载放电几秒钟。第二种是电池温度过低冬天户外测内阻读数偏高。这个前面说了加温度补偿能缓解但不能完全消除。第三种是电池严重老化内阻超过100mΩ超出量程了。这时候读数不可信但反正电池也该换了测不测准无所谓。第四种是电池并联组多节并联时你测到的是并联后的等效内阻不能直接判断单节状态。要拆开单节测或者用钳形表分别测每节的电流分布。7. 代码之外做这个项目我学到的几件事模拟电路比数字电路难搞。数字部分代码写对了就跑模拟部分就算你按教科书搭实际也可能出问题。布线、屏蔽、接地、元件选型每一个细节都能影响结果。我建议做类似项目的朋友先把模拟前端在面包板上搭出来用示波器调通了再画板子能省很多返工时间。四线制是内阻测量的底线。两线制不是不能测但接触电阻的不确定性会让你的数据没有参考价值。我一开始想省事用两线制结果数据完全不能用后来老老实实做四线夹才把重复性做上去。相敏检波是抗干扰的利器。如果你做的项目需要在噪声环境中提取微弱信号相敏检波值得花时间搞懂。它的原理不复杂就是同频相乘再累加但效果立竿见影。我后来做别的传感器项目也用了同样的方法屡试不爽。校准比测量本身更重要。没有校准的测量系统就是个玩具。零点校准消除系统偏移增益校准消除比例误差这两步做完你的数据才有意义。校准用的基准电阻要选高精度的0.1%的金属箔电阻几十块钱一个但值得。最后说一个实际巡检中的小技巧测电池内阻最好在电池组浮充状态下测这时候电池处于满电状态内阻读数最稳定。如果电池在放电内阻会随放电深度变化读数参考价值下降。另外同一组电池要在相近的温度下测不然数据没法横向对比。我一般选在机房温度稳定的上午测避开空调启停的时间段。
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。