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

[复制链接]
1243|23
 楼主| liuzaiy 发表于 2019-12-18 23:49 | 显示全部楼层 |阅读模式
测量输入电压后,程序显示的转换的结果与采用公式计算的结果不符,并且在不同的输入电压下,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);

}
wangpe 发表于 2019-12-18 23:52 | 显示全部楼层
你的硬件电路上的输入是多少,单片机的引脚上输入电压是多少?
gongche 发表于 2019-12-18 23:55 | 显示全部楼层
以前做的时候也是这样,只不过那时不需要循环多次
happy_10 发表于 2019-12-18 23:58 | 显示全部楼层
AD转换部分大致不会有错,只有看串口部分了
hanwe 发表于 2019-12-19 21:09 | 显示全部楼层
很可能是中间的隔离电路造成的原因!
morrisk 发表于 2019-12-19 21:13 | 显示全部楼层
你使用的是什么公式啊,转换结果是什么啊?
wangpe 发表于 2019-12-19 21:16 | 显示全部楼层
data = 4095*(Vin - Vr-)/(Vr+ - Vr-),采用内部参考2.5V,是不是就是令Vr+=2.5V,Vr- = 0V
wangzsa 发表于 2019-12-19 21:20 | 显示全部楼层
楼主代码里关于寄存器的配置都是0xXXXX,实在没精力一个个去查寄存器地址做翻译了
huwr 发表于 2019-12-19 21:24 | 显示全部楼层
建议楼主改成头文件里的定义,这样可读性会增加很多。
wenfen 发表于 2019-12-19 21:27 | 显示全部楼层
你输入电压是怎么得到的?用万用表量过引脚嘛?
zhuhuis 发表于 2019-12-19 21:31 | 显示全部楼层
ADC寄存器配置上,有没有给internal ref足够的建立时间?
chenho 发表于 2019-12-19 21:35 | 显示全部楼层
会不会是参考电压不稳定啊???
stly 发表于 2019-12-19 21:38 | 显示全部楼层
是不是转换结果有问题呢?使用滤波的算法了吗?
supernan 发表于 2019-12-19 21:41 | 显示全部楼层

隔离电源模块的作用主要有哪些啊
yinxiangh 发表于 2019-12-19 21:43 | 显示全部楼层

安全隔离:强电弱电隔离IGBT隔离驱动\浪涌隔离保护\雷电隔离保护(如人体接触的医疗电子设备的隔离保护);
噪声隔离:(模拟电路与数字电路隔离、强弱信号隔离);
接地环路消除:远程信号传输\分布式电源供电系统。
ousj 发表于 2019-12-19 21:48 | 显示全部楼层
是不是前段电路有干扰了。
lium 发表于 2019-12-19 21:51 | 显示全部楼层

这个推荐使用外部的ADC。。
llia 发表于 2019-12-19 21:54 | 显示全部楼层
线性拟合的结果一般比较准确的。
gongche 发表于 2019-12-19 21:57 | 显示全部楼层
可能是前段信号有问题。。
houcs 发表于 2019-12-19 22:01 | 显示全部楼层
如果使用外设AD转换芯片比较精准。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

735

主题

7546

帖子

2

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