Category Archives: LED

ARM46: WS2812 RBG LED juostelė kitaip

Prieš septynius metus rašiau apie WS2812 RGB LED juostelę ir kaip ją valdyti su AVR. Naujam projektui kilo mintis panaudoti minėtus diodus pašvietimui. Tingėjau rašyti savo programą LED valdymui, tai pažiūrėjau internetuose kaip rekomenduoja STM32 procikui. Ir pirmieji pavyzdukai buvo su taimeriu, PWM ir pertraukimais. Kažkaip griozdiškai viskas atrodė ir dar mano projekte sunaudoti visi PWM signalai.

RGB LED W2812
(fotkė vogta iš interneto, vėliau pakeisiu)

O gal panaudoti tokius:
LEDas
Turiu visą špūlę tik nežinau kas tai.

Kiek paguglinau giliau ir radau elegantišką sprendimą su SPI. Netgi galimas DMA variantas. Man tereikia valdyti tik 6 diodus, tai DMA nenaudosim. Tiesa, po šio sprendimo lieka SPI CLK koja nepanaudojama. O ir pats SPI sunaudojamas. Principas tame, kad reikiamus signalo intervalus suformuojam su keliais bitais baite. Poto užtenka buferį išpumpuoti per SPI ir WS2812 pilnai viską supranta.
Metodas pilnai vogtas iš interneto, todėl va kopyraitas: “© 2008 – 2022 Martin van der Werff · Groningen, The Netherlands.”. Originalaus puslapio adresas: https://www.newinnovations.nl/post/controlling-ws2812-and-ws2812b-using-only-stm32-spi/.

Failiukai, jei nesinori pačiam spausdinti arba jei originalus puslapis dings: WS2812 SPI gcc C.

ARM36: Burbuliniai LED

Antikvarinis LED indikatorius, tikriausiai iš kokio nors tarybinio kalkuliatoriaus. Žãvi savo netobulumu:

burbulinis LED
АЛС318

Simboliai mažyčiai (todėl ir plastikinės linzės), šviesumas mizernas (prie tausojančių srovių). Bet savotiškai žavingas.
Tokiam indikatoriui pajungti reikia gana daug laidų ir dinaminės indikacijos. Demonstracijai panaudojau breadboard ir “bluepill” plokštę (STM32F103C8t)- mikroschema mažoka, beveik visos kojos sunaudojamos indikatoriui. Prie anodų (pliusinių elektrodų) reikia prikabinti kokius nors rezistorius, kad apriboti srovę per LED, tik 3mA statiniam režime per vieną segmentą. Naudojant dinaminę indikaciją leistina srovė 40mA, bet jei indikacija sustos, tai atia LEDams.
Continue reading →

Augaliniai LED

Nežinau ar tie purpuriniai LED kažkiek padeda žaliems augalams. Ir kažkaip nekilo ranka investuoti pinigus tokiom lempom. Tačiau prieš kelias dienas viena Lietuvos firma utilizavo kalną LED produkcijos ir ten buvo keletas tokių prožektorių. Dalis LED šviestuvų suveikdavo, tačiau po kelių minučių pradėdavo mirksėti ar mirgėti. Ir kai taip vyksta, manau visi šio blogo skaitytojai žino kas ten kaltas- kondensatoriai.

LED
Patys žibintai nežinomos galios, pardavėjas deklaruoja 13W (kaina 34€). LED matricoje dviejų rušių- mėlyni ir kažkokie su liuminiforu. Radiatoriai dideli, bet kontaktas tarp LED Al plokštelės ir radiatoriaus minimalus.
Continue reading →

Xicato LED moduliai

Kažkur renovuoja parduotuves ir keičia “mėsos” lemputes. Ten pagrinde stovi Philips HID lemputės, nuo 30 iki 75W. Tačiau kalba eina ne apie jas. Tobulėjant technologijom, atsirado LED lemputės. Jos beveik amžinos, tačiau jos genda. Ir tokiose lempose pačių lempučių nepakaitaliosi. O dėl gedimų… nu kondensatorių senėjimo niekas neatšaukė… Štai bendram Xicato XSM standartinės serijos datašyte parašyta:
Color Consistency – Maintained: C3 50,000hrs.
Lumen Maintenance: L80 50,000 hrs.

O kaip manot, kas parašyta “draiverio” kondensatoriaus datašyte? Tiesa, ten ne paprastas “kinas”, o Rubycon ZLH serijos kondikas. Ką rašo:
Load Life : 105°C 6000∼10000 hours.

Atspėkit ar kai kurie šie LED prožektoriai nemirksi? 🙂 O jei mirksi, tai jie keliauja į šiukšlyną.

O kai kurie netgi švyti, jei dirba kiek geriau aušinamam režime:
Xicato XSM8040-100/A2D
Continue reading →

Kiniškas niekaliukas arba 4×4 LED kubas

Kažkada vasaros metu užsakiau kinišką rinkinuką surinkti 4×4 LED kubą. Rinkinukas nėra brangus, kažkur puspenkto dolerio su atsiuntimu. Už tai gaunam PCB, kalną mėlynu (gal yra ir ne mėlynu) LEDu, kelis rezistorius, dvi mikroschemos 74HC595, visokios jungtys… Ir labai labai kiniškos instrukcijos kurios nieko nerodo. Todėl litavau pagal save ir padariau kiek atvirkščiai- LEDus pastačiau kita kryptim ir jie kitaip užsidega (softe teko invertuoti). Kaip konstruktorius pradedančiajam tinkamas, tačiau reikia žmogaus kuris turi kantrybę- lituoti ore tuos LEDus tikrai reikia nervų. Dabar mano nervai pašliję (nuo buitinio triukšmo), tai teko lituoti net dvi dienas.

LED 4x4 cube AVR atmega

Kai viską sulitavau, pakuičiau savo lobynus. Deja nei vienos “arduino” PCB neturiu, o kur turiu nesusiderina pinais su šituo rinkinuku. Kad reikia originalaus arduino rodo debilna 0,1″ jungtis pastumpta per pusę žingsnio.
Softas pridedamas prie konstruktoriau irgi ne fontanai… ypač patiko ši optimizacija:

if(value > 19) return;
if(charge != LOW && charge != HIGH) return;
if(charge == LOW)
{
switch (value)
{
case 0: HC_595_Temp &=~_BV(15); break;
case 1: HC_595_Temp &=~_BV(14); break;
case 2: HC_595_Temp &=~_BV(13); break;
case 3: HC_595_Temp &=~_BV(12); break;
case 4: HC_595_Temp &=~_BV(11); break;
case 5: HC_595_Temp &=~_BV(10); break;
case 6: HC_595_Temp &=~_BV(9); break;
case 7: HC_595_Temp &=~_BV(8); break;
case 8: HC_595_Temp &=~_BV(7); break;
case 9: HC_595_Temp &=~_BV(6); break;
case 10: HC_595_Temp &=~_BV(5); break;
case 11: HC_595_Temp &=~_BV(4); break;
case 12: HC_595_Temp &=~_BV(3); break;
case 13: HC_595_Temp &=~_BV(2); break;
case 14: HC_595_Temp &=~_BV(1); break;
case 15: HC_595_Temp &=~_BV(0); break;
case 16: digitalWrite(LED_Pin16,LOW); break;
case 17: digitalWrite(LED_Pin17,LOW); break;
...

ir panašiai. Iš esmės kiniškam softe kiekvienas LED aprašytas atskirai ir daromas 16×4 ciklas užpildyti tuos aštuonis baitus informacijos reikalingus displėjui. Ir dar visokio monstriško softo. Ką jau pasakyti, kad “raštai” surašyti į paprastą masyvą. Nutariau nesikankinti ir pasirašyti savo softą grynam C.
Mano variantas kiek paprastesnis ir kartu sudėtingesnis jei reikia suprogramuoti animaciją. Animacija saugoma baituose. Po du baitus vienam sluoksniui. Kiekvienas bitas atitinka vieną LED. Pati animacija saugoma progmem.
Visas softas sukasi per pertraukimą, pati serial out procedūra klasikinė, netikrinau ar tikrai reikalingos visos komandos (kad ir priverstinis CLK LOW įjungimas po ciklo). Tačiau viskas veikia.

4×4 LED Cube ATMEGA source kodas ir sukompiliuotas hex.

Dar vienas bambesys- dabar jau harwarėje. Kinai pataupė balastinius rezistorius. Suprojektavo tik po vieną rezistorių visam sluoksniui (nors į rinkinuką įdėjo daugiau rezistorių), todėl kai dega visas sluoksnis, LEDai dega silpniau nei tada, kai dega vos keli LEDukai.

LED 4x4 cube AVR atmega
Kairėje kaip padarė kinai, dešinėje kaip daryti geriau. Aišku dešinė schema irgi ne pyragai- viso sluoksnio LEDai teoriškai duoda sakysim 16x20mA=0.32A. O tiek tikrai neina per ATMEGOS vieną koją… ko pasekoje mikroschema dirba nekorektiškam režime. Gerai, kad ji tokia “fool proof” ir veikia, o ne susvyla. Šiaip, kam tada iš viso varginosi su tais rezistoriais… O jei norisi daryti teisingai, čia reikia pakabinti tranzistorių su leistina srove 0,5A ar daugiau ir viskas šviestu tolygiai. Pačios 74HC mikroschemos dirba daugmaž normaliu režimu, nes veikimo metu viena koja “draivina” tik vieną diodą.

AVR79: WS2812 RBG LED juostelė

Trumpas eksperimentas su kiniškais, individualiai kontroliuojamai (addressable) RBG LEDais. T.y. tai kaip ir ilga juostele su RGB LEDais kuriuose sumontuota maža mikroschema kuri leidžia užprogramuoti trijų RGB šviesos diodų intensivumą. Šviesos diodai (ir pati juostelė) valdosi tik per vieną duomenų laidą, t.y. protokolas asinchroninis ir jo veikimas priklauso nuo teisingo taimingo.

WS2812 individually addressable RGB LED control AVR

Pradžioje galvojau rašyti viską nuo nulio, bet poto nutariau ne vargti ir pasiieškojau source code internete. Radau kažkokį universalų, AVR procesoriukams. Nors pats kodas kaip ir universalus, ir turėtu duoti ispėjimus, kai makrosai nesuskaičiuoja, tačiau net kokią valandą kankinausi su kodu, nes signalai nesigavo su teisingais intervalais. Pasirodo, kad mano turimas ATMEGA162, grojantis ant 3,686MHz (cominis) yra kaip tik ant tos ribos, kada softas dar mano, kad sugebės taimingus suformuoti, bet WS2812 mikroschema visiškai su tuom nesutinka. Pakeitus kvarcą į 12MHz (USBinis), viskas iškarto pradėjo veikti.

Tavo vamzdyje arba tu vamzdis (Youtube) pilna filmukų, kur iš tokių LED eilučių pasidaro ištisus ekranus. Tačiau, norint pasidaryti normalios raiškos LED ekraną reikia investuoti į gana daug tokių LED eilučių. Gaunasi brangokas projektas. O ir tada su paprasta ATMEGA neprasisuksi, nes reikia organizuoti video informacijos apdorojimą ir video buferį atmintyje.

Ir aišku: WS2812 AVR ATMEGA source code ir kompiliuotas hex failas.

P.S. Vienas bugas WS2812 juostelėje- kažkodėl neteisingai veikia kai maitinimo įtampa daugiau kaip ~4V. Pradeda fušeruoti. Gal dėl to, kad sujungtas Vcc ir Vled juostelėje, muša stiprius trigdžius? Nes teoriškai, turi veikti net ir nuo 7V…

Konstruktorius: LED laikrodis

Viename dukteriniam alibaba webšope nupirkau konstruktorių. Tai LED laikrodukas su korpusu. Kaina- 9.99$. Siuntė labai ilgai ir dar nebuvo trackingo. Ir kaip nebuvo galimybės užtrumpinti kinus kaip galima aliexprese. Tačiau, 10 doleriu mokslo labui… nesvarbu. Bet visdėlto siuntinį gavau.
Pasirinkau neutralią žalią spalvą, o pats laikrodis atitiko pagrindinį mano reikalavimą- jis turi RTC mikroschemą ir rezervinį maitinimo šaltinį.

LED laikrodis konstruktorius
Siuntinyje du paketai- korpusas ir pats konstruktorius. Čia dėl to, kad už pigiau galima nusipirkti tik patį laikroduką, o korpusą drožti pačiam.
Continue reading →

LED lempų fiasko

Jau rašiau, kad pas mane buvo LED lempų fiasko. Pradžioje nusipirkau mažesnio galingumo lemputę (rodos 4W) ir ji vis dar puikiai šviečia. Poto susigundžiau imti stipresnes. Nuspirkau porelę, rodos 8 arba 9 kiniškų vatų. Pradžioje jos švietė puikiai, bet neilgai. Po savaitės- dviejų, lemputės pradėjo visaip mirgėti ir pamiro.

LED filament lamp failure
Skrodimas parodė, kad viduje buvo pajungta mišriai- 3 LED “pagaliukai” lygiagrečiai ir nuosekliai dar vienas toks komplektas. Vieno LED “pagaliuko” darbinė įtampa kažkur apie 60V prie nežinomos srovės. Visa bėda, kad lemputė tikrai užturbinta ir vienas “pagaliukas” susifeilino.
Continue reading →

LED eilutės. Kokia galia?

LED strip from TV
Iškreiptai ilga iliustracija. Tai kelios LED eilutės išluptos iš LED LCD televizorių. Ju pajungimas kaip ir standartizuotas- trys pinai, vienas bendras pliusas ir du minusai.
Kaip matosi iš ilgos nuotraukos, LEDukai kaip ir vienodi (rodos ten du ar daugiau viename korpuse), tačiau pačios konstrukcijos ilgis skiriasi. Skiriasi ir LEDų kiekis. Trumpesnė- 60 vienetų, ilgesnė- 72.
Nors ir tai aliumininė PCB, eksperimento metu primečiau, kad per LED grandinę gali tekėti max 30mA, tai per vieną modulį- 60mA.
Ilgesni moduliai turi apie 101V darbinę įtampą, trumpesni- 84..85V.
Tai duoda ilgesniems 6W, trumpesniems 5W galios. Bet ar tai riba? Kol kas internetuose neradau jokios informacijos apie šiuos modulius.
Beja, prieš 3 metus sumontavau tokius modelius savo namų WC. Kol kas viskas veikia, tik gal kiek padidėjo mėlynos spalvos. Šiaip, šis apšvietimas optimizuotas LCD matricom, tai jis labai išryškina … geltoną spalvą. Tikriausiai suprantate ką aš turiu omenyje 🙂

Po fiasko su “led fillament bulb”, man liko tos lempos ala 8W draiveris (matosi nuotraukoje), tai jis puikiausiai veikia su šiais moduliais. Tik kažkodėl kiek nedaduoda galios. Matyt 8W tai buvo matuoja mažais ligotais kiniškais watukais.

jo… kad neiškraipyti puslapių dizaino esu priverstas dar prirašyti kelias eilutes teksto. Šiuo metu ant stalo guli keli projektai kurie visiškai netraukia širdies. Žaisti su metalu dar negaliu- kai toks “pavasarinis” oras, garaže siaubingai šalta. Biški ten pasitryniau ir varva nosis. Bandžiau remontuoti Apple Cinema 24″ LED monitorių, bet nepavyko. Visi komponentai atskirai veikia, o kartu- neveikia pašvietimas. Nors kogero panašio LED eilutės sumontuotos to monitoriaus matricoje. Beja ten LG matrica LM240WUG.
Kad nusiraminti nervus išardžiau prieš tai aprašytus power elektronikos modulius ir tranzus sudėjau į dėžutę- gal panaudosiu. Gal jau užtenka rašyti teksta? Jau palindo po iliustracija? Jo jo, jau lenda šita eilutė, tai kaip ir užbaigiu tekstą. 🙂

Gavau nusiskundimą, kad tekstas dar kažkiek lenda už paveiksliuko.
O dabar dar lenda?