标题:
提高单片机系统可靠性方法探讨
[打印本页]
作者:
梦景
时间:
2011-9-28 23:21
标题:
提高单片机系统可靠性方法探讨
1
电源干扰及其抑制
单片机应用系统的可靠性是极为重要的。在影响单片机系统可靠性的诸多因素中
,
电源干扰可谓首屈一指。据统计
,
计算
机应用的运行故障有
90%
以上是由电源噪声引起的。
1.1
交流电源干扰及其抑制
多数情况下
,
单片机运用系统都使用交流
220 V
、
50 Hz
的电源供电。在
工业
现场
,
生产负荷的经常变化
,
大型用电设备的启动与停止
,
往往要造成电源电压的波动
,
有时还会产生尖峰脉冲
,
这种高能尖峰脉冲的幅度约在
50 000 V~4 000 V
之间
,
持续时间为几个毫秒。它对计算机应用系统影响最大
,
能使系统的程序
“
跑飞
”
或使系统造成
“
死机
”
。因此
,
一方面要使系统尽量远离这些干扰源
,
另一方面要采用电源滤波器。这种滤波器是按频谱均衡原理设计的一种无源四端
网络
。为了提高系统供电的可靠性
,
还要采用交流稳压器
,
防止电源的过压和欠压。采用
1
∶
1
隔离变压器
,
防止干扰通过初次级间的电容效应进入单片机供电系统。
1.2
直流电源抗干扰措施
1.2.1
采用高质量集成稳压电路单独供电
单片机应用系统中往往需要几种不同电压等级的直流电源。这时
,
可以采用相应的低纹波高质量集成稳压电路。每个稳压电路单独对电压过载进行保护
,
因此不会因某个电路出现故障使整个系统遭到破坏
,
而且也减少了公共阻抗的互相偶合
,
从而使供电系统的可靠性大大提高。
1.2.2
采用直流开关电源
直流开关电源是一种脉宽调制型电源。它甩掉了传统的工频变压器
,
具有体积小、重量轻、效率高、电网电压范围宽、变化时不易输出过电压和欠电压的特点
,
在计算机应用系统中应用非常广泛。这种电源一般都有几个独立的电压输出
,
如
±5 V
、
±12 V
、
±24 V
等
,
电网电压波动范围可达
220 V
的
+10%
至
-20%,
同时
,
直流开关电源还具有较好的初、次级隔离作用。
1.2.3
采用
DC-DC
变换器
如果系统供电电网波动较大
,
或者精度要求高
,
可以采用
DC-DC
变换器。
DC-DC
变换器的特点是输入电压范围大、输出电压稳定且可调整、效率高、体积小
,
有多种封装形式。在单片机应用系统中获得了广泛的应用。
2
地线干扰及其抑制
在计算机应用系统中
,
接地是一个非常重要的问题。接地问题处理的正确与否
,
将直接影响系统的正常工作。
2.1
一点接地和多点接地的应用
在低频电路中
,
布线和元件间的寄生电感影响不大
,
因而常采用一点接地
,
以减少地线造成的地环路。在高频电路中
,
布线和元件间的寄生电感及分布电容将造成各接地线间的偶合
,
影响比较突出
,
此时应采用多点接地。
通常频率小于
1 MHz
时
,
采用一点接地
;
频率高于
10 MHz
时
,
采用多点接地
;
频率处于
1 MHz~10 MHz
之间时
,
若采用一点接地
,
其地线长度不应超过波长的
1/20
。否则
,
应采用多点接地。
2.2
数字地与模拟地的连接原则
数字地是指
TTL
或
CMOS
芯片、
I/O
接口电路芯片、
CPU
芯片等数字逻辑电路的接地端
,
以及
A/D
、
D/A
转换器的数字地。模拟地是指放大器、取样保持器和
A/D
、
D/A
中模拟信号的接地端。在单片机系统中
,
数字地和模拟地应分别接地。即使是一个芯片上有两种地也要分别接地
,
然后在一点处把两种地连接起来
,
否则
,
数字回路通过模拟电路的地线再返回到数字电源
,
将会对模拟信号产生影响。
2.3
印刷电路板的地线分布原则
TTL
、
CMOS
器件的接地线要呈辐射网状
,
避免环形
;
板上地线的宽度要根据通过的电流大小而定
,
最好不小于
3 mm
。在可能的情况下
,
地线尽量加宽
;
旁路电容的地线不要太长
;
功率地通过电流信号较大
,
地线应较宽
,
必须与小信号地分开。
2.4
信号电缆屏蔽层的接地
信号电缆可以采用双绞线和多芯线
,
又有屏蔽和无屏蔽两种情况。双绞线具有抑制电磁干扰的作用
,
屏蔽线具有抑制静电磁感应干扰的作用。
对于屏蔽线
,
屏蔽层最佳的接地点是在信号源测
(
一点接地
)
。
3
其他提高系统可靠性的方法
3.1
硬件抗干扰设计
(1)
选择抗干扰性能强的
CPU
。单片机和单片机抗干扰能力是不一样的。如果你的产品是工作在干扰比较大的环境
,
可以选用抗干扰能力强的单片机。
(2)
数字量的光电隔离。开关量信号实际上有不同的信号传输方式
:
①
TTL
电平
;
②
RS232
电平
(
非平衡信号
);
③
RS485
电平
(
平衡信号或者差分信号
);
④
电流环路
(
有电流或者无电流
)
。
单片机的输入输出口线是最容易引进干扰的地方
;
对于不使用的
I/O
口线
,
需要使用电阻上拉到高电平
,
不可悬置。直接将开关量信号接到单片机的口线上
,
是最不可取的设计
;
至少要加一个缓冲驱动的芯片隔离
,
而且这个芯片要跟
CPU
尽量近
;
在严重干扰的情况下
,
需要将所有的口线采用光耦光电隔离。光耦隔离就是采用电流环路传输
,
避免在长线传输的时候
,
在传输线上积累高压和感应信号
,
使得数据紊乱甚至损坏
TTL
接口芯片
,
或者干扰单片机的正常运行。注意
,
采用光电隔离是为了信号使用电流环路传输
,
而不是使用
TTL
电平传输
,
这意味着
,
从
CPU
模块的角度看
,
开关量输出、驱动器件
,
如
74LS244/245/07…
等等
,
在
CPU
模块这里
,
光耦在另外一块电路板处
;
开关量输入
,
光耦在
CPU
模块处
,
而驱动器件在另外一块电路板处
;
这样才能形成电流环路。数字信号的电流环路的电流一般在
5 mA
~
10 mA,
根据光耦的指标而定。在工业环境下与
CPU
模块相对独立的键盘
,
需要使用光耦光电隔离接入到系统中
,
否则极易损坏接口芯片。
(3)
模拟量的光电隔离。模拟量隔离有
2
种方法
,
一种是
,
使用线性光耦
,
隔离模拟量
;
由于线性光耦的价格昂贵
,
并且线性区也很窄
,
不推荐使用。比较常用的办法是
,
选用
SPI
接口
,
或者
3
线接口的
AD
或者
DA,
把数据、时钟和使能信号
,
使用光耦隔离。这实际上是把模拟量的信号转换成串行的开关量的数据流传输。另一种是使用
4 mA
~
20 mA
的电流环路
,
但是
4 mA
~
20 mA
的芯片价格比较昂贵
,
而且电路也复杂。
(4)
模拟量的通讯传输。使用一个
CPU,
把模拟量读入到
CPU,
再通过
RS485
接口把数据按照通讯协议
,
传输到主
CPU
模块
;
当然
,
也可以传输开关量信号等。实际上
,
这是一个分布式的测控网络的方法
;
多板的单片机测控系统经常使用这种方法。
(5)
独立的
“
看门狗
”
。选用独立的
“
看门狗
”
作为系统复位信号产生
;
当系统跑飞时
,
由于没有
“
喂狗
”,“
看门狗
”
产生复位信号
,
使得系统可以最大限度地找回跑飞前的数据
,
尽可能重新开始平稳的运行。
(6)
采用
RS232
电平传输。比如
,
机箱的面板显示
,
经常采用
max7219,
这时如果使用
TTL
电平
,
经常被干扰使得显示不正常
;
可以在发送端使用一片
MAX232,
将
TTL
电平转换成
RS232
电平
,
在面板显示电路板
,
选用一片
MC1489,
将
RS232
电平
,
转换
TTL
电平
,
加强驱动能力
,
就可以保证信号正确传输。
(7)
采用
RS422
电平传输。同样
,
也可以在发送端
,
采用一片
MAX485,
将
TTL
电平转换成
RS485
电平
,
在接收端
,
选用一片
MAX485,
将
RS485
电平
,
转换
TTL
电平
,
就可以保证信号正确传输。
3.2
单片机软件抗干扰
在单片机软件程序的设计中
,
采用一些措施来提高单片机系统工作的可靠性。软件抗干扰研究的内容主要是
:
①
消除模拟输入信号的噪声
(
如数字滤波技术
);
②
程序运行混乱时使程序进入正轨的方法。这里针对后者提出几种有效的软件抗干扰方法。
3.2.1
指令冗余技术
单片机
CPU
取指令过程是先取操作码
,
再取操作数。当
PC
受干扰出现错误
,
程序便脱离正常轨道
“
乱飞
”,
当
“
乱飞
”
到某双字节指令
,
若取指令时刻落在操作数上
,
误将操作数当作操作码
,
程序将出错。若
“
飞
”
到了三字节指令
,
出错概率更大。在关键地方人为插入一些单字节指令
,
或将有效单字节指令重写称为指令冗余。通常是在双字节指令和三字节指令后插入两个字节以上的
NOP
。这样即使
“
乱飞
”
程序飞到操作数上
,
由于空操作指令
NOP
的存在
,
避免了后面的指令被当作操作数执行
,
程序自动纳入正轨。此外
,
对系统流向起重要作用的指令如
RET
、
RETI
、
LCALL
、
LJMP
、
JC
等指令之前插入两条
NOP,
也可将
“
乱飞
”
程序纳入正轨
,
确保这些重要指令的执行。
3.2.2
软件陷阱技术
当
“
乱飞
”
程序进入非程序区
,
冗余指令便无法起作用。通过设置软件陷阱
,
拦截
“
乱飞
”
程序
,
将其引向指定位置
,
再进行出错处理。软件陷阱是指用来将捕获的
“
乱飞
”
程序引向复位入口地址
0000H
的指令。
例如
,
对于
8051
单片机
,
通常在单片机程序存储器中非程序区填入以下指令作为软件陷阱
:
NOP
NOP
LJMP0000H
在用户程序区各模块之间的空余单元也可填入陷阱指令。当使用的中断因干扰而开放时
,
在对应的中断服务程序中设置软件陷阱
,
能及时捕获错误的中断。如某应用系统虽未用到外部中断
1,
外部中断
1
的中断服务程序可为如下形式
:
NOP
NOP?
RETI
返回指令可用
“RETI”,
也可用
“LJMP 0000H”
。如果故障诊断程序与系统自恢复程序的设计可靠、完善
,
用
“LJMP 0000H”
作返回指令可直接进入故障诊断程序
,
尽早地处理故障并恢复程序的运行。考虑到程序存储器的容量
,
软件陷阱一般
1K
空间有
2~3
个就可以进行有效拦截。
3.2.3
软件
“
看门狗
”
技术
若失控的程序进入
“
死循环
”,
通常采用
“
看门狗
”
技术使程序脱离
“
死循环
”
。通过不断检测程序循环运行时间
,
若发现程序循环时间超过最大循环运行时间
,
则认为系统陷入
“
死循环
”,
需进行出错处理。
“
看门狗
”
技术可由硬件实现
,
也可由软件实现。
在
工业
应用中
,
严重的干扰有时会破坏中断方式控制
,
关闭中断。则系统无法定时
“
喂狗
”,
硬件
“
看门狗
”
电路失效
,
而软件
“
看门狗
”
可有效地解决这类问题。
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0