打印
[Atmel]

市电采集的倍数问题。

[复制链接]
617|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
qazq123|  楼主 | 2015-10-19 09:51 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 qazq123 于 2015-10-19 10:19 编辑
#pragma interrupt_handler adc_isr:iv_ADC     
void adc_isr(void)
{
ADMUX =0x46;//选择内部AVCC为基准
temp_single=ADC&0x3ff;
temp_single=temp_single*Vref/0x3ff;

temp_sum = temp_sum + temp_single*temp_single;
if(flag==32)
{
  adc_rel=(unsigned int)sqrt((unsigned int)(temp_sum/32))*750;
   flag = 0;
   temp_sum = 0;
   
}


}

主芯片是mega88。功能是采集220交流电。 上面是我ADC采集处理数据的程序。偏置电压为2.4V,电阻分压倍数为750 ,数据类型都是unsigned int 型。

1.插上市电后显示的是2.4*750的值,不会是偏置电流加市电的值,很奇怪。想请教下,是不是我数据类型处理的错误导致了结果的错误? 这个750倍数应该放哪里合适?因为750倍数很容易增大误差。

2.如果我把adc_rel=(unsigned int)sqrt((unsigned int)(temp_sum/32))*750;改成adc_rel=(unsigned int)sqrt((unsigned int)(temp_sum/32-24))*750;不显示市电值,只会显示000.0   有时候还会跳到6000多的数字。


实在是找不出错误的地方。求各位大侠指导指导

相关帖子

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

本版积分规则

25

主题

163

帖子

0

粉丝