一个LED灯有3种控制状态,常亮、常灭和闪烁,要做到这种控制最简单的一种方法是使用任何一款处理器的普通IO去控制。
用IO控制方式有两种,一种是高有效,如下图1所示IO口为高电平时LED亮,IO为低电平时LED不亮。IO口出一个PWM波LED就会闪烁。
另一种是低有效,如下图2所示,IO为低电平时LED亮,IO为高电平时LED不亮。
除了用IO口去点亮灯之外还有用MOS管去点亮,MOS管控制的好处就是发光二极管驱动不来源于GPIO的能力而是来源于电源,IO口间接的控制LED的亮灭,如下图所示。
通常设备的面板上会有几个灯,在做ESD实验的时候,给面板打静电灯会异常(可能灯在亮着,打静电之后灯灭了)。直接用IO口控制灯,再打静电的时候会漏到信号线上可能把处理器的IO给烧坏。这种现象有可能只是这个IO坏了,其他功能都是正常的。产品的可靠性没有那么高。可以通过以下方法解决。
第一个设计非常简单,但打静电的时候会把IO给烧坏,但是灯一般不会坏。
第二个设计先用电阻做下拉,在不控制的时候给一个默认状态,之后用磁珠做一个Π型滤波,电容大小可以选择100nF(因为灯的闪烁不会闪烁的非常快),磁珠对吸收静噪有一定作用,包括灯的地也串一个磁珠可以吸收静电噪声和高频噪声。在灯的位置加一个3.3V的tvs管,当静电过来的时候会把电压钳位住,再经过电阻和磁珠到处理器端就不构成威胁了。
如果项目要求更高,用上面方案还是达不到要求可以在控制端加个与门,把两个输入端接在一起,输入一个高电平出来还是高电平,输入低电平出来还是低电平。与门在这有两个作用,第一个是增加驱动能力(下图这个与门的驱动能力32mA),在长距离传输上会用到,第二是有整形和隔离的作用,灯上面有干扰,会有隔离作用。
还有一种方法是用MOS管控制,这种比IO直接驱动灯会好一些,因为这种静电打在灯上不会直接作用在IO上,这种设计一般不会出问题,最多出问题就是把MOS给打坏了。也可以在MOS两端并一个TVS管,地之间再串一个磁珠做一个简单的隔离。