打印

79F085/165 问题

[复制链接]
1738|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
冰清玉洁|  楼主 | 2011-11-24 14:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
79F085/165
数据手册PGA输入要求0.4-2V的共模电压。放大后输出0.4-1.6V, ADC 参考电压0.1-1.2V,又没有办法使用内部的2.7V做参考?
沙发
chenho| | 2011-11-24 14:32 | 只看该作者
79f165是应用在小信号放大系统的,输入信号只能这么大,内建参考电源就是从2.7V分压得到的,不能采用2.7V

使用特权

评论回复
板凳
zhuhuis| | 2011-11-24 14:36 | 只看该作者
应用计算公式,设定你的参考电压和Gain的值,ADC输出码=(AINx*Gain/Vref)*32768

使用特权

评论回复
地板
huanghuac| | 2011-11-24 14:41 | 只看该作者
就热电偶应用而言,参考电压建议采用外接,如TL431分压得到。因热电偶无法与Vref同源,Vref的温飘很难解决。需要得到ADC的高精度输出最好外接。

使用特权

评论回复
5
chenho| | 2011-11-24 14:45 | 只看该作者
是的,热电偶输出范围大,一般最大输出接近100mV,因此PGA增益设定12.5倍即可,AINx*Gain小于Vref,ADC输出才不会溢出。

使用特权

评论回复
6
冰清玉洁|  楼主 | 2011-11-24 14:59 | 只看该作者
多谢,void        InitialADC()
{        
        REGCON  = 0x01;                        //开启内部2.7V稳压电源
        PGAM    =0x94;              //放大25倍,消波控制器频率1K
        ADCON        =0x01;                        //Bin(10000000);        启动ADC模块,内部参考电压, Ain1为输入
        //ADT=0xEB;                                //ADC=100Hz
        ADT     =0xAD;                        //ADC=50Hz
        ADCH        =0x8A;                        //Bin(00001010);  P1.5和1.6口用于AIN1         参考电压为0.5V
        ADCON        |=0x80;                        //Bin(10000000);        开始ADC转换
        EADC        = 1;                        //允许ADC中断
}
总中断EA开启。采用中断读取。为什么不能进中断?通过串口读上的数为0200ff?而且不变化。

使用特权

评论回复
7
冰清玉洁|  楼主 | 2011-11-24 15:03 | 只看该作者
运行程序后,输入共模电压1.3V左右,差模电压0.365mv,但是11脚vin-和12脚vin+,共模电压1.3V左右,但差模电压155mV好像有些不对,Vref引脚0.508V

使用特权

评论回复
8
冰清玉洁|  楼主 | 2011-11-24 15:06 | 只看该作者
//**************************ADC中断程序,读取温度值**************************
void ADC() interrupt 6        using 2
{
// unsigned long data ADCData;
        //ADCON&=0xB1;                                                //清中断标志寄存器
        ADCData=ADDH;                                                //
        ADCData=ADCData*256;                                //
        ADCData=ADCData+ADDM;                                //
        ADCData=ADCData*16;                                        //
        ADCData=ADCData+ADDL;                                //        
        ADCON&=0xBF;                                                //清中断标志寄存器
}

使用特权

评论回复
9
chenho| | 2011-11-24 15:11 | 只看该作者
两个子程序没有问题,中断应该能发生的,你可以采用查询中断标准ADCIF是否有产生

使用特权

评论回复
10
gongche| | 2011-11-24 15:15 | 只看该作者
描述有误,Vin+/-不是11脚和12脚,就关于应用建议如下:
(1).用万用表测量是否VDDR=2.7V,VREF=0.5V
(2).差分输入后经PGA放大的测量确定:(Vin+/-)=(Ain1+/-)*25,也就是VIN等于0.365mV*25=9.125mV,ADC输出码值应该很小.
(3).UART通信是否正常,波特率是否用示波器测量确定过?

使用特权

评论回复
11
冰清玉洁|  楼主 | 2011-11-24 15:19 | 只看该作者
好的,我再测试一下,多谢,先结贴了

使用特权

评论回复
12
amw1688| | 2015-1-22 23:05 | 只看该作者
加Q送例程,QQ:2714266616

使用特权

评论回复
13
Vitality1| | 2015-1-29 17:09 | 只看该作者
应用计算公式,设定你的参考电压和Gain的值,ADC输出码=(AINx*Gain/Vref)*32768

使用特权

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

本版积分规则

307

主题

3250

帖子

5

粉丝