在仿真A/D采样中,采样数据与程序计算不符

[复制链接]
3400|4
 楼主| 景在水中 发表于 2011-9-7 17:26 | 显示全部楼层 |阅读模式
我在仿真中发现采样的数据与程序计算的数据不符。例如采样值为0x496,计算的电压值为0.92v,而按公式计算应为0.9458v。编译的程序的公式也没有错(是STM推荐的例子程序)程序如下:
ADCConvertedValueLocal = ADCConvertedValue;
    Precent = (ADCConvertedValueLocal*100/0x1000); //算出百分比
    Voltage = Precent*33;        // 3.3V的电平,计算等效电平
    printf("\r\n 当前AD转换结果为:0x%X, 百分比为:%d%%,电压值:%d.%d%dV.\n\r",
    ADCConvertedValueLocal, Precent, Voltage/1000, (Voltage%1000)/100, (Voltage%100)/10);
即ADCConvertedValue =0x496时
输出结果Voltage =0.92v
而理论计算应为0.9458v
不知上述错误怎样引起的?而且采样还有点不稳
香水城 发表于 2011-9-7 17:35 | 显示全部楼层
请问你程序用的是浮点变量还是整形变量?如果用的是整形变量,则出现误差不奇怪。

你自己用计算器按两下就知道了。
香水城 发表于 2011-9-7 17:37 | 显示全部楼层
景在水中,水不平,则景不清,出现误差不奇怪,:lol
weibestww 发表于 2011-9-7 21:51 | 显示全部楼层
STM32我没用过,不知道float型数据时,它运算会出先什么样的情况,用avr单片机时,使用float会出现转换误差,算出来的就是不准确,最后改成32位整形,先把数据扩大再最后求整时,结果就变得较精确了。
baidudz 发表于 2011-9-7 22:39 | 显示全部楼层
香主分析问题还这么有哲理:lol
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

1

帖子

0

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