打印
[Atmel]

ADC采集数据问题求指导

[复制链接]
640|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
qazq123|  楼主 | 2015-10-23 15:56 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
void adc_isr(void)
{
ADMUX =0x46;//选择内部AVCC为基准
temp_single=ADC&0x3ff;//temp_single数据类型unsigned int
temp_single=(unsigned long)((unsigned long)(temp_single*50/0x3ff)-24);//VREF定义为50,参考电压为5V,直流偏置为2.4V。

temp_sum = temp_sum + temp_single*temp_single;//temp_sum数据类型unsigned long。
if(flag==64)
{
   adc_rel=(unsigned int)((unsigned long)(sqrt((temp_sum)/64))*750);
   flag = 0;
   temp_sum = 0;
}

}
电路图如左边,功能是实现实时显示市电的电压。 问题:数码管一直显示225.0V不会动,用万用表测限流电阻端电压为0.299~0.302之间变换,我感觉是数据处理temp_single=(unsigned long)((unsigned long)(temp_single*50/0x3ff)-24);这句的问题。我感觉是只能采集3的整型数据,怎么才能处理成2.99~3.02这样的小数点后面两位,求大神指导。

相关帖子

沙发
ddllxxrr| | 2015-10-23 21:30 | 只看该作者
用float型就可以了

使用特权

评论回复
板凳
qazq123|  楼主 | 2015-10-24 08:45 | 只看该作者
ddllxxrr 发表于 2015-10-23 21:30
用float型就可以了

temp_single=(float)((float)((float)temp_single*Vref/0x3ff)-24);我改成这样了,然后temp_sum用float型,但是显示数据波动在5V之间跳动,而且准确度差了10V左右。跟万用表测的相差的数据

使用特权

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

本版积分规则

25

主题

163

帖子

0

粉丝