基本电路元件简介

电磁干扰EMI

第一个知识点,去耦电容的应用,那首先要介绍一下去耦电容的应用背景,这个背景就是电磁干扰,也就是传说中的EMI

1、冬天的时候,尤其是空气比较干燥的内陆城市,很多朋友都有这样的经历,手触碰到电脑外壳、铁柜子等物品的时候会被电击,实际上这就是“静电放电”现象,也称之为ESD

2、不知道有没有同学有这样的经历,早期我们使用电钻这种电机设备,并且同时在听收音机或者看电视的时候,收音机或者电视会出现杂音,这就是“快速瞬间群脉冲”的效果,也称之为EFT

3、以前的老电脑,有的性能不是很好,带电热插拔优盘、移动硬盘等外围设备的时候,内部会产生一个百万分之一秒的电源切换,直接导致电脑出现蓝屏或者重启现象,就是热插拔的“浪涌”效果,称之为Surge

... ...

电磁干扰的内容有很多,我们这里不能一一列举,但是有些内容非常重要,后边我们要一点点的了解。这些问题大家不要认为是小问题比如一个简单的静电放电,我们用手能感觉到的静电,可能已经达到3KV以上,如果用眼睛能看得到的,至少是5KV了,只是因为这个电压虽然很高,电量却很小,因此不会对人体造成伤害。但是我们应用的这些半导体元器件就不一样了,一旦瞬间电压过高,就有可能造成器件的损坏。而且,即使不损坏,在23里边介绍的两种现象,也严重干扰到我们正常使用电子设备了。

基于以上的这些问题,就诞生了电磁兼容(EMC)这个名词。这节课我们仅仅讲一下去耦电容的应用,电磁兼容的处理在我们今后设计电路,对PCB画板布局中应用尤为重要,那是后话,暂且不说。

去耦电容的应用

首先我们来看图3-1

图片 图片

 

 

3-1 去耦电容应用

左边这张图,过了保险丝以后,接了一个470uF的电容C16,右边这种图,经过开关后,接了一个100uF的电容C19,并且并联了一个0.1uF的电容C10。其中C16C19起到的作用是一样的,C10的作用和他们两个不一样,我们先来介绍这2个大一点的电容。

容值比较大的电容,理论上可以理解成水缸或者水池子,同时,大家可以直接把电流理解成水流,其实大自然万物的原理都是类似的。

作用一,缓冲作用。当上电的瞬间,电流从电源处流下来的时候,不稳定,容易冲击电子器件,加个电容可以起到缓冲作用。就如同我们直接用水龙头的水浇地,容易冲坏花花草草的。我们只需要在水龙头处加个水池,让水经过水池后再缓慢流进草地,就不会冲坏花草,起到有效的保护作用。

作用二,稳定作用。我们一整套电路,后级的电子器件功率大小电流大小也不一样,器件工作的时候,电流大小不是一直持续不变的。比如后级有个器件还没有工作的时候,电流消耗是100mA,突然它参与工作了,电流猛的增大到150mA了,这个时候如果没有一个水缸的话,电路中的电压(水位)就会直接突然下降,比如我们的5V电压突然降低到3V了。而我们系统中有些电子元器件,必须高于一定的电压才能正常工作,电压太低就直接不工作了,这个时候水缸就必不可少了。电容会在这个时候把存储在里边的电流释放一下,稳定电压,当然,随后前级的电流会及时把水缸充满的。

有了这个电容,可以说我们的电压和电流就会很稳定了,不会产生大的波动。这种电容常用的有以下三种:

图片

3-2 电解电容

图片    图片

3-3 钽电容                 3-4 陶瓷电容

这三种电容是我们常用的三种电容,其中第一种个头大,占空间大,单位容量价格最便宜,第二种和第三种个头小,占空间小,性能一般也略好于第一种,但是价格也贵不少。当然,除了价格,还有一些特殊参数,在通信要求高的场合也要考虑很多,这里暂且不说。我们板子上现在用的是第一种,只要在符合条件的情况下,第一种470uF的电容不到一毛钱,同样的耐压和容值,第二种和第三种可能得1块钱左右。

电容的选取,第一个参数是耐压值的考虑。我们用的是5V系统,电容的耐压值要高于5V一般推荐1.5倍到2倍即可,有些场合稍微高于也可以。我们板子上用的是10V耐压的。第二个参数是电容容值,这个就需要根据经验来选取了,选取的时候,要看这个电容起作用的这块系统的功率消耗情况,如果系统耗电较大,波动可能比较大,那么容值就要大一些,反之,可以小一些。

刚开始同学们设计电路也模仿别人,别人用多大自己也用多大,慢慢积累。比如咱上边讲电容作用二的时候,电流从100mA突然增大到150mA的时候,其实即使加上这个电容,电压也会轻微波动,比如从5V波动到4.9V,但是只要我们板子上的器件在电压4.9V以上也可以正常工作的话,这点波动是没有问题的,但是如果不加或者加的很小,电压波动比较大,有些器件会工作不正常了。但是如果加的太大,占空间并且价格也高,所以这个地方电容的选取多参考经验。

第二个电容,容值较小,是0.1uF,也就是100nF,是用来滤除高频信号干扰的。比如ESDEFT等。有一点大家要清楚,我们初中学过电容可以通交流隔直流,但是电容的参数对不同频率段的干扰的作用是不一样的。这个100nF的电容,是我们的前辈根据干扰的频率段,根据板子的参数,根据电容本身的参数所总结出来的一个值。也就是说,以后大家在设计数字电路的时候,在电源处的去耦高频电容,直接用这个0.1uF就可以了,不需要去计算。

还有一点,就是大家看我们的电路图可以看出来,通常在电路中可能瞬间电流较大的地方,会加一个大电容,比如在1602液晶左上角的那个,靠近了单片机的VCC以及1602液晶背光的VCC,起到稳定电压的作用,在左上角电机和蜂鸣器位置有一个,也是起到稳定电压的作用。还有在所有的IC器件的VCCGND之间,都会放一个0.1uF的高频去耦电容,特别在布板的时候,这个0.1uF电容要尽可能的靠近IC,尽量很顺利的将这个ICVCCGND连到一起,这个大家先了解,细节以后再讨论。

三极管在数字电路中的应用

三极管在我们数字电路和模拟电路中都有大量的应用,在我们开发板上也用了多个三极管。在我们板子上的LED小灯部分,就有这个三极管的应用了,3-5LED电路中的 Q16就是一个PNP型的三极管。

图片

3-5 LED电路

3.1 三极管的初步认识

三极管是一种很常用的控制和驱动器件,常用的三极管根据材料分有硅管和锗管两种,原理相同,压降略有不同,本课程用硅管的参数来进行讲课。三极管共有2种类型,分别是PNP型和NPN型,先来认识一下。

图片
 

3-6 三极管示意图

三极管一共有3个极,从图3-6来看,横向左侧的引脚叫做基极(base),中间有一个箭头,一头连接基极,另外一头连接的是发射极e(emitter),那剩下的一个引脚就是集电极c(collector)。这块是必须要记住的内容,死记硬背即可,后边慢慢用的多了,每次死记硬背一次,多次以后就会深入脑海了。

3.2 三极管的原理

三极管的应用有截止、放大、饱和三种状态。放大状态主要是对模拟信号而言,而且用法的计算内容比较复杂,暂时我们用不到。而我们数字电路主要使用三极管的开关特性,因此我们只用到了截止饱和两种状态,所以我们只讲这两种用法。三极管的类型和用法我给大家总结了一句口诀,大家要把这句口诀记牢了:箭头朝内PNP,导通电压顺箭头过,电压导通,电流控制。

下面我们一句一句来解析口诀。大家可以看图3-6,三极管有2种类型,箭头朝内就是PNP,箭头朝外自然就是NPN了,在实际应用中,往往我们要根据实际电路需求来选择到底用哪种类型,大家用几次估计就会了,很简单。

三极管的用法特点,关键点在于b(基极)e(发射极)之间的电压情况,对于PNP而言,e极电压只要高于b0.7V,这个三极管e级和c级之间可以顺利导通。也就是说,控制端在be之间,被控制端是ec之间。同理,NPN型三极管的导通电压是b极比e极高0.7V,总之是箭头的始端比末端高0.7V就可以导通三极管的e极和c极。这就是关于“导通电压顺箭头过,电压控制”的解释,我们来看图3-7

图片

3-7 三极管的用法

我们以图3-7为例介绍一下。三极管基极通过一个10K的电阻接到了单片机的一个IO口上,发射极直接接到5V的电源上,集电极接了一个LED小灯,并且串联了一个1K的限流电阻最终接到了电源负极GND上。

如果LEDS6我们程序给一个高电平1,那么基极b和发射极e都是5V,也就是说eb不会产生一个0.7V的压降,这个时候,发射极和集电极也就不会导通,那么竖着看这个电路在三极管处是断开的,所以没有电流通过,LED2小灯也就不会亮。如果我们程序给LEDS6的位置一个低电平0,而e极是个5V,产生压差就会导通,三极管eb之间大概有0.7V的电压,那还有(5-0.7)V的电压会在电阻R47上。这个时候,ec之间也会导通了,那么LED小灯本身有2V的压降,三极管本身ec之间大概有0.2V的压降,我们忽略不计。那么在R41上就会有大概3V的压降,可以计算出来,这条之路的电流大概是3mA,可以成功点亮LED

最后一个概念,电流控制。前边讲过,三极管有截止,放大,饱和三个状态,截止就不用说了,只要eb之间不导通即可。我们要让这个三极管处于饱和状态,就是我们所谓的开关特性,必须要满足一个条件。三极管都有一个放大倍数β,要想处于饱和状态,b极电流就必须大于ec之间电流值除以β这个β,对于常用的三极管大概可以认为是100。那么上边的R47的阻值我们必须要来计算一下了。

刚才我们算过了,ec之间的电流是3mA,那么b极电流最小就是3mA除以100等于30uA,大概有4.3V电压会在基极电阻上,那么基极电阻最大值就是4.3V/30uA = 143K。只要比这个值小就可以,当然也不能太小,STC89C52RCIO口输入电流最大理论值是25mA,我推荐不要超过10mA

3.3 三极管的应用

三极管在我们数字电路里的开关特性,常用的一个是控制应用,一个是驱动应用。所谓的控制就是如同我们图3-7里边介绍的,我们可以通过单片机控制三极管的基极来间接控制后边小灯的灭,用法大家基本熟悉了。还有一个控制就是进行不同电压之间的转换控制,比如我们的单片机的IO口是5V系统,如果直接接12V系统会烧坏单片机,所以我们加一个三极管,三极管的工作电压高于单片机的IO口电压,用5VIO口来控制12V的电路,如图3-8所示。

图片

3-8 三极管控制电路图

3-8里所示,当IO口输出高电平5V时,三极管导通,OUT输出低电平0V,当IO口输出低电平时,三极管截止,OUT则由于上拉电阻R2的作用而输出12V的高电平,这样就实现了低电压控制高电压的工作原理。

所谓的驱动,主要是指电流输出能力。我们再来看这两个图之间的对比

图片

3-9 LED小灯对比示意图

3-9中上边的LED灯,和我们第二课讲过的LED灯是一样的,当IO口是高电平,小灯熄灭,当IO口是低电平时,小灯点亮。

下边那个图呢,按照这种推理,IO口是高电平的时候,应该有电流流过并且点亮小灯,但是实际并非如此。

单片机主要是个控制器件,具备四两拨千斤的特点。就如同杠杆必须有一个支点一样,想要撑起整个地球必须有力量承受的支点。单片机的IO口可以输出一个高电平,但是他的输出电流很有限,普通IO口输出高电平的时候,大概只有几十到几百uA的电流,达不到1mA,也就点不亮这个LED小灯或者亮度很低,这个时候如果我们想高电平点亮LED,用上三极管就可以这样来处理,我们板上的这种型号,可以通过500mA的电流,有的三极管通过的电流还更大一些,如图3-10所示。

图片

3-10 三极管驱动LED小灯

3-10中,当IO口是高电平,三极管导通,因为三极管的电流放大作用,c极电流就可以达到mA以上了,就可以成功点亮LED小灯。

虽然我们用了IO口的低电平可以直接点亮LED,但是单片机的IO口作为低电平,输入电流就可以很大吗?这个我想大家都能猜出来,当然不可以。单片机的IO口电流承受能力,不同型号不完全一样,就STC89C52来说,官方手册的81页有对电气特性的介绍,整个单片机的工作电流,不要超过50mA,单个IO口总电流不要超过6mA。即使一些增强51IO口承受电流大一点,可以到25mA,但是还要受到总电流50mA的限制。那我们来看电路图的8LED小灯的这个部分电路,如图3-11所示。

图片
 

3-11 LED电路图()

3-11图示这里我们要学会看电路图的一个知识点,大家注意看,电路图右侧所有的LED下侧的线最终都连到一根黑色的粗线上去了,大家注意,这个地方不是实际的完全连到一起,而是一种总线的画法,画了这种线以后,表示这个总线结构,所有的名字一样的是一一对应的连接到一起,其他名字不一样的,是不连到一起的。比如左侧的DB0和右侧的最左边的LED2小灯下边的DB0是连在一起的,而和DB1等其他线不是连在一起的。

那么我们把3-11电路图里的我们现在需要讲的这部分再摘出来看。

图片

3-12 LED电路图()

大家通过3-12的电路图来计算一下,5V的电压减去LED本身的压降,减掉三极管ec之间的压降,限流电阻用的是330欧,那么每条支路的电流大概是8mA,那么8LED如果全部同时点亮的话电流总和就是64mA。这样如果直接接到单片机的IO口,那单片机肯定是承受受不住的,即使短时间可以承受,长时间工作就会不稳定,甚至导致单片机烧毁

有的同学会提出来可以加大限流电阻的方式来降低这个电流。比如改到1K,那么电流不到3mA8路总的电流就是20mA左右。首先,降低电流会导致LED小灯亮度变弱,小灯的亮度可能关系不大,因为我们同样的电路接了数码管,后边我们要讲数码管还要动态显示,如果数码管亮度不够的话,那视觉效果就会很差,所以降低电流的方法并不可取;其次,对于单片机来说,他主要是起到控制作用,电流输入和输出的能力相对较弱,P08个口电流也有一定限制,所以如果接一两个LED小灯观察,可以勉强直接用单片机的IO口来接,但是接多个小灯,从实际工程的角度去考虑,就不推荐直接接IO口了。那么我们如果要用单片机控制多个LED小灯该怎么办呢?

除了三极管之外,其实还有一些驱动IC,这些驱动IC可以作为单片机的缓冲器,仅仅是电流驱动缓冲,不起到任何逻辑控制的效果,比如我们板子上用的74HC245D这个芯片,这个芯片在逻辑上起不到什么别的作用,就是当做电流缓冲器的,我们通过查看其数据手册,74HC245稳定工作在70mA电流是没有问题的,比单片机的8IO口大多了,所以我们可以把他接在小灯和IO口之间做缓冲,如图3-13所示

图片
 

3-13 74HC245功能图

从图3-13我们来分析,其中VCCGND就不用说了,细心的同学会发现这里有个0.1uF的去耦电容噢。

74HC245是个双向缓冲器,1引脚DIR是方向引脚,当这个引脚接高电平的时候,右侧所有的B编号的电压都等于左侧A编号对应的电压。比如A0是高电平,那么B0就是高电平,A1是低电平,B1就是低电平等等。如果DIR引脚接低电平,得到的效果是左侧A编号的电压都会等于右侧B编号对应的电压。因为我们这个地方控制端是左侧接的是P0口,所以我们要求B等于A的状态,所以1脚我们直接接的高电平。图3-13中还有一排电阻R10R17是上拉电阻,这个电阻的用法我们后边介绍。

还有最后一个使能引脚19OE,这个引脚上边有一横,表明是低电平有效,当接了低电平后,74HC245就会按照刚才上边说的起到双向缓冲器的作用,如果OE接了高电平,那么无论DIR怎么接,AB的引脚是没有关系的,也就是74HC245功能不能实现出来。

从我们的电路图3-14可以看出来,我们的P0口和74HC245A端是直接接起来的。这个地方,有个别同学有一个疑问,就是我们明明在电源VCC那地方加了一个三极管驱动了,为何还要再加245驱动芯片呢。这里大家要理解一个道理,电路上从正极经过器件到,首先必须有电流才能正常工作,电路中任何一个位置断开,都不会有电流,器件也就不会参与工作了。其次,和水流一个道理,从电源正极到负极的电流水管的粗细都要满足要求,任何一个位置的管子过细,都会出现瓶颈效应,电流在整个通路中细管处会受到限制降低,所以在电路通路的每个位置上,都要保证足够通道足够畅通,这个245的作用就是消除单片机IO这一环节的瓶颈

图片
 

3-14 单片机和74HC245接口

3.4 74HC138三八译码器的应用

在我们设计单片机电路的时候,单片机的IO数量是有限的,有时并满足不了我们的设计需求,比如我们的STC89C52RC一共是32IO口,但是我们为了控制更多的器件,就要使用一些外围的数字芯片,这种数字芯片由简单的输入逻辑来控制输出逻辑,比如74HC138这个三八译码器,图3-1574HC138在我们原理图上的一个应用。

图片
 

3-15 74HC138应用原理图

从这个名字来分析,三八译码器,就是把3种输入状态翻译成8种输出状态。从图3-15所看出来的,74HC138一共有1~6一共是6个输入引脚,但是其中456这三个引脚是使能引脚。使能引脚和我们前边讲74HC245OE引脚是一样的,这三个引脚如果不符合规定的输入要求,Y0Y7不管你输入的123引脚是什么电平状态,总是高电平。所以我们要想这个74HC138正常工作,ENLED那个输入位置必须输入低电平,ADDR3位置必须输入高电平,这两个位置都是使能控制端口。不知道大家是否记得我们第二课的程序有这么两句ENLED = 0ADDR3 = 1就是控制使这个74HC138使能的。

逻辑芯片,大多都是有使能引脚,使能符合要求了,那下面就要研究逻辑控制了。对于数字器件的引脚,如果一个引脚输入的时候,有01两种状态;对于两个引脚输入的时候,就会有00,01,10,11这四种状态了,那对于3个输入的时候,就会出现8种状态了,大家可以看下边的这个真值表——3-16,其中输入是A2A1A0的顺序,输出是从Y0Y1....Y7的顺序。

图片

3-16 74HC148真值表

从图3-16可以看出,任一输入状态下,只有一个输出引脚是低电平,其他的引脚都是高电平。我们清楚的知道,8LED小灯的总开关三极管Q16基极的控制端是LEDS6,也就是Y6输出一个低电平的时候,可以开通三极管Q16,从右侧的希望输出的结果,我们可以推导出我们的A2A1A0的输入状态应该是110,那我们再来看下原理图3-17

图片
 

3-17 点亮LED小灯整体示意图

那么我们在整体捋一遍点亮LED小灯的过程,首先看74HC138,我们要让LEDS6为低电平才能导通三极管Q16,所以ENLED = 0;ADDR3 = 1;保证74HC138使能。然后ADDR2 = 1; ADDR1 = 1; ADDR0 = 0;这样保证了三极管Q16这个开关开通5V电源加到LED

74HC245左侧是通过P0口控制,我们让P0.0引脚等于0,就是DB_0等于0,而右侧DB0等于DB_0的状态,也是0,那么这样在这一排共8LED小灯当中,只有最右侧的小灯和5V之间有压差,有压差就会有电流通过,有电流通过我们的LED2就会发光。

74HC245左侧我们可以看出来,是直接接到P0口上的,而74HC138ADDR0 ~ ADDR3接在何处呢?

图片
 

3-18 跳线帽接口部分

跳线帽是大家以后要常用的一个器件,他的作用就是起到导线的作用,我们可以通过跳线帽来实现连接线的切换。

图片

3-19 跳线实物图

大家看,跳线帽本身可以占2个针的位置,现在是把右侧和中间的针插到了一起,这样实现的就是图3-18中的P1.0ADDR0接到一起,P1.1ADDR1接一起,P1.2ADDR2接一起,P1.3ADDR3接一起。这样就可以透彻理解我们第二课的程序了。

好了,大家认真再回顾一下我们第二课的那个程序,再领悟一下这几个数字器件的用法。

3.4 LED闪烁程序

点亮LED小灯的程序我们第二课完成了,就是让LED = 0;熄灭小灯的程序也很简单,就是LED = 1;亮和灭中间加个时间延时,点亮和熄灭都学会了,那么我们中间加个延时程序,反复不停的点亮和熄灭小灯,就成了闪烁了。

我们首先复习一下Keil写程序的过程,建立工程--保存工程--建立文件--添加文件到工程--编写程序--编译--下载程序。

LED闪烁程序对于有C基础的同学来说很简单,那我先写出来,大家可以先看下。没有C语言基础的同学也可以跟着抄一遍,下节课我会补充部分C语言基础知识,这样你先抄一遍后,再跟着看C语言基础知识的时候也比较容易理解透彻。

#include<reg52.h>         //包含寄存器的库文件                   

sbit  LED = P0^0;         //位地址声明注意:sbit必须小写! 

sbit  ADDR0 = P1^0;

sbit  ADDR1 = P1^1;

sbit  ADDR2 = P1^2;

sbit  ADDR3 = P1^3;

sbit  ENLED = P1^4;

 

void  main()

{

    unsigned int i = 0;

 

    ENLED = 0;

    ADDR0 = 0;

    ADDR1 = 1;

    ADDR2 = 1;

    ADDR3 = 1;            //74HC138开启三极管   

 

    while(1)              //程序死循环  

    {

           LED = 0;                //点亮小灯

           for(i=0;i<30000;i++);  //延时一段时间

           LED = 1;                //熄灭小灯

           for(i=0;i<30000;i++);  //延时一段时间

    }

}

大家把这个程序编译一下,下载到单片机里,会发现LED2这个小灯会闪烁了。关于闪烁灯程序的详解请


  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值