干扰害死人-单片机抗干扰问题(不知为啥结不了贴)

[复制链接]
楼主: cjseng
手机看帖
扫描二维码
随时随地手机跟帖
cjseng|  楼主 | 2012-1-10 14:07 | 显示全部楼层
应该不用看门狗,把这个问题解决掉,才是应该有的态度。
shizaigaole 发表于 2012-1-10 11:21

是的,看门狗是最后防线,但是在实际使用中看门狗起作用了,用户的设备也就停止动作了,所以看门狗不能解决问题。
看门狗在这里所起的作用主要还是上电、掉电复位作用。

使用特权

评论回复
leijie2001| | 2012-1-10 14:09 | 显示全部楼层
1.看门狗在中断里喂确实不好,应在主循环程序里喂。其实也不一定是看门狗动作,而是复位动作。5V电源的高频扰动时,MCU的复位脚很容易受干扰,可以加大复位PIN的电容。
2。干扰,要么是串扰,要么是空间辐射干扰。相对来说,空间辐射干扰对数字电路影响比较小。因此重点放在串扰上面分析。
3。IO已经通过光耦隔离,可以暂时排除。重点在电源变压器上面处理。串扰可以通过初次级绕组的层间分布和耦合电容形成通路。建议先用金属壳DC/DC隔离模块尝试一下。再确定下一步如何处理。

使用特权

评论回复
cjseng|  楼主 | 2012-1-10 14:11 | 显示全部楼层
怎么会这么脆弱呢?
我以前实验一个产品,用就220V直流接触器的控制线圈和产品的电源进线,缠绕在一起N圈,
并且直流接触器的线圈不并反向二极管,反复开关直流接触器都没关系。

不知楼主是否只有一块板,要是设备 ...
shizaigaole 发表于 2012-1-10 11:18


只有一块线路板,全部是插件,没有贴片元器件。

我现在买了三个老式的交流接触器作为负载在家里测试,基本上动作1000次,会有5次跑飞。我把接触器与我的控制器拉开距离到1米以上,差不多1000次跑飞一次。

我的控制器外壳是铁壳子,全封闭的。

使用特权

评论回复
joinj| | 2012-1-10 14:15 | 显示全部楼层
电磁阀和单片机控制电路是一个电源么?怀疑是电源瞬时功率不够·····电磁阀供电端加个大电容试试

使用特权

评论回复
cjseng|  楼主 | 2012-1-10 14:46 | 显示全部楼层
电磁阀和单片机控制电路是一个电源么?怀疑是电源瞬时功率不够·····电磁阀供电端加个大电容试试
joinj 发表于 2012-1-10 14:15


电磁阀和我的单片机之间是这样的关系:

单片机--光耦--板载继电器--用户设备上的中级继电器--电磁阀
如果说是同一个电源,那只是同一个AC220V电源。

使用特权

评论回复
jiabin1024| | 2012-1-10 14:47 | 显示全部楼层
1.加大电源的功率试试看
2.看看电池阀的参数是否改动
3.用第一批的板子做两个测试一下

使用特权

评论回复
nongfuxu| | 2012-1-10 15:01 | 显示全部楼层
觉得应该从电路上消除干扰脉冲入手.或者换更加健壮的MCU.

使用特权

评论回复
hyhmh| | 2012-1-10 15:02 | 显示全部楼层
显然,综合来说 这里 存在 软件和硬件 2个方面的问题。

在 中断程序中 调用 多个子程序, 这些子程序 声明中 有没有 特定指出?(MCU的寄存器、RAM会不会 被 共用?)

使用特权

评论回复
hyhmh| | 2012-1-10 15:03 | 显示全部楼层
T2 是4mS一个周期, T2中断服务程序 有没有 测量过 最大运行时间 多少?

使用特权

评论回复
cjseng|  楼主 | 2012-1-10 15:21 | 显示全部楼层
显然,综合来说 这里 存在 软件和硬件 2个方面的问题。

在 中断程序中 调用 多个子程序, 这些子程序 声明中 有没有 特定指出?(MCU的寄存器、RAM会不会 被 共用?) ...
hyhmh 发表于 2012-1-10 15:02

共用的可能性我认为没有,因为在有外部IO输入的情况下不带负载或带纯阻性负载(白炽灯)连续运行毫无问题。

Build target 'Target 1'
assembling STARTUP.A51...
compiling baozi.c...
linking...
Program Size: data=41.3 xdata=0 code=2295
creating hex file from "YJ240"...
"YJ240" - 0 Error(s), 0 Warning(s).

使用特权

评论回复
peigang| | 2012-1-10 15:26 | 显示全部楼层
听着像是电源功率不够

使用特权

评论回复
cjseng|  楼主 | 2012-1-10 15:32 | 显示全部楼层
T2 是4mS一个周期, T2中断服务程序 有没有 测量过 最大运行时间 多少?
hyhmh 发表于 2012-1-10 15:03


平均小于2ms,在读写24C16时超过10ms,但在读写EEPROM时另外加了喂狗指令,而且读写EEPROM仅发生在开机和关机时刻(由用户按开机、关机键开关机),平时没有读写EEPROM动作,但是程序跑飞时,经常会改写eeprom数据。

另外,我用示波器观察到程序跑飞时已经跑出AT89C52的8K空间,我认为基本上除了看门狗已经没法拦截跑飞的程序了。

跑出8K空间的依据是:P0口、P2口上出现了地址、数据脉冲,而我的硬件上,P0口用于数码管的段码,P2口接了8个按键。EA接电源端,所以跑飞的症状是数码管乱闪,由于我的按键消抖时间较长(每隔4ms读一次按键电平,电平重复12次确认按键信号有效),P2口的电平变化基本不会引起按键动作。

使用特权

评论回复
pa2792| | 2012-1-10 15:38 | 显示全部楼层
如果不怕外泄,把文件发给我看看。

使用特权

评论回复
gx_huang| | 2012-1-10 16:11 | 显示全部楼层
这个问题,只要有原理图、PCB图,以及外围接线布局,就好办,去现场我肯定可以搞定。
有些PCB走线太差,地线不按照顺序,都很致命的。

使用特权

评论回复
cjseng|  楼主 | 2012-1-10 16:17 | 显示全部楼层
如果不怕外泄,把文件发给我看看。
pa2792 发表于 2012-1-10 15:38

怎么发给你?

使用特权

评论回复
cjseng|  楼主 | 2012-1-10 16:20 | 显示全部楼层
本帖最后由 cjseng 于 2012-1-10 16:27 编辑
这个问题,只要有原理图、PCB图,以及外围接线布局,就好办,去现场我肯定可以搞定。
有些PCB走线太差,地线不按照顺序,都很致命的。
gx_huang 发表于 2012-1-10 16:11


没去现场前,我也认为到了现场就能搞定,可惜去了三次,均无功而返。
外围接线布局不能动,这是客户自己搞的。

我不知带这里怎么贴图,否则我就把图贴上来了。

使用特权

评论回复
gx_huang| | 2012-1-10 16:26 | 显示全部楼层
首先是解决自己设计的PCB的走线问题。

使用特权

评论回复
w522930954| | 2012-1-10 16:32 | 显示全部楼层
换固态继电器吧,否则变压器的外壳不接地是不行的。

使用特权

评论回复
cjseng|  楼主 | 2012-1-10 16:48 | 显示全部楼层
首先是解决自己设计的PCB的走线问题。
gx_huang 发表于 2012-1-10 16:26


我的PCB布线规则是:最小线宽20mil,电源与地最小55mil,安全间距最小12mil,与强电安全间距39mil以上,所有的线(包括地线)布通后,在单片机周围覆铜,晶振紧挨着单片机X1\X2引脚,晶振外壳接地。
纯手工布线,基本没有VIA过孔。常常为了减少一个过孔花上半天时间。
没有直角走线,即使有也做倒角处理,焊盘加泪滴。

主滤波电容2200uf/25V,变压器功率余量2倍以上,所有芯片电源脚与地之间并104电容。

使用特权

评论回复
cjseng|  楼主 | 2012-1-10 16:50 | 显示全部楼层
换固态继电器吧,否则变压器的外壳不接地是不行的。
w522930954 发表于 2012-1-10 16:32


用固态继电器代替普通继电器?那是不行的,因为我事先并不知道继电器的负载是什么,如果是直流负载呢?

另外,此处的干扰显然不是我的继电器引起,完全是外部最终负载引起的。

使用特权

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

本版积分规则