登录/注册

adc电量显示 防止跳变

更多

在ADC电量显示中防止数值跳变,可以通过以下方法实现稳定显示:

一、硬件优化

  1. 电源滤波:在ADC参考电压和电池采样点添加滤波电容(如10μF+0.1μF),抑制高频噪声。
  2. PCB布局:缩短模拟信号走线,避免数字信号干扰,必要时使用屏蔽或隔离。

二、软件滤波算法

  1. 滑动平均滤波

    #define SAMPLE_SIZE 10
    uint16_t samples[SAMPLE_SIZE];
    
    uint16_t get_filtered_value() {
       static uint8_t index = 0;
       uint32_t sum = 0;
    
       samples[index++] = read_adc();
       if(index >= SAMPLE_SIZE) index = 0;
    
       for(uint8_t i=0; i<SAMPLE_SIZE; i++) {
           sum += samples[i];
       }
       return sum / SAMPLE_SIZE;
    }
  2. 中位值平均滤波
    采集N个样本后,去掉最大和最小值再取平均,有效消除脉冲干扰。

  3. 一阶滞后滤波

    float alpha = 0.2; // 滤波系数(0.1~0.5)
    uint16_t filtered_val = 0;
    
    void update_filter() {
       uint16_t raw = read_adc();
       filtered_val = alpha * raw + (1 - alpha) * filtered_val;
    }

三、显示优化策略

  1. 滞回比较(Hysteresis)
    设置更新阈值(如3%),仅当电量变化超过阈值时刷新显示:

    #define THRESHOLD 30 // 对应3%电量
    uint16_t last_display_value = 0;
    
    void update_display() {
       uint16_t current = get_filtered_value();
       if(abs(current - last_display_value) > THRESHOLD) {
           show_battery_level(current);
           last_display_value = current;
       }
    }
  2. 非线性映射
    根据电池放电曲线建立电压-电量查找表,避免线性转换误差:

    const uint8_t voltage_table[] = {3000,3100,3200,3300,3400,3500,4200}; // mV
    const uint8_t percent_table[] = {0,   10,  25,  50,  75,  95, 100}; // %
    
    uint8_t voltage_to_percent(uint16_t mV) {
       for(uint8_t i=0; i<6; i++) {
           if(mV < voltage_table[i+1]) {
               return percent_table[i] + (mV-voltage_table[i])*(percent_table[i+1]-percent_table[i])/(voltage_table[i+1]-voltage_table[i]);
           }
       }
       return 100;
    }

四、进阶处理

  1. 动态调整采样率
    电量变化快时增加采样频率,稳定时降低频率以节能。

  2. 异常值剔除
    若新采样值与前值偏差超过合理范围(如±200mV),视为干扰数据丢弃。

  3. 温度补偿
    根据温度传感器数据修正电压-电量转换关系(锂电池受温度影响明显)。

五、实现建议

  1. 先通过示波器观察原始ADC波形,确定噪声类型
  2. 先用滑动平均+滞回比较实现基础稳定
  3. 导入实际电池放电曲线数据优化映射表
  4. 最终通过实际充放电测试验证不同温度下的表现

通过以上方法组合使用,可在保证响应速度的同时,有效消除因ADC采样波动导致的显示跳变问题。典型参数:采样8-16次滑动平均,配合3%-5%滞回阈值,可达到较好的显示效果。

用CW32F030做温湿度采集,ADC读数超过±3LSB正常吗?

用CW32F030做温湿度采集,ADC读数跳变超过±3LSB正常吗?已排除传感器问题,参考电压用LDO单独供电还是波动明显,是否需要外接精密基准

2025-11-20 07:47:35

热电阻温度的原因及处理方法

热电阻温度跳变是一个常见的问题,它可能由多种因素引起,并需要采取相应的处理方法来解决。 一、热电阻温度跳

2024-08-27 16:31:18

ADXL1002电压发生的原因?

ADXL1002按照数据手册当给予ST自检运行电压时在0.3VDD时没有明显的电压跳变,当施加电压到0.36VDD时,电压发生跳

2024-05-31 08:03:42

TI电量计应用指导中文版

TI电量计中文指导,比较基础的指导关于电量计方面的知识。 电量计的介绍、电量

资料下载 ah此生不换 2022-10-19 16:05:43

ADC0832电压显示.

ADC0832电压显示.(电源技术期刊官网)-ADC0832电压显示,带

资料下载 李鸿洋 2021-09-28 11:10:42

如何在不间断测试中抓捕记录信号?资料下载

电子发烧友网为你提供如何在不间断测试中抓捕记录跳变信号?资料下载的电子资料下载,更有其他相关的电路图、源代码、课件教程、中文资料、英文资料、参考设计、用户指南、解决方案等资料,希望可以帮助到广大的电子工程师们。

资料下载 佚名 2021-03-30 08:45:12

基于低功耗无线个域网的IPv6地址协议

基于低功耗无线个域网6 LOWPAN的轻量级IPv6地址跳变协议(L6HOP)。通过对移动目标IPv6网络防御(MT6D)协议进行改进,使用轻量级哈希算法降低CPU计算消耗,并引入滑动地址窗口解决不同设备时钟误差引起

资料下载 佚名 2021-03-24 10:51:24

一种新的调制图案设计方法

将调制方式作为跳变优化对象是一种新型抗截获通信技术,可减小对抗方的调制识别概率,提髙通信的安全性。为增强跳

资料下载 佚名 2021-03-23 11:19:25

ADUCM320i  ADC采样值发生的原因是什么?

最近项目中使用M320i,调试ADC功能的时候,单次软件转换,发现采样值会跳变,温度传感器的采样值也是一样的大范围变化,例如从0x96DD,

2024-01-12 06:56:25

ADXL345读数问题怎么解决?

ADXL读数跳变问题 Z轴垂直于平面,XY均在平面内的情况 红色为X轴向,绿色为Y轴向,蓝色为Z轴向,XY轴向均出现±1g的跳

2024-01-01 06:19:08

为什么插拔充电器,电池电量、跌落?

前两天,有个朋友遇到一个问题:为什么插拔充电器,电池电量会跳变? 这是个挺有趣的问题,现在我整理出来和大家一起交流分享下。 微信公众号又修改了推

2023-12-18 16:43:16

为什么插拔充电器,电池电量、跌落?

前两天,有个朋友遇到一个问题:为什么插拔充电器,电池电量会跳变? 这是个挺有趣的问题,现在我整理出来和大家一起交流分享下。 闲话少说,有多种策略

2023-12-08 12:52:38

AD2S1210数据的原因?

首先说我的方案,是参考AD2S1210给的方案,基本照搬过来的,输出运放使用的AD8397,输入运放使用的AD8692。 问题现象是AD2S1210在静止不动时,测量跳变非常小,只有1个Bit

2023-12-07 07:17:27

信号沿检测

信号跳变沿检测

¥100.00
梦翼师兄

信号怎么测量频率切换时间

随着技术发展,跳频电台、捷变频雷达、宽带跳频雷达等设备的频率跳变范围越来

2020-03-29 15:25:00

7天热门专题 换一换
相关标签