[应用相关] AD转换的结果并非线性关系

[复制链接]
1155|19
 楼主| Listate 发表于 2018-6-5 21:38 | 显示全部楼层 |阅读模式
测量输入电压后,程序显示的转换的结果与采用公式计算的结果不符,并且在不同的输入电压下,AD转换的结果并非线性关系
void main(void)

{

WDTCTL = WDTPW+WDTHOLD;

P6SEL |= 0x04;

ADC12CTL0 = 0x0270;

ADC12CTL1 = SHP;

ADC12MCTL0 = 0x02;

ADC12IE = 0x01;

ADC12CTL0 |= ENC;

_EINT();


while(1)

{

ADC12CTL0 |= ADC12SC;

_BIS_SR(LPM0_bits);

}

}


interrupt[ADC_VECTOR] void ADC12ISR (void)

{

results = ADC12MEM0;

_BIC_SR_IRQ(LPM0_bits);

}
Mozarts 发表于 2018-6-5 21:38 | 显示全部楼层
你的硬件电路上的输入是多少,单片机的引脚上输入电压是多少?
Mozarts 发表于 2018-6-5 21:40 | 显示全部楼层
以前做的时候也是这样,只不过那时不需要循环多次
_gege 发表于 2018-6-5 21:40 | 显示全部楼层
AD转换部分大致不会有错,只有看串口部分了
_gege 发表于 2018-6-5 21:41 | 显示全部楼层
很可能是中间的隔离电路造成的原因!
Edisons 发表于 2018-6-5 21:42 | 显示全部楼层
你使用的是什么公式啊,转换结果是什么啊?
laozhongyi 发表于 2018-6-5 21:45 | 显示全部楼层
data = 4095*(Vin - Vr-)/(Vr+ - Vr-),采用内部参考2.5V,是不是就是令Vr+=2.5V,Vr- = 0V
wanglaojii 发表于 2018-6-5 21:48 | 显示全部楼层
楼主代码里关于寄存器的配置都是0xXXXX,实在没精力一个个去查寄存器地址做翻译了
zhouhuanの 发表于 2018-6-5 21:49 | 显示全部楼层
建议楼主改成头文件里的定义,这样可读性会增加很多。
handleMessage 发表于 2018-6-5 21:51 | 显示全部楼层
你输入电压是怎么得到的?用万用表量过引脚嘛?
bbapple 发表于 2018-6-5 21:51 | 显示全部楼层
ADC寄存器配置上,有没有给internal ref足够的建立时间?
sourceInsight 发表于 2018-6-5 21:54 | 显示全部楼层
会不会是参考电压不稳定啊???
boy1990 发表于 2018-6-5 21:54 | 显示全部楼层
是不是转换结果有问题呢?使用滤波的算法了吗?
CallReceiver 发表于 2018-6-5 21:57 | 显示全部楼层
隔离电源模块的作用主要有哪些啊
hfdy01 发表于 2018-6-5 21:57 | 显示全部楼层
安全隔离:强电弱电隔离IGBT隔离驱动\浪涌隔离保护\雷电隔离保护(如人体接触的医疗电子设备的隔离保护);
噪声隔离:(模拟电路与数字电路隔离、强弱信号隔离);
接地环路消除:远程信号传输\分布式电源供电系统。
xia00 发表于 2018-6-5 22:00 | 显示全部楼层
是不是前段电路有干扰了。
shashaa 发表于 2018-6-5 22:00 | 显示全部楼层
这个推荐使用外部的ADC。。
qiangweii 发表于 2018-6-5 22:03 | 显示全部楼层
线性拟合的结果一般比较准确的。
litengg 发表于 2018-6-5 22:04 | 显示全部楼层
可能是前段信号有问题。。
androidbus 发表于 2018-6-5 22:05 | 显示全部楼层
如果使用外设AD转换芯片比较精准。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

161

主题

1233

帖子

1

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