1、 硬件抗干扰设计
1) 选择抗干扰性能强的CPU
单片机和单片机抗干扰能力是不一样的。如果你的产品是工作在干扰比较大的环境,可以试试选用不同品牌的单片机;原来我在一个光电所,做YAG激光治疗机的控制部分,脉冲激光机的电源放电的时候,能量是很大的,在采取了所有能够想到的光电隔离等措施之后,还是不行;后来,选用了intel的8031,就可以了。
现在,8031兼容的厂家是越来越多了,很多厂家号称自己的芯片怎么怎么牛。那么,当你的系统遇到被干扰的时候,可以试试看,哪些单片机抗干扰性能最强。
这也是为什么在单片机系统中,选用51的原因,可以选择替换的兼容的CPU多;
实际上,摩托罗拉的单片机的抗干扰性能要比51的好。在北美大量使用。
2) 数字量的光电隔离
开关量信号实际上有不同的信号传输方式:
1) TTL电平
2)RS232电平(非平衡信号)
3)RS485电平(平衡信号,或者差分信号)
4)电流环路(有电流或者无电流)
单片机的输入输出口线是最容易引进干扰的地方;对于不使用的I/O口线,需要使用电阻上拉到高电平,不可悬置。
直接将开关量信号接到单片机的口线上,是最不可取的设计;至少要加一个缓冲驱动的芯片隔离,而且这个芯片要跟CPU尽量近;在严重干扰的情况下,需要将所有的口线采用光耦光电隔离。
光耦隔离就是采用电流环路传输,避免在长线传输的时候,在传输线上积累高压和感应信号,使得数据紊乱甚至损坏TTL接口芯片,或者干扰单片机的正常运行。
注意,采用光电隔离是为了信号使用电流环路传输,而不是使用TTL电平传输,这意味着,从Cpu模块的角度看,开关量输出,驱动器件,如:74LS244/245/07…等等,在CPU模块这里,光耦在另外一块电路板处;开关量输入,光耦在CPU模块处,而驱动器件在另外一块电路板处;这样才能形成电流环路。数字信号的电流环路的电流一般在5mA~10mA,根据光耦的指标而定。
在工业环境下与CPU模块相对独立的键盘,需要使用光耦光电隔离接入到系统中,否则极易损坏接口芯片;
3) 模拟量的光电隔离
模拟量隔离有2种方法,一种是,使用线性光耦,隔离模拟量;但是由于线性光耦的昂贵的价格,并且线性区也很窄,不推荐使用。
比较常用的办法是,,选用SPI接口,或者3线接口的AD或者DA,把数据、时钟和使能信号,使用光耦隔离。
这实际上是把模拟量的信号转换成串行的开关量的数据流传输;
还有一种是使用4~20mA的电流环路,但是4~20mA的芯片价格比较昂贵,而且电路也复杂;
4) 模拟量的通讯传输
另外一种办法,就是使用一个CPU,把模拟量读入到CPU,再通过RS485接口把数据按照通讯协议,传输到主CPU模块;当然,也可以传输开关量信号等;