打印
[Atmel]

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

[复制链接]
3686|31
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
qazq123|  楼主 | 2015-10-15 10:09 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 qazq123 于 2015-10-16 17:03 编辑
<blockquote><blockquote>//ADC初始化
//ADC完成中断
#pragma interrupt_handler adc_isr:iv_ADC     
void adc_isr(void)
{
ADMUX =0x46;//选择内部AVCC为基准
temp_single=ADC&0x3ff;
temp_single=temp_single*Vref/1024;
temp_sum += temp_single*temp_single;
if(flag==64)
{
  adc_rel=(unsigned int)sqrt((temp_sum)/64);
   flag = 0;
   temp_sum = 0;
   
}


}
#pragma interrupt_handler timer0_ovf:17
void timer0_ovf(void)
{
TCNT0 = 0xB2;  //重装计数初值
ADCSRA|=(1<<ADSC);//启动AD转换
flag++;   //625微妙,标志位加1
}
//主函数里的循环
while(1)
{
  //采集1600个点,进行数据平均数的计算
  if(adc_old!=adc_rel)
  {
   adc_old=adc_rel;
   send(adc_old);
   for(j=0;j<50;j++)
   {
           display();
         }
   }
   
电路图如左侧,芯片是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的的转换时间远小于定时器的定时时间,这样不要紧的吧?

现在采集是可以的。就交流跟直流叠加搞不懂

使用特权

评论回复
5
ayb_ice| | 2015-10-15 14:25 | 只看该作者
本帖最后由 ayb_ice 于 2015-10-15 14:27 编辑
qazq123 发表于 2015-10-15 14:06
要定时,ADC的的转换时间远小于定时器的定时时间,这样不要紧的吧?

应该没有问题,但也受其它中断的影响(如果其它中断有,并且运行较长时间),不利于系统扩展
这样定时中断里查询不是更好吗

使用特权

评论回复
6
qazq123|  楼主 | 2015-10-15 14:30 | 只看该作者
ayb_ice 发表于 2015-10-15 14:25
应该没有问题,但也受其它中断的影响(如果其它中断有,并且运行较长时间),不利于系统扩展
这样定时中断 ...

恩恩, 也是。我用的不是连续转换模式,不怕这段时间转换了多次,对吧?

使用特权

评论回复
7
qazq123|  楼主 | 2015-10-15 14:31 | 只看该作者
ayb_ice 发表于 2015-10-15 14:25
应该没有问题,但也受其它中断的影响(如果其它中断有,并且运行较长时间),不利于系统扩展
这样定时中断 ...

恩,也是我用的不是连续转换模式,不怕这段时间转换了多次,对吧?

使用特权

评论回复
8
gx_huang| | 2015-10-15 16:05 | 只看该作者
1、你测试的是平均电压吗?直流偏置上叠加交流电,直流电平还是一样的。
2、V1开路吗?去掉了运放,V1也悬空,拿来的直流偏置?完全是高阻态呀,测试电压和电路的漏电等参数有关了。

使用特权

评论回复
9
qazq123|  楼主 | 2015-10-15 16:23 | 只看该作者
gx_huang 发表于 2015-10-15 16:05
1、你测试的是平均电压吗?直流偏置上叠加交流电,直流电平还是一样的。
2、V1开路吗?去掉了运放,V1也悬 ...

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

2.去掉运放后,V1接市电(也就是220V交流电)得出的数据

使用特权

评论回复
10
gx_huang| | 2015-10-16 08:38 | 只看该作者
qazq123 发表于 2015-10-15 16:23
1.恩,平均电压。ADC采集的不是瞬时电压吗?直流电压跟交流电压叠加,瞬时电压会相对应的叠加吧?

2.去 ...

1、我的意思是,你软件显示的是平均电压还是瞬时电压?按道理,交流电的瞬时电压没有意义呀,一般是显示平均电压呀。
2、去掉运放,V1接市电,你还能测试什么呢?没有电阻分压了,而是二极管钳位或者击穿时的分压了,这是不确定的。

使用特权

评论回复
11
qazq123|  楼主 | 2015-10-16 08:43 | 只看该作者
gx_huang 发表于 2015-10-16 08:38
1、我的意思是,你软件显示的是平均电压还是瞬时电压?按道理,交流电的瞬时电压没有意义呀,一般是显示 ...

1.我的意思是ADC采集的一个点是瞬时电压, 我取1600个点当然是显示平均电压咯。
2. 不是有R1  R2  R3 分压吗?去掉运放不是只是取消掉电流测量这部分的电路吗?

使用特权

评论回复
12
gx_huang| | 2015-10-16 09:15 | 只看该作者
qazq123 发表于 2015-10-16 08:43
1.我的意思是ADC采集的一个点是瞬时电压, 我取1600个点当然是显示平均电压咯。
2. 不是有R1  R2  R3 分 ...

R3是接REF呀,运放都没有了,还分什么压。
就变成了TVS和CPU内部钳位二极管的分压了。

使用特权

评论回复
13
qazq123|  楼主 | 2015-10-16 09:35 | 只看该作者
gx_huang 发表于 2015-10-16 09:15
R3是接REF呀,运放都没有了,还分什么压。
就变成了TVS和CPU内部钳位二极管的分压了。 ...

哦哦,所以去掉运放是没有电阻分压倍数的。  那我接运放的时候,为什么交流和直流的叠加,ADC采集不了叠加数据之和呢?或者直接能采集交流的电压也可以,还是我的程序有问题?

使用特权

评论回复
14
gx_huang| | 2015-10-16 09:42 | 只看该作者
你的程序我懒得看呀,好久不看AVR芯片了。
交流电,你采集很多次,叠加后,就是直流电平呀,怎么可以测交流电幅度呢。
测交流电幅度,得采用其它算法才对。

使用特权

评论回复
15
gx_huang| | 2015-10-16 09:43 | 只看该作者
很多时候不在于程序是否正确,而是对电路和物理的理解是否正确。

使用特权

评论回复
16
qazq123|  楼主 | 2015-10-16 09:44 | 只看该作者
gx_huang 发表于 2015-10-16 09:43
很多时候不在于程序是否正确,而是对电路和物理的理解是否正确。

恩恩,我对电路是有点一知半解-  - 学校学得不扎实,您能帮忙看看吗

使用特权

评论回复
17
gx_huang| | 2015-10-16 10:10 | 只看该作者
呵呵,这和电路是否扎实无关呀,你的软件是定时ADC,1600次累加,然后除以1600,这就是平均值呀,加不加交流信号,平均值不会变化呀,这是物理基础知识,和电路有啥关系。

使用特权

评论回复
18
qazq123|  楼主 | 2015-10-16 10:17 | 只看该作者
gx_huang 发表于 2015-10-16 10:10
呵呵,这和电路是否扎实无关呀,你的软件是定时ADC,1600次累加,然后除以1600,这就是平均值呀,加不加交 ...

不是啊,难道ADC采集的就是直流电的?交流电不采集?

使用特权

评论回复
19
qazq123|  楼主 | 2015-10-16 10:18 | 只看该作者
gx_huang 发表于 2015-10-16 10:10
呵呵,这和电路是否扎实无关呀,你的软件是定时ADC,1600次累加,然后除以1600,这就是平均值呀,加不加交 ...

两个电压叠加,不应该每个点 的电压都相加吗?

使用特权

评论回复
20
gx_huang| | 2015-10-16 10:37 | 只看该作者
无语了,不知道你想干什么。
这是数学问题,REF附近的ADC值,对于交流V1就是0V。
我都说了好几遍,估计和你想的不一样。

使用特权

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

本版积分规则

25

主题

163

帖子

0

粉丝