[Atmel] 220V交流电采集程序问题求指导

[复制链接]
 楼主| qazq123 发表于 2015-10-15 10:09 | 显示全部楼层 |阅读模式
本帖最后由 qazq123 于 2015-10-16 17:03 编辑
  1. <blockquote><blockquote>//ADC初始化
  1. //ADC完成中断
  2. #pragma interrupt_handler adc_isr:iv_ADC     
  3. void adc_isr(void)
  4. {
  5. ADMUX =0x46;//选择内部AVCC为基准
  6. temp_single=ADC&0x3ff;
  7. temp_single=temp_single*Vref/1024;
  8. temp_sum += temp_single*temp_single;
  9. if(flag==64)
  10. {
  11.   adc_rel=(unsigned int)sqrt((temp_sum)/64);
  12.    flag = 0;
  13.    temp_sum = 0;
  14.    
  15. }


  16. }
  17. #pragma interrupt_handler timer0_ovf:17
  18. void timer0_ovf(void)
  19. {
  20. TCNT0 = 0xB2;  //重装计数初值
  21. ADCSRA|=(1<<ADSC);//启动AD转换
  22. flag++;   //625微妙,标志位加1
  23. }
  1. //主函数里的循环
  2. while(1)
  3. {
  4.   //采集1600个点,进行数据平均数的计算
  5.   if(adc_old!=adc_rel)
  6.   {
  7.    adc_old=adc_rel;
  8.    send(adc_old);
  9.    for(j=0;j<50;j++)
  10.    {
  11.            display();
  12.          }
  13.    }
  14.    
电路图如左侧,芯片是mega48的。开启了两个中断,ADC和定时器,功能:测量220V交流电。  
实际测试中发现:

1.不接交流电,数码屏的显示数据为中点电位 REF提供的直流电(参考电压的一半),如果接入市电,也只是显示REF直流电的电压,电压不曾改变。

2。如果把LM358芯片去掉,相当于不提供REF电压,数码屏显示的是ADC采集口的电压跟用万用表测试的电压是一样的。



为什么REF电流接入,交流电和直流电一叠加就出错。这问题出在哪里呢?求指导~~


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
ayb_ice 发表于 2015-10-15 13:58 | 显示全部楼层
flag == 1600
在中断里判断是很危险的,因为会在另外一个中断里改变

还不如在定时中断里查询ADC是否完成可靠
 楼主| qazq123 发表于 2015-10-15 14:06 | 显示全部楼层
ayb_ice 发表于 2015-10-15 13:58
flag == 1600
在中断里判断是很危险的,因为会在另外一个中断里改变

要定时,ADC的的转换时间远小于定时器的定时时间,这样不要紧的吧?
 楼主| qazq123 发表于 2015-10-15 14:24 | 显示全部楼层
qazq123 发表于 2015-10-15 14:06
要定时,ADC的的转换时间远小于定时器的定时时间,这样不要紧的吧?

现在采集是可以的。就交流跟直流叠加搞不懂
ayb_ice 发表于 2015-10-15 14:25 | 显示全部楼层
本帖最后由 ayb_ice 于 2015-10-15 14:27 编辑
qazq123 发表于 2015-10-15 14:06
要定时,ADC的的转换时间远小于定时器的定时时间,这样不要紧的吧?

应该没有问题,但也受其它中断的影响(如果其它中断有,并且运行较长时间),不利于系统扩展
这样定时中断里查询不是更好吗
 楼主| qazq123 发表于 2015-10-15 14:30 | 显示全部楼层
ayb_ice 发表于 2015-10-15 14:25
应该没有问题,但也受其它中断的影响(如果其它中断有,并且运行较长时间),不利于系统扩展
这样定时中断 ...

恩恩, 也是。我用的不是连续转换模式,不怕这段时间转换了多次,对吧?
 楼主| qazq123 发表于 2015-10-15 14:31 | 显示全部楼层
ayb_ice 发表于 2015-10-15 14:25
应该没有问题,但也受其它中断的影响(如果其它中断有,并且运行较长时间),不利于系统扩展
这样定时中断 ...

恩,也是我用的不是连续转换模式,不怕这段时间转换了多次,对吧?
gx_huang 发表于 2015-10-15 16:05 | 显示全部楼层
1、你测试的是平均电压吗?直流偏置上叠加交流电,直流电平还是一样的。
2、V1开路吗?去掉了运放,V1也悬空,拿来的直流偏置?完全是高阻态呀,测试电压和电路的漏电等参数有关了。
 楼主| qazq123 发表于 2015-10-15 16:23 | 显示全部楼层
gx_huang 发表于 2015-10-15 16:05
1、你测试的是平均电压吗?直流偏置上叠加交流电,直流电平还是一样的。
2、V1开路吗?去掉了运放,V1也悬 ...

1.恩,平均电压。ADC采集的不是瞬时电压吗?直流电压跟交流电压叠加,瞬时电压会相对应的叠加吧?

2.去掉运放后,V1接市电(也就是220V交流电)得出的数据
gx_huang 发表于 2015-10-16 08:38 | 显示全部楼层
qazq123 发表于 2015-10-15 16:23
1.恩,平均电压。ADC采集的不是瞬时电压吗?直流电压跟交流电压叠加,瞬时电压会相对应的叠加吧?

2.去 ...

1、我的意思是,你软件显示的是平均电压还是瞬时电压?按道理,交流电的瞬时电压没有意义呀,一般是显示平均电压呀。
2、去掉运放,V1接市电,你还能测试什么呢?没有电阻分压了,而是二极管钳位或者击穿时的分压了,这是不确定的。
 楼主| qazq123 发表于 2015-10-16 08:43 | 显示全部楼层
gx_huang 发表于 2015-10-16 08:38
1、我的意思是,你软件显示的是平均电压还是瞬时电压?按道理,交流电的瞬时电压没有意义呀,一般是显示 ...

1.我的意思是ADC采集的一个点是瞬时电压, 我取1600个点当然是显示平均电压咯。
2. 不是有R1  R2  R3 分压吗?去掉运放不是只是取消掉电流测量这部分的电路吗?
gx_huang 发表于 2015-10-16 09:15 | 显示全部楼层
qazq123 发表于 2015-10-16 08:43
1.我的意思是ADC采集的一个点是瞬时电压, 我取1600个点当然是显示平均电压咯。
2. 不是有R1  R2  R3 分 ...

R3是接REF呀,运放都没有了,还分什么压。
就变成了TVS和CPU内部钳位二极管的分压了。
 楼主| qazq123 发表于 2015-10-16 09:35 | 显示全部楼层
gx_huang 发表于 2015-10-16 09:15
R3是接REF呀,运放都没有了,还分什么压。
就变成了TVS和CPU内部钳位二极管的分压了。 ...

哦哦,所以去掉运放是没有电阻分压倍数的。  那我接运放的时候,为什么交流和直流的叠加,ADC采集不了叠加数据之和呢?或者直接能采集交流的电压也可以,还是我的程序有问题?
gx_huang 发表于 2015-10-16 09:42 | 显示全部楼层
你的程序我懒得看呀,好久不看AVR芯片了。
交流电,你采集很多次,叠加后,就是直流电平呀,怎么可以测交流电幅度呢。
测交流电幅度,得采用其它算法才对。
gx_huang 发表于 2015-10-16 09:43 | 显示全部楼层
很多时候不在于程序是否正确,而是对电路和物理的理解是否正确。
 楼主| qazq123 发表于 2015-10-16 09:44 | 显示全部楼层
gx_huang 发表于 2015-10-16 09:43
很多时候不在于程序是否正确,而是对电路和物理的理解是否正确。

恩恩,我对电路是有点一知半解-  - 学校学得不扎实,您能帮忙看看吗
gx_huang 发表于 2015-10-16 10:10 | 显示全部楼层
呵呵,这和电路是否扎实无关呀,你的软件是定时ADC,1600次累加,然后除以1600,这就是平均值呀,加不加交流信号,平均值不会变化呀,这是物理基础知识,和电路有啥关系。
 楼主| qazq123 发表于 2015-10-16 10:17 | 显示全部楼层
gx_huang 发表于 2015-10-16 10:10
呵呵,这和电路是否扎实无关呀,你的软件是定时ADC,1600次累加,然后除以1600,这就是平均值呀,加不加交 ...

不是啊,难道ADC采集的就是直流电的?交流电不采集?
 楼主| qazq123 发表于 2015-10-16 10:18 | 显示全部楼层
gx_huang 发表于 2015-10-16 10:10
呵呵,这和电路是否扎实无关呀,你的软件是定时ADC,1600次累加,然后除以1600,这就是平均值呀,加不加交 ...

两个电压叠加,不应该每个点 的电压都相加吗?
gx_huang 发表于 2015-10-16 10:37 | 显示全部楼层
无语了,不知道你想干什么。
这是数学问题,REF附近的ADC值,对于交流V1就是0V。
我都说了好几遍,估计和你想的不一样。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

25

主题

163

帖子

0

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