Turinys:

„Arduino“ir TLC5940 PWM LED tvarkyklės IC: 7 žingsniai
„Arduino“ir TLC5940 PWM LED tvarkyklės IC: 7 žingsniai

Video: „Arduino“ir TLC5940 PWM LED tvarkyklės IC: 7 žingsniai

Video: „Arduino“ir TLC5940 PWM LED tvarkyklės IC: 7 žingsniai
Video: Output DC or AC Voltage using MCP4725 DAC with LCD and PWM to Voltage Converter with Arduino 2024, Liepa
Anonim
„Arduino“ir „TLC5940 PWM LED Driver IC“
„Arduino“ir „TLC5940 PWM LED Driver IC“

Šiame straipsnyje mes išnagrinėsime „Texas Instruments TLC5940“16 kanalų LED tvarkyklės IC. To priežastis yra pademonstruoti kitą, lengvesnį daugelio šviesos diodų ir servo valdymo būdą. Pirmiausia pateikiame keletą TLC5940 pavyzdžių. Galite užsisakyti TLC5940 iš „PMD Way“ir pristatyti nemokamai visame pasaulyje.

TLC5940 galima įsigyti DIP versijoje, taip pat montuojamas ant paviršiaus. Tai tikrai patogi dalis, leidžianti reguliuoti šešiolikos atskirų šviesos diodų ryškumą per PWM (impulso pločio moduliacija)-taip pat galite sujungti daugiau nei vieną TLC5940 grandinę, kad galėtumėte valdyti dar daugiau.

Šios pamokos metu paaiškinsime, kaip valdyti vieną ar daugiau TLC5940 IC su šviesos diodais, taip pat pažvelgsime į valdymo servus. Šiuo metu atsisiųskite TLC5940 kopiją (.pdf), nes ją nurodysite atlikdami šį procesą. Be to, atsisiųskite ir įdiekite Alexo Leone „TLC5940 Arduino“biblioteką, kurią galite rasti čia. Jei nežinote, kaip įdiegti biblioteką, spustelėkite čia.

1 žingsnis: sukurkite demonstracinę grandinę TLC5940

Sukurkite demonstracinę grandinę TLC5940
Sukurkite demonstracinę grandinę TLC5940

Ši grandinė yra minimali, reikalinga šešiolikai šviesos diodų valdyti iš „Arduino“arba suderinamo. Galite jį naudoti eksperimentuodami su įvairiomis funkcijomis ir suprasdami, kas įmanoma. Jums reikės:

  • „Arduino Uno“arba suderinama plokštė
  • 16 įprastų, kasdienių šviesos diodų, kurių srovė gali būti iki 20 mA
  • 2 kΩ rezistorius (duokite arba paimkite 10%)
  • 0,1uF keramikos ir 4,7uF elektrolitinis kondensatorius

Atkreipkite dėmesį į šviesos diodų orientaciją-ir atminkite, kad TLC5940 yra įprasto anodo šviesos diodų tvarkyklė-todėl visi LED anodai yra prijungti kartu, o po to prie 5 V.

2 žingsnis:

Šiai konkrečiai grandinei jums nereikės išorinio 5 V maitinimo šaltinio, tačiau ateityje gali prireikti. Rezistoriaus paskirtis yra valdyti srovės, kuri gali tekėti per šviesos diodus, kiekį. Reikalinga rezistoriaus vertė apskaičiuojama pagal šią formulę:

R = 39,06 / Imax, kur R (omais) yra rezistoriaus vertė, o Imax (amperais) yra didžiausia srovės suma, kurią norite tekėti per šviesos diodus.

Pavyzdžiui, jei turite šviesos diodus su 20 mA priekine srove - rezistoriaus apskaičiavimas būtų toks: R = 39,06 / 0,02 = 1803 omai. Surinkę grandinę, atidarykite „Arduino IDE“ir įkelkite eskizą „BasicUse.pde“, kuris yra pavyzdiniame TLC5940 bibliotekos aplanke.

Turėtumėte pateikti išvestį, panašią į tai, kas parodyta vaizdo įraše.

3 žingsnis: valdykite TLC5940

Dabar, kai grandinė veikia, kaip mes valdome TLC5940? Pirma, privalomos funkcijos - eskizo pradžioje įtraukite biblioteką su:

#include "Tlc5940.h"

ir tada inicijuokite biblioteką, įtraukdami į negaliojančią sąranką ():

Tlc.init (x);

x yra pasirenkamas parametras - jei norite, kad kai tik eskizas prasidėtų, visi kanalai būtų tam tikro ryškumo, galite įterpti reikšmę nuo 0 iki 4095 x į funkciją Tlc.init ().

Dabar įjunkite arba išjunkite kanalą/šviesos diodą. Kiekvienas kanalas yra sunumeruotas nuo 0 iki 15, o kiekvieno kanalo ryškumą galima reguliuoti nuo 0 iki 4095. Tai yra dviejų dalių procesas … Pirmiausia-naudokite vieną ar daugiau iš šių funkcijų, norėdami nustatyti reikiamus kanalus ir atitinkamą ryškumą (PWM lygis):

Tlc.set (kanalas, ryškumas);

Pavyzdžiui, jei norite, kad pirmieji trys kanalai būtų įjungti visu ryškumu, naudokite:

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

Antroji dalis yra tokia, kad atnaujintumėte TLC5940 su reikiamomis pirmosios dalies instrukcijomis:

Tlc.update ();

Jei norite išjungti visus kanalus vienu metu, tiesiog naudokite:

Tlc.clear ();

4 žingsnis:

Po aiškios funkcijos jums nereikia skambinti TLC.update (). Toliau pateikiamas trumpas eskizo pavyzdys, nustatantis visų kanalų ryškumo/PWM reikšmes į skirtingus lygius:

#include "Tlc5940.h" void setup () {Tlc.init (0); // inicijuoti TLC5940 ir išjungti visus kanalus}

tuštumos kilpa ()

{už (int i = 0; i <16; i ++) {Tlc.set (i, 1023); } Tlc.update (); vėlavimas (1000); (int i = 0; i <16; i ++) {Tlc.set (i, 2046); } Tlc.update (); vėlavimas (1000); (int i = 0; i <16; i ++) {Tlc.set (i, 3069); } Tlc.update (); vėlavimas (1000); (int i = 0; i <16; i ++) {Tlc.set (i, 4095); } Tlc.update (); vėlavimas (1000); }

Galimybė valdyti kiekvieno kanalo/šviesos diodo individualų ryškumą taip pat gali būti naudinga valdant RGB šviesos diodus - tada galite lengvai pasirinkti reikiamas spalvas naudodami skirtingus kiekvieno elemento ryškumo lygius. Vaizdo įraše parodyta demonstracija.

5 veiksmas: naudokite du ar daugiau TLC5940

Jei norite valdyti daugiau šviesos diodų, galite kartu sujungti daugybę TLC5940. Pirmiausia prijunkite kitą TLC5940 prie „Arduino“, kaip parodyta demonstracinėje schemoje, - nebent pirmojo TLC5940 SOUT kaištį (17) prijunkite prie antrojo TLC5940 SIN kaiščio (26), kai duomenys keliauja iš „Arduino“pirmasis TLC5940 į antrą ir pan. Tada pakartokite procesą, jei turite trečią ir tt Nepamirškite resisotr, kuris nustato srovę!

Tada atidarykite failą tlc_config.h, esantį TLC5940 bibliotekos aplanke. Pakeiskite NUM_TLCS reikšmę į sujungtų TLC5940 skaičių, tada išsaugokite failą ir ištrinkite failą Tlc5940.o, kuris taip pat yra tame pačiame aplanke. Galiausiai iš naujo paleiskite IDE. Tada galite sekti antrojo ir tolesnio TLC5940 kanalus iš eilės nuo pirmojo. Tai yra, pirmasis yra 0 ~ 15, antrasis - 16 ~ 29 ir pan.

6 žingsnis: Servo valdymas naudojant TLC5940

Kadangi „TLC5940“generuoja PWM (impulsų pločio moduliacija) išvestį, jis puikiai tinka ir servo valdymui. Kaip ir šviesos diodai - vienu metu galite valdyti iki šešiolikos. Idealiai tinka kurti į vorus panašius robotus, keistus laikrodžius ar kelti triukšmą.

Rinkdamiesi savo servo, įsitikinkite, kad jis veikia ne daugiau kaip 120 mA (didžiausia srovė vienam kanalui), taip pat atkreipkite dėmesį į šios pamokos pabaigoje esantį skyrių „Srovės ir šilumos valdymas“. Naudokite išorinę energiją su servo prietaisais, nepasikliaukite „Arduino“5 V linija.

Servo prijungimas yra paprastas - GND linija jungiasi prie GND, 5 V (arba maitinimo įtampos laidas) - prie jūsų 5 V (ar kito tinkamo maitinimo šaltinio), o servo valdymo kaištis jungiamas prie vieno iš TLC5940 išėjimų. Galiausiai - ir tai svarbu - prijunkite 2,2 kΩ rezistorių tarp naudojamo TLC5940 išvesties kaiščio ir 5 V. Servo valdymas nesiskiria nuo šviesos diodo. Eskizo pradžioje jums reikia pirmųjų dviejų eilučių:

#include "Tlc5940.h" #include "tlc_servos.h"

tada tuštumos sąrankoje ():

tlc_initServos ();

Tada naudokite šią funkciją, kad pasirinktumėte, kurį servo (kanalą) valdyti ir norimą kampą (kampą):

tlc_setServo (kanalas, kampas);

Kaip ir šviesos diodai, galite sujungti kelis iš jų ir vykdyti komandą:

Tlc.update ();

Taigi pažiūrėkime visa tai veikdami. Šis eskizo pavyzdys apima keturias servo sistemas 90 laipsnių kampu:

#include "Tlc5940.h" #include "tlc_servos.h"

negaliojanti sąranka ()

{tlc_initServos (); // Pastaba: tai sumažins PWM dažnį iki 50 Hz. }

tuštumos kilpa ()

{for (int kampas = 0; kampas = 0; kampas--) {tlc_setServo (0, kampas); tlc_setServo (1, kampas); tlc_setServo (2, kampas); tlc_setServo (3, kampas); Tlc.update (); vėlavimas (5); }}

Vaizdo įraše parodyta, kaip šis eskizas veikia su keturiomis servo sistemomis.

Jei servosūkiai nesisuka teisingu kampu - pavyzdžiui, prašote 180 laipsnių, o jie sukasi tik iki 90 ar daugiau, reikia šiek tiek papildomai padirbėti.

Turite atidaryti failą tlc_servos.h, esantį TLC5940 „Arduino“bibliotekos aplanke, ir eksperimentuoti su SERVO_MIN_WIDTH ir SERVO_MAX_WIDTH reikšmėmis. Pavyzdžiui, pakeiskite SERVO_MIN_WIDTH iš 200 į 203 ir SERVO_MAX_WIDTH iš 400 į 560.

7 žingsnis: Srovės ir šilumos valdymas

Kaip minėta anksčiau, TLC5940 gali valdyti ne daugiau kaip 120 mA vienam kanalui. Po kelių eksperimentų galite pastebėti, kad TLC5940 sušyla - ir tai gerai.

Atkreipkite dėmesį, kad yra maksimali galios, kurią galima išsklaidyti prieš sunaikinant dalį, riba. Jei naudojate tik įprastus sodo šviesos diodus ar mažesnes servo sistemas, maitinimas nebus problema. Tačiau jei planuojate maksimaliai naudoti TLC5940 - peržiūrėkite bibliotekos autorių pateiktas pastabas.

Išvada

Dar kartą jūs einate į neįtikėtinai naudingos „Arduino“dalies valdymą. Dabar, turėdami šiek tiek vaizduotės, galite sukurti įvairius vaizdinius ekranus arba linksmintis su daugybe servo.

Šį pranešimą jums pateikia pmdway.com - siūlo TLC5940 produktus kartu su viskuo, kas skirta gamintojams ir elektronikos entuziastams, ir pristatymas nemokamas visame pasaulyje.

Rekomenduojamas: