|
xfxm1fre3aj64053871900.png (30.77 KB, 下載次數(shù): 0)
下載附件
保存到相冊
xfxm1fre3aj64053871900.png
2024-12-2 22:05 上傳
7 a n$ ~' p, Z, x▲ 本文要分析的電路
6 H9 o/ m* q h$ t/ e事情是這樣開始的。買了個電動牙刷,幾十塊錢那種:+ e7 |: a# L) n6 R3 n7 @! l
pia1iijhtk564053872000.jpg (233.85 KB, 下載次數(shù): 0)
下載附件
保存到相冊
pia1iijhtk564053872000.jpg
2024-12-2 22:05 上傳
1 ~! y7 y- v+ f- X$ }+ ~+ h5 d
收到的實物長這樣:' o o4 ~4 |2 j0 C E
r2x2tnwlax264053872100.jpg (343.74 KB, 下載次數(shù): 0)
下載附件
保存到相冊
r2x2tnwlax264053872100.jpg
2024-12-2 22:05 上傳
+ G: `8 v9 @ \* a1 K* `
牙刷手柄上有1個按鍵和6個LED燈:+ Q# P( q# ~8 z& r
3rji3drtmi364053872200.jpg (392.68 KB, 下載次數(shù): 0)
下載附件
保存到相冊
3rji3drtmi364053872200.jpg
2024-12-2 22:05 上傳
+ t" [* ]: u. ^1 q3 x拆開看看電路板:
1 ]/ n$ ]8 Q) @" G0 h2 E$ L
waasgl4hnqx64053872300.jpg (96.54 KB, 下載次數(shù): 0)
下載附件
保存到相冊
waasgl4hnqx64053872300.jpg
2024-12-2 22:05 上傳
# h2 J1 Y9 j8 p. ^
可以看出,電路板上用的單片機,只有8個腳,卻要控制1個按鍵、6個LED燈、1個震動的馬達電機:
$ L( r* f7 v N Q# R. L. ~0 H
cv55b435vl564053872400.jpg (151.73 KB, 下載次數(shù): 0)
下載附件
保存到相冊
cv55b435vl564053872400.jpg
2024-12-2 22:05 上傳
, {9 s1 l/ k* G初看之下,GPIO應該是不夠用的。單片機除去電源腳(正極)和GND腳(負極),只剩最多6個GPIO腳。那么是怎么做到夠用的?原來,經(jīng)過巧妙的電路設計,這款電動牙刷實現(xiàn)了用3個GPIO控制6個LED燈,節(jié)省了GPIO。
, _4 s* l( D) Z: O7 }( z3 a! ?; q
mqv45ci4mnf64053872500.jpg (11.26 KB, 下載次數(shù): 0)
下載附件
保存到相冊
mqv45ci4mnf64053872500.jpg
2024-12-2 22:05 上傳
5 u6 D& _6 ~+ I3 R
這個巧妙的電路如下:
" h* B) ?7 `8 s* S- v* \6 p4 w. W* ?' |! o" H2 {
6個LED燈為相同的型號,為方便查看,用紅綠兩種顏色區(qū)分兩種不同的方向。一、原理分析這個電路用到了單片機GPIO的三種狀態(tài):高電平低電平高阻態(tài)所謂“高阻態(tài)”,是指GPIO對外部電路表現(xiàn)出極大的阻抗。因阻抗很大,幾乎不會吸入電流,也不會對外輸出電流。各個LED燈單獨亮起,分為六種情況。1、當只有LED1亮起時,單片機各GPIO的狀態(tài)如下:(帶箭頭的紅線為電流回路)' X9 m" j7 R |' c" H7 X9 `
2wkbum0lngm64053872600.png (42.91 KB, 下載次數(shù): 0)
下載附件
保存到相冊
2wkbum0lngm64053872600.png
2024-12-2 22:05 上傳
4 C C4 T! ~! n' D9 m$ B2、當只有LED2亮起時,單片機各GPIO的狀態(tài)如下:% z+ a9 Y. @; S7 V+ P0 \7 A
afyd3qbmlam64053872700.png (44.83 KB, 下載次數(shù): 0)
下載附件
保存到相冊
afyd3qbmlam64053872700.png
2024-12-2 22:05 上傳
+ ?; c8 Z( A3 b' ?9 o
3、當只有LED3亮起時,單片機各GPIO的狀態(tài)如下:
6 N b) W0 F# A5 }* S
agkdgj3wb4d64053872800.png (44.37 KB, 下載次數(shù): 0)
下載附件
保存到相冊
agkdgj3wb4d64053872800.png
2024-12-2 22:05 上傳
$ \. [/ K( z0 }! U4、當只有LED4亮起時,單片機各GPIO的狀態(tài)如下:
* D& J* Z+ n( _ E
ybr20xi3wf064053872900.png (44.83 KB, 下載次數(shù): 0)
下載附件
保存到相冊
ybr20xi3wf064053872900.png
2024-12-2 22:05 上傳
; _0 F/ {3 S: ` u% G8 u& J; @
5、當只有LED5亮起時,單片機各GPIO的狀態(tài)如下:
2 f6 d1 S. G, ~) Z% U% E
2cmlaud1xgy64053873000.png (45.42 KB, 下載次數(shù): 0)
下載附件
保存到相冊
2cmlaud1xgy64053873000.png
2024-12-2 22:05 上傳
. K( D/ c( c% x+ J9 g! X" ~% W
6、當只有LED6亮起時,單片機各GPIO的狀態(tài)如下:# Z+ A# f$ ~" O& j6 L7 O; D
fk500fxwzqn64053873100.png (44.96 KB, 下載次數(shù): 0)
下載附件
保存到相冊
fk500fxwzqn64053873100.png
2024-12-2 22:05 上傳
; T) D* n& {' w' q1 z
整理如下:' v# ^/ ], U% S. T; m
n12k2fnc2db64053873200.png (3.44 KB, 下載次數(shù): 0)
下載附件
保存到相冊
n12k2fnc2db64053873200.png
2024-12-2 22:05 上傳
2 K" _1 C* V* |4 c0 b! I' z就是這么簡單!二、總結提升以上其實是用了一種叫“查理復用”(Charlieplex)的方法。為什么叫查理復用?
- z: A8 q# I* L* P- D, f
1qdjavaerdj64053873300.jpg (62.95 KB, 下載次數(shù): 0)
下載附件
保存到相冊
1qdjavaerdj64053873300.jpg
2024-12-2 22:05 上傳
2 x4 M6 f6 |. [ q很簡單,因為這個方法來源于美信半導體公司的工程師Charlie Allen。查理復用是一種能夠在驅動LED,特別是驅動大量LED時有效地節(jié)約GPIO的方法。使用該方法,n個GPIO可以驅動 n*(n-1) 個LED,所以:使用2個GPIO可以驅動2個LED。使用3個GPIO可以驅動6個LED。使用4個GPIO可以驅動12個LED。以此類推。這種方式能夠實現(xiàn)的基礎是:單片機GPIO的三個狀態(tài):高電平、低電平、高阻態(tài)。LED具有單向導電性。查理復用設計的方法:任意兩個GPIO引腳之間串入兩個LED,這兩個LED為并聯(lián),且LED方向相反。當你想要點亮某個特定的LED時,就將其兩端所連接到的GPIO引腳分別設定為高電平和低電平,其它剩余的GPIO引腳設定為高阻態(tài)。前面電動牙刷中6個LED燈的電路,就是這么設計的。下面從最簡單的開始,一步一步體會查理復用的電路設計。1、使用2個GPIO時最簡單: u; v6 V" b7 z3 `; a+ `: B7 A0 q O
djf4cdqy1al64053873400.png (18.73 KB, 下載次數(shù): 0)
下載附件
保存到相冊
djf4cdqy1al64053873400.png
2024-12-2 22:05 上傳
0 B# N+ r! b8 PLED1亮起時:" W) O- p7 B2 F& J% u% }3 I4 s
jncdp2o5bh164053873500.png (23.34 KB, 下載次數(shù): 0)
下載附件
保存到相冊
jncdp2o5bh164053873500.png
2024-12-2 22:05 上傳
5 V8 U- ]8 m5 o2 N& e/ XLED2亮起時:& j% _1 u" G4 V) J& M- u' K3 Y
grme3jykqh364053873600.png (24.54 KB, 下載次數(shù): 0)
下載附件
保存到相冊
grme3jykqh364053873600.png
2024-12-2 22:05 上傳
# F/ ?6 y; s4 H* X& o0 _7 `# n
這里只用到高電平、低電平的狀態(tài),不需要用高阻態(tài)的狀態(tài)。2、使用3個GPIO時,前面已經(jīng)分析過:1 r7 T2 z9 X/ x2 j* [# U" K
" r) Y1 [" }' G可以等效為下圖:3 S/ b, |* A& S& f
jza5fglazbu64053873700.png (44.02 KB, 下載次數(shù): 0)
下載附件
保存到相冊
jza5fglazbu64053873700.png
2024-12-2 22:05 上傳
* Y7 r+ B1 z7 c( Q
可以看出,確實是任意兩個GPIO之間均串入了兩個并聯(lián)的LED,且LED方向相反。3、同樣的原理,使用4個GPIO時:
: g' D* o1 B/ B/ A K) x: _
youu4312ney64053873800.png (98.09 KB, 下載次數(shù): 0)
下載附件
保存到相冊
youu4312ney64053873800.png
2024-12-2 22:05 上傳
" Q/ r$ L; q! W5 |) c. g8 V: ^9 ^# u點亮LED1時:
4 c% J: g& K( u# {5 w6 w3 b: P
0 b9 W7 k& \# d9 u1 Q其他LED亮起的情況不再列舉。查理復用這樣的電路接法也會引發(fā)一些問題。首先,LED亮起時完全由單片機的GPIO輸出電流,所以對于GPIO的電流驅動能力有一定的要求。設計電路時要注意查詢自己使用的MCU的電流驅動能力,下圖是STM32單片機中對GPIO電流驅動能力的說明:
0 j4 N9 `% f1 w/ I5 r0 w( D5 R1 P# J
# F$ j8 A N2 d5 C其次,如果出現(xiàn)了某個LED開路或短路的情況,電流的流向會被打亂,LED亮起來的邏輯會變得錯亂。最壞的情況下,電路會對GPIO索取大電流,導致單片機損壞。下圖是假設LED1短路,那么在點亮LED5時,LED3也會亮起:
6 ]) o6 g0 R ?2 k8 k8 M [
% ]! u* u1 x8 A- a三、繼續(xù)進階如果要同時亮起兩個以上的LED,怎么辦?交替點亮他們就行,只要交替切換的速度夠快,由于人眼的視覺暫留效應,看起來就是同時亮起的。值得一提的是,如果要同時亮起的LED較多,比如大規(guī)模的LED點陣,那么還要注意一些新的問題,頗有門道。 聲明:9 `) z" v& e, g9 `
本文轉載自電路啊公眾號 ,如涉及作品內(nèi)容、版權和其它問題,請聯(lián)系工作人員微(13237418207),我們將在第一時間和您對接刪除處理!投稿/招聘/廣告/課程合作/資源置換 請加微信:13237418207! ^9 b3 A2 \' p0 l
% x/ }& z9 n" Q# i6 t
4 ^1 A7 J. w L
9 ~, l* y8 c+ X! L
) X; W' g- [( D; m& y2 a 1 N8 j- N- N' I
" e( B1 {, `! D3 x3 W5 {# c. D
+ ]. B$ l; d: R4 p6 Q6 Y
" h7 V' D5 @4 N
: c% [# u& ]! L* S' Z% F
, @. ~5 s/ o, ?/ C, ]3 \ 反激式電源為什么上電最容易燒MOS管?
8 i( ?! w; u7 J
7 I( T. q/ K1 ]6 U; ? f) b- j
: d% v" m' F" T( m5 Z7 R) `! Y 5 _/ p% d$ l$ n8 U# P
) o1 j6 l6 V7 N4 o- E
! Y1 V' v" }9 Y. z+ }
8 Y5 `. I& h7 P; C6 J2 B! f6 ` " w8 U! Y! f4 Z
! I+ l$ T7 `6 [+ q6 p4 B3 C) G
) c1 ` N$ m" p& g* V& }6 J
+ e0 \) m& d& B4 j/ k& L1 Z. q3 J' v
3 j. ?, f* M) T/ w9 @ 電子電路中“地”的本質(zhì)特性是什么?
% ^8 F: q0 r( T& Q' h& A 2 ]4 L# ?6 @8 S+ q
; ]' B6 T7 L# ^5 t3 r
3 n3 v8 i9 `% o
* K. o, C! m/ H* G3 u- L% C
/ |4 X3 p9 ~; _. n$ P3 l2 }) s4 d: Y) A+ G% n* K3 o) n8 x
9 y3 B- l: {% H1 r$ m3 c掃碼添加客服微信,備注“入群”拉您進凡億教育官方專屬技術微信群,與眾位電子技術大神一起交流技術問題及心得~+ M+ i ~% |/ r2 ~: C/ a
分享?? 點贊?? 在看?? “三連”支持! |
|