LAKI PINGVINI
Nuts and Bolts (9): TLC5940
Podešavanje širine pulsa bez tilde
D. PETROVIĆ
1. mart 2020.

Šta uraditi ako nam na mikrokontroleru zatreba više izvoda da bi „dimovali” LED lampice? Ili ako pravimo robota sa gomilom servo motora? Jedno od rešenja je ići ka odgovarajućem mikrokontroleru koji sa svojim izvodima na kojima ima PWM, može izaći u susret projektu. Druga opcija je upotreba integralnog strujnog kola koje će našem mikrokontroleru dodati PWM digitalne izlaze. Jedno od takvih kola je i TLC5940 o kojem sada pišemo.

Šta je PWM?

Pulse Width Modulation, prema Arduino dokumentaciji, je tehnika koja omogućava analogne rezultate na digitalnim izvodima. Digitalna kontrola se zasniva na činjenici da uključivanjem i isključivanjem struje pravimo kvadratni talas. Vreme koje dobijemo zadržavanjem uključenog digitalnog izvoda se zove širina pulsa. Da bismo dobili različite analogne vrednosti potrebno je da podesimo širinu tog pulsa. Ako ovo uradimo dovoljno brzo izgledaće kao da na tom digitalnom izvodu imamo stabilan napon. U zavisnosti od radnog napona mikrokontrolera, zavisiće i o kojem naponu pričamo. Pa tako ako koristimo Atmega328p koji radi na pet volti, na PWM ćemo kontrolisati naizgled stabilan napon između nula i pet volti. Funkcijom analogWrite() biramo vrednosti u rezoluciji 0-255 koja će pri frekvenciji od oko 500 herca koliko je na 328p mikrokontroleru PWM frekvencija, proizvesti radne cikluse u postocima. Pa tako analogWrite(255) daje sto posto radni ciklus, iliti privid stabilnih pet volti, dok će analogWrite(127) dati pola radnog ciklusa. Na ovaj način uređaji na izlazu bivaju zavarani jer vide samo deo radnog ciklusa. Nemaju svi mikrokontroleri istu PWM frekvenciju, recimo SAM3X8E na Due ima PWM frekvenciju od čak jednog megaherca. Dublje ulaženje u rad sa PWM preko registara, ili čak zaobilaženje PWM preko bilo kojeg digitalnog izvoda, a preko delayMicroseconds() funkcije bi zauzelo mnogo više prostora u časopisu od onog koji imamo na raspolaganju za ceo SK LABS.

Back to TLC5940

TLC5940 je 12-bitni PWM kontroler. Može da se izbori sa konstantnim strujama od 0 do 60 miliampera i od 0 do 120 miliampera u zavisnosti od voltaže na ulazu kontrolera u sink konfiguraciji, te je pogodan za upravljanje većom količinom LED-ova. Ovo mogu biti LED pozadinskog osvetljenja, LED paneli i matrice, jednobojni i višebojni LED displeji i uopšteno služi za upravljanje LED-ovima. PWM se pri 12-bitnoj rezoluciji odvija u 4096 grayscale koraka. Pri korekciji tačaka rezolucija je šest bita, što je zapravo 64 koraka. Ova korekcija se pohranjuje u integrisani EEPROM. TLC5940 za komunikaciju sa mikrokontrolerom koristi SPI interfejs sa samo četiri upotrebljena pina gde zauzvrat daje 16 PWM kanala. Dodavanjem više ovakvih integralnih kola u lanac, sa samo četiri pina na mikrokontroleru dobijamo 32, 48 ili čak 64 PWM kanala. Za eventualne greške čip koristi dva informaciona kola. LED open detection (LOD) signalizira prekinutu LED vezu na izlaznom terminalu, dok Thermal error flag (TEF) signalizira pregrevanje čipa.

Svih 16 izlaza na PDIP28 čipu su označeni sa OUT0-15 gde su prvi i poslednji sa jedne strane, dok su svi ostali sa druge. VPROG je multifunkcijski izvod, gde kada je na njemu ispisana logička nula, uređaj je u GS modu, dok je obrnuto u DC modu i možemo programirati EEPROM. Serial Data Input (SIN), Serial data Out (SOUT), Serial Data Shift Clock (SCLK) i XLAT su izvodi SPI interfejsa. BLANK izvod služi da kontroliše sve OUTn izvode. Kada je HIGH, svi OUTn izvodi su prisiljeni da budu OFF, a GS brojač se resetuje. Sa LOW, nastavlja se upravljanje OUTn izvodima. Čip se napaja naponima od tri do pet volti preko GND i VCC izvoda. IREF je referentni strujni terminal. DCPROG menja ulaz podataka. Kada je LOW, DC je povezan sa EEPROM-om, kada je HIGH DC je povezan sa DC registrom. Ovaj izvod ujedno i kontroliše upisa na EEPROM. GSCLK je referentni klok za grayscale kontrolu PWM. Na kraju, XERR je terminal koji nam sa LOW javlja greške.

LED chaser

Za naš primer koristimo Atmega328p i LED bar. Povezivanje ide prema šemi gde od dodatnih komponenti koristimo samo otpornik od dva kilooma na IREF izvodu. Određivanje vrednosti ovog otpornika je direktno vezano za količinu struje koja nam treba, a prema grafikonu iz tehničke dokumentacije. Mi smo naš LED bar limitirali na 20 miliampera za šta je Reference Resistor vs Output Current grafikon pokazao na dva kilooma. Ovu vrednost možemo dobiti i putem jednačine
R=39.06/Imax
gde je „Imax” maksimalna količina struje u amperima, a „R” vrednost otpornika koji nam treba.

Kao i uvek, gde je to moguće koristimo biblioteku. Za TLC5940 smo koristili Tlc5940.h biblioteku koju možete preuzeti sa adrese i. sk. rs/ 357355. Biblioteka nudi nekoliko primera, od osnovnih animacija, preko dimovanja LED-ova, pa do servo motora. U našem primeru ispod prvo dodajemo biblioteku, u setup funkciji pokrećemo Tlc objekat, dok se u loop funkciji dešava sva magija. S obzirom da smo naš LED bar povezali na OUT1-10 izvode proveravamo if petljom koji je izvod na redu i ako smo stigli do 10, vraćamo na početak, to jest 1. Funkcijom set() zadajemo dva parametra, prvi je redni broj izvoda, dok je drugi rezolucija širine pulsa. Sa 1024 mi imamo samo 25 odsto ciklusa na izvodima (od 4096) te će LED prividno dobijati nekih 1,25 volti. Sa update() funkcijom ispisujemo pripremljene vrednosti, dok sa clear() resetujemo čip (izvod BLANK). Na slici naravno ne možete videti kako to zapravo vizuelno izgleda, što od šume žica, što zbog činjenice da je papir nekako „statičan”, ali efekat je LED chaser.

#include „Tlc5940.h”

int i = 1;

void setup() {

Tlc.init(0);

}

void loop() {

if (i > 10) {

i = 1;

}

Tlc.set(i, 1024);

Tlc.update();

delay(200);

i++;

Tlc.clear();

Tlc.update();

delay(200);

}

Mi smo naš TLC5940 povezali direktno na 5V Arduina, što za potrebe testa nije sporno. Ako je gotov projekat u pitanju ili duže testiranje, eksterno napajanje čipa je imperativ, uz kondenzatore za redukciju šuma. Ako dodajemo više ovih čipova u lanac, potrebno je SOUT izvod prvog povezati na SIN drugog i tako dalje. Osim toga, za više njih je potrebno korigovati tlc_config.h fajl i promenljivoj NUM_TLC upisati broj čipova. Tada se OUT izvodi naprosto nadovezuju, pa tako nakon OUT16 prvog čipa prvi izvod drugog čipa postaje OUT17.


PRETHODNI TEKST
SLEDEĆI TEKST
Najčitanije
Igre
Telefoni
Hardver
Softver
Nauka
Aktuelno štampano izdanje
MAJ 2025
Microsoft Majorana 1
Kvantna topologija
Topološki kvantni računar otporan je na uticaj kosmičkog zračenja, ali i dalje mora da se ohladi skoro do apsolutne nule...
AMD Ryzen 9 9950X3D
Jedan, da svima vlada
Ako vam je potreban najbrži procesor, i za igranje, i za ozbiljnije zadatke, Ryzen 9 9950X3D nema konkurenciju...
Gigabyte GeForce RTX 5070 Ti Aero OC 16G i GeForce RTX 5070 Ti Gaming OC 16G
I za kreativce, i za igrače
Sasvim sposoban da se nosi sa 4K rezolucijom u svim igrama i pruži sasvim pristojne performanse, dok u 1440p apsolutno blista...
Asus ROG Strix Scar 18 (G835LX)
Fantastična zver i kako je kupiti (3)
Laptop namenjen onima koji „ne žale pare” da imaju ono što je trenutno najbolje i najbrže...
Deset najboljih Microsoft PowerToys alatki
Najbolji od najboljih
PowerToys Run je alatka kojoj treba da se okrenete ukoliko vam sistemska rutina za pretragu ne odgovara...
Apple iPhone 16e
Malo muzike za mnogo para
Problem nije samo cena i slabiji grafički podsistem, već i trajanje baterije...
Cemu 2.6
Wii U emulacija
Cemu omogućava pokretanje i privođenje kraju oko 57 procenata igara „napisanih” za Wii U...
.rs: nove usluge eUprave - novi propisi - najava 5G
Mnogo eNoviteta
U novom esDnevniku roditelji će dobijati notifikacije za ocene i izostanke...
Trgovinski rat Istoka i Zapada
Velika igra, nesagledive posledice
Kao u igri „kukavice”, dve supersile kreću se velikom brzinom jedna prema drugoj, izazivajući drugu da prva skrene...
Blue Prince
Jedinstveni dijamant i jedna od najoriginalnijih igara u poslednjih nekoliko godina...
Tempest Rising
Skupa i ambiciozna fotokopija legendarnog RTS klasika Command & Conquer...
South of Midnight
Magična igra koja izgleda kao živa bajka, animirana u stilu filmskog serijala „Spiderverse”...
© 2025 Svet kompjutera. Sva prava zadrzana.
Novi broj - Arhiva - Forum - O nama