xfxm1fre3aj64053871900.png
6 h+ M3 ]8 [, i
▲ 本文要分析的电路
" Q: _) t- k9 }事情是这样开始的。买了个电动牙刷,几十块钱那种:
5 W. z' k/ y+ W" e: _
pia1iijhtk564053872000.jpg
6 N7 n" u2 w# w收到的实物长这样:; |( l. \* _: A; M; ^' B' v
r2x2tnwlax264053872100.jpg
1 d2 \& j" H6 z牙刷手柄上有1个按键和6个LED灯:& T. I6 F3 F* P- M( p
3rji3drtmi364053872200.jpg
; R5 _6 G3 w D; G$ h9 ^- b
拆开看看电路板:( \' n2 d; b; K) m/ y
waasgl4hnqx64053872300.jpg
; z7 q5 I; o* E/ U# r2 Y3 H+ j) Z8 p) z
可以看出,电路板上用的单片机,只有8个脚,却要控制1个按键、6个LED灯、1个震动的马达电机:
) M2 | l# P4 i* v6 |% _
cv55b435vl564053872400.jpg
/ V5 v, ]" U( Y9 o
初看之下,GPIO应该是不够用的。单片机除去电源脚(正极)和GND脚(负极),只剩最多6个GPIO脚。那么是怎么做到够用的?原来,经过巧妙的电路设计,这款电动牙刷实现了用3个GPIO控制6个LED灯,节省了GPIO。# e% M$ z: O1 F* y6 [- |: x
mqv45ci4mnf64053872500.jpg
1 A7 Z; x4 m8 |. I O; D这个巧妙的电路如下:
: Q4 j1 ]+ O2 l: M1 v/ a5 c) I3 `0 \7 {( u' Y# d
6个LED灯为相同的型号,为方便查看,用红绿两种颜色区分两种不同的方向。一、原理分析这个电路用到了单片机GPIO的三种状态:高电平低电平高阻态所谓“高阻态”,是指GPIO对外部电路表现出极大的阻抗。因阻抗很大,几乎不会吸入电流,也不会对外输出电流。各个LED灯单独亮起,分为六种情况。1、当只有LED1亮起时,单片机各GPIO的状态如下:(带箭头的红线为电流回路)
1 Z: i) P1 E x& y" d0 l
2wkbum0lngm64053872600.png
/ A* D$ F, O1 m$ B8 l2、当只有LED2亮起时,单片机各GPIO的状态如下:
9 _8 v+ ` A. n8 v5 j% i
afyd3qbmlam64053872700.png
; U0 N# Y$ d7 {6 [
3、当只有LED3亮起时,单片机各GPIO的状态如下:+ L y! S8 s2 W! Y; M
agkdgj3wb4d64053872800.png
9 [5 U# K5 @+ H% n; @1 ]( s ?* q4、当只有LED4亮起时,单片机各GPIO的状态如下:& ~! O, g' U6 M# W8 B0 z. J, ~
ybr20xi3wf064053872900.png
" m7 q4 ]- b# Y0 x+ p5、当只有LED5亮起时,单片机各GPIO的状态如下:
( Z2 }1 o1 E. h3 _% Q
2cmlaud1xgy64053873000.png
( q4 P( m* N7 c+ {0 a s) E
6、当只有LED6亮起时,单片机各GPIO的状态如下:
* S- o% h, L2 M" c' @
fk500fxwzqn64053873100.png
# L9 A/ f3 M I( ~# s5 V5 L
整理如下:: [3 l; G. G! ^$ Y( N. m- t
n12k2fnc2db64053873200.png
8 |/ q2 r! n" K% {+ O
就是这么简单!二、总结提升以上其实是用了一种叫“查理复用”(Charlieplex)的方法。为什么叫查理复用?
4 L; l; V; O& k9 h& H, `. `8 \; Q
1qdjavaerdj64053873300.jpg
% h* r; @0 A) H
很简单,因为这个方法来源于美信半导体公司的工程师Charlie Allen。查理复用是一种能够在驱动LED,特别是驱动大量LED时有效地节约GPIO的方法。使用该方法,n个GPIO可以驱动 n*(n-1) 个LED,所以:使用2个GPIO可以驱动2个LED。使用3个GPIO可以驱动6个LED。使用4个GPIO可以驱动12个LED。以此类推。这种方式能够实现的基础是:单片机GPIO的三个状态:高电平、低电平、高阻态。LED具有单向导电性。查理复用设计的方法:任意两个GPIO引脚之间串入两个LED,这两个LED为并联,且LED方向相反。当你想要点亮某个特定的LED时,就将其两端所连接到的GPIO引脚分别设定为高电平和低电平,其它剩余的GPIO引脚设定为高阻态。前面电动牙刷中6个LED灯的电路,就是这么设计的。下面从最简单的开始,一步一步体会查理复用的电路设计。1、使用2个GPIO时最简单:. s9 o0 k7 t# |, l
djf4cdqy1al64053873400.png
`: F. e) y7 Y
LED1亮起时:1 G( y1 a Y# \* t; d' s6 C/ T
jncdp2o5bh164053873500.png
' V% o6 {% ~! x! d, T1 QLED2亮起时:
0 f! W2 V( P( s7 g
grme3jykqh364053873600.png
. V, @% |# s) e" z) q
这里只用到高电平、低电平的状态,不需要用高阻态的状态。2、使用3个GPIO时,前面已经分析过:
0 ?0 J8 w/ }& n+ R4 F- Y$ T! p5 U, K/ T" S% O7 e
可以等效为下图:$ C5 T9 Z, v! B1 Y
jza5fglazbu64053873700.png
& v' p+ {* ~3 k- F' f1 Z, {- {
可以看出,确实是任意两个GPIO之间均串入了两个并联的LED,且LED方向相反。3、同样的原理,使用4个GPIO时:0 Q u9 o+ I+ |
youu4312ney64053873800.png
% x0 B8 V4 ]0 F4 q% q5 K. h点亮LED1时:; m* O3 r# o/ z% a
" _6 _1 @/ z6 Q& y8 h0 H" g其他LED亮起的情况不再列举。查理复用这样的电路接法也会引发一些问题。首先,LED亮起时完全由单片机的GPIO输出电流,所以对于GPIO的电流驱动能力有一定的要求。设计电路时要注意查询自己使用的MCU的电流驱动能力,下图是STM32单片机中对GPIO电流驱动能力的说明:& C# d: y! l# {" J$ o
3 {# }! g$ V7 _
其次,如果出现了某个LED开路或短路的情况,电流的流向会被打乱,LED亮起来的逻辑会变得错乱。最坏的情况下,电路会对GPIO索取大电流,导致单片机损坏。下图是假设LED1短路,那么在点亮LED5时,LED3也会亮起:. j5 z m2 g, ?" {; f: j
( B( @) y! U9 r3 |3 q' [! g
三、继续进阶如果要同时亮起两个以上的LED,怎么办?交替点亮他们就行,只要交替切换的速度够快,由于人眼的视觉暂留效应,看起来就是同时亮起的。值得一提的是,如果要同时亮起的LED较多,比如大规模的LED点阵,那么还要注意一些新的问题,颇有门道。 声明:
$ ^! j7 n/ T. b本文转载自电路啊公众号 ,如涉及作品内容、版权和其它问题,请联系工作人员微(13237418207),我们将在第一时间和您对接删除处理!投稿/招聘/广告/课程合作/资源置换 请加微信:13237418207, E( [ I" }" q& T! b4 u8 p
" }& P. f) s. F. J; e& h+ M
7 x" o% m9 q6 R7 @) e) S9 z: n
$ ]) T6 v$ H8 u2 P6 g+ Y; k0 e/ n; T( M' n- n
( f6 t4 N0 t( K7 e & Y* S; g8 d: y3 U
! D5 J4 E5 O( ?6 _- j5 C& b+ z
& R& Y9 W9 V z/ Y
2 C. Y0 B- n+ E& ^* p * {- B; @' n9 p( o% d' E0 N
反激式电源为什么上电最容易烧MOS管?, [' e' s3 C7 u9 l
) {9 ~/ x' \* `" p' x. z6 I" H 8 G5 W, }- B i; `1 `, N: g
' c |$ @0 Z7 {; A- g6 `" ^8 V
. D& w, c1 ~6 w
' F) Q1 U& P7 ~5 u3 ~" ^
4 f2 W! M3 h }5 j
. [7 Q+ q2 a" v* n
% D$ T8 d: N( n; P, P; Y + R, v8 u7 U, [$ \" K" |5 l5 T
" X! D; v5 {0 t1 \& p8 M* k2 ~
2 N( J0 _) d/ v. ^* O5 i# \- [8 H$ T
1 w ?3 L5 V( ~ 电子电路中“地”的本质特性是什么?
1 X T+ ]% A/ M6 E. u; @- \
: }- K4 |0 a& X7 x# m' X9 x. H 8 E6 j2 W* d# @: r1 \2 \/ a
" G8 A7 D& F* } `! K D! a
6 I' ^; ^5 A) ?1 @4 [3 o ' O6 |& ~# b& v" J2 ^/ ], G% X1 J5 X6 |
3 r% G# {5 O1 b1 j! u4 F9 t: s9 d: Z* Y' j# i
扫码添加客服微信,备注“入群”拉您进凡亿教育官方专属技术微信群,与众位电子技术大神一起交流技术问题及心得~7 ~2 O1 D& c3 x" d% f- T( W
分享?? 点赞?? 在看?? “三连”支持! |