實際的微控制器都有強大的雙向I/O端口,你可以用不同的技術來充分利用這些功能。最近有個設計實例描述了一種“Charlieplexing”方法,它是只用N個雙向I/O端口和N個電阻,驅動M=N×(N–1)個LED的有效方式(參考文獻1和參考文獻2)。遺憾的是,采用Charlieplexing方法時,每次只能驅動一只LED,因此當使用大量LED時,只有很少時間能用于復用每只LED:TDRIVE=T/M,其中T是PWM激勵周期。于是,為獲得給定的平均電流和點亮LED,就必須用M倍的電流去激勵它們,而通常無法從微控制器端口獲得這種峰值電流。 本設計描述的是“Chipiplexing”方法,這種方法需要增加N個廉價的雙極晶體管。本電路使用的是PNP型晶體管,但也可以采用NPN器件。(Chipiplexing這個詞出自于我的昵稱Chipi。)付出這些額外成本帶來的好處是可以同時驅動N-1只LED,因此將峰值電流減小到N-1分之一。 圖1表示N=3和M=6的方案,但可以將相同準則用于不同的N值;在這種情況下,可以同時驅動兩只LED。限流電阻并聯在新增PNP晶體管的基射極上,所有集電極連接到地。如果你將一個微控制器端口設為零(或地),則相應PNP晶體管就有一個接地的基極,其射極為一個固定電壓(一般是 0.7V)。通過其余端口就可以激勵所有陰極連接到這個射極的LED。如果將端口設為1,即電池電壓,LED點亮;如果將端口設為高阻,則LED熄滅。 表1驅動LED的九種可用端口組合 表1表示三個微控制器端口的九個可能組合:六個可用Charlieplexing方法每次驅動一只LED,三個新組合每次驅動二只LED。微控制器端口將晶體管基極接地。這一動作固定了集射結的壓降,并將所有LED電流拉入大地,而不會給微控制器端口過大壓力,微控制器端口只吸入晶體管基極電流再加上每只電阻的0.7V。每個端口都設定到只驅動一只LED電流的電池電壓。 采用Charlieplexing方法時,兩只電阻處于LED電流路徑上;不過,這種情況下可以很容易算出限流電阻值R=(VBAT–VLED–0.7)/ILED,其中VBAT是電池電壓,VLED是 LED電壓,而ILED是所需要的LED電流。隨著LED數量的增加,優點會更明顯。對于N=5,20只LED情況,這種方案驅動每只LED時間為 20%,而采用Charlieplexing方法時驅動時間只有5%。 |