你尝试在市电过零时候打开或者关闭负载会好些,另外你的中断里面做的东西太多了
rock_shu 发表于 2012-1-14 11:53
继电器如何实现过零点开关?
中断里面做的事太多?我所有的任务都在这个中断里完成,而且就只有这一个中断。
我的中断周期是4毫秒,所有任务运行时间加起来不到2毫秒,其实仔细测一下,是350us左右。就一个中断,不可能出现中断嵌套,就算运行时间超过4毫秒,也是只会造成中断频率降低,最终影响数码管显示,影响以4毫秒为时基的计时。
实际上我的中断里面还做了些其它事情,比如:刷新一些特殊功能寄存器,以免干扰破坏了定时器的工作方式,破坏了中断使能,把要打开的关闭了,把不需要打开的开启了,等等。
前面高人指点过了,PCB设计有问题,如果我的软件没有采取这些措施,将会死的更惨,由于我采用了这样的程序写法,很多问题直接被屏蔽了,故障发作的几率就小了。
前面有谁提到概率的问题,我正是这样考虑的,4毫秒的周期内,350微秒单片机在运行,剩下的时间单片机处于休眠状态,在休眠状态程序是停止运行的,此时干扰对单片机是起不了作用的,受干扰的几率是:0.35/4=8.75%。
如果你注意,你会发现继电器输出我是放在中断的最后执行的,在改变继电器状态后,十几个微秒后单片机就进入了休眠状态,而继电器要完成一个机械动作,触点抖动反复弹跳是在毫秒级别的。遗憾的是:我没有办法将中断的周期拉长(要动态刷新数码管),要是能长到100毫秒以上,干扰就抗的过去了。 |