[Atmel] 市电采集的倍数问题。

[复制链接]
763|0
 楼主| qazq123 发表于 2015-10-19 09:51 | 显示全部楼层 |阅读模式
本帖最后由 qazq123 于 2015-10-19 10:19 编辑
  1. #pragma interrupt_handler adc_isr:iv_ADC     
  2. void adc_isr(void)
  3. {
  4. ADMUX =0x46;//选择内部AVCC为基准
  5. temp_single=ADC&0x3ff;
  6. temp_single=temp_single*Vref/0x3ff;

  7. temp_sum = temp_sum + temp_single*temp_single;
  8. if(flag==32)
  9. {
  10.   adc_rel=(unsigned int)sqrt((unsigned int)(temp_sum/32))*750;
  11.    flag = 0;
  12.    temp_sum = 0;
  13.    
  14. }


  15. }

主芯片是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

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