Tag Archives: LED

Balti LEDai ant 230V

Viskas prasidėjo nuo 5W balto diodo jungimo prie 230V tinklo. Tam tikslui buvo panaudotas kinietiškas korpusas ir balastas. Tačiau balastas nesuveikė- neužteko įtampos ant šio 5W diodo, nors balastas buvo skirtas 5W diodams. Tas diodas tai tikriausia du diodai sujungti nuosekliai tame pačiame korpuse, ar dar kažkokia kombinacija. Paprastai įtampos kritimas ant diodo apie 4V, tačiau ant šio diodo įtampa buvo apie 6V.

LED balast 230V

Balasto modulis kompaktiškas, tačiau, kas keista- korektiškai pagamintas. Kiti balastai kur mačiau, tai maksimaliai supaprastintos schemos ant diskretinių tranzų. Čia sumontuotos dvi mikroschemos ir vienas optotranzistorius.

LED balast 230V

Mikroschema tai Fairchild FSDH321, “Green Mode Fairchild Power Swithch (FPS)”- iki 11W galios impulsinis maitblokis. Darbui su 5W LED pats tas. Kita mikroschema tai paslaptis- manau kažkoks ST semiconductors TSM103 analogas. Joje yra du operaciniai stiprintuvai, vienas iš jų pajungtas prie įtampos etalono. Pasinagrinėjus schema ir kitus pavyzdžius, nustačiau, kad max įtampą riboja dviejų rezistorių daliklis (R4 ir R10). Originalioje schemoje R4 buvo 3.3K, pakeitus į 4.7K įtampa pakilo iki ~6V. Srovės reguliavimas nepakito. Tai aišku bėda, nes reikia 5W energijos- pakėlus įtampą, srovė turėjo buti kiek sumažinta. Tačiau diodas išlaikė (kol kas) šį kankinimą. Tačiau po kiek laiko “lemputė” labai įkaito. Todėl išsukau iš liustros ir perdarysiu srovės ribotuvą R13.

LED balast 230V

Supaprastinta LED balasto schema:

LED balast 230V

Išlyginta tinklo įtampa patenka į FPS mikroschemą ir per bootstrap paleidžia generavimą. Pradėjus tekėti srovei per antrinę trafo apviją, pradeda veikti feedback grandinė. Ji susideda ne iš vieno (kaip paprastam maitblokyje), o iš dviejų komparatorių: vienas matuoja įšėjimo įtampą, kitas- srovę.

ATMEGA USB 20: mini LED matrica iš Sure Electronics

Jau gana senokai esu nusipirkęs mažytę LED diodų matrica per eBay iš Sure Electronics firmelės. Tai kiniečių kompanija kuri gamina įvairiausią šlamštą ir pardavinėja on-line. Kada prie progos pažiūrėkit eBay ar jų pačių puslapiuose.

Tai visiškai nereikalingas prietaisas. Nebent pasistatyti ofise ant stalo ir laikas nuo laiko siusti žinutes kolegom. Kadangi tai vienos dienos projektas, tai visas softas gal ir nekulturingas- biški per daug darbo kad daryti kultūringai. Visgi reikėjo parašyti firmware ATMEGAI (panaudotos turimos bibliotekos), parašytas softas USB valdymui windows XP (iš esmės hackintas pavyzdys) ir parašytas nuo nulio MS Visual BASICe grafinis interfeisas paveiksliukų paišymui… Kai viska gražiai sutvarkysiu, visus source kode sudėsiu čia.

Mini Red LED matrica is Sure Electronics su ATMEGA ir USB

Matrica tai 6 moduliai su 8×8 diodų. Praktiškai, ten įlituota dvispalviai diodai, bet aš nesugebėjau įjungti žalios spalvos. Tuo labiau, kad nei Sure Electronics dokumentacijoje, nei Holtek čipo (HT1632) datašeete neparašyta apie daugiau kaip 384 diodų valdymą. Holtek kontroleris valdosi per 3 laidus, turi savyje 16 lygių PWM visai matricai. Dar yra mirksėjimo režimas, jei reikėtų padaryti kokį pranešimą, labiau atreipiantį dėmesį.

Mano hardwarė pati paprasčiausia ATMEGOS16 testinė plokštė. Viskas maitinasi iš USB, ir kai uždegiu visus diodus, šviesa ryškiai “pasėda”.

Čia windozinė GUI programa, kur galima paišyti vaizdelius. Dar pilna visokiausių DEBUG dalykėlių…
Softas Sure Electronics LED USB image

Nedidelis filmukas kuris bando pademonstruoti kaip greitai pasikeičia vaizdelis. Deja, realybėje jis kogero keičiasi greičiau.

Čia bus source kode, kuri susideda iš šių dalių:
\firmware:

  • holtek_ht1632.c
  • holtek_ht1632.h
  • usbconfig.h ir visas kalnas iš usbdrv kategorijos.

\commandline:

  • hidtool.c
  • hidtool.h
  • ir dar keli papildomi

\GUI:

  • LEDGUI.exe
  • LEDGUI visual basic source

\proteus:

  • Proteus schema protokolo analizavimuisi

Download: Source Code, exe, proteus, firmware, cmd line, visual basic

Keli balti LEDai iš mobilaus nuo poros AA batareikų

Užduotis: pajungti kelioliką baltų šviesos diodų (toliau LED) prie mažavolčio įtampos šaltinio. Galima jungti visus diodus lygiagrečiai, ir kiekvienam parinktį balastinį rezistorių. O jei jungti nuosekliai, reikia daugiau įtampos. Kai LED šaltinį panaudojau senus ekranėlių diodus iš Samsung SGH-E710 mobilių telefonų. Šis telefonas ypatingas tuo, kad jame įmontuotas didelis (fiziškai) diodas, kuris apšviečia fotografuojamą/filmuojamą objektą. Diodo parametrų nežinau, todėl nemanau, kad išspaudžiau iš jų visą galią.

Kaip stabilizatorių panaudojau mažutelaitį Texas Instruments čipą: TPS61040. Čipukas labai mažas, bet su kojytėm (SOT-23), todėl jį lengva prilituoti. Čipas angliškai vadinasi “LOW-POWER DC/DC BOOST CONVERTER IN SOT-23 AND SON PACKAGES” t.y. paprasčiausias impulsinis stabilizatorius. Įėjimo įtampa nuo 1.8V (kaip tik 1 ličio bačkutė arba du AA akumuliatoriai) iki 6V. Tuo tarpu išėjimas iki 28V. Vidinis raktas junginėja iki 400mA srovę.

Schema visiškai paprasta ir jai reikia labai paprastų detalių:

Multi white LED on 3V

O štai čia schema jau sulituota ant 23mm diametro plokštės. 45 omų šuntas padarytas iš dviejų 91 omo rezistorių. Apsauginis zeneris (stabilitronas) neprilituotas, nes jis “optional”. Aišku kondikai žymiai didesni nei reikalaujamas minimumas schemoje. Teorinė srovė skaičiuojasi pagal formulę: I=1.233/R.

Multi white LED on 3V

O čia jau patys šviesos diodai. Viename korpuse yra 4 šviesos diodai (po du diodus nuosekliai į porą kojų). Gaunasi kaip ir 16 diodų nuosekliai.

Multi white LED on 3V

Visa schema jau surinkta. Tas vienišas baltas diodas buvo skirtas testavimui ir eksperimentams (nesitikėjau tokio schemos mašumo- norėjau maitinti tik 4 diodus).

Multi white LED on 3V

Ir įjungta schema (maitinama iš 4V šaltinio, deja nuo 3V nėra pilno našumo):

Multi white LED on 3V

Įtampos kritimas ant diodų – 25V, srovė (matuota)- 26.6mA. Galia- 0.665W. Manau srovę dar galima kelti, nes kol kas prietaisas naudoja 198mA srovės (gi max 400mA!) prie 3.96V (0.784W)… Che 84% naudingumo koeficientas 🙂

LED automobilistui

Žinot koks populiariausias klausimas girdimas iš “automobilisto” apie LED? Kaip pajungti? O kas yra rezistorius? O kokį reikia dėti…

Rezistorius tai elementas, apribojantis srovę per šviesos diodą (LED). Pats šviesos diodas yra “srovės” vartotojas. Todėl paprasčiausias sprendimas- pajungti rezistorių ir ant jo sodinti perteklinę galią. Rezistoriaus varža skaičiuojama taip:

Susižinom, kiek mA srovės reikia diodui. Iš kažkur sužinom kiek įtampos krenta ant diodo (nuo 2 iki daug voltų. Daug tai pas specialius baltos šviesos diodus, kurie konstruktyviai sudaryti iš keleto diodų sujungtu nuosekliai diodo korpuse).

Įtampa ant rezistoriaus:

Urez=Umaitinimo - Udiodo.

Pastebim, kad Umaitinimo yra kiek kintama- kai išjungtas automobilio variklis- 12V, kai užkurtas- artėja prie 14V. O jei blogas generatorius- būna ir daugiau 🙂
Taigi jau Urez gaunasi kažkoks netikslus.

Rrez=Urez/Idiodo.

Praktinis pavyzdys:

Žalias šviesos diodas, Idiodo=15mA, Udiodo=3V.
UAutomobilio=12.5V.

Urez=12.5-3=9.5V
Rrez=9.5/0.015=633 omo.

Praktiškai pasirenkam rezistorių iš artimiausio standartinio dydžio, šiuo atveju 620 ±5% omu, bet skaičiuosim toliau tiksliai.

Pasiskaičiuojam, kas bus kai kaitaliosis įtampa:

Idiodo14=(14-3)/633=17mA
Idiodo11=(11-3)/633=13mA

Srovė kiek šokinėja, bet nėra labai baisus šuoliai. Tačiau jei reikia jungti daugiau diodų? Kiekvienam po rezistorių? Galima diodus (identiškus) jungti nuosekliai ir apseiti be papildomu balastinių rezistorių. Dėsniai tie patys, tik reikia imti didesnį diodų kritimą. Sakysim jungiam 3 tuos pačius diodus:

Udiodu=3x3V=9V.
Idiodu=15mA.
Urez=12.5-9=3.5V
Rrez=3.5/0.015=233 omai.

Jei pasidarė neigiami skaičiai, reiškia tiek diodų nuosekliai jungti negalima 🙂

Vėl pažiūrim kas bus kai užsives motoras:
Idiodo14=(14-9)/233=21mA oj… jau daugiau. Pabandykit paskaičiuoti, kas bus jei jungsime 4 diodus. Tikrai didelė tikimybė, kad diodai perdegs… O jei imti galingesnius diodus? Pasiskaičiuokit.

Tai ką daryti? Galima naudoti sudėtingus, modernius balastus. Bet jei nesinori vargintis, lituoti daugybe detalių. Ir dar brangių detalių… Ogi reikia panaudoti dvi detales- vieną rezistorių ir LM317 stabilizatoriu (apie 1Lt išlaidų). Ir gausis stabilizuotas srovės šaltinis.

LM317 gaminamas įvairaus galingumo ir įvairiuose korpusuose. Kuo stambesnis korpusas, tuo daugiau galios gali stabilizuoti aparačiukas.

Va jums aparačiukas surinktas su LM317L (smd soic8 korpusas) ir vienas SMD rezistorius (rodos 1206):
LED parinkimas rezistoriaus

O štai jums ir super sudėtinga schema bei srovės apskaičiavimo formulė:
LED parinkimas rezistoriaus

Mums reikia parinkti rezistorių pagal turimą srovę. Todėl, jei problemos su matematika, va jums formulė:

R=1.25/I (varža omais, srovė amperais).

Ir srovė bus stabilizuota. Todėl diodai bus apsaugoti ir švies tolygiai.

Tik nereikia užmiršti, kad pats reguliatorius turi tam tikrą minimalų įtampos kritimą (apie 3V, gal mažiau…). Schema tinkama ir baltiems diodams, ir mėlyniems. Ir kogero net lazeriams. Svarbu neviršyti reguliuojamos galios (priklauso nuo LM317 korpuso). Nors mikroschema gali dirbti ir 100oC temperatūroje, geriau taip neeksperimentuoti.

Supaprastintas pajungimas į STOP žibintus. Schema specifinė- be balastinių rezistorių.

Nauji šviesos diodai eksperimentams

Prisipirkom pigaus Kinietiško šlamsto eksperimentams. Čia diodai kurie paprastai būna priklijuoti prie aliumininių “šešiakampių”. Ju galia 1…3W, tačiau tokiu galingumu juos reikia paleidinėti su radiatorium.

Nauji LEDai

Testavau (ir matavau parametrus) su reguliuojamu srovės šaltiniu.

Nauji LEDai

R, G ir B LEDai sujungti nuosekliai, tikrinau kiek skiriasi šviesumas prie tos pačios srovės.

Nauji LEDai

Baltas šviesos diodas. Ten šalia kabo spalvotas, bet jis nedalyvauja eksperimente.

Nauji LEDai

Maišelis “tipo” UV diodų. Bet labai jau daug tos mėlynos spalvos. Ir dar itariu, kad nemažas kiekis IR spindulių, nes fotoaparatas išviso blogai fotkina.

Nauji LEDai

Kad pamatyti antrinį spinduliavimą ant pinigo reikia va kaip prikišti. Ir tai, su akim matosi, o su fotiku nesigauna.

Nauji LEDai

Iš kažkokio pinigu tikrinimo aparato, tokio senoviško, buvau ištraukes UV LEDų blokelį. Tokį senovišką, su metaliniai korpusais ir stiklinėm akutėmis.

Nauji LEDai

Va šitie UV diodai tikrai šviečia UV spindulius. Ir neakina fotoaparato.

Išvada- Kiniečiai visada siūlo pigiai, bet kartu ir nekokybiškai.

Truputis eksperimentiškai surinktos informacijos:
LBW041050B 1W LED Emitter - 60-Lumen White: I=0.288A, U=3.47V
LBR041040B 1W LED Emitter - 40-Lumen Red: I=0.3A, U=2.65V (srovė turi būti didesnė, tik kad mano srovės šaltinis iki 300mA)
LBG041050B 1W LED Emitter - 50-Lumen Green: I=0.3A, U=2.9 ... 3V
LBB041015B 1W LED Emitter - 15-Lumen Blue: I=0.294, U=3.4V

Dėl liumenu negaliu pasakyti, bet diodai šviečia silpnokai. Matuota apie 21oC temperatūroje.

RGB matrica: gama korekcija

Seniau minėjau, kad RGB matrica neteisingai perduoda pustonius. Kiek pasiknaisiojes internete radau terminą “gamma correction” kuri naudojama manau visuose displėjuose. Vikipedija davė didelį straipsnį ir net baisuoklišką formulę kaip skaičiuojama gama (γ):
formule

Tačiau man reikėjo paskaičiuoti ne pačią gamą, bet korekcinę lentelę. Po trumpos paieškos radau šį algoritmą:
brightness = (255# * ((x / 255#) ^ (1# / gama))) + 0.5

Parašiau trumpą programėlę ROM reikšmių lentelės generavimui, o lentelė vėliau įrašoma į FPGA. Va jums ekrano fotkė. (kažkaip patiko fotkinti ekraną o ne spausti print screen 🙂 )

gamma software

Toliau bus keletas matricos nuotraukų su įvairiom gamma reikšmėm. Man labiausiai patiko reikšmės tarp γ=2 ir γ=3. Primenu, kad tiesinė priklausomybė (γ=1) jau išbandyta ankščiau ir rezultatas buvo blogas.
Spauskit ant nuorodos: Continue reading →

RGB matrica: beveik 24 bitai

Supumpavau Verilog kodą iki tiek, kad pagaliau RGB matrica pradejo rodyti beveik 24 bitus informacijos. Kadangi neteisinga tiesinė LED priklausomybė, labai daug informacijos išsikraipo ir nesigauna didelis grožis. Diodų šviesumo ir žmogaus akies priklausomybė greičiausiai kokia logaritminė. Ir dar trūksta taktų (PWM moduliacija vykdoma pakadriui, nes taip sujungta schema. Todėl fps turi būti x kartų didesnė nei standartinė flicker-free), jei imti 256/4 mirgėsio nėra, o štai prie 256/2 jau jaučiasi žiaurus mirgėjimas. Taktinis dažnis ~120MHz. Nėra kur slėptis.

Keletas iliustraciju:

RGB beveik 24bit LED

Kaip viskas šviesu ir negražu. Visai nėra juodos spalvos. Tuo tarpu originaliam paveikslėlyje irgi nėra juodos spalvos, bet daug “tamsiai pilkos”:

RGB beveik 24bit LED
(2K kosminė odisėja ir demotivatoriai)

Labiau “hentai-manga” stiliaus paveiksliukas su popieriaus lapu:

RGB beveik 24bit LED

ir visas, nufotkintas tamsoje:

RGB beveik 24bit LED

Originalus paveiksliukas:

RGB beveik 24bit LED
“Your resistance only makes my penis harder!” posakis yra gana įžymus, žiūrėkit vikipedijoje apie tai. 🙂

Testinis failas (SOF/POF) įrašyti i FPGA ar konfiguracinę mikroschemą EPS4: POF/SOF.POF/SOF (fixed). New: POF/SOF. Naujos “firmware” source kodas.

RGB matrica: rašom softą

Kai pavažiuoja smegenys nuo FPGA programavimo (niekaip nepavyksta dalis 24 bitų konvertavimo į vieno bito PWM), peršokam į MS Visual Basic kurybą. Naudojam senovišką VB6 versija, nes .NET versija kažkaip nesugeba automatiškai konvertuoti senų mano projektų. O kai kuri nauja programulką, labai patogu naudotis senesnių programų gabaliukais- moduliais.

Pasirašiau sau darbinį variantą paveiksliuko konvertoriaus. Programa konvertuoja bet kokį paveiksliuką į RGB matricos dydžio atminties buferį ir taip pat, panaudojus lygio detektorius gamina vieno bito frame buferį.

RGB matrica: softas

Čia nuotrauka (netgi ne printscreenas!) su gyva matrica ir kompo ekranu. Matosi, kad matrica rodo tą patį kaip ir programos apatinis langelis. Programa gamina atminties image (vaizdą) Quartus Memory Initialization File (.mif) formatu. Jį buvo labai lengva aprašyti naudojant Basico komandomis.

O čia, šiaip, iliustracija. Dalis “timing” diagramos kurią teoriškai generuoja FPGA kodas:

timing

Kodas iš esmės toks: imam duomenis iš vidinės RGB kadro atminties, iš duomenų atimam kadro numerį (kadro numeris tai paprasčiausias skaitliukas). Taip gaunam primityvią PWM moduliacija kadrui. Teoriškai, šviesiausias taškas šviečia visus 256 karus iš 256. Tuo tarpu 50% ryškumo taškas šviečia tik 128 kadrus iš 256. Praktiškai 256 kadrai nesigavo- naudoju 64 lygius, nes neužtenka greičio (net ir dabar prasideda triukai- iš vidinės atminties skaitom duomenys tuo pat metu kaip ir keičiamas adreso duomenys- ir viskas taktuojama ~200MHz taktiniu dažniu). Taip gaunama 262144 spalvos. Iki 16M kiek trūksta… Šis rezultatas perrašomas į 1 bito kadro buferį. Kita dalis FPGA mikroschemos ima duomenis iš šio buferio iš 30 vietų po 16 bitų ir per 30 serial-shift registrų išpumpuojama į MBI mikroschemas. Atminties pumpavimas, modifikavimas ir pumpavimas atliekamas vienu metu, todėl įtariu gali kilti problemos su judančio vaizdo rodymu. Bet iki šios problemos nepriėjome.
Šiuo metu sunaudojom 2011 loginių elementų( iš 5980 galimu, 34%) ir 73728 bitus atminties (92160 galimu, 80%) ir beveik visus pinus- 79 (iš 98 galimu, 81%). Nors tiesa pinai tai ne mano problema, nes ne aš dariau plokštę…

RGB matrica: 1 bito frame buferis

Po ilgo laiko tarpo, pagaliau prisėdau prie savo RGB LED matricos. Kiek pavargau ir perrašiau visą matricos “taimingo” schemą į vieną Verilog modulį. Testinė schema buvo padaryta iš atskirų loginių elementų. Pakeliui išsisprendė keletas (bent jau teorinių) “gliukų” oscilogramose ir šiaip, schema užima mažiau vietos FGPA viduriuose.

Kol kas organizuotas vieno bito “frame” buferis (kadro atminties buferis). Duomenys iš FPGA vidinės atminties pastoviai pumpuojama į RGB matricą. Pakeliui išprestas rebusas dėl skirtingo RGB LEDų išsidėstymo ir “logiškos” video atminties. LEDai sulituoti kiek kitaip, ir video atmintis gaunasi kiek iškreipta, panašiai kaip ZX Spectrum kompiuteryje. Geriau jau schemoje viską išburti, nei ateityje vargti su paveikslėlio paruošimo softu.

RGB matrica
(Tie snukučiai jau iš pradžių buvo su pasuktom burnom, va paveiksliuko “source”: Paveiksliukas kuris turejo buti pavaizduotas. Dar įtariu nesklandumus Basic’o programoje).

Pakeliui teko pasirašyti softą MS Visual Basic’e, kuris paruošia video buferio atminties “dump’ą” kurį galima užkrauti į FPGA naudojant Quartus programinę įrangą.

Iškilo kelios naujos problemos:

  1. Raudona spalva žymiai prislobsta jei uždegami visi 16 diodų ant tos pačios mikroschemos.
  2. Skirtingų mikroschemų “blokai” turi skirtingus baltos spalvos balansus- matosi “siūlės” kai spalva pereina iš vieno bloko į kitą.
  3. Ir jau minėta bėda su žalia spalva- ji linkusi geltonuoti prie didesnio intensyvumo.
  4. Pastebliu mikro “gliukus” mėlynoje spalvoje- kažkokie, vos įžiūrimi, mėlynos spalvos vaiduokliukai.

Šiaip, aš išradinėju dviratį, bet užsienėtis kuris paliko komentarą mano puslapiuose kad jis irgi turi tokias pat matricas net nesiruošia pasidalinti kodu. Spaudžia. Nu ir eina jis peklon, man savo lameriško kodo negaila. Todėl viska skelbiu kaip “freeware”. 🙂

FPGA source code: RGB matricos 1bito buferis Quartus archyvas ir frame buferio turinys.

Bendras vaizdelis kaip atrodo schema: Matricos sujungimo schema pdf dokumentas.

Sekantis etapas ir planai:

Pilnas RGB, bet jau kelių bitų spalvų lygiai, nes su aštuoniom spalvom 21 amžiuje kiek primityvu… 🙂