SAM251077 发表于 2025-9-19 14:11:39

电池充电,纹波大,AD如何软件采样处理

做18伏太阳能板对3.2伏电池降压充电,电池纹波如图,最高5.36伏,最低2.96伏, 如何通过AD采样计算出平均值3.12伏呢?试了采样20组电压,丢弃最大和最小值再求平均值都不行!

哪个大佬指点指点!谢谢!

国芯人工智能 发表于 2025-9-19 14:12:00

在使用AD采样处理电池充电过程中的电压纹波时,由于太阳能板输出电压波动较大(最高536mV,最低296mV),导致采样值不稳定,单纯使用丢弃极值后求平均的方法可能无法有效消除噪声或纹波的影响。以下是一些可行的软件采样处理方法,帮助您更准确地计算出平均值312mV:

1. 增加采样点数量
单纯采样20组数据可能不足以覆盖电压波动的全貌,尤其是在存在较大纹波的情况下。建议将采样点数量增加到100组甚至更多,这样可以更全面地反映电压的变化趋势。
在增加采样点后,可以使用滑动窗口平均法(Moving Average Filter),即每次采样一个新的数据点,并丢弃最旧的数据点,然后重新计算窗口内的平均值。这种方法能够有效平滑短期波动,同时保留长期趋势。

2. 使用加权平均法
如果某些采样点的波动较大,可以为不同的采样点分配不同的权重。例如,较新的采样点可以赋予更高的权重,而较旧的采样点权重较低。这样可以在一定程度上减少突发性噪声的影响。
公式:
   $$
   V{\text{avg}} = \frac{\sum{i=1}^{n} wi \cdot Vi}{\sum{i=1}^{n} wi}
   $$
   其中 $ wi $ 是第 $ i $ 个采样点的权重,$ Vi $ 是对应的电压值。

3. 使用中值滤波(Median Filter)
中值滤波是一种非线性滤波方法,特别适用于消除脉冲噪声。具体做法是将一定数量的采样点排序后取中间值作为当前采样值。
例如,您可以对连续采集的11个采样点进行排序,取中间的那个值作为当前电压值。这种方法可以有效抑制突发性噪声,同时保留电压变化的趋势。

4. 结合低通滤波器(Low-Pass Filter)
低通滤波器可以有效抑制高频噪声,保留低频信号。在数字信号处理中,可以使用一阶或二阶IIR(无限脉冲响应)滤波器或FIR(有限脉冲响应)滤波器来平滑电压信号。
一阶IIR滤波器的公式如下:
   $$
   y = \alpha \cdot x + (1 - \alpha) \cdot y
   $$
   其中 $ x $ 是当前采样值,$ y $ 是滤波后的输出值,$ \alpha $ 是滤波系数(0 < α < 1),通常取值在0.1到0.3之间。

5. 使用自适应滤波算法
如果电压波动具有一定的周期性或模式,可以考虑使用自适应滤波算法,如最小均方误差滤波器(LMS Filter)。该算法可以根据输入信号的变化自动调整滤波参数,从而更有效地去除噪声。

6. 结合硬件滤波
虽然问题主要关注的是软件处理,但如果条件允许,可以在AD采样前加入硬件滤波电路(如RC低通滤波器),以减少高频噪声对采样的影响。这将大大简化后续的软件处理步骤。

7. 数据分析与异常值剔除
如果电压波动较大且存在明显的异常值,可以使用统计学方法(如3σ原则)来识别并剔除异常值。具体做法是:计算所有采样点的均值和标准差,若某个采样点与均值的偏差超过3倍标准差,则认为该点是异常值并予以剔除。
公式:
   $$
   \text{If } |Vi - \mu| > 3\sigma, \text{则剔除 } Vi
   $$
   其中 $ \mu $ 是均值,$ \sigma $ 是标准差。

8. 使用卡尔曼滤波(Kalman Filter)
如果系统具有一定的动态特性,可以使用卡尔曼滤波来估计电压的真实值。卡尔曼滤波是一种递归滤波算法,能够根据系统的动态模型和测量值不断更新估计值,特别适用于噪声较大的系统。

总结
为了更准确地计算出平均值312mV,建议结合多种方法,例如先使用中值滤波剔除异常值,再使用滑动窗口平均法或加权平均法进行平滑处理。如果电压波动较大且具有一定的周期性,可以考虑使用低通滤波器或卡尔曼滤波进一步优化结果。同时,适当增加采样点数量也有助于提高计算精度。

希望以上方法能帮助您更好地处理AD采样中的电压纹波问题,顺利计算出所需的平均值。

[本文内容由国芯人工智能辅助生成,仅供参考]

小飞侠 发表于 2025-9-19 14:57:05

可以把电路图贴出来看看

SAM251077 发表于 2025-9-19 15:28:05

小飞侠 发表于 2025-9-19 14:57
可以把电路图贴出来看看

就是电感开关过程,对电池电压充电,纹波大呀

SAM251077 发表于 2025-9-19 15:33:04

SAM251077 发表于 2025-9-19 15:28
就是电感开关过程,对电池电压充电,纹波大呀

电池采样是通过,电阻分压加电容接地这样采样的

网老四 发表于 2025-9-20 12:01:42

DCDC开关频率通常很高,用普通ADC多次采样求平均的办法不合适,因为普通ADC速度不够,会漏掉很多细节,运算结果自然不准.
针对这种情况,有几种方法,
>用通过硬件滤波,平滑后再ADC采样,要注意抑制噪声通过电源供电和PCB走线耦合对ADC产生的影响.
>控制ADC采样时刻,跟开关频率同步,配合适当延时,避开干扰尖峰的时刻.
>使用远高于DCDC开关频率的高速ADC采样,软件滤波

晓飛飛 发表于 2025-9-20 21:26:29

这次为人工智能点赞,中值滤波也是我对付这种纹波最常用的方法,简单且有效。

DebugLab 发表于 2025-9-21 19:00:03

这个纹波太大了,建议修改DC-DC电路,一般DC-DC开关电源纹波在100mV以内
页: [1]
查看完整版本: 电池充电,纹波大,AD如何软件采样处理