打印

无功补偿控制器

[复制链接]
2740|24
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
heaven_xiyu|  楼主 | 2013-9-16 10:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我现在的采集电路是从别人的控制器上接出来的,可得到电压电流的方波,  通过我的单片机进行检测,用定时器1计时。 现在得到的结果已经比较准确,可是却不是很稳定。
人家的控制器在功率因数为0.8的时候只会在0.801和0.802之间跳动, 可是我得到的数据却会在0.76~0.86之间波动, 虽然大多数结果是在0.80之间,可是波动还是很大。 我已经将得到的值循环30次求均方根,还是一样波动很大。 求高人指点这是为什么呢?

相关帖子

沙发
mcuatmel| | 2013-9-16 10:47 | 只看该作者
电网是实时波动的,你用的是理论方法,不大合适,你用现成的仪表IC更好些。

使用特权

评论回复
板凳
heaven_xiyu|  楼主 | 2013-9-16 16:15 | 只看该作者
mcuatmel 发表于 2013-9-16 10:47
电网是实时波动的,你用的是理论方法,不大合适,你用现成的仪表IC更好些。 ...

我是在功率源上输出的电压,电流, 而且现在方案已经做了若是再改已经来不及了。
问题是 别人的控制器能做到很稳, 不知道是不是算法的问题, 采样电路完全一样的。

使用特权

评论回复
地板
玩转天哈| | 2013-9-16 16:46 | 只看该作者
来学习的

使用特权

评论回复
5
mcuatmel| | 2013-9-16 17:10 | 只看该作者
应该是算法的问题。

使用特权

评论回复
6
heaven_xiyu|  楼主 | 2013-9-17 10:53 | 只看该作者
mcuatmel 发表于 2013-9-16 17:10
应该是算法的问题。

是啊,我也觉得是算法的问题,不会要用到什么傅立叶变换吧

使用特权

评论回复
7
mcuatmel| | 2013-9-17 11:30 | 只看该作者
你用的是简单的边沿采样计时吧?如果波形没问题理论上也不应该像你说的差那么多,如果真是用这种方法,不太实用,我做过,用标准信号源时不错,很准,现场就不行了。

使用特权

评论回复
8
qzlbwang| | 2013-9-17 12:40 | 只看该作者
要知道,这过程中每一步都可能存在着误差。细节不注意的话,波动大是必然的。

使用特权

评论回复
9
heaven_xiyu|  楼主 | 2013-9-17 19:00 | 只看该作者
mcuatmel 发表于 2013-9-17 11:30
你用的是简单的边沿采样计时吧?如果波形没问题理论上也不应该像你说的差那么多,如果真是用这种方法,不太 ...

是的,电压电流两个方波,电压上升沿的时候 开始计时, 检测电流电平的高低,在电流电平转换的时候获取计时器的值t,再在电压下降沿的时候获取计时器的值T/2。  这个检测电路是别人的板子上接出来的,而他们的控制器是很稳定的。 而我只用了求均方根值波动很大。我觉得应该是算法的问题,可是确实不知道他们的程序是怎么处理的。

使用特权

评论回复
10
qzlbwang| | 2013-9-17 19:30 | 只看该作者
计时用中断做的吧?考虑过中断响应的时间没有?——假如某次电平翻转时正好在执行其他中断(比如显示扫描的定时中断)。呵呵,这个可是随机的。

使用特权

评论回复
11
heaven_xiyu|  楼主 | 2013-9-18 00:38 | 只看该作者
qzlbwang 发表于 2013-9-17 19:30
计时用中断做的吧?考虑过中断响应的时间没有?——假如某次电平翻转时正好在执行其他中断(比如显示扫描的 ...

确实有这个可能, 我试试看在计时的时候, 关闭其他中断试试。多谢前辈指点!

使用特权

评论回复
12
heaven_xiyu|  楼主 | 2013-9-18 00:42 | 只看该作者
qzlbwang 发表于 2013-9-17 19:30
计时用中断做的吧?考虑过中断响应的时间没有?——假如某次电平翻转时正好在执行其他中断(比如显示扫描的 ...

我只设置了定时器0溢出中断, 然后定时器1用来计数。 如果是进入中断的话,定时器1还是在运行的吧。 除非中断结束的时候已经过了电平翻转,然后在下一次翻转的时候 才结束计时,这样误差应该会很大的吧, 可是我现在检测出的相位差的时间 差不多相同, 只差了一点点。

使用特权

评论回复
13
mcuatmel| | 2013-9-18 08:40 | 只看该作者
你一共用了几个中断?两个定时器分别做了哪些事情?说清楚些。

使用特权

评论回复
14
qzlbwang| | 2013-9-18 08:54 | 只看该作者
heaven_xiyu 发表于 2013-9-18 00:42
我只设置了定时器0溢出中断, 然后定时器1用来计数。 如果是进入中断的话,定时器1还是在运行的吧。 除非 ...

判断上升(下降)沿在哪里判断?比如说在上升(或下降)沿时,已经进入某中断,那么等到你判断上升(下降)沿时已经延时了,并不是发生的那个时刻。因为要等到中断退出(或开中断后——你判断上升或下降沿的中断是更高级的中断时)才能做这事。

使用特权

评论回复
15
heaven_xiyu|  楼主 | 2013-9-18 12:23 | 只看该作者
mcuatmel 发表于 2013-9-18 08:40
你一共用了几个中断?两个定时器分别做了哪些事情?说清楚些。

只用了1个定时器0中断, 定时器0用来定时,半秒中屏幕刷新一次、检测电压电流一次之类的工作。定时器1用来计数电压电流的相位差和周期。 我想即使进入中断应该也不影响定时器1的计时吧。 我在中断里就执行了2个全局变量的++指令,很快就能跳出来的

使用特权

评论回复
16
heaven_xiyu|  楼主 | 2013-9-18 12:29 | 只看该作者
qzlbwang 发表于 2013-9-18 08:54
判断上升(下降)沿在哪里判断?比如说在上升(或下降)沿时,已经进入某中断,那么等到你判断上升(下降 ...

先判断电压为0,在while里一直检测电压升高, 等电压一高马上定时器1清零开始计数,在检测电流当前状态,电流若是1则电流超前,若是0则滞后。 再检测电流的电平翻转,记下相位差,再检测电压的电平翻转记下周期的一般T/2。 确实 如果在while里如果进入中断了,然后在中断里电压升高了,退出中断时可能会少计数。 然后在电压翻转记录电压周期之前又进入中断 可能会使定时器1多计数。 我试试在检测前关闭中断试试。 也问题就是出在这里。

使用特权

评论回复
17
qzlbwang| | 2013-9-18 12:43 | 只看该作者
1、如果突变沿发生时,程序已经进入中断,那么该突变沿只有在中断返回后才能被检测到。
2、如果在突变沿检测的过程中(尚未处理完时),发生中断,那么也要等到中断处理完后才能继续处理该突变事件。
不管上述那种情况都将影响检测的实时性。检测前关闭中断只能是解决第二种情况。根本解决不了第一种情况。

使用特权

评论回复
18
qzlbwang| | 2013-9-18 12:46 | 只看该作者
另外,你能保证输入的方波都是50%占空比吗?这个半周期能保证是准确的吗?

使用特权

评论回复
19
heaven_xiyu|  楼主 | 2013-9-18 14:05 | 只看该作者
qzlbwang 发表于 2013-9-18 12:46
另外,你能保证输入的方波都是50%占空比吗?这个半周期能保证是准确的吗? ...

嗯,是的,因为采样部分是从已经成熟的产品上接出来的,而且焊上他们原来的片子 功率因数的检测很稳点 没有问题。

使用特权

评论回复
20
heaven_xiyu|  楼主 | 2013-9-18 14:08 | 只看该作者
qzlbwang 发表于 2013-9-18 12:43
1、如果突变沿发生时,程序已经进入中断,那么该突变沿只有在中断返回后才能被检测到。
2、如果在突变沿检 ...

应该没问题吧。 我一次检测30遍,用均方根值计算, 即使第一次检测有错误,得到的结果应该误差也不大吧?而且我中断函数很短应该没问题吧?

使用特权

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

本版积分规则

144

主题

219

帖子

1

粉丝