[其它应用] 不同的采样时间采集到的数据还不一样

[复制链接]
5025|7
 楼主| wenfen 发表于 2021-8-14 22:40 | 显示全部楼层 |阅读模式
使用1652的单片机,它内置有1个通道可接内部1.03V恒压源,用于电池电量检测,配置完之后,采集到的数据转换得到的电压值跟实测值差别特别大。

初始化:
    ADCH    = 0x00;     //P2.7,P3.6 - P3.1作为I/O端口
    ADCON1  = 0x80;     //RGON 接入内部1.03V恒压源
    ADT     = 0x45;     //时钟周期: μs 采样时间: μs,转换时间: μs
    ADCON   = 0x80;

开始转换时:
   ADCON |= 0x01;

解析数据:
  g_ucADCData = (((UINT16)ADDH)<<2)|(ADDL&0x03);

得到的数据转换为电压值:
  (1.03V*1024)/g_ucADCData = 电压值

计算值和实测值最大相差0.5V,最小时0.1V,没有规律,不同的采样时间采集到的数据还不一样。
zhuhuis 发表于 2021-8-14 22:46 | 显示全部楼层
多次测量取平均值吧,换个参考电压看看,你这误差也太大了,ad口并联一个小电容试试。
 楼主| wenfen 发表于 2021-8-14 22:51 | 显示全部楼层
也用平均值了,我设置的是用VDD为基准电压,内部恒压1.03V为输入电压
chenho 发表于 2021-8-14 22:53 | 显示全部楼层

看你这个转换  是VDD的电压吧  

测量电池电量思路:
1 将电池正极连接到ADC的一个通道
2 基于VDD基准电压先采集内部1.03V的ADC值
3 再基于VDD基准电压采集电池连接的ADC通道采集电池电压的ADC值
4 电池电压 = 1.03V * 电池电压ADC值 / 内部1.03V的ADC值
 楼主| wenfen 发表于 2021-8-14 22:55 | 显示全部楼层
这个VDD电压就是电池电压
bqyj 发表于 2021-8-14 22:57 | 显示全部楼层
加长采样时间,多取几次采样去头尾取平均试试
zhuhuis 发表于 2021-8-14 22:59 | 显示全部楼层

  ADCON1  = 0x80; 以后等1ms以后看看?
因为有些型号 内部恒压源开启后,需要一段时间的等待建立
 楼主| wenfen 发表于 2021-8-14 23:00 | 显示全部楼层
多谢大家讨论这么多哈,呵呵
您需要登录后才可以回帖 登录 | 注册

本版积分规则

737

主题

8940

帖子

8

粉丝
快速回复 在线客服 返回列表 返回顶部