Use TLC5940 to control 3×3 dc fan array

在前面的TLC5940初測報告中,我已經大概介紹了TLC5940這顆IC,因此接下來就是實際運用了。在此我以九顆八公分電腦風扇來作實驗,目標是實驗出九種不同的風扇轉速。

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

Arduino與TLC5940的連接方式在Arduino.cc上面就有了,相當簡單,只要照著接連猴子都會。若要增加IC數量,也只要照圖串接即可。而程式部份其實很簡單,到Google Code中tlc5940arduino去下載即可,下載好的Library解壓縮之後,放至於:Arduino資料夾/hardware/libraries/ 底下即可,所以當開啟Arduino之後,打開File→Sketchbook→Examples底下就有Library-Tlc5940的範例可供使用。

在這裡,我選擇使用BasicUse的範例來使用。打開範例之後可以發現,這個範例檔真是超酷的,不但接線方式詳細解說,對於整個原始碼的註解更是解說得像是課本一般!在此感謝AcleoneTom Igoe的無私奉獻!原始碼中位於void loop() {  }  當中的一個指令:Tlc.set(channel, 4095) 是本文的關鍵,這個指令可以控制該TLC5940之中編號1~16腳位輸出的PWM值,其中PWM值是從0~4095供使用者自行決定。在此程式已經預先把channel宣告成一個參數了,因此我們可以直接把其他地方都刪刪掉,只在 void loop() {  }  當中留下一行:Tlc.set(0, 4095); 以及下一行: Tlc.update(); ,這代表什麼呢?就是TLC5940 IC 會在第一腳位輸出4095的PWM值(最大),這樣還不夠,下一行的Tlc.update();則是切確把指令送達IC的語法,如此再配合電晶體與ITP的教學:High Current Loads,就可以完成TLC5940一次控制眾多不同轉速風扇、燈光等等任何有類比變化的東東。以下是測試影片:

若是需要增加TLC5940的串接數,則必須到剛剛解壓縮的資料夾當中,找到一個 #define NUM_TLCS    1 的參數,並把後面的1改成串接TLC5940的個數即可,接著在程式中,命令第二顆TLC5940的第一腳位的語法就為: Tlc.set(16, 4095); (注意第一顆的第一腳位參數是0,就像陣列一樣)以此類推。

之前所使用的TIP120TIP121電晶體都是屬於NPN電晶體,雖然我還是搞不清楚PNP、NPN這些所謂「雙極性電晶體」的原理與定義,但是我們只管好好地使用他們就行了。可是若是如同先前需要買一大堆TIP120電晶體,那不是很佔空間?在這裡我找到另一個好東西:電晶體陣列。為何要找這東西?原因在於這種電晶體陣列可以有效把數個電晶體整合封裝成為一個IC,因此我不用在我的麵包板或是萬用電路板上擺了一堆電晶體。電晶體陣列有很多很多很多種,用途也都大不相同,由於之前使用的TIP系列電晶體是NPN電晶體,所以勢必我們也要找NPN電晶體陣列。我其實找了很多種型號的電晶體去電子材料行找,但是在光華商場只找到一款:TOSHIBA公司出的TD62501P,如同這款IC的datasheet上所說明的:The TD62501P / F Series are comprised of seven or five NPN Transistor Arrays. 這是一顆整合了七顆電晶體的IC,並且將射極整合在一個pin腳(COMMON EMITTER)。

是故,有了TLC5940跟TD62501P,就可以把電路有效作整合與縮小。在實驗的過程中,有幾個小心得:

  1. 雖然TLC5940在Arduino.cc上的說明是需要送電5V,但是我真實在測試時,送電5V會讓TLC5940開始昇溫,有幾次我都已經聞到似乎燒焦的味道,但是如果送電3.3V,運作就相當正常,Arduino Forum上面也有人討論過這問題。
  2. TLC5940的pin腳,有幾條是需要接地,但是很奇怪,只要我接地,電路就不動。神奇的是,把接地線拔掉,整個電路又運作了。
  3. 官方接法是驅動LED燈,因此需要在TLC5940輸出腳位與LED燈當中接上電阻,但是我是要驅動風扇,期間還經過電晶體陣列,因此我把電阻換成導線,當PWM值輸出最大時,可以感覺到風扇轉速比較強勁,實際用三用電錶測電壓的確是有微量差距。
  4. TD62501P若七個腳位全部都接上運作時,溫度會高得嚇人(應該可以煎蛋),我的手就被燙傷過,請大家在測試時要小心,建議貼個散熱片。

Related Links:
*[前po]TLC5940初測報告
Library for TLC5940 16-channel PWM chip(via Arduino Forum
An Arduino Library for the TI TLC5940 16-Channel PWM Chip(via Google code
雙極性電晶體(via wikipedia
TD62501P(viaTOSHIBA Semiconductor Company
Alex Leone

發佈留言

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