打印
[家电应用]

电池检测使用AD转换变化特别大 1652

[复制链接]
1086|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
MichaelHeaven|  楼主 | 2017-5-16 08:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使用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,没有规律,不同的采样时间采集到的数据还不一样。
沙发
xyz549040622| | 2017-5-16 09:07 | 只看该作者
多次测量取平均值吧,换个参考电压看看,你这误差也太大了,ad口并联一个小电容试试。

使用特权

评论回复
板凳
MichaelHeaven|  楼主 | 2017-5-16 09:18 | 只看该作者
也用平均值了,我设置的是用VDD为基准电压,内部恒压1.03V为输入电压

使用特权

评论回复
地板
umbra| | 2017-5-16 11:35 | 只看该作者
看你这个转换  是VDD的电压吧  

测量电池电量思路:
1 将电池正极连接到ADC的一个通道
2 基于VDD基准电压先采集内部1.03V的ADC值
3 再基于VDD基准电压采集电池连接的ADC通道采集电池电压的ADC值
4 电池电压 = 1.03V * 电池电压ADC值 / 内部1.03V的ADC值

使用特权

评论回复
5
MichaelHeaven|  楼主 | 2017-5-16 13:37 | 只看该作者
umbra 发表于 2017-5-16 11:35
看你这个转换  是VDD的电压吧  

测量电池电量思路:

这个VDD电压就是电池电压

使用特权

评论回复
6
电子绝对爱好者| | 2017-5-19 15:15 | 只看该作者
加长采样时间,多取几次采样去头尾取平均试试

使用特权

评论回复
7
ln936| | 2017-5-27 18:46 | 只看该作者
  ADCON1  = 0x80; 以后等1ms以后看看?
因为有些型号 内部恒压源开启后,需要一段时间的等待建立

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

5

帖子

0

粉丝