Talaan ng mga Nilalaman:

Arduino at ang TLC5940 PWM LED Driver IC: 7 Mga Hakbang
Arduino at ang TLC5940 PWM LED Driver IC: 7 Mga Hakbang

Video: Arduino at ang TLC5940 PWM LED Driver IC: 7 Mga Hakbang

Video: Arduino at ang TLC5940 PWM LED Driver IC: 7 Mga Hakbang
Video: Arduino Project #13 | 5 Pins, 32 LEDs, 2 LED Drivers [TLC5940] 2024, Hulyo
Anonim
Arduino at ang TLC5940 PWM LED Driver IC
Arduino at ang TLC5940 PWM LED Driver IC

Sa artikulong ito susuriin namin ang Texas Instruments TLC5940 16-channel LED driver IC. Ang aming dahilan para gawin ito ay upang maipakita ang isa pa, mas madaling paraan ng pagmamaneho ng maraming mga LED - at mga servo din. Una, narito ang ilang mga halimbawa ng TLC5940. Maaari kang mag-order ng TLC5940 mula sa PMD Way na may libreng paghahatid sa buong mundo.

Ang TLC5940 ay magagamit sa bersyon ng DIP, at i-mount-mount din. Ito talaga ay isang maginhawang bahagi, na nagbibigay-daan sa iyo upang ayusin ang ningning ng labing-anim na indibidwal na mga LED sa pamamagitan ng PWM (pulso-width modulation) - at maaari mo ring daisy-chain na higit sa isang TLC5940 upang makontrol ang higit pa.

Sa panahon ng tutorial na ito, ipapaliwanag namin kung paano makontrol ang isa o higit pang mga TLC5940 IC na may mga LED at titingnan din ang pagkontrol sa mga servo. Sa puntong ito, mangyaring mag-download ng isang kopya ng TLC5940 (.pdf) dahil isangguni mo ito sa pamamagitan ng prosesong ito. Bukod dito, mangyaring i-download at i-install ang TLC5940 Arduino library ni Alex Leone na matatagpuan dito. Kung hindi ka sigurado kung paano mag-install ng isang library, mag-click dito.

Hakbang 1: Bumuo ng isang TLC5940 Demonstration Circuit

Bumuo ng isang TLC5940 Demonstration Circuit
Bumuo ng isang TLC5940 Demonstration Circuit

Ang sumusunod na circuit ay ang minimum na kinakailangan upang makontrol ang labing-anim na LEDs mula sa iyong Arduino o katugma. Maaari mo itong gamitin upang mag-eksperimento sa iba't ibang mga pag-andar at makakuha ng ideya kung ano ang posible. Kakailanganin mong:

  • Isang Arduino Uno o katugmang board
  • 16 normal, araw-araw na LEDs na maaaring magkaroon ng isang pasulong na kasalukuyang hanggang sa 20 mA
  • isang 2 kΩ risistor (magbigay o kumuha ng 10%)
  • isang 0.1uF ceramic at isang 4.7uF electrolytic capacitor

Itala ang orientation ng LED - at alalahanin ang TLC5940 ay isang karaniwang-anode LED driver - kaya lahat ng mga LED anode ay magkakakonekta at pagkatapos ay sa 5V.

Hakbang 2:

Para sa partikular na circuit, hindi mo kakailanganin ang isang panlabas na 5V power supply - gayunpaman maaaring kailanganin mo ang isa sa hinaharap. Ang layunin ng risistor ay upang makontrol ang dami ng kasalukuyang maaaring dumaloy sa pamamagitan ng mga LED. Ang kinakailangang halaga ng risistor ay kinakalkula kasama ang sumusunod na formula:

R = 39.06 / Imax kung saan ang R (sa Ohms) ay ang resistor halaga at ang Imax (sa Amps) ay ang maximum na halaga ng kasalukuyang nais mong dumaloy sa pamamagitan ng LEDs.

Halimbawa, kung mayroon kang mga LED na may kasalukuyang 20 mA pasulong - ang pagkalkula ng risistor ay: R = 39.06 / 0.02 = 1803 Ohms. Kapag natagpuan mo ang circuit - buksan ang Arduino IDE at i-upload ang sketch BasicUse.pde na nasa halimbawang folder para sa library ng TLC5940.

Dapat ipakita sa iyo ang output na katulad ng ipinakita sa video.

Hakbang 3: Pagkontrol sa TLC5940

Ngayon na gumagana ang circuit, paano namin makokontrol ang TLC5940? Una, ang mga sapilitan na pag-andar - isama ang library sa simula ng sketch na may:

# isama ang "Tlc5940.h"

at pagkatapos ay ipasimula ang silid-aklatan sa pamamagitan ng paglalagay ng sumusunod sa void setup ():

Tlc.init (x);

x ay isang opsyonal na parameter - kung nais mong itakda ang lahat ng mga channel sa isang tiyak na ningning sa lalong madaling magsimula ang sketch, maaari mong ipasok ang isang halaga sa pagitan ng 0 at 4095 para sa x sa pagpapaandar ng Tlc.init ().

Ngayon upang i-on o i-off ang isang channel / LED. Ang bawat channel ay binibilang mula 0 hanggang 15, at ang ningning ng bawat channel ay maaaring maiakma sa pagitan ng 0 at 4095. Ito ay isang proseso ng dalawang bahagi … Una - gumamit ng isa o higit pa sa mga sumusunod na pagpapaandar upang mai-set up ang mga kinakailangang channel at kani-kanilang ningning (PWM antas):

Tlc.set (channel, ningning);

Halimbawa, kung nais mong magkaroon ng unang tatlong mga channel nang buo ang ningning, gamitin ang:

Tlc.set (0, 4095); Tlc.set (1, 4095); Tlc.set (2, 4095);

Ang pangalawang bahagi ay ang paggamit ng sumusunod upang ma-update ang TLC5940 na may mga kinakailangang tagubilin mula sa bahagi ng isa:

Tlc.update ();

Kung nais mong i-off ang lahat ng mga channel nang sabay-sabay, simpleng gamitin ang:

Tlc.clear ();

Hakbang 4:

Hindi mo kailangang tawagan ang isang TLC.update () pagkatapos ng malinaw na pagpapaandar. Ang sumusunod ay isang mabilis na halimbawa ng sketch na nagtatakda ng mga halaga ng liwanag / PWM ng lahat ng mga channel sa iba't ibang mga antas:

# isama ang "Tlc5940.h" void setup () {Tlc.init (0); // initialise TLC5940 at i-off ang lahat ng mga channel}

walang bisa loop ()

{para sa (int i = 0; i <16; i ++) {Tlc.set (i, 1023); } Tlc.update (); pagkaantala (1000); para sa (int i = 0; i <16; i ++) {Tlc.set (i, 2046); } Tlc.update (); pagkaantala (1000); para sa (int i = 0; i <16; i ++) {Tlc.set (i, 3069); } Tlc.update (); pagkaantala (1000); para sa (int i = 0; i <16; i ++) {Tlc.set (i, 4095); } Tlc.update (); pagkaantala (1000); }

Ang kakayahang kontrolin ang indibidwal na ningning para sa bawat channel / LED ay maaari ding maging kapaki-pakinabang kapag kinokontrol ang RGB LEDs - madali mong mapipili ang mga kinakailangang kulay sa pamamagitan ng iba't ibang mga antas ng ningning para sa bawat elemento. Isang demonstrasyon ang ipinapakita sa video.

Hakbang 5: Paggamit ng Dalawa o Higit pang mga TLC5940s

Maaari mong daisy-chain medyo ng ilang mga TLC5940s magkasama upang makontrol ang higit pang mga LEDs. Una - i-wire ang susunod na TLC5940 sa Arduino tulad ng ipinakita sa demonstration circuit - maliban na ikonekta ang SOUT pin (17) ng unang TLC5940 sa SIN pin (26) ng pangalawang TLC5940 - habang ang data ay naglalakbay mula sa Arduino, sa pamamagitan ng ang unang TLC5940 sa pangalawa at iba pa. Pagkatapos ulitin ang proseso kung mayroon kang isang pangatlo, atbp. Huwag kalimutan ang resisotr na nagtatakda ng kasalukuyang!

Susunod, buksan ang file tlc_config.h na matatagpuan sa folder ng library ng TLC5940. Baguhin ang halaga ng NUM_TLCS sa bilang ng mga TLC5940 na nakakonekta mo nang magkasama, pagkatapos ay i-save ang file at tanggalin din ang file na Tlc5940.o na matatagpuan din sa parehong folder. Sa wakas ay muling simulan ang IDE. Maaari ka ring mag-refer sa mga channel ng pangalawa at karagdagang sunud-sunod na TLC5940 mula sa una. Iyon ay, ang una ay 0 ~ 15, ang pangalawa ay 16 ~ 29, at iba pa.

Hakbang 6: Pagkontrol sa Mga Servos Gamit ang TLC5940

Habang bumubuo ang TLC5940 ng output ng PWM (pulso-width modulation), mainam din ito sa pagmamaneho ng mga servo. Tulad ng mga LED - maaari mong makontrol ang hanggang labing anim nang sabay-sabay. Mainam para sa paglikha ng mga robot na tulad ng spider, mga kakaibang orasan o paggawa ng ingay.

Kapag pumipili ng iyong servo, tiyaking hindi ito kumukuha ng higit sa 120 mA kapag tumatakbo (ang maximum na kasalukuyang bawat channel) at pakinggan din ang seksyong "Pamamahala ng kasalukuyang at init" sa dulo ng tutorial na ito. At gumamit ng panlabas na lakas sa mga servo, huwag umasa sa linya ng 5V ng Arduino.

Ang pagkonekta ng isang servo ay simple - ang linya ng GND ay kumokonekta sa GND, ang 5V (o supply voltage lead) ay kumokonekta sa iyong 5v (o iba pang angkop na supply) at ang servo control pin ay kumokonekta sa isa sa mga output ng TLC5940. Panghuli - at ito ay mahalaga - ikonekta ang isang 2.2kΩ risistor sa pagitan ng ginagamit na TLC5940 output pin at 5V. Ang pagkontrol sa isang servo ay hindi gaanong naiiba sa isang LED. Kailangan mo ang unang dalawang linya sa simula ng sketch:

# isama ang "Tlc5940.h" #include "tlc_servos.h"

pagkatapos ang sumusunod sa void setup ():

tlc_initServos ();

Susunod, gamitin ang sumusunod na pagpapaandar upang mapili kung aling servo (channel) ang gagana at ang kinakailangang anggulo (anggulo):

tlc_setServo (channel, anggulo);

Tulad ng mga LED maaari kang mag-grupo ng ilan sa mga ito, at pagkatapos ay isagawa ang utos gamit ang:

Tlc.update ();

Kaya't tingnan natin ang lahat ng iyon sa pagkilos. Ang sumusunod na halimbawa ng sketch ay nagwawalis ng apat na servo sa 90 degree:

# isama ang "Tlc5940.h" #include "tlc_servos.h"

walang bisa ang pag-setup ()

{tlc_initServos (); // Tandaan: ibababa nito ang PWM freqency pababa sa 50Hz. }

walang bisa loop ()

{para sa (int anggulo = 0; anggulo = 0; anggulo--) {tlc_setServo (0, anggulo); tlc_setServo (1, anggulo); tlc_setServo (2, anggulo); tlc_setServo (3, anggulo); Tlc.update (); antala (5); }}

Ipinapakita ng video ang sketch na ito sa pagkilos na may apat na servo.

Kung ang mga servos mo ay hindi umiikot sa tamang anggulo - halimbawa humiling ka ng 180 degree at paikutin lamang ito hanggang 90 o doon, kailangan ng kaunting labis na trabaho.

Kailangan mong buksan ang tlc_servos.h file na matatagpuan sa folder ng TLC5940 Arduino library at mag-eksperimento sa mga halaga para sa SERVO_MIN_WIDTH at SERVO_MAX_WIDTH. Halimbawa baguhin ang SERVO_MIN_WIDTH mula 200 hanggang 203 at SERVO_MAX_WIDTH mula 400 hanggang 560.

Hakbang 7: Pamamahala sa Kasalukuyang at Init

Tulad ng nabanggit kanina, ang TLC5940 ay maaaring hawakan ang isang maximum na 120 mA bawat channel. Matapos ang ilang eksperimento maaari mong mapansin na ang TLC5940 ay nag-iinit - at ok lang iyon.

Tandaan na mayroong isang maximum na limitasyon sa dami ng lakas na maaaring mapawi bago sirain ang bahagi. Kung gumagamit ka lamang ng normal na mga LED na may iba't ibang hardin o mas maliit na mga servo, hindi magiging problema ang lakas. Gayunpaman kung nagpaplano ka sa paggamit ng TLC5940 hanggang sa pinakamataas - mangyaring suriin ang mga tala na ibinigay ng mga may-akda ng library.

Konklusyon

Sa sandaling muli ay papunta ka sa pagkontrol ng isang hindi kapani-paniwalang kapaki-pakinabang na bahagi sa iyong Arduino. Ngayon sa ilang imahinasyon maaari kang lumikha ng lahat ng uri ng mga visual display o magsaya sa maraming mga servo.

Ang post na ito ay dinala sa iyo ng pmdway.com - na nag-aalok ng mga produktong TLC5940 kasama ang lahat para sa mga gumagawa at mahilig sa electronics, na may libreng paghahatid sa buong mundo.

Inirerekumendang: