|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
首先,想说上拉电阻几乎都是应运三极管电路而生的,但是本文基本上都属于定性的分析,避免对其定量分析,相信即使没有学过三极管晶体电路的同学还是可以基本理解的。) E0 w7 s5 ~9 N, z9 Q" J3 f, ^) Q. a, P6 U8 ?, X# S# p
首先还要明确一个术语,所谓开漏(OD),开集(OC)电路就 O! @8 m1 ]. n! j- ^4 ^0 v D% ?/ i5 n0 [0 s
是场效应管的漏极和三极管的集电极是断开的电路。如下图所示,这里希望大家不要纠结于我这个三极管用的是否正确只是想定性的解释一下什么是开漏(OD)或开集(OC)。, W5 w. x, i& f1 K4 N4 k3 g& \
7 \4 y/ _& _% x( Y8 m }$ I5 \8 Z$ O& K* ]' z
+ [ D* c. O( J7 A, V% J3 F9 k6 W5 V1 Q2 m- g; Q# b( o) O) Q6 Q
" v _5 k: X3 w* d- D
: G3 f% a* B( L$ k z5 _! S& j6 u0 ~: x% A# ]# d" C, C
; i/ B j0 |5 K7 ~6 g下面通过场效应管的漏极开路门电路的例子简单说明一下上拉电阻:% ?4 A% C5 N$ Z! m. e5 E
注:管子导通或截止可以理解为单片机的软件对端口置1或0.- n% L3 K/ d4 ^" R
4 Z( r2 ]8 v( n9 _' o6 N# i" n& v, p(1)如果没有上拉电阻(10k),将5V电源直接与场效应管相连。; w0 X3 L6 _2 A3 q8 N' E4 I4 m4 I; h, \) }9 a
8 y) I7 e7 F; M3 O, P( e; {
6 I/ W9 u! L/ p( R/ P" ]当管子导通时,管子等效一电阻,大小为1k左右,因此5v电压全部加在此等效电阻上,输出端Vout=5v。9 O0 O- ^3 r( |; m) c( m# w- n
% K+ [1 ^5 g0 I当管子截止时,管子等效电阻很高,可以理解为无穷大,因此5v的电压也全部加在此等效电阻上,Vout=5v。在这两种情况下,输出都为高电平,没有低电平。2 |- Z! w% P! k% g: V- ^7 g3 X8 w. N1 ]
(2)如果有上拉电阻(10k),将5v电源通过此上拉电阻与与场效应管相连。
; H8 s' G' S5 V( e5 J$ p5 t3 O S4 O0 p4 g" Q" h9 b0 a% F6 k2 Q/ g/ \8 v! R o! X
& Y$ G2 \" [: Z K3 r; r2 I7 B- o2 |) ~" B
当管子导通时,管子等效一电阻,大小为1k左右,与上拉电阻串联,输出端电压为加在此等效电阻上的电压,其大小为Vout = 5v * 管子等效电阻/(上拉电阻+管子等效电阻)=5v * 1/(10+1)=低电平。! l: E( C8 l4 b/ Y6 ~
当管子截止时,管子等效电阻很高,可以理解为无穷大,其与上拉电阻串联,输出端电压为加在此等效电阻上的电压,其大小为Vout = 5v * 管子等效电阻/(上拉电阻+管子等效电阻)=5v*无穷大/(无穷大+1)=高电平。1 D! _ K/ z# Q3 ?% B
* J7 I5 C9 P, Z! l/ i! ~+ [" \& e" K0 I9 K
( S- v; m4 l* V2 A" R看到这里估计大家基本懂了七八分了吧,但是想必大家肯定还有一个疑问:难道P0口的高低电平输出与实际的输出是相反的吗?呵呵,现在让我们看一下8051单片机P0口的逻辑电路图:# d* W) s2 ?) Z4 ~( l% u
: U, z( i" d3 p. o
0 o# }6 j9 M' I3 |; j4 d8 f1 L- W [
0 t6 E; N, c1 @5 E6 D9 @+ Y; V: i0 i, f0 J
其实,笔者一开始也纠结了很久,还专门查了一下场效应管的书,但是没有任何收获。这里请大家认真看一看P0.x 的D锁存器的输出端吧。没错问题就在这里D锁存器最终输出的是 <span style="line-height: 25px;">以上4图表示的是上拉电阻从220欧到5.1K欧的LED亮度变化,当然实际还是有出入的,我们实验室开发板10K的电阻依然把LED点的很亮~(当然根据我们的计算电阻最小不要小于200欧姆,否则电流太大) % h: ?5 L& _% d6 {3 Y6 T+ r4 C% o
- ~$ a) U- Q) R# F0 x
$ C% C) D: H1 U1 q) P% |" [' j5 \6 b6 I7 n5 {( ]
. l* E8 Y- d( N$ p0 x( V2、对于驱动光耦合器,如果是高电位有效,即耦合器输入端接端口和地之间,那么和LED的情况是一样的;如果是低电位有效,即耦合器输入端接端口和VCC之间,那么除了要串接一个1~4.7k之间的电阻以外,同时上拉电阻的阻值就可以用的特别大,用100k~500K之间的都行,当然用10K的也可以,但是考虑到省电问题,没有必要用那么小的。
) E# O) C6 k- G/ a6 h( g8 O) m! q8 ]# ]" K6 O6 m( U3 ~. c% S
3、对于驱动晶体管,又分为PNP和NPN管两种情况:; |( K+ _# p" E2 A
, N: g/ ~* ~5 Ba、对于NPN:毫无疑问NPN管是高电平有效的,因此上拉电阻的阻值用2K~20K之间的。具体的大小还要看晶体管的集电极接的是什么负载,对于LED类负载,由于发管电流很小,因此上拉电阻的阻值可以用20k的,但是对于管子的集电极为继电器负载时,由于集电极电流大,因此上拉电阻的阻值最好不要大于4.7K,有时候甚至用2K的。
# z3 k% V3 G: Z5 hb、对于PNP管,毫无疑问PNP管是低电平有效的,因此上拉电阻的阻值用100K以上的就行了,且管子的基极必须串接一个1~10K的电阻,阻值的大小要看管子集电极的负载是什么,对于LED类负载,由于发光电流很小,因此基极串接的电阻的阻值可以用20k的,但是对于管子的集电极为继电器负载时,由于集电极电流大,因此基极电阻的阻值最好不要大于4.7K。1 |3 H M- X4 \* i+ T- V ~ A/ L! V0 |
5 h, l. K! Z. D4、对于驱动TTL集成电路,上拉电阻的阻值要用1~10K之间的,有时候电阻太大的话是拉不起来的,因此用的阻值较小。但是对于CMOS集成电路,上拉电阻的阻值就可以用的很大,一般不小于20K,通常用100K的,实际上对于CMOS电路,上拉电阻的阻值用1M的也是可以的,但是要注意上拉电阻的阻值太大的时候,容易产生干扰,尤其是线路板的线条很长的时候,这种干扰更严重,这种情况下上拉电阻不宜过大,一般要小于100K,有时候甚至小于10K。# o/ k; R! ]4 T
% r' s' D( N/ S+ K7 r: _0 P; j9 k3 Y# H, o1 A0 N! p$ t
8 J/ l# w, [: t/ B( c5、关于I2C的上拉电阻:因为I2C接口的输出端是漏极开路或集电极开路,所以必须在接口外接上拉。上拉电阻的取值和I2C总线的频率有关,工作在standard mode时,其典型值为10K。在FAST mode时,为减少时钟上升时间,满足上升时间的要求,一般为1K。电阻的大小对时序有一定影响,对信号的上升时间和下降时间也有影响。总之一般情况下电压在5V时选4.7K左右,3.3V在3.3K左右.这样可加大驱动能力和加速边沿的翻转$ r( V% V7 Q1 u3 X7 K# k: f6 G" c. u. s$ P5 K& k7 P ^
I2C上拉电阻确定有一个计算公式:Rmin={Vdd(min)-o.4V}/3mARmax=(T/0.874) *c, T=1us 100KHz, T=0.3us 400KHzC是Bus capacitance
. M8 h' s( `7 X3 q5 ]7 r |
|