TLC5940 初測報告

圖:連結自http://www.flickr.com/photos/fischco/3430820094/sizes/m/ By:estranged42

我最近正在為了我的畢業作品而正在焦頭爛額著,硬體部份的關鍵就在於控制含有大量直流風扇的風扇陣列。以我的前作〈Unheeded Advice〉為例,我是運用Arduino NG Rev. C以兩個PWM輸出口配合NPN電晶體(TIP121)來控制風扇轉速。電路板設計為控制「兩組風扇」(共四顆,兩顆一組),也是就是實際上只控制兩個風扇,或說控制兩種轉速,這樣的確是以兩個PWM送出不同程度訊號即可解決。但是問題來了,面對大型風扇陣列(我預想是12×12=144顆),天阿!我去哪裡生那麼多PWM輸出口?

我所使用的Arduino NG Rev. C版本,上面只有3個PWM,而學校剛買的Arduino Diecimila也只有6個PWM,更讓人沮喪的是,即便是怪獸等級的Arduino Mega也只有14個PWM(官方資料:54 Digital I/O Pins(of which 14 provide PWM output))。14跟144不是只有差一個4,這個我很明白。因此我開始想其他擴充PWM的方式:如果多買幾個Arduino,好像太貴了,更何況一百個PWM最少也要近20塊Arduino,又貴又蠢!

就在整個暑假都碰壁求助無門後,我無奈地進入Arduino Forum尋求最後的希望。結果我只能說外國人真是太強了,頭一天就有兩篇文章回答我的問題,其中一篇就解決了。他建議我用德州儀器所製造編號TLC5940Datasheet download)的IC來輸出PWM,這顆IC共有28個腳位,其中16個可以輸出PWM訊號,也就是說,我只要買9顆TLC5940事情就解決了!真是太神奇了。

TLC5940在它的datasheet中說明這顆IC是用來輸出灰階控制LED的驅動器(16-Channel LED Driver w/EEprom DOT Correction & Grayscale PWM Control),因此利用Arduino控制TLC5940可以有效達到擴充PWM的效果,更棒的是,這顆IC可以一直串接下去,Arduino.cc即有對這顆IC作介紹,而且已經有人把程式全部撰寫好,在Google code即可下載函式庫供使用。

當然之後最重要的就是IC的購買了,我跑遍光華商場的每一家店材料行,都找不到有人賣這顆IC。即便是有人願意進貨,也會因為我只想先買一顆來測試而作罷。在這裡就要特別打一下廣告,在光華商場旁地下樓的國際電子廣場地下二樓的「明鄉電子材料」(台北市新生南路1段6號地下2樓之3)老闆相當幫忙,就幫我進了5顆TLC5940,實在是很感謝他的幫忙。不過就在我測試一顆成功之後,其他四顆也被我買走了,若有需要可以請他們代訂。

圖:連結自http://www.arduino.cc/playground/Learning/TLC5940

如上圖,Arduino的官方網站上就有教導如何連接TLC5940以擴充PWM的功能,只要照著接就可以了。值得一提的是,若是需要串接超過一顆的TLC5940,就需要到匯入Arduino程式中的TLC5940 library底下的tlc_config.h去修改TLC5940的串接數才能運作。

Related Links:
Lighting and Display Solutions – LED Drivers – TLC5940(via Texas Instruments
Texas Instruments TLC5940(via Arduino.cc
An Arduino Library for the TI TLC5940 16-Channel PWM Chip(via Google code
control 8×8 electronic fan matrix?(via Arduino Forum
*[前po]Use Arduino to change the intensity of the lamp
Arduino Diecimila(via Arduino.cc

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *