打印

PIC 18F4620做AD转换,转换得到的结果与实际有偏差

[复制链接]
4704|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hanbing17|  楼主 | 2010-11-19 11:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
PIC 18F4620做AD转换,使用AN0 做模拟输入 ,参考电压使用单片机内部电压,接到RC0 和RC1 ,程序中赋RC1=1高电平,RC0=0低电平,用电压表测了也是5.002V的样子 比较准确,AN0 做模拟输入,使用稳压电源作为模拟输入 ,Ad后的数据通过液晶1602显示 ,但是采集到结果通过液晶显示 AD后的结果总是和实际的有偏差,
我现在得到的结果是 利用稳压电源 如果输入0.5V的话 液晶上显示大约0.485的样子, 输入0.8V的话 显示的是0.912v 的样子 , 输入1V 时候就会显示1.3V, 输入1.5V 显示的1.9V,输入2V 显示2.5 最后输入3.8V的时候 液晶上就显示到5V , 相差的越来越大了 AD设置应该没什么问题 ,请教如何解决? 谢谢

AD初始化   
void ad_init()
{
  ADRES=0;
  TRISAbits.TRISA0=0;
  ADCON0=0b00000101;// RA1/AN1做为选定转换通道,此时为关闭状态,但AD已经使能
  //GO/DONE=0 , ADON=1
  ADCON1=0b00110111;//所选AN3 AN2为参考电压(RA2/AN2/VREF-/CVREF和RA3/AN3/VREF+ 参考电压)
  ADCON2=0b10011110;//右对齐 64分频
  PIE1bits.ADIE=1;//允许A/D外围中断;
  INTCONbits.GIE=1;//允许global中断
  INTCONbits.PEIE=1;//允许外围中断
  ADIF=0;//初始时中断flag为0
}
沙发
yewuyi| | 2010-11-19 16:15 | 只看该作者
1、AN0设置为输入
2、RC0、RC1设置为输出
3、确定你的稳压电源时开关电源还是线性电源?
4、电源的纹波一般都比较大,所以不建议直接作为信号源使用。
5、判断AD转换是否正确应该选择信号源,做阻抗转换后送AD
6、注意AD的采样时间和转换时间需要满足信号要求,这一点当信号输入阻抗比较大的时候,更是要特别注意,否则转换不准也很正常。
7、检查你代码数值变换的算法是否正确,也就是说从AD值转换电压显示值的计算是否正确。
8、其它问题。

使用特权

评论回复
板凳
zdhlixiang2006| | 2010-11-20 22:45 | 只看该作者
不应该啊,我的电路一般整流滤波后,测得的电压也是5.002的样子,但没有出现过差值这么大的啊,是不是你
的程序中在得到数字值后转化为模拟值时,你给的参考值不是5V?

使用特权

评论回复
地板
hanbing17|  楼主 | 2010-11-21 10:45 | 只看该作者
3# zdhlixiang2006

我用的是pic18F4620   10位AD   程序中转换为模拟值给的是5V啊  
一开始我输入的3.8V的模拟电压后  转换得到的是5V  后来我把advalf=adval/1023.0*5.0; 里的5.0 改成3.8 了 居然很准确 精确到了0.1位 ,可测范围变成了0到3.8 , 但是我给的参考电压是5V啊 ,而且也测了确实参考电压是5v,按照我给定的参考电压和程序里给定的5V参考电压值,应该这个式子里advalf=adval/1023.0*5.0;应该是5 而且可测的范围也应该是0到5V啊

adval=ADRESH;//00000000 00000011
adval=adval<<8|ADRESL;//00000011 11111111
advalf=adval/1023.0*5.0;//==2.3843
adval=advalf*1000;
a1=adval/1000+'0';
a2=adval%1000/100+'0';
a3=adval%100/10+'0';
a4=adval%10+'0';

使用特权

评论回复
5
兰天白云| | 2010-11-25 08:55 | 只看该作者
参考电压有问题,建议用外部5V参考试试

使用特权

评论回复
6
956467232| | 2010-11-26 13:53 | 只看该作者
请问A/D的采样时间怎么设置和计算啊?比如外部信号输入频率是1KHZ,我这里的采样频率可以设置为16KHZ吧,怎么编程实现呢?(用C语句)

使用特权

评论回复
7
Mary_luo| | 2010-11-26 14:53 | 只看该作者
怎么不用18F46K20啊,4620贵哦!

使用特权

评论回复
8
yongfei4611| | 2011-4-13 15:43 | 只看该作者
有同感,俺用的是18F4680,就输出的结果老是跳,输入信号有正负0.001的波动。

使用特权

评论回复
9
Mary_luo| | 2011-4-13 17:52 | 只看该作者
18F4680现在也有新的18F46K80了哦

使用特权

评论回复
10
xkb1984| | 2014-9-22 23:39 | 只看该作者
你好!请问你的问题最后怎么解决了?我目前也遇到了和你类似的问题,能告诉我你的解决方法吗?QQ178773552

使用特权

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

本版积分规则

0

主题

13

帖子

2

粉丝