第一篇点灯的成长之路已经完成,你可以用单片机来控制如何点灯玩耍了,至于具体如何写代码让单片机完成这个点灯的动作,还是往后放一放,看看其它一些常用的电路设计,这里讲一个,有关于单片机的输入开关量检测的设计。
开关量检测是在单片机控制中非常常用和简单的一类处理了,经常用到的开关有光电开关,水位开关,压力开关,微动开关等等,其实很多,这里我们讲一下无源开关的检测设计(有源的后面讲),也叫干接点输入,就是闭合和断开无极性。(你可以理解为家里常用的插座开关,只是一个通断的控制,电源由外部提供)。
第一篇点灯的成长之路已经完成,你可以用单片机来控制如何点灯玩耍了,至于具体如何写代码让单片机完成这个点灯的动作,还是往后放一放,看看其它一些常用的电路设计,这里讲一个,有关于单片机的输入开关量检测的设计。
开关量检测是在单片机控制中非常常用和简单的一类处理了,经常用到的开关有光电开关,水位开关,压力开关,微动开关等等,其实很多,这里我们讲一下无源开关的检测设计(有源的后面讲),也叫干接点输入,就是闭合和断开无极性。(你可以理解为家里常用的插座开关,只是一个通断的控制,电源由外部提供)。
首先,简单介绍一下,单片机在检测输入是通过检测电平的高低状态来完成的,所以如果直接把一个开关接到单片机上市没有任何意义的,其二在设计一开关量输入检测电路时有一些需要注意的问题:
1.输入到单片机的电平不能超过单片机能够承受的最大耐压值,一旦超过会怎样,超过单片机的引脚会出现短暂性失效和永久性失效两种状态,第一种还好,一般断电修复电路,重新上电,单片机正常工作,另一种就只能换单片机了。(关于单片机的引脚耐受电压是不同的,以3.3v供电的STM32F103RCT6为例,有的引脚可以承受5V,有点引脚可以承受3.3V,打开他的手册你看引脚上带有FT的就是耐受5v的引脚,如果电压再高就不能保证了。。。)
说再多都是空口白话,还是从datasheet中截取一段,大家看着更直白:
2.假如本来接开关的端口,被接入了电源该怎么办(同样两个接入端,遇到不懂的人谁管他带电不带电先接上去再讲嘛。),如何有效防止这种意外的发生呢,也是设计硬件时需要考虑的问题。
3.因为输入很容易引入干扰,像静电干扰/电磁干扰,影响小导致你检测信号的不正常,影响大直接损坏你的检测电路。
4.有时候你还需要通过电路来检测一下这个开关量是不是好用的呢,万一一上来就是坏的,万年常开万年常闭,又该如何去判断呢。
其实硬件设计出能用的电路很简单,身为小白的我学校学的那点知识可能就够用了,但是如何设计出简洁稳定低成本的电路却是一门艺术,你不光要从设计者的角度考虑问题,你还要站在使用者的角度去考虑问题,不断地对电路进行升级,伴随着产品的升级,让他越来越好。
闲话扯远了,下面让我们来进入一下正题,那些年大牛们钟爱的那些电路:
先来一个某位大牛曾设计的电路我们看一下,然后小白带你一点点的分析,先上图:
CN44,是常用的端子编号,表示第44号端子,这里接开关的输入端。
SW9,是单片机输入口的编号,这里的电平是单片机检测的输入端,也是我们需要的测试端。
端口确认了,接下来分析一下这个电路的原理,首先假设接入开关处于断开状态,SW9的电位由+5接10K电阻接1K电阻接过来,所以这个点为高电平。
当接入开关在闭合状态时,SW9端的电位由R125右侧决定,通过分析为0.7V,也就是4148二极管抬升部分的电位。高位5v 低位0.7v,这个电路是可用的哈。
下面来分析一下电路为什么要这么搭:
首先接5v的R126为10K,主要作用就是限流,因为当前电路我们只做电平检测,所以电路取大一些来电路整体的功耗。
再来看104对地接一个电容怎么看:104的电容主要用来屏蔽高频干扰信号,所以这里主要用来屏蔽干扰。
再来看104电容串接1k的电阻,主要是用来防止电容充放电时,造成的冲击干扰,串个电阻限下流,因容值本身就比较小,所以这里选择串接一个较大的1k的电阻。
再来看看这个二极管4148,这里稍微展开看一下。下面先看下这个4148的datasheet吧。
先看下一手册给出的参数,第一组手册给出的是最大额定值的参数:
运行温度和存储稳定都是-65到200度。
最大通过电流200mA在环境温度为25度的情况下,根据实际经验随着环境温度越高,其通过的最大电流值会降低,实际再设计电路时,要注意不要在最大额定值的附近设计,一旦环境温度提高会导致硬件损坏。
降额因数:1.14mA/度,这个没大研究明白,先略过。
浪涌电流(正玄波)2A,最高持续8.3ms
浪涌电流(方波)1.41A,最高持续8.3ms
接下来是额定参数,25度时候(好像接触的datasheet额定参数都是25度下给出的):
这里基本大体说下,不一一展开了,大部分参数我都是猜的啊 哈哈哈,希望没猜错,最大反向电压100V,超过就报废,最大反向方波电压75V,正常使用时压降大概在0.8~1.2之间的样子,电流不同,电压不同,非绝对值,后面看其曲线你就更能直观的看出他的特性。
接下来我们看一下这个电路与上面的有什么不同:
第一点:多了一路发光二极管,用于指示开关的状态(如果不追求极致的功耗与稳定性还是不错的设计)。
第二点:这个电路中也有一个4148的二极管,但是作用缺截然不同。
第三点:输入下半部分加入了一个ESD器件。这个后面讲。
发光二极管那一路不讲了,详情参考点灯第一课,我们来一下这个4148,这里的作用是当输入高于VCC的信号时,由于二极管的存在,大部分能量从二极管进入电源,拉低输入信号的电压值,将输入电平钳位在VCC附近,来保护好我们的MCU。
这里有一个ESD,型号为ULCE1012A015FR,问度娘也没有找到其数据手册,估摸着停产了,只找到个学名:瞬态电压抑制器。
这里对照一下两种:ESD和TVS 稍微展开一下:
ESD 为静电放电。
TVS 为瞬态电压抑制二极管。
二者原理是一样的,度娘讲:当TVS 二极管的两极受到反向瞬态高能量冲击时,它 能以10的负12次方秒量级的速度,将其两极间的高阻抗变为低阻抗,吸收高达数千瓦的浪涌功率,使两极间的电压箝位于一个预定值,有效地保护电子线路中的精密元 器件,免受各种浪涌脉冲的损坏。ESD和TVS比较的话,要看用在那些用途上,像ESD主要是用来防静电,防静电就要求电容值低,一般是1--3.5PF之间为最好.而TVS就做不到这一点,TVS的电容值比较高.
一般情况下,这里你加不加都不影响使用,加了要比不加好。
接着分析一下曲线:先不看曲线,我的脑海里会出现三条曲线,一条为开启电压与对电流的曲线关系,一条为开启电流与输出电流的曲线关系,一条关于CTR曲线的介绍,其实厂家真正给出的曲线还是很多的,我设计中用光耦只是用来隔离开关控制,所以不需要考虑其它的曲线关系,接下来上图吧:
这里多说一点,光耦分线性光耦和非线性光耦,如果你用在信号采集的时候一定要注意了,这里的EL357可以看做线性光耦来用。
后面的元件封装这里就上图了,没什么用,还是看下官方给出的参考用法:
这里的用法电路,和我们的最后一个开关量采集的方案非常像,但是没有给出匹配电阻和电压的具体参数,这些其实不用给我,根据电气参数的额定值和最大值,可以自己进行设计的,其实这么一路自己分析下来做硬件没有想象的那么难,只是做得没有比人做得那么好而已,到这里先暂时告一段落,手里暂时没有EL357的件,等我过两天买的到了再把焊接调试部分补上。
CTR在2倍到4倍之间的范围,实际接一下电路验证一下。