EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 HelloEE 于 2019-12-17 12:17 编辑
3 {+ H! q& z1 |7 P7 W0 u% g& B+ g- V; E( s6 U4 V: y1 h
由三块半导体构成,其中两块N型和一块P型半导体组成, 两块N型半导体在两侧,三极管是电子电路中最重要的器件,他主要的功能是电流放大和开关的作用。
( W0 x# [( `3 G- g' ]0 Q8 y
工作原理
$ i) H2 q/ V2 F$ O$ b7 ?
5 F+ z. D/ N# R5 t3 V) ^, A- h p" h实际上 只要你了解了三极管的特性, 对你使用单片机就顺手很多了。大家其实也都知道三极管具有放大作用, 但如何去真正理解它 却是你以后会不会使用大部分电子电路和IC的关键。 8 A9 G9 f& G- X3 N; H
, O6 ]% f3 Y' v$ Z, M7 |
) Q1 G+ \5 ]" b$ C+ B( Q/ U我们一般所说的 普通三极管是具有电流放大作用的器件。 其它的三极管也都是在这个原理基础上功能延伸。三极管的符号如下图左边, 我们就以NPN型三极管为例来说说 它的工作原理。
6 B! t! n' a$ { D2 U' h! m, p % o; F \% i2 p5 Q5 R" R
“它就是一个以b(基极)电流Ib来驱动流过CE的电流Ic的器件,它的工作原理很像一个可控制的阀门。 ”
0 k4 F/ d: J. o' H, w' a7 I# h
左边细管子里蓝色的小水流冲动杠杆使大水管的阀门开大, 就可允许较大红色的水流通过这个阀门。当蓝色水流越大,也就使大管中红色的水流更大。 如果放大倍数是100,那么当蓝色小水流为1千克/小时,那么就允许大管子流过100千克/小时的水。 三极管的原理也跟这个一样,放大倍数为100时,当Ib(基极电流)为1mA时,就允许100mA的电流通过Ice。 这个原理大家可能也都知道,但是把它用在电路里的状况能理解,那单片机的运用就少了一大障碍了。
% H% \/ F! I' L: E7 F2 F最常用的连接如下图:
! G$ V3 |0 @8 R: m% l2 A7 y/ V
+ c+ L, p5 V* V' o' I. m我们来分析一下这个电路, 如果它的放大倍数是100,基极电压我们不计。基极电流就是10V÷10K=1mA,集电极电流就应该是100mA。 根据欧姆定律,这样Rc上的电压就是0.1A×50Ω=5V。那么剩下的5V就吃在了三极管的C、E极上了。 好! 现在我们假如让Rb为1K,那么基极电流就是10V÷1K=10mA,这样按照放大倍数100算, Ic就是不是就为1000mA也就是1A了呢?假如真的为1安,那么Rc上的电压为1A×50Ω=50V。 啊?50V!都超过电源电压了, 三极管都成发电机了吗?其实不是这样的。8 w' J) }7 y/ ]6 D, d1 ? C
! l' n: g5 @- u1 n见下图:4 A/ E/ O! ^; w& j1 a* `! T; @+ `! U
6 p' V1 U$ G, x [
我们还是用水管内流水来比喻电流, 当这个控制电流为10mA时使主水管上的阀开大到能流过1A的电流, 但是不是就能有1A的电流流过呢? 不是的, 因为上面还有个电阻, 它就相当于是个固定开度的阀门, 它串在这个主水管的上面, 当下面那个可控制的阀开度到大于上面那个固定电阻的开度时, 水流就不会再增大 而是等于通过上面那个固定阀开度的水流了, 因此, 下面的三极管再开大开度也没有用了。 因此我们可以计算出 那个固定电阻的最大电流10V÷50Ω=0.2A也就是200mA。 就是说在电路中三极管基极电流增大集电极的电流也增大, 当基极电流Ib增大到2mA时, 集电极电流就增大到了200mA。当基极电流再增大时, 集电极电流已不会再增大, 就在200mA不动了。 此时上面那个电阻也就是起限流作用了。 3 j- y: c( [$ N1 h
下面我们来理解单片机内的IO的状况:* B5 ^, n) P( ?. r! f/ ~
- j* }2 L8 l A6 {9 b6 R在单片机内有P1-P3的24个IO口的电路都如上图那样。 平常我们用电子电路的目的是最终让目标器件工作,例如让发光二极管亮起来,让电机正常转起来, 从根本上说就是让这些器件获得一定的电流让它做功。例如要让发光二极管亮一般就需要1mA以上的电流。 但是, 单片机是智能芯片, 它可以通过检测各IO口的电压值来做出逻辑分析和判断,并能输出高或低电压作为结果信号, 因此可以看出,单片机的各IO口注重的是所产生的电压而不是流过R和三极管的电流。 那么单片机内IO口的电压和电流的关系又是怎么样的呢?
9 ^# }9 l" f& a$ z6 q, o1 O& q9 w / c* G0 H( J, [7 N7 E
我们还是用水管流水的例子来说明:
1 n3 v5 e) w3 @3 }) u6 O; t
5 A5 d0 A. a1 [: B+ d4 B: z- y6 f假设我们让R的这个阀开的较大, 让下面那个控制阀全关,这时如图1所示可以看出P点的压力就是水箱的压力。当我们将下面的控制阀全开, 如图2所示,则水将以很大的水流流过管线,而此时P点的压力为0。这个原理和电子电路很相似。 通过三极管的关闭或开大来使输出点P测得的逻辑量为1(电源电压)或0(0电位)。 但这个过程有一个问题,就是当需要P点输出为0时,三极管将开得很大,流过的电流很大, 单片机上有32个IO口,这样消耗的电能就很多。
+ k" `0 R) c) X9 e' l 0 x) M# i8 J# g0 @. I
有没有办法改进呢?有!见下图:: t5 s% @8 s* w$ E4 ]. y
6 C, N+ ~# |: y
见图3, 如果我们将上面那个阀门R关得很小,将下面的控制阀全关,这时P点的压力仍旧会是水箱的压力, 和上面图1是一样的。但当我们将控制阀开大时,如图4,P点的压力虽然也同样为0, 但这时通过的水流就大大减少了。这样我们既能输出1或者0。但消耗的水却很少。 单片机里的电路正是这样做的,它上面的电阻R大约为50K,最大电流是5V÷50K=0.1mA。 也就是说, 当P输出1时,不消耗电流,当P输出0时消耗的电流为0.1mA。正因为它的上拉电阻R很大, 因此对于初学者来说,要它直接驱动发光管或其它的负载就要有一定的方法技巧了。
# u2 k1 r% ]* g/ E , z- D6 N7 a) j! s7 M
这里我再和大家一起分析一下IO口外接负载时的各种情况:* y/ k. `4 e3 Q* J& k+ \
H6 v) y4 t" ~) ?
我们先来看看接TTL器件的情况, 当P1.0接到74HC373的一个输入脚上时,因为TTL器件的输入阻抗很高,大约几百K到M欧姆级。 这就相当于P1.0接了个500K(我们假设为500K)的电阻到地。这样当三极管导通时, P1.0点为低电平,0.1mA的电流经Rc然后流过三极管一地,Ri上没有电流流过。而当三极管截止后, 电流就由Rc流过再通过Ri流到地。由于电阻分压的作用,在Rc和Ri上各有部分电压, P1.0点的电压为Rc和Ri的分压。 总电流=5V÷(50K+500K)=0.009mA,则P1.0点的电压=0.009mA×500K=4.5V。 TTL规定输出2.4-5V为高电平;输出0.4-0为低电平。 因此这样接是正确的。
! b9 N1 E- t1 ]& z8 g( I o6 t! w. z& _; v& X6 D
下面我们再来看看用S51来驱动发光管的情况:! K$ F [$ X+ J$ m. L, n
8 F, G" q% O+ k. }, h1 g1 D7 K
! Z" x4 ~" o$ b \( G
: N. u3 Z# b! \
先来看看图7的情况,很显然,发光管的方向为上正下负,只有P1.0为高电位才能点亮发光管,要让S51的P1.0为高电位,就必须使三极管截止。当三极管截止后,电流经Rc流到发光管再从发光管流到地。要让发光管导通必须要在发光管两端有超过2.1V的门坎电压。因此流过发光管的电流=(5V-2.1V)÷50K=0.058mA的电流,你们说发光管能亮吗? 再来看图8。由图可以看出,要想让发光管导通P1.0就必须为低电位。那P1.0口的三极管必须得导通。当三极管一导通后,电流一路流过Rc到三极管再从三极管流到地。另一路在发光管上消耗掉2.1V的电压。然后一路几乎没有阻力地流过三极管,而IO口的三极管最大电流不能超过15mA,超了就会烧坏三极管,因此这个接法不正确。4 } \" E$ Y7 @* E
% h8 T' R4 n. \ p% `2 t) ~那么如何才能让这两种接法都可以驱动发光管呢见下图: ~2 X: l+ b/ i( B
6 h8 }3 A+ n; M
E: x+ h0 A8 M
- M3 c( ^0 l# a6 S$ p: x0 e先看图9,在P1.0端和Vcc间接上个电阻Ri。当三极管导通时有两路电流都要从它的CE极流过,一路是内部R上的0.1mA电流,另一路就是Ri上的电流,为了不让三极管过流而烧坏我们就要确定它的电阻值。Ri=5V÷15mA=0.333K,就大约是330欧姆。这时流过三极管的电流就大约为15mA,此时发光管是不亮的。当三极管截止后,这两路电流就都要从发光管流过了,这时流过发光管的电流是多少呢。S51的内部电阻上流过的电流为(5V-2.1V)÷50K=0.06mA,很小我们可以忽略不计了。流过Ri上的电流为(5V-2.1V)÷330Ω=0.0087A,也就是8.7mA。已经能让发光管比较亮了。这样驱动是可以的,但发现没有,发光管不亮时所消耗的电流比发光管点亮时消耗的电流还要大。如果用许多个IO口去点亮很多发光管的话这样的电路就不经济了。好!这就是P1.0高电平直接驱动发光管的状况。 再来看图10,在和发光管串联一个电阻后接在Vcc和P1.0之间。当三极管导通时,也是两路电流都汇合后从三极管的CE流过,内部电阻上的电流仍为0.1mA,发光管上的电流就要由电阻Ri和发光管共同来保证不让三极管的CE超过15mA,则电阻的确定为(5V-2.1V)÷15mA=0.193K,大约是200欧姆。这样流过发光管的电流就约为15mA,发光管比较亮了。当三极管截止后,就阻断了这两路电流的通路,因此不消耗电流。这个电路是P1.0低电平直接驱动发光管的状况,可以看出这个电路当发光管被点亮时消耗15mA的电流,而熄灭时就不消耗电流,因此这个电路是最适合用的。S51直接驱动数码管一般也都是采用这个电路原理。 9 M& c% M4 v0 j) z3 ~
下面是数码管的原理图:1 |2 {0 t+ n1 b, j! b7 G
|