Cuprins:

Arduino și TLC5940 PWM LED Driver IC: 7 pași
Arduino și TLC5940 PWM LED Driver IC: 7 pași

Video: Arduino și TLC5940 PWM LED Driver IC: 7 pași

Video: Arduino și TLC5940 PWM LED Driver IC: 7 pași
Video: 7.Tutorial TLC5940 (BASICANIMATION FUNCIONAMIENTO) 2024, Iulie
Anonim
Arduino și IC-ul driverului TLC5940 PWM LED
Arduino și IC-ul driverului TLC5940 PWM LED

În acest articol vom examina IC-ul driverului LED cu 16 canale Texas Instruments TLC5940. Motivul nostru pentru a face acest lucru este să demonstrăm un alt mod mai ușor de a conduce mai multe LED-uri - și, de asemenea, servomotoare. În primul rând, iată câteva exemple de TLC5940. Puteți comanda TLC5940 de la PMD Way cu livrare gratuită în toată lumea.

TLC5940 este disponibil în versiunea DIP și poate fi montat la suprafață. Este într-adevăr o parte convenabilă, permițându-vă să reglați luminozitatea a șaisprezece LED-uri individuale prin PWM (modulare la lățimea pulsului) - și puteți, de asemenea, să lanțați mai multe TLC5940 pentru a controla și mai mult.

În timpul acestui tutorial, vă vom explica cum să controlați unul sau mai multe IC-uri TLC5940 cu LED-uri și, de asemenea, să vedem cum să controlați servomotoarele. În acest moment, vă rugăm să descărcați o copie a TLC5940 (.pdf), deoarece vă veți referi la acesta prin acest proces. Mai mult, vă rugăm să descărcați și să instalați biblioteca Arduino TLC5940 de Alex Leone care poate fi găsită aici. Dacă nu sunteți sigur cum să instalați o bibliotecă, faceți clic aici.

Pasul 1: Construiți un circuit demonstrativ TLC5940

Construiți un circuit demonstrativ TLC5940
Construiți un circuit demonstrativ TLC5940

Următorul circuit este minimul necesar pentru a controla șaisprezece LED-uri de la Arduino sau compatibil. Îl puteți folosi pentru a experimenta diverse funcții și pentru a vă face o idee despre ceea ce este posibil. Vei avea nevoie:

  • Un Arduino Uno sau o placă compatibilă
  • 16 LED-uri normale, de zi cu zi, care pot avea un curent direct de până la 20 mA
  • un rezistor de 2 kΩ (dați sau luați 10%)
  • o ceramică 0.1uF și un condensator electrolitic de 4.7uF

Luați notă de orientarea LED-ului - și amintiți-vă că TLC5940 este un driver LED cu anod comun - astfel încât toți anodii LED sunt conectați împreună și apoi la 5V.

Pasul 2:

Pentru acest circuit special, nu veți avea nevoie de o sursă de alimentare externă de 5V - totuși este posibil să aveți nevoie de una în viitor. Scopul rezistorului este de a controla cantitatea de curent care poate curge prin LED-uri. Valoarea necesară a rezistorului este calculată cu următoarea formulă:

R = 39,06 / Imax unde R (în ohmi) este valoarea rezistorului și Imax (în amperi) este cantitatea maximă de curent pe care doriți să o curgeți prin LED-uri.

De exemplu, dacă aveți LED-uri cu un curent de 20 mA înainte - calculul rezistenței ar fi: R = 39,06 / 0,02 = 1803 Ohmi. Odată ce ați asamblat circuitul - deschideți ID-ul Arduino și încărcați schița BasicUse.pde care se află în folderul de exemplu pentru biblioteca TLC5940.

Ar trebui să vi se prezinte o ieșire similară cu cea afișată în videoclip.

Pasul 3: Controlul TLC5940

Acum că circuitul funcționează, cum controlăm TLC5940? În primul rând, funcțiile obligatorii - includ biblioteca la începutul schiței cu:

#include "Tlc5940.h"

și apoi inițializați biblioteca plasând următoarele în setarea nulă ():

Tlc.init (x);

x este un parametru opțional - dacă doriți să setați toate canalele la o anumită luminozitate imediat ce începe schița, puteți insera o valoare între 0 și 4095 pentru x în funcția Tlc.init ().

Acum pentru a porni sau opri un canal / LED. Fiecare canal este numerotat de la 0 la 15, iar luminozitatea fiecărui canal poate fi ajustată între 0 și 4095. Acesta este un proces în două părți … Mai întâi - utilizați una sau mai multe dintre următoarele funcții pentru a configura canalele necesare și luminozitatea respectivă (PWM nivel):

Tlc.set (canal, luminozitate);

De exemplu, dacă doriți să aveți primele trei canale pornite la luminozitate maximă, utilizați:

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

A doua parte este să utilizați următoarele pentru a actualiza TLC5940 cu instrucțiunile necesare din prima parte:

Tlc.update ();

Dacă doriți să opriți toate canalele simultan, pur și simplu utilizați:

Tlc.clear ();

Pasul 4:

Nu trebuie să apelați un TLC.update () după funcția de ștergere. Următorul este un exemplu rapid de schiță care setează valorile luminozității / PWM ale tuturor canalelor la diferite niveluri:

#includeți "Tlc5940.h" void setup () {Tlc.init (0); // inițializați TLC5940 și dezactivați toate canalele}

bucla nulă ()

{for (int i = 0; i <16; i ++) {Tlc.set (i, 1023); } Tlc.update (); întârziere (1000); for (int i = 0; i <16; i ++) {Tlc.set (i, 2046); } Tlc.update (); întârziere (1000); for (int i = 0; i <16; i ++) {Tlc.set (i, 3069); } Tlc.update (); întârziere (1000); for (int i = 0; i <16; i ++) {Tlc.set (i, 4095); } Tlc.update (); întârziere (1000); }

Capacitatea de a controla luminozitatea individuală pentru fiecare canal / LED poate fi, de asemenea, utilă atunci când controlați LED-urile RGB - puteți selecta cu ușurință culorile necesare prin diferite niveluri de luminozitate pentru fiecare element. O demonstrație este prezentată în videoclip.

Pasul 5: Utilizarea a două sau mai multe TLC5940s

Puteți conecta în lanț destul de multe TLC5940 pentru a controla mai multe LED-uri. Mai întâi - conectați următorul TLC5940 la Arduino așa cum se arată în circuitul demonstrativ - cu excepția conectării pinului SOUT (17) al primului TLC5940 la pinul SIN (26) al celui de-al doilea TLC5940 - pe măsură ce datele se deplasează de la Arduino, prin primul TLC5940 la al doilea și așa mai departe. Apoi repetați procesul dacă aveți un al treilea etc. Nu uitați de resisotrul care stabilește curentul!

Apoi, deschideți fișierul tlc_config.h situat în folderul bibliotecii TLC5940. Schimbați valoarea NUM_TLCS cu numărul de TLC5940 pe care le-ați conectat împreună, apoi salvați fișierul și ștergeți și fișierul Tlc5940.o aflat și în același folder. În cele din urmă, reporniți IDE-ul. Puteți face apoi referire la canalele celui de-al doilea și la celelalte TLC5940 secvențial de la primul. Adică primul este 0 ~ 15, al doilea este 16 ~ 29 și așa mai departe.

Pasul 6: Controlul Servo-urilor cu TLC5940

Deoarece TLC5940 generează ieșire PWM (modulare la lățimea pulsului), este excelent și pentru conducerea servomotoarelor. La fel ca LED-urile - puteți controla până la șaisprezece simultan. Ideal pentru crearea de roboți ca de păianjen, ceasuri ciudate sau pentru a face ceva zgomot.

Atunci când alegeți servo-ul, asigurați-vă că acesta nu atrage mai mult de 120 mA atunci când funcționează (curentul maxim pe canal) și, de asemenea, țineți cont de secțiunea „Gestionarea curentului și căldurii” la sfârșitul acestui tutorial. Și utilizați alimentarea externă cu servo-uri, nu vă bazați pe linia Arduino de 5V.

Conectarea unui servo este simplă - linia GND se conectează la GND, cablul de 5V (sau cablul de tensiune de alimentare) se conectează la 5v (sau la o altă sursă adecvată de alimentare), iar pinul de control servo se conectează la una dintre ieșirile TLC5940. În cele din urmă - și acest lucru este important - conectați un rezistor de 2,2 kΩ între pinii de ieșire TLC5940 utilizați și 5V. Controlul unui servo nu este atât de diferit de un LED. Aveți nevoie de primele două rânduri la începutul schiței:

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

apoi următoarele în setarea nulă ():

tlc_initServos ();

Apoi, utilizați următoarea funcție pentru a selecta care servo (canal) să operați și unghiul (unghiul) necesar:

tlc_setServo (canal, unghi);

La fel ca LED-urile, puteți grupa câteva dintre acestea și apoi executați comanda cu:

Tlc.update ();

Deci, să vedem toate acestea în acțiune. Următorul schiță de exemplu cuprinde patru servome pe 90 de grade:

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

configurare nulă ()

{tlc_initServos (); // Notă: aceasta va scădea frecvența PWM la 50Hz. }

bucla nulă ()

{for (int angle = 0; angle = 0; angle--) {tlc_setServo (0, angle); tlc_setServo (1, unghi); tlc_setServo (2, unghi); tlc_setServo (3, unghi); Tlc.update (); întârziere (5); }}

Videoclipul arată această schiță în acțiune cu patru servouri.

Dacă servomotoarele nu se rotesc la unghiul corect - de exemplu, cereți 180 de grade și se rotesc doar la 90 sau în jur, este nevoie de puțină muncă suplimentară.

Trebuie să deschideți fișierul tlc_servos.h situat în dosarul bibliotecii Arduino TLC5940 și să experimentați valorile pentru SERVO_MIN_WIDTH și SERVO_MAX_WIDTH. De exemplu, modificați SERVO_MIN_WIDTH de la 200 la 203 și SERVO_MAX_WIDTH de la 400 la 560.

Pasul 7: Gestionarea curentului și a căldurii

Așa cum am menționat anterior, TLC5940 poate gestiona maximum 120 mA pe canal. După câteva experimente, este posibil să observați că TLC5940 se încălzește - și este în regulă.

Rețineți că există o limită maximă a cantității de putere care poate fi disipată înainte de distrugerea piesei. Dacă folosiți doar LED-uri normale de grădină sau servere mai mici, alimentarea nu va fi o problemă. Cu toate acestea, dacă intenționați să utilizați TLC5940 la maximum - consultați notele furnizate de autorii bibliotecii.

Concluzie

Încă o dată sunteți pe cale să controlați o parte incredibil de utilă cu Arduino. Acum, cu puțină imaginație, puteți crea tot felul de afișaje vizuale sau vă puteți distra cu multe servouri.

Această postare vă este adusă de pmdway.com - care oferă produse TLC5940, împreună cu orice pentru producătorii și pasionații de electronice, cu livrare gratuită în toată lumea.

Recomandat: