打印

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

[复制链接]
2346|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位整形,先把数据扩大再最后求整时,结果就变得较精确了。

使用特权

评论回复
5
baidudz| | 2011-9-7 22:39 | 只看该作者
香主分析问题还这么有哲理:lol

使用特权

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

本版积分规则

0

主题

1

帖子

0

粉丝