• 回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

【硬件小白成长记:给单片机加个开关】

第一篇点灯的成长之路已经完成,你可以用单片机来控制如何点灯玩耍了,至于具体如何写代码让单片机完成这个点灯的动作,还是往后放一放,看看其它一些常用的电路设计,这里讲一个,有关于单片机的输入开关量检测的设计。

开关量检测是在单片机控制中非常常用和简单的一类处理了,经常用到的开关有光电开关,水位开关,压力开关,微动开关等等,其实很多,这里我们讲一下无源开关的检测设计(有源的后面讲),也叫干接点输入,就是闭合和断开无极性。(你可以理解为家里常用的插座开关,只是一个通断的控制,电源由外部提供)。



全部回复(26)
正序查看
倒序查看
2018-07-06 14:31

首先,简单介绍一下,单片机在检测输入是通过检测电平的高低状态来完成的,所以如果直接把一个开关接到单片机上市没有任何意义的,其二在设计一开关量输入检测电路时有一些需要注意的问题:

1.输入到单片机的电平不能超过单片机能够承受的最大耐压值,一旦超过会怎样,超过单片机的引脚会出现短暂性失效和永久性失效两种状态,第一种还好,一般断电修复电路,重新上电,单片机正常工作,另一种就只能换单片机了。(关于单片机的引脚耐受电压是不同的,以3.3v供电的STM32F103RCT6为例,有的引脚可以承受5V,有点引脚可以承受3.3V,打开他的手册你看引脚上带有FT的就是耐受5v的引脚,如果电压再高就不能保证了。。。

说再多都是空口白话,还是从datasheet中截取一段,大家看着更直白:

0
回复
2018-07-06 14:43
@程序小白
首先,简单介绍一下,单片机在检测输入是通过检测电平的高低状态来完成的,所以如果直接把一个开关接到单片机上市没有任何意义的,其二在设计一开关量输入检测电路时有一些需要注意的问题:1.输入到单片机的电平不能超过单片机能够承受的最大耐压值,一旦超过会怎样,超过单片机的引脚会出现短暂性失效和永久性失效两种状态,第一种还好,一般断电修复电路,重新上电,单片机正常工作,另一种就只能换单片机了。(关于单片机的引脚耐受电压是不同的,以3.3v供电的STM32F103RCT6为例,有的引脚可以承受5V,有点引脚可以承受3.3V,打开他的手册你看引脚上带有FT的就是耐受5v的引脚,如果电压再高就不能保证了。。。)说再多都是空口白话,还是从datasheet中截取一段,大家看着更直白:[图片][图片]

2.假如本来接开关的端口,被接入了电源该怎么办(同样两个接入端,遇到不懂的人谁管他带电不带电先接上去再讲嘛。),如何有效防止这种意外的发生呢,也是设计硬件时需要考虑的问题。

3.因为输入很容易引入干扰,像静电干扰/电磁干扰,影响小导致你检测信号的不正常,影响大直接损坏你的检测电路。

4.有时候你还需要通过电路来检测一下这个开关量是不是好用的呢,万一一上来就是坏的,万年常开万年常闭,又该如何去判断呢。

其实硬件设计出能用的电路很简单,身为小白的我学校学的那点知识可能就够用了,但是如何设计出简洁稳定低成本的电路却是一门艺术,你不光要从设计者的角度考虑问题,你还要站在使用者的角度去考虑问题,不断地对电路进行升级,伴随着产品的升级,让他越来越好。

闲话扯远了,下面让我们来进入一下正题,那些年大牛们钟爱的那些电路:


0
回复
2018-07-06 15:15
@程序小白
2.假如本来接开关的端口,被接入了电源该怎么办(同样两个接入端,遇到不懂的人谁管他带电不带电先接上去再讲嘛。),如何有效防止这种意外的发生呢,也是设计硬件时需要考虑的问题。3.因为输入很容易引入干扰,像静电干扰/电磁干扰,影响小导致你检测信号的不正常,影响大直接损坏你的检测电路。4.有时候你还需要通过电路来检测一下这个开关量是不是好用的呢,万一一上来就是坏的,万年常开万年常闭,又该如何去判断呢。其实硬件设计出能用的电路很简单,身为小白的我学校学的那点知识可能就够用了,但是如何设计出简洁稳定低成本的电路却是一门艺术,你不光要从设计者的角度考虑问题,你还要站在使用者的角度去考虑问题,不断地对电路进行升级,伴随着产品的升级,让他越来越好。闲话扯远了,下面让我们来进入一下正题,那些年大牛们钟爱的那些电路:

先来一个某位大牛曾设计的电路我们看一下,然后小白带你一点点的分析,先上图:

CN44,是常用的端子编号,表示第44号端子,这里接开关的输入端。

SW9,是单片机输入口的编号,这里的电平是单片机检测的输入端,也是我们需要的测试端。

端口确认了,接下来分析一下这个电路的原理,首先假设接入开关处于断开状态,SW9的电位由+5接10K电阻接1K电阻接过来,所以这个点为高电平。

当接入开关在闭合状态时,SW9端的电位由R125右侧决定,通过分析为0.7V,也就是4148二极管抬升部分的电位。高位5v 低位0.7v,这个电路是可用的哈。

0
回复
2018-07-06 15:33
@程序小白
先来一个某位大牛曾设计的电路我们看一下,然后小白带你一点点的分析,先上图:[图片]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吧。

0
回复
2018-07-09 09:52
@程序小白
下面来分析一下电路为什么要这么搭:首先接5v的R126为10K,主要作用就是限流,因为当前电路我们只做电平检测,所以电路取大一些来电路整体的功耗。再来看104对地接一个电容怎么看:104的电容主要用来屏蔽高频干扰信号,所以这里主要用来屏蔽干扰。再来看104电容串接1k的电阻,主要是用来防止电容充放电时,造成的冲击干扰,串个电阻限下流,因容值本身就比较小,所以这里选择串接一个较大的1k的电阻。再来看看这个二极管4148,这里稍微展开看一下。下面先看下这个4148的datasheet吧。

先看下一手册给出的参数,第一组手册给出的是最大额定值的参数:

运行温度和存储稳定都是-65到200度。

最大通过电流200mA在环境温度为25度的情况下,根据实际经验随着环境温度越高,其通过的最大电流值会降低,实际再设计电路时,要注意不要在最大额定值的附近设计,一旦环境温度提高会导致硬件损坏。

降额因数:1.14mA/度,这个没大研究明白,先略过。

浪涌电流(正玄波)2A,最高持续8.3ms

浪涌电流(方波)1.41A,最高持续8.3ms

0
回复
2018-07-09 09:57
@程序小白
先看下一手册给出的参数,第一组手册给出的是最大额定值的参数:[图片]运行温度和存储稳定都是-65到200度。最大通过电流200mA在环境温度为25度的情况下,根据实际经验随着环境温度越高,其通过的最大电流值会降低,实际再设计电路时,要注意不要在最大额定值的附近设计,一旦环境温度提高会导致硬件损坏。降额因数:1.14mA/度,这个没大研究明白,先略过。浪涌电流(正玄波)2A,最高持续8.3ms浪涌电流(方波)1.41A,最高持续8.3ms

接下来是额定参数,25度时候(好像接触的datasheet额定参数都是25度下给出的):

这里基本大体说下,不一一展开了,大部分参数我都是猜的啊 哈哈哈,希望没猜错,最大反向电压100V,超过就报废,最大反向方波电压75V,正常使用时压降大概在0.8~1.2之间的样子,电流不同,电压不同,非绝对值,后面看其曲线你就更能直观的看出他的特性。


0
回复
2018-07-09 10:21
@程序小白
接下来是额定参数,25度时候(好像接触的datasheet额定参数都是25度下给出的):[图片]这里基本大体说下,不一一展开了,大部分参数我都是猜的啊哈哈哈,希望没猜错,最大反向电压100V,超过就报废,最大反向方波电压75V,正常使用时压降大概在0.8~1.2之间的样子,电流不同,电压不同,非绝对值,后面看其曲线你就更能直观的看出他的特性。

继续翻翻翻,这个是封装尺寸:


0
回复
2018-07-09 11:04
@程序小白
继续翻翻翻,这个是封装尺寸:[图片]

接下来看一下,伏安特性曲线(这里不是课本给出的,而是厂家给出的):

从图中可以看出,温度不同,元件的特性也不同,但是基本走势是一样的,开启电压,电流上升趋势,跟当年课本学习的还是很像的。


0
回复
2018-07-09 11:38
开关已打开
0
回复
2018-07-09 11:44
@电源网-璐璐
开关已打开[图片]
准备发射杏仁露。预备。。。
0
回复
2018-07-09 13:49
@程序小白
接下来看一下,伏安特性曲线(这里不是课本给出的,而是厂家给出的):[图片]从图中可以看出,温度不同,元件的特性也不同,但是基本走势是一样的,开启电压,电流上升趋势,跟当年课本学习的还是很像的。

接下来就是看一下加反向电压时候,二极管的表现了:

到这里基本上把整个datasheet都看完了,不需要记住他所有的参数,只是设计时,想到某个地方不肯定时会想起来翻一翻手册,这就很棒啦。

0
回复
2018-07-09 14:27
@程序小白
接下来就是看一下加反向电压时候,二极管的表现了:[图片]到这里基本上把整个datasheet都看完了,不需要记住他所有的参数,只是设计时,想到某个地方不肯定时会想起来翻一翻手册,这就很棒啦。

条条大路通罗马,每条都有收费站。。。硬件的方案并不是一成不变的,有时候要分析各种电路的优缺点,选出适合你的一种,虽然要花不少功夫,但是这是提高自己的一条有效之路,下面我们来看大牛的另一种方案。

0
回复
2018-07-09 14:38
@程序小白
条条大路通罗马,每条都有收费站。。。硬件的方案并不是一成不变的,有时候要分析各种电路的优缺点,选出适合你的一种,虽然要花不少功夫,但是这是提高自己的一条有效之路,下面我们来看大牛的另一种方案。[图片]

接下来我们看一下这个电路与上面的有什么不同:

第一点:多了一路发光二极管,用于指示开关的状态(如果不追求极致的功耗与稳定性还是不错的设计)。

第二点:这个电路中也有一个4148的二极管,但是作用缺截然不同。

第三点:输入下半部分加入了一个ESD器件。这个后面讲。

发光二极管那一路不讲了,详情参考点灯第一课,我们来一下这个4148,这里的作用是当输入高于VCC的信号时,由于二极管的存在,大部分能量从二极管进入电源,拉低输入信号的电压值,将输入电平钳位在VCC附近,来保护好我们的MCU。

1
回复
2018-07-09 15:04
@程序小白
接下来我们看一下这个电路与上面的有什么不同:第一点:多了一路发光二极管,用于指示开关的状态(如果不追求极致的功耗与稳定性还是不错的设计)。第二点:这个电路中也有一个4148的二极管,但是作用缺截然不同。第三点:输入下半部分加入了一个ESD器件。这个后面讲。发光二极管那一路不讲了,详情参考点灯第一课,我们来一下这个4148,这里的作用是当输入高于VCC的信号时,由于二极管的存在,大部分能量从二极管进入电源,拉低输入信号的电压值,将输入电平钳位在VCC附近,来保护好我们的MCU。

这里有一个ESD,型号为ULCE1012A015FR,问度娘也没有找到其数据手册,估摸着停产了,只找到个学名:瞬态电压抑制器。

这里对照一下两种:ESD和TVS 稍微展开一下:

ESD 为静电放电。

TVS 为瞬态电压抑制二极管。

二者原理是一样的,度娘讲:当TVS 二极管的两极受到反向瞬态高能量冲击时,它 能以10的负12次方秒量级的速度,将其两极间的高阻抗变为低阻抗,吸收高达数千瓦的浪涌功率,使两极间的电压箝位于一个预定值,有效地保护电子线路中的精密元 器件,免受各种浪涌脉冲的损坏。ESD和TVS比较的话,要看用在那些用途上,像ESD主要是用来防静电,防静电就要求电容值低,一般是1--3.5PF之间为最好.而TVS就做不到这一点,TVS的电容值比较高.

一般情况下,这里你加不加都不影响使用,加了要比不加好。

0
回复
2018-07-09 15:55
@程序小白
接下来我们看一下这个电路与上面的有什么不同:第一点:多了一路发光二极管,用于指示开关的状态(如果不追求极致的功耗与稳定性还是不错的设计)。第二点:这个电路中也有一个4148的二极管,但是作用缺截然不同。第三点:输入下半部分加入了一个ESD器件。这个后面讲。发光二极管那一路不讲了,详情参考点灯第一课,我们来一下这个4148,这里的作用是当输入高于VCC的信号时,由于二极管的存在,大部分能量从二极管进入电源,拉低输入信号的电压值,将输入电平钳位在VCC附近,来保护好我们的MCU。
接下来我们看看第三种大牛的方案:

这里引入了一个另一个神奇的器件,光耦EL357,这个器件之前也没有接触过,还是看看datasheet。

0
回复
2018-07-10 16:23
星通时频是可以了解下哟
0
回复
2018-07-11 14:12
@程序小白
接下来我们看看第三种大牛的方案:[图片]这里引入了一个另一个神奇的器件,光耦EL357,这个器件之前也没有接触过,还是看看datasheet。

忙了一天,继续我们的霸业,先看下EL357N手册给出的图:

从手册给的这个图,基本上看出了大部分的原理,旁边是一个发光二极管,右侧更像是一个三极管的CE部分,这里的EL357可以理解为一个三极管,只是BE两级隔离,通过光传递进行开启。这样简化让我知道该如何理解它。

0
回复
2018-07-11 14:20
@程序小白
忙了一天,继续我们的霸业,先看下EL357N手册给出的图:[图片]从手册给的这个图,基本上看出了大部分的原理,旁边是一个发光二极管,右侧更像是一个三极管的CE部分,这里的EL357可以理解为一个三极管,只是BE两级隔离,通过光传递进行开启。这样简化让我知道该如何理解它。
接着往下看一下feature的介绍,一点点分析:


特点里面有一堆的各种认证,先忽略,看看重点的几个参数:
一个叫CTR,这里可以理解为三极管的贝塔,就是放大倍数,光耦因为光隔离,所以这里叫电流转换率。

一个叫高电压隔离,输入输出电压隔离,高达:3750v,其它没啥子了。


0
回复
2018-07-11 14:25
@程序小白
接着往下看一下feature的介绍,一点点分析:[图片]特点里面有一堆的各种认证,先忽略,看看重点的几个参数:一个叫CTR,这里可以理解为三极管的贝塔,就是放大倍数,光耦因为光隔离,所以这里叫电流转换率。一个叫高电压隔离,输入输出电压隔离,高达:3750v,其它没啥子了。

继续看两组参数,一组叫最大电气参数,一组叫做额定电气参数:前面分析过,就不赘述了:

重点看一下这个CTR:不同的型号其转换率是不同的,就算是同一型号转换率也会受到IF的影响表现不同,所以就没有写典型值。

0
回复
2018-07-11 14:40
@程序小白
继续看两组参数,一组叫最大电气参数,一组叫做额定电气参数:前面分析过,就不赘述了:[图片][图片]重点看一下这个CTR:不同的型号其转换率是不同的,就算是同一型号转换率也会受到IF的影响表现不同,所以就没有写典型值。

接着分析一下曲线:先不看曲线,我的脑海里会出现三条曲线,一条为开启电压与对电流的曲线关系,一条为开启电流与输出电流的曲线关系,一条关于CTR曲线的介绍,其实厂家真正给出的曲线还是很多的,我设计中用光耦只是用来隔离开关控制,所以不需要考虑其它的曲线关系,接下来上图吧:

这里多说一点,光耦分线性光耦和非线性光耦,如果你用在信号采集的时候一定要注意了,这里的EL357可以看做线性光耦来用。

0
回复
2018-07-11 14:46
@程序小白
接着分析一下曲线:先不看曲线,我的脑海里会出现三条曲线,一条为开启电压与对电流的曲线关系,一条为开启电流与输出电流的曲线关系,一条关于CTR曲线的介绍,其实厂家真正给出的曲线还是很多的,我设计中用光耦只是用来隔离开关控制,所以不需要考虑其它的曲线关系,接下来上图吧:[图片][图片][图片]这里多说一点,光耦分线性光耦和非线性光耦,如果你用在信号采集的时候一定要注意了,这里的EL357可以看做线性光耦来用。

后面的元件封装这里就上图了,没什么用,还是看下官方给出的参考用法:

这里的用法电路,和我们的最后一个开关量采集的方案非常像,但是没有给出匹配电阻和电压的具体参数,这些其实不用给我,根据电气参数的额定值和最大值,可以自己进行设计的,其实这么一路自己分析下来做硬件没有想象的那么难,只是做得没有比人做得那么好而已,到这里先暂时告一段落,手里暂时没有EL357的件,等我过两天买的到了再把焊接调试部分补上。




0
回复
2018-07-13 11:31
@程序小白
后面的元件封装这里就上图了,没什么用,还是看下官方给出的参考用法:[图片]这里的用法电路,和我们的最后一个开关量采集的方案非常像,但是没有给出匹配电阻和电压的具体参数,这些其实不用给我,根据电气参数的额定值和最大值,可以自己进行设计的,其实这么一路自己分析下来做硬件没有想象的那么难,只是做得没有比人做得那么好而已,到这里先暂时告一段落,手里暂时没有EL357的件,等我过两天买的到了再把焊接调试部分补上。
买的357到了,哈哈,继续补上我的动手环节,有时候不去实际搭一下,很难把理论的东西完全转换成实践的,这次买的是EL357N-C的片子,截图看一下他的CTR:

CTR在2倍到4倍之间的范围,实际接一下电路验证一下。

0
回复
2018-07-13 11:38
@程序小白
买的357到了,哈哈,继续补上我的动手环节,有时候不去实际搭一下,很难把理论的东西完全转换成实践的,这次买的是EL357N-C的片子,截图看一下他的CTR:[图片]CTR在2倍到4倍之间的范围,实际接一下电路验证一下。

还是先验证一下作为开关量输入的功能是否是有效的:

直接上图:

从图中可以看到,在断开开关时,灯是不亮的,当用镊子短接开关的输入侧时,灯就亮了,说明开关功能正常。

0
回复
2018-07-13 11:43
@程序小白
还是先验证一下作为开关量输入的功能是否是有效的:直接上图:[图片][图片]从图中可以看到,在断开开关时,灯是不亮的,当用镊子短接开关的输入侧时,灯就亮了,说明开关功能正常。

没有1K的插件,拿3个3.7K的电阻并了一下,见谅哈哈,接下来我们来算一下这个真实的CTR符不符合我们买的器件的CTR的值,输入端电阻为4.7k 输出测电阻为3个4.7k电阻并联,阻值为1.55k,基于输出电流IC/输入电流IF的比值来算一下真实的CTR。

为了测量CTR 拿短路环将开关短路,如下:

0
回复
2018-07-13 11:52
@程序小白
没有1K的插件,拿3个3.7K的电阻并了一下,见谅哈哈,接下来我们来算一下这个真实的CTR符不符合我们买的器件的CTR的值,输入端电阻为4.7k输出测电阻为3个4.7k电阻并联,阻值为1.55k,基于输出电流IC/输入电流IF的比值来算一下真实的CTR。为了测量CTR拿短路环将开关短路,如下:[图片]

接下来测量一下两侧电阻的压降为多少:

4.7K输入侧压降为22.9V:算一下电流为4.87mA。

1.56K输出压降为18V:S算一下电流为:11.53mA。

真实CTR为:236%,符合我买的C系列CTR范围,到此测试学习结束。goodbye。

0
回复
2019-01-10 11:04
@程序小白
接下来测量一下两侧电阻的压降为多少:[图片][图片]4.7K输入侧压降为22.9V:算一下电流为4.87mA。1.56K输出压降为18V:S算一下电流为:11.53mA。真实CTR为:236%,符合我买的C系列CTR范围,到此测试学习结束。goodbye。
【硬件学习系列更多精彩内容】PS:点击可直接跳转阅读

            【本帖内容】硬件小白学习之神奇的继电器

             硬件小白学习之学会点灯了

             硬件小白学习之神奇的继电器
0
回复