Urob si sám lúč z matice LED. Adresovateľné LED matice

Niekedy je potrebné k mikrokontroléru pripojiť niekoľko sedemsegmentových indikátorov alebo LED maticu, pričom na zobrazenie informácií slúži dynamická indikácia. Podstatou dynamickej indikácie je postupné zobrazovanie informácií na indikátoroch. Nižšie uvedený diagram ukazuje príklad pripojenia niekoľkých sedemsegmentových indikátorov (napríklad so spoločnou katódou) na implementáciu dynamickej indikácie, vo všeobecnosti, berúc do úvahy bod, sa získa 8 segmentov, ale staromódnym spôsobom sú nazval sa tak. Všetky závery (anódy) segmentov rovnakého mena sú spojené dohromady, celkovo 8 vedení, ktoré sú pripojené k mikrokontroléru cez odpory. Spoločná katóda každého indikátora je pripojená k mikrokontroléru cez tranzistor.


Algoritmus indikácie je nasledovný: najprv nastavíme požadované logické úrovne na riadkoch v závislosti od toho, ktoré segmenty musia byť zapnuté na prvom indikátore (indikácia zľava doprava), pričom vysoká logická úroveň sa má zapnúť, nízka až vypnúť segment. Ďalej aplikujeme vysokú logickú úroveň na základňu tranzistora VT1, čím je spoločná katóda prvého indikátora pripojená k spoločnému vodiču, v tomto okamihu sa rozsvietia tie segmenty, na ktorých anódach je logická jednotka. Cez určitý čas(pauza) vypnite indikátor privedením nízkej logickej úrovne na bázu tranzistora, potom znova zmeňte logické úrovne na linkách v súlade s výstupnými informáciami určenými pre druhý indikátor a aplikujte zapínací signál na tranzistor VT2. Teda v poradí v kruhovom cykle prepíname všetky ukazovatele, to je celá dynamická indikácia.

Aby ste získali solídny obraz bez blikania, prepínanie musí prebiehať vysokou rýchlosťou, aby sa zabránilo blikaniu LED diód, obnovovacia frekvencia musí byť nastavená od 70 Hz a viac, ja ju zvyčajne nastavujem na 100 Hz. Pre vyššie uvedenú konštrukciu je pauza vypočítaná nasledovne: pre frekvenciu 100 Hz je perióda 10 ms, sú len 4 indikátory, respektíve doba žiaru každého indikátora je nastavená na 10/4 = 2,5 ms. V jednom kryte sú viacmiestne sedemsegmentové indikátory, v ktorých sú rovnomenné segmenty spojené vo vnútri samotného krytu, samozrejme na ich použitie je potrebné použiť dynamickú indikáciu.

Pre implementáciu dynamickej indikácie je potrebné použiť prerušenia pri pretečení jedného z časovačov. Nižšie je uvedený kód pomocou časovača TMR0:

;Implementácia dynamickej indikácie pre 4 sedemsegmentové indikátory;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; swapf STATUS,W ; clrf STATUS ; movwf STATUS_TEMP ; ; bcf ind1 ;vypnúť 1. indikátor bcf ind2 ;vypnúť 2. indikátor bcf ind3 ;vypnúť 3. indikátor bcf ind4 ;vypnúť 4. indikátor; incf list,F ;prírastok registra list movlw .5 ;skontroluj obsah registra list xorwf list,W ;skontroluj, či sa rovná 5 btfss STATUS,Z ; goto met1 ;číslo v registri listov sa nerovná 5 movlw .1 ;číslo v registri listov je 5: zapíš číslo 1 movwf list ;do registra listov ; met1 movlw .1 ;skontroluj obsah registra list xorwf list,W , rovná sa číslu 1 btfss STATUS,Z ; goto met2 ;číslo v registri listov sa nerovná 1: skok na met2 movf datind1,W ;číslo v registri listov sa rovná 1: skopíruj movwf PORTB ;obsah registra datind1 do registra PORTB bsf ind1 ;zapni 1. indikátor met2 movlw .2 ;skontrolujte obsah registračného listu xorwf list,W , rovná sa 2 btfss STATUS,Z ; goto met3 ;číslo v registri listu sa nerovná 2: skok na met3 movf datind2,W ;číslo v registri listu je 2: skopíruj movwf PORTB ;obsah registra datind2 do registra PORTB bsf ind2 ;zapni 2. indikátor goto exxit ;skoč na štítok exxit met3 movlw .3 ;skontroluj obsah registra list xorwf list,W , rovná sa 3 btfss STATUS,Z ; goto met4 ;číslo v registri listu sa nerovná 3: skok na met4 movf datind3,W ;číslo v registri listu je 3: skopíruj movwf PORTB ;obsah registra datind3 do registra PORTB bsf ind3 ;zapni 3. indikátor goto exxit ;skoč na štítok exxit met4 movf datind4,W ;kopírovať obsah registra datind3 movwf PORTB ;do registra PORTB bsf ind4 ;zapnúť 4. indikátor; movlw .100 ;zapis 156 do casoveho registra TMR0 movwf TMR0 ; ; movwf STAV ; swapf W_TEMP,F ; swapf W_TEMP,W ; ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Hlavný program ................. movlw b"11010011" ; OPTION_REG, čím sa nastaví interný ; nastavenie pomeru preddeličky 1:16 ; clrf list ;vynulovanie listu registra pred spustením; prerušenia pri pretečení TMR0, vykonané; clrf datind1 ;vymazanie registrov pre výstup informácií na clrf datind2 ;indikátory, je to ekvivalentné vypnutiu clrf datind3 ;indikátory, ako indikátory so spoločnou clrf datind4 ;katódou; bcf INTCON,T0IF ;vymazať príznak prerušenia pri pretečení TMR0 bsf INTCON,T0IE ;povoliť prerušenia pri pretečení TMR0 bsf INTCON,GIE ;povoliť globálne prerušenia; movlw b"00000110" ; 13.52 príklad výstupu movwf datind1 ; movlw b"11001111" ; movwf zo dňa2 ; movlw b"01101101" ; movwf zo dňa3 ; movlwb"01011011" ; movwf zo dňa4 ; ; . ................; .................; .................; ; koniec, koniec celého programu;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;Implementácia dynamickej indikácie pre 4 sedemsegmentové indikátory

;Príklad hodinovej frekvencie 4 MHz, strojový cyklus 1 µs

org 0000h ;spustenie vykonávania programu na adrese 0000h

goto Start ;prejdite na označenie Štart

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;Prerušte rutinu

org 0004h ;spustenie vykonávania podprogramu na adrese 0004h

movwf W_TEMP ;uložiť hodnoty registra kľúčov

swapf STATUS,W ;

movwf STATUS_TEMP ;

bcf ind1 ;vypnite 1. indikátor

bcf ind2 ;vypnite 2. indikátor

bcf ind3 ;vypnite 3. indikátor

bcf ind4 ;vypnite 4. indikátor

incf list,F ;prírastkový list registra

movlw .5 , skontrolujte obsah registračného listu

xorwf list,W ; rovné 5

btfss STATUS,Z ;

goto met1 ;číslo v registrovom liste sa nerovná 5

movlw .1 ;číslo v registri listov je 5: napíšte číslo 1

movwf list ;zaregistrovať list

met1 movlw .1 , skontrolujte obsah registra listov

xorwf list,W ; rovná sa číslu 1

btfss STATUS,Z ;

goto met2 ;číslo v registri listov sa nerovná 1: skok na met2

movf datind1,W ;číslo v registri listov je 1: kópia

movwf PORTB ; obsah registra datind1 do registra PORTB

bsf ind1 ;zapnite 1. indikátor

goto exit ;prejdi na označenie exit

met2 movlw .2 , skontrolujte obsah registra listov

xorwf list,W ; rovná sa číslu 2

btfss STATUS,Z ;

goto met3 ;číslo v registri listov sa nerovná 2: skok na met3

movf datind2,W ;číslo v registri listov je 2: kópia

movwf PORTB ; obsah registra datind2 do registra PORTB

bsf ind2 ;zapnite 2. indikátor

goto exit ;prejdi na označenie exit

met3 movlw .3 , skontrolujte obsah registra listov

xorwf list,W ; rovná sa číslu 3

btfss STATUS,Z ;

goto met4 ;číslo v registri listov sa nerovná 3: skok na met4

movf datind3,W ;číslo v registri listov je 3: kópia

movwf PORTB ; obsah registra datind3 do registra PORTB

bsf ind3 ;zapnite 3. indikátor

goto exit ;prejdi na označenie exit

met4 movf datind4,W ; skopírujte obsah registra datind3

movwf PORTB ;do registra PORTB

bsf ind4 ;zapnite 4. indikátor

exit bcf INTCON,T0IF ;resetovať príznak prerušenia pretečenia TMR0

movlw .100 ;zapíšte číslo 156 do registra časovača TMR0

swapf STATUS_TEMP,W ; obnovenie obsahu kľúčových registrov

swapf W_TEMP,F ;

swapf W_TEMP,W ;

retfie ;ukončiť rutinu prerušenia

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;Hlavný program

Štart ................. ; pôvodné nastavenie registrov

................. ;špeciálny účel

.................

bsf STATUS,RP0 ;na registráciu napíšte binárne číslo 11010011

movlw b"11010011" ;OPTION_REG, čím sa nastaví interný

movwf OPTION_REG ; zdroj hodín pre TMR0

bcf STATUS,RP0 ;povoliť preddeličku pred TMR0

;Nastavte pomer preddeličky na 1:16

clrf Shet ; pred spustením resetujte register listov

;pretečenie prerušenia TMR0, vykonané

;raz po zapnutí

clrf datind1 ; vymazať registre pre výstup informácií

clrf datind2 ;indikátory, ekvivalentné vypnutiu

clrf datind3 ;ukazovatele, keďže ukazovatele so spoločným

clrf datind4 ;katóda

bcf INTCON,T0IF ;resetovať príznak prerušenia pretečenia TMR0

bsf INTCON,T0IE ;povoliť prerušenia pretečenia TMR0

bsf INTCON,GIE; povoliť globálne prerušenia

movlw b"00000110" ; Príklad výstupu 13.52

movlw b"11001111" ;

movlw b"01101101" ;

movlwb"01011011" ;

................. ;

................. ;

................. ;

koniec ; koniec celého programu

V hlavnom programe sme najskôr nastavili časovač pomocou registra OPTION_REG, predtým som hovoril o používaní časovačov pre . Ďalej vymažeme register listov určený na zadávanie počtu od 1 do 4 pre každý ukazovateľ. Tento register sa inkrementuje v rutine služby prerušenia a tam sa upraví (bude počítať od 1 do 4), takže toto vymazanie sa vykoná raz po zapnutí. Na základe tohto registra určíme, ktorý ukazovateľ zaradiť a vydáme mu zodpovedajúce údaje. Ďalším krokom je vymazanie registrov ukladania informácií, pričom štyri registre dataind1,2,3,4 zodpovedajú štyrom indikátorom. Vymazanie je ekvivalentné vypnutiu indikátorov, keďže pri obsluhe prerušenia sa obsah týchto registrov prenesie do registra PORTB, ku ktorému sú pripojené anódy indikátora. Je to potrebné, aby sa po povolení prerušení na indikátoroch nezobrazovali žiadne odpadky, v zásade to nemožno urobiť, ak okamžite napíšete správne informácie pre výstup. Ďalej resetujte príznak prerušenia pretečenia časovača, povoľte prerušenia pretečenia TMR0 a nakoniec povoľte globálne prerušenia.

V rutine prerušenia najskôr vypneme všetky indikátory (aplikovaním nízkych logických úrovní na bázy tranzistorov), pretože nie je známe, ktorý z nich je zapnutý. Zväčšíme register hárku, kontrolujeme zhodnosť s číslom 5, ak je taká zhoda, napíšeme do registra číslo 1, keďže je potrebné počítať od 1 do 4. Ďalej skontrolujeme, ktoré číslo je v hárku register, ktorým načítame dáta z PORTB do PORTB informačných registrov (dataind) pre príslušný indikátor a zapneme ho. Potom resetujeme príznak prerušenia pretečenia TMR0, zapíšeme číslo 100 do časovača (výpočet tejto hodnoty je uvedený nižšie) na časové oneskorenie a ukončíme obsluhu prerušenia. Pri prvom prerušení sa rozsvieti prvý indikátor, pri druhom prerušení druhý atď. v kruhovom cykle. V hlavnom programe zostáva len načítať údaje do registrov na ukladanie informácií pre každý indikátor. V podprograme prerušenia nezabudnite uložiť a obnoviť hodnoty kľúčových registrov, o tom som písal v článku o.

Na výstup čísel je lepšie použiť generátor znakov vo forme dátovej tabuľky. Napríklad, aby sa na indikátoroch zobrazilo číslo 3456, musí byť rozdelené na číslice, zatiaľ čo na uloženie čísel číslic je lepšie použiť samostatné registre (od 0 do 9), potom tieto registre spustiť cez generátor znakov, čím získanie správnych bajtov (načítaných do dataind registrov) na zapálenie príslušných segmentov.

Frekvenciu generátora hodín budeme brať ako 4 MHz, cyklus stroja je 1 μs. Nech je obnovovacia frekvencia každého indikátora 100 Hz (perióda T = 10 ms), požadované časové oneskorenie je 10/4 = 2,5 ms. Faktor preddeličky pre TMR0 je nastavený na 1:16, pričom maximálne možné oneskorenie je 256x16 = 4096 µs a potrebujeme pauzu 2,5 ms. Vypočítajme číslo na zápis do TMR0: 256-((256x2,5)/4,096) = 256-156,25 = 99,75. Po zaokrúhlení dostaneme číslo 100.

Nižšie si môžete stiahnuť model programu Proteus, firmware a zdrojový kód s implementáciou dynamickej indikácie na 4-miestnom indikátore so spoločnou katódou pomocou mikrokontroléra PIC16F628A. Napríklad čísla 0000 sú zobrazené na indikátore; 0001; 0002; 13,52; 9764.

Teraz zvážte pripojenie matice s rozlíšením 8x8 pixelov (LED). Štruktúra matice sa zvyčajne uvažuje z hľadiska riadkov a stĺpcov. Na obrázku nižšie sú v každom stĺpci pripojené katódy všetkých LED a v každom riadku anódy. Reťazce (8 riadkov, LED anódy) sú pripojené cez odpory k mikrokontroléru. Každý stĺpec (LED katódy) je pripojený k mikrokontroléru cez 8 tranzistorov. Algoritmus indikácie je rovnaký, najskôr nastavíme potrebné logické úrovne na riadkoch, podľa ktorých majú svietiť LED v stĺpci, potom pripojíme prvý stĺpec (indikácia zľava doprava). Po určitej pauze stĺpec vypneme a zmeníme logické úrovne na riadkoch, aby sa zobrazil druhý stĺpec, potom pripojíme druhý stĺpec. A tak striedavo pendlovať všetky kolóny. Nižšie je schéma pripojenia matice k mikrokontroléru.


Celkovo je na pripojenie takejto matice potrebných 16 kolíkov mikrokontroléra, čo je dosť veľa, preto je na zníženie riadiacich vedení lepšie použiť sériové posuvné registre.

Najbežnejším sériovým registrom je mikroobvod 74HC595, ktorý obsahuje posuvný register na načítanie dát a uchovávací register, cez ktorý sa dáta prenášajú na výstupné linky. Načítanie dát do neho je jednoduché, na hodinovom vstupe SH_CP nastavíme logickú 0, na dátovom vstupe DS potom nastavíme požadovanú logickú úroveň, po ktorej prepneme hodinový vstup na 1, pričom hodnotu úrovne uložíme (na vstupe DS) vnútri posuvného registra. Zároveň sú dáta posunuté o jeden bit. Znova nastavte výstup SH_CP na 0, nastavte požadovanú úroveň na vstupe DS a zvýšte SH_CP na 1. Po úplnom načítaní posuvného registra (8 bitov) nastavte výstup ST_CP na 1, v tomto momente sa dáta prenesú do úložný register a privádzaný do výstupných vedení Q0 ... Q7, po ktorých resetujeme výstup ST_CP. Počas sekvenčného načítavania sa údaje posúvajú z Q0 na Q7. Pin Q7' je pripojený k poslednému bitu posuvného registra, tento pin je možné pripojiť na vstup druhého mikroobvodu, takže môžete načítať dáta do dvoch alebo viacerých mikroobvodov naraz. Pin OE prepne výstupné vedenia do tretieho (vysokoodporového) stavu, keď je naň privedená logická 1. Pin MR je určený na resetovanie posuvného registra, teda nastavenie nízkych logických úrovní na výstupoch spúšťačov registra. , čo je ekvivalentné načítaniu ôsmich núl. Nižšie je uvedený diagram načítania údajov do mikroobvodu 74NS595 s nastavením hodnoty 11010001 na výstupných vedeniach Q0 ... Q7 za predpokladu, že na začiatku boli nuly:


Zvážte pripojenie matice 8×8 k mikrokontroléru PIC16F628A pomocou dvoch posuvných registrov 74HC595, schéma je znázornená nižšie:


Dáta sa načítajú do čipu DD2 (riadenie logickej úrovne na riadkoch, LED anódy), potom sa prenesú cez pin Q7 na DD3 (ovládanie stĺpcov), najskôr načítame bajt, aby sme povolili stĺpec, potom bajt s logickými úrovňami v riadkoch. Stĺpce spínacej matice tranzistorov (LED katódy) sú pripojené k výstupným vedeniam DD3. Nižšie je uvedený programový kód na zobrazenie obrázka na matici:

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Implementácia dynamickej indikácie pre maticu s rozlíšením 8x8 ;Frekvencia generátora hodín napr. 4 MHz, takt stroja 1 µs org 0000h ;spustenie vykonávania programu od adresy 0000h goto Start ;skok na štítok Štart ;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Prerušenie rutiny org 0004h ;spustenie vykonávania podprogramu od adresy 0004h movwf W_TEMP ;uloženie hodnôt kľúčového registra ​​swapf STATUS,W ; clrf STATUS; movwf STATUS_TEMP ; ; movwf FSR_osn ;do registra FSR_osn movf FSR_prer,W ;obnovenie predtým uloženej hodnoty movwf FSR ;registra FSR z registra FSR_prer ;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;načítať obsah registra stolb do čipu movf stolb,W ;skopírovať obsah registra stolb movwf var ;do registra var met2 btfsc var,0 ;nastaviť výstup ds v súlade s btfss var,0 ; bcf ds; bcf sh_cp ; rrf var,F ;Posuvný register var právo pripraviť;ďalší bit goto met2 ;scetbit sa nerovná nule: skok na označenie met2 ;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;nahrať obsah registra INDF do čipu;74HC595 (sériový posuvný register) movf INDF,W ;kopírovať obsah registra INDF movwf var ;do registra var movlw .8 ;zapísať číslo 8 do registra scetbit, pre počítanie movwf scetbit ;prenesené bity met1 btfsc var ,7 ;nastav výstup ds podľa bsf ds ;hodnota 7. bitu registra var btfss var,7 ; bcf ds; bsf sh_cp ;hodinový výstup sh_cp na zachytenie údajov bcf sh_cp ; rlf var,F ;Posuňte register var doľava na prípravu;ďalší bit decfsz scetbit,F ;Zníženie s podmienkou registra scetbit goto met1 ;scetbit sa nerovná nule: Skok na označenie met1 ; bsf st_cp, hodiny výstupu st_cp na prenos načítaného bcf st_cp, bajtov na výstupné riadky čipov 74HC595; bcf STATUS,C ;vynulovanie bitu C stavu registra pred posunom rrf stolb,F ;ľavý posuvný register stolb ; incf FSR,F ;Zvýšte register FSR, pripravte ďalej ;Zaregistrujte sa na odoslanie údajov na 74HC595 decfsz list,F ;Znížte s podmienkou registra shet goto exxit ;Registr listu sa nerovná 0: Skok na ukončenie movlw data1 ;Registr listu sa rovná 0: Najprv zapíšte adresu movwf FSR ;Registrácia na ukladanie informácií do registra FSR movlw .8 ;Zápis čísla 8 do registra listov, na udržiavanie listu movwf ;Počítanie stĺpcov ; exit bcf INTCON,T0IF ;reset príznak prerušenia pretečenia TMR0 movlw . 124 ;zapis cislo 124 do casoveho registra TMR0 movwf TMR0 ; ; movf FSR,W ;Uložiť aktuálnu hodnotu FSR movwf FSR_prer ;Do FSR_prer movf FSR_osn ,W ;Obnoviť predtým uloženú hodnotu movwf FSR ;FSR z FSR_osn ; swapf STATUS_TEMP,W ;obnovenie obsahu kľúčových registrov movwf STATUS ; swapf W_TEMP,F ; swapf W_TEMP,W ; ; retfie ;opustenie podprogramu prerušenia;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Spustenie hlavného programu ................ ;Počiatočné nastavenie registrov ................. ;Špeciálny účel..... ............ bsf STATUS,RP0 ;zapíšte binárne číslo 11010011 do registra movlw b"11010010" ;OPTION_REG, čím sa nastaví interný movwf OPTION_REG ;zdroj hodín pre TMR0 bcf STATUS,RP0 ;predvoľba preddeličky TMR0, nastavte pomer preddeličky 1:8; movlw .8 ;zapis 8 do registra listu, pred spustením movwf shet ;pretečenie TMR0 preruší, vykoná sa;raz, po zapnutí movlw b"10000000" ;zapíš binárne číslo 10000000 do movwf stolb ;register stolb, vykoná sa raz 1. stĺpec; , po zapnutí; movlw data1 ;zapis adresu prveho registra (ukladacie registre movwf FSR_prer ;informacie) do registra FSR_prer, vykonane;raz po zapnuti; movlw .8 ;vymazanie 8 registrov výstupu informácií do movwf tmp ;matica, ekvivalentná vypnutiu movlw data1 ;matica movwf FSR ; met3 clrf INDF ; incf FSR,F ; decfsz tmp,F ; goto met3 ; ; bcf INTCON,T0IF ;vymazať príznak prerušenia pri pretečení TMR0 bsf INTCON,T0IE ;povoliť prerušenia pri pretečení TMR0 bsf INTCON,GIE ;povoliť globálne prerušenia; m1 movlw data1 ; Príklad výstupu R movwf FSR ; movlw b"00000000" ; movwf INDF ; incf FSR,F ; movlw b"01111111" ; movwf INDF ; incf FSR,F ; movlwb"00001001" ; movwf INDF ; incf FSR,F ; movlwb"00011001" ; movwf INDF ; incf FSR,F ; movlwb"00101001" ; movwf INDF ; incf FSR,F ; movlw b"01000110" ; movwf INDF ; incf FSR,F ; movlw b"00000000" ; movwf INDF ; incf FSR,F ; movlw b"00000000" ; movwf INDF ; ; .................; .................; .................; ; koniec, koniec celého programu;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;Implementácia dynamickej indikácie pre maticu s rozlíšením 8x8

;Príklad hodinovej frekvencie 4 MHz, strojový cyklus 1 µs

org 0000h ;spustenie vykonávania programu na adrese 0000h

goto Start ;prejdite na označenie Štart

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;Prerušte rutinu

org 0004h ;spustenie vykonávania podprogramu na adrese 0004h

movwf W_TEMP ;uložiť hodnoty registra kľúčov

swapf STATUS,W ;

movwf STATUS_TEMP ;

movf FSR,W ;uložiť aktuálnu hodnotu registra FSR

movwf FSR_osn ;do registra FSR_osn

movf FSR_prer,W ; obnoví predtým uloženú hodnotu

movwf FSR ;FSR z FSR_prer

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;74HC595 (sériový posuvný register)

movf stolb,W ; skopírujte obsah registra stolb

movwf var ;zaregistrovať var

movlw .8 ;zapíšte číslo 8 do registra scetbit, pre počítanie

movwf scetbit ;prenesené bity

met2 btfsc var,0 ;nastav ds vystup podla

bsf ds ; 7. bitová hodnota registra var

bsf sh_cp; výstup hodín sh_cp na zachytenie údajov

rrf var,F ; posun registra var právo pripraviť

; ďalší kúsok

decfsz scetbit,F ;zníženie s podmienkou registra scetbit

goto met2 ;scetbit sa nerovná nule: skok na označenie met2

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;74HC595 (sériový posuvný register)

movf INDF,W ; skopírujte obsah registra INDF

movwf var ;zaregistrovať var

movlw .8 ;zapíšte číslo 8 do registra scetbit, pre počítanie

movwf scetbit ;prenesené bity

met1 btfsc var,7 ;nastav ds vystup podla

bsf ds ; 7. bitová hodnota registra var

bsf sh_cp; výstup hodín sh_cp na zachytenie údajov

rlf var,F ;posun doľava var na prípravu

; ďalší kúsok

decfsz scetbit,F ;zníženie s podmienkou registra scetbit

goto met1 ;scetbit sa nerovná nule: skok na označenie met1

bsf st_cp ;hodiny výstupu st_cp na prenos načítané

bcf st_cp ;bajtov na 74HC595 výstupných riadkov

bcf STATUS,C ; pred posunom vymažte bit C stavového registra

rrf stolb,F ;ľavý posuvný register stolb

incf FSR,F ;prírastok registra FSR, pripraviť ďalšie

Zaregistrujte sa na odosielanie údajov na 74HC595

decfsz list,F ;zmenšenie pomocou listu stavu registra

goto exit ;listový register sa nerovná 0: skok na výstup

movlw data1 ;listový register je 0: napíšte adresu prvého

movwf FSR ;Zaregistrujte sa na ukladanie informácií do FSR

movlw .8 ;zapíšte číslo 8 do registra listov, pre referenciu

movwf list ;stĺpec počíta

movlw b"10000000" ;zapíšte binárne číslo 10000000 do

movwf stolb ;registrujte stolb, aby ste zahrnuli 1. stĺpec

exit bcf INTCON,T0IF ;resetovať príznak prerušenia pretečenia TMR0

movlw .124 ;zapíšte číslo 124 do registra časovača TMR0

movf FSR,W ;uložiť aktuálnu hodnotu registra FSR

movwf FSR_prer ;do registra FSR_prer

movf FSR_osn ,W ; obnoví predtým uloženú hodnotu

movwf FSR ;FSR od FSR_osn

swapf STATUS_TEMP,W ; obnovenie obsahu kľúčových registrov

swapf W_TEMP,F ;

swapf W_TEMP,W ;

retfie ;ukončiť rutinu prerušenia

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;Hlavný program

Štart ................. ;úvodné nastavenie registrov

................. ;špeciálny účel

.................

bsf STATUS,RP0 ;na registráciu napíšte binárne číslo 11010011

movlw b"11010010" ;OPTION_REG, čím sa nastaví interný

movwf OPTION_REG ; zdroj hodín pre TMR0

bcf STATUS,RP0 ;povoliť preddeličku pred TMR0

;Nastavte pomer preddeličky na 1:8

movlw .8 ;pred spustením zapíšte číslo 8 do registra listov

movwf Shet ; Pretečenie TMR0 prerušuje, beží

;raz po zapnutí

movlw b"10000000" ;zapíšte binárne číslo 10000000 do

movwf stolb ;registrujte stolb, aby ste zahrnuli 1. stĺpec

Informácie s logickými úrovňami pre riadky každého stĺpca sú uložené v 8 registroch na ukladanie informácií, ku ktorým sa pristupuje. Adresa prvého registra sa nazýva data1. Okrem prvotného zápisu registrov shet a stolb je potrebné do registra FSR_prer zapísať adresu prvého registra ukladania informácií (register je data1, zápis do FSR_prer sa vykoná raz, potom sa upraví v handler), až potom povoľte prerušenia pretečenia TMR0.

Pred povolením prerušení je žiaduce vyčistiť registre ukladania informácií, táto operácia sa vykonáva pomocou dodatočného registra tmp (ako počítadla) a nepriameho adresovania, vymazanie je ekvivalentné vypnutiu matice.

V rutine obsluhy prerušení načítame obsah registra stolb do čipu DD2 (pri prvom vstupe do handlera po povolení prerušení register obsahuje číslo 10000000, ako je uvedené vyššie). Načítanie začína od nízkeho bitu registra stolb, ktorý sa pri načítavaní posúva v smere z Q0 na Q7 (vo vnútri čipu DD2), algoritmus načítania bol diskutovaný vyššie, takže si myslím, že nebude ťažké pochopiť kód . Ďalej načítame obsah registra INDF do DD2, ide o jeden z registrov na ukladanie informácií, ktorého adresa je v FSR (pri prvom vstupe do handlera po povolení prerušení FSR obsahuje adresu prvého register ukladania informácií nazývaný dáta1). Načítanie začína od najvyššieho bitu registra INDF. Po načítaní uvažovaných 2 bajtov nataktujeme výstup st_cp, čím sa stiahnuté dáta prenesú na výstupné linky mikroobvodov DD2, DD3. Pri prvom vstupe do handlera sa teda prepne prvý stĺpec matice, v ktorom sa rozsvietia LED diódy, na anódach ktorých je vysoká logická úroveň, v súlade s obsahom registra data1 (tzv. prvý register uchovávania informácií).

Ďalej posunieme register stolb o jeden bit doprava, aby sme pripravili druhý stĺpec matice na prepnutie pri ďalšom vstupe do obsluhy prerušení. Príznak C registra STATUS musí byť pred posunom vymazaný, pretože k posunu dochádza cez tento príznak a jeho stav nie je v čase posunu známy. Po posune inkrementujeme register FSR a pripravíme ďalší úložný register (po registri data1) s úrovňami logických riadkov pre druhý stĺpec. Ďalej dekrementujeme listový register s podmienkou a ak sa nerovná nule, resetujeme príznak prerušenia pretečenia TMR0, zapíšeme číslo do časovača a ukončíme obsluhu prerušenia.

Keď nabudúce zadáte obslužný program, aktivuje sa druhý stĺpec matice atď. Pri vynulovaní listového registra (po prepnutí 8. stĺpca) sa do neho zapíše číslo 8 pre ďalší cyklus prepínania stĺpcov, navyše sa opraví hodnota registra stolb, adresa prvého registra ukladania informácií ( údaje1) sa zapisujú do registra FSR.

Vypočítajme časové oneskorenie pre časovač TMR0, hodinová frekvencia je 4 MHz, cyklus stroja je 1 µs. Aby sme sa vyhli blikaniu LED, vezmime obnovovaciu frekvenciu každého stĺpca ako 100 Hz (perióda T = 10 ms), časové oneskorenie je 10/8 = 1,25 ms. Pomer preddeličky TMR0 sme nastavili na 1:8, pričom maximálne možné oneskorenie je 256x8 = 2048 µs. Pre pauzu 1,25 ms by mal časovač počítať (256x1,25) / 2,048 = 156,25-krát, zaokrúhlením nahor dostaneme 156 impulzov. V súlade s tým je potrebné do časovača zapísať číslo 256-156 = 100. Nie je to však celkom správna hodnota, pretože vykonanie rutiny prerušenia trvá nejaký čas, v tomto prípade to trvá asi 190 µs, prepočítané so zohľadnením pri zohľadnení koeficientu preddeličky dostaneme 190/8 = 23,75 alebo 24 počtov. Správna hodnota pre zápis do TMR0 je: 100+24=124.

V hlavnom programe napíšeme 8 registrov na ukladanie informácií v súlade s tým, čo chceme zobraziť na matici. Nižšie je uvedený diagram vysvetľujúci výstup informácií do matice pre vyššie uvedený kód.


Okrem posuvných registrov existujú špecializované ovládače na zobrazovanie informácií na sedemsegmentových indikátoroch a LED matice, v tomto prípade samotný ovládač implementuje dynamickú indikáciu, zostáva doňho posielať údaje na zobrazenie. Skontroloval som jeden z týchto populárnych ovládačov v článku o.

Pod odkazom si môžete stiahnuť firmvér a zdrojový kód pre mikrokontrolér PIC16F628A s implementáciou dynamickej indikácie na matici 8x8 pomocou dvoch posuvných registrov 74HC595, schéma zapojenia bola diskutovaná vyššie. Na matrici sa striedavo zobrazujú písmená R, L, číslo 46, smajlík a len vzor v podobe kríža, táto animácia je znázornená na videu nižšie.

so značkami, . Čítať .

Zostavenie markízy na báze LED matice a Arduina je jednoduchá úloha, ktorú je možné vykonať aj doma. Na to, aby sa písmená pohybovali na LED displeji, nemusíte byť programátor a mať hlboké znalosti elektroniky. V tomto článku budeme analyzovať, ako zostaviť bežeckú linku z hotových LED matríc a Arduino Nano.

Čo sa bude vyžadovať?

Na implementáciu myšlienky potrebujete len veľmi málo detailov:

  • dva moduly LED pozostávajúce zo štyroch matíc 8 x 8 pixelov;
  • držiak na batériu štandardnej veľkosti "Krona";
  • 9 V batéria (CR-9V, ER-9V alebo ekvivalent);
  • dvojkolíkový spínač;
  • spojovacie vodiče;
  • Arduino Nano doska;
  • horúce lepidlo.

Schéma

Na doske plošných spojov použitého LED modulu sú 4 matice s rozmermi 8 x 8 pixelov. Každá LED doska je riadená integrovaným obvodom (IC) MAX7219. Tento IC je ovládač na ovládanie led displejov, matíc so spoločnou katódou a diskrétnych LED v množstve až 64 ks.

Pre pohodlnejšie vnímanie informácií zobrazovaných na LED displeji sa odporúča nainštalovať niekoľko modulov. Na tento účel sú kombinované do sériovo zapojených skupín, to znamená, že výstup prvého modulu (out) je pripojený k vstupu druhého modulu (in). Táto zostava pozostáva z dvoch modulov (16 matíc), ktorých dĺžka je celkom dostatočná na pohodlné čítanie celých viet.

zhromaždenie

Matricový modul môže mať kolíkové spojenie alebo kontakty na doske vo forme tlačených vodičov. Záleží na tom, ako sú prepojené. V prvom prípade sa na získanie spoľahlivého elektrického kontaktu používa zväzok s konektormi a v druhom prípade budú musieť byť nainštalované a spájkované prepojky.

Najprv však musíte spojiť oba moduly do jedného celku pomocou tavného lepidla. Termoplastické lepidlo nevedie elektrický prúd, čo znamená, že ho možno bezpečne naniesť na dosku plošných spojov. Lepidlo sa nanáša z koncov oboch dosiek, stlačí sa a nechá sa niekoľko minút. Po vytvrdnutí sú výstupné kontakty prvého bloku spojené so vstupnými kontaktmi druhého bloku podľa schémy:

  • VCC - VCC
  • GND-GND
  • D IN – D OUT
  • CS–CS
  • CLK - CLK

S opačná strana PCB s horúcim lepidlom Arduino Nano, priehradkou na batérie a spínačom. Detaily sú usporiadané tak, aby sa dali pohodlne používať.
V ďalšej fáze je Arduino pripojené k modulu LED pripojením vodičov k vstupu prvej matice. V závislosti od verzie modulu sa operácia vykonáva pomocou odpojiteľného spojenia alebo spájkovaním podľa nižšie uvedenej schémy:

  • VCC-5V
  • GND-GND
  • D IN - PIN 11
  • CS-PIN 10
  • CLK - PIN 13.

V záverečnej fáze montáže je potrebné pripojiť napájanie z batérie. Za týmto účelom je záporný kontakt (čierny drôt) z priehradky na korunku pripojený ku kolíku GND Arduina. Kladný kontakt (červený vodič) je pripojený k spínaču a potom k Arduino kolíku #30, ktorý je určený na napájanie napätia z neregulovaného zdroja. V testovacom režime môže byť ticker typu „urob si sám“ napájaný cez micro USB z počítača.
Po uistení sa o spoľahlivosti upevňovacích prvkov a kvalite elektrických pripojení začnú montovať puzdro. Môže byť vyrobený z hliníkového alebo plastového profilu, pretože prvky okruhu sa nezohrievajú. Farba, rozmery, stupeň ochrany a upevnenie krytu závisia od budúceho použitia zariadenia. V najjednoduchšom prípade je vhodná ochranná clona zo stavebného plastového rohového profilu s výrezom na vypínač.

Programovanie tickerov

Bežiaci linka z Arduino a LED modulov pod kontrolou MAX7219 je takmer hotová. Je čas prejsť k záverečnej programovej časti. Softvér (softvér) pre použité Arduino a ovládač k nemu musia byť nainštalované v počítači. Ďalej si musíte stiahnuť dve knižnice a skicu (špeciálny program, ktorý načíta a spustí procesor Arduino). Knižnice sa inštalujú so zatvoreným Arduino IDE v priečinku Documents - Arduino - Libraries. Potom stiahnu a spustia náčrt a skontrolujú prítomnosť knižníc a správnosť ďalších údajov.

Nastavenie náčrtu:

  • "počet horizontálnych zobrazení" označuje počet riadkov, v našom prípade 1;
  • "počet vertikálnych zobrazení" označuje počet matíc, v našom prípade 8;
  • "páska" označuje nápis zobrazený na displeji;
  • "int wait" nastavuje výstupnú rýchlosť v milisekundách.

Po kontrole zadaných údajov zostáva kliknúť na tlačidlo "stiahnuť". Potom odpojte od počítača, vložte batériu a spustite zariadenie.

Na záver by som rád dodal, že bežecká linka pre domácich majstrov je zostavená pomerne rýchlo aj bez zručností práce s Arduinom. Preto by ste sa tejto zložitej dosky nemali báť. Za zmienku tiež stojí, že jazdnú čiaru je možné predĺžiť zvýšením počtu matíc LED.

Prečítajte si tiež

LED matrice sa v posledných rokoch rozšírili do vonkajšej reklamy a rôznych informačných tabúľ. Docela svetlé, dynamické - dokonale priťahujú pozornosť a počas slnečného dňa neoslepnú. Každý z vás ich denne vidí v uliciach svojho mesta.
Ich distribúciu samozrejme uľahčila nízka cena (kvôli čínskym výrobcom) a jednoduchosť montáže obrazovky.

Ale čo keď sa pokúsite použiť takéto matice vo svojich zariadeniach na mikrokontroléroch? Aké je výmenné rozhranie a výstupná logika týchto matíc?
Skúsme na to všetko prísť.

Číňania ponúkajú ako samotné matrice rôznych veľkostí a s rôznym rozlíšením, tak aj ovládače na zobrazovanie obrázkov na nich s rôznymi jednoduchými efektmi, ako aj všetko potrebné príslušenstvo, prepojovacie káble, rámiky.
Matice sa nachádzajú ako jednofarebné (biela, žltá, červená, zelená, modrá) a 3-farebné (RGB). Označenie maticového modelu zvyčajne vyzerá ako Pxx alebo PHxx, kde xx je číslo udávajúce vzdialenosť medzi pixelmi v milimetroch. V mojom prípade je to P10. Navyše matice niektorých štandardných veľkostí sú nielen obdĺžnikové, ale aj štvorcové.

Možné možnosti pre veľkosti matrice



Máme teda bielu maticu 32 x 16 pixelov s rozmermi 320 x 160 mm, a teda medzipixelovú vzdialenosť 10 mm. Poďme sa na to pozrieť bližšie.
Čelný pohľad:

Tiež sa vám zdalo, že LED diódy sú nejaké oválne? Nemyslel si...


Nad LED diódami je vyrobený malý priezor, ktorý bráni slnečnému svetlu osvetľovať LED diódy.

Pohľad spredu s odstránenou plastovou maskou



Otočíme maticu a uvidíme dosku:


Na doske je veľa logických čipov. Pozrime sa, aké sú tieto mikroobvody:
1. 1 x SM74HC245D - neinvertujúci buffer
2. 1 x SM74HC04 - 6-kanálový menič
3. 1 x SM74HC138D - 8-bitový dekodér
4. 4 x APM4953 - zostava 2 P-kanálových MOSFETov
5. 16 x 74HC595D posuvný register s aretáciou
Dva 16-kolíkové konektory sú rozhranie, jeden z nich je vstupný (k nemu je pripojený ovládač obrazovky) a druhý je výstupný (k nemu je pripojená ďalšia matica v reťazci). Šípka na doske smeruje od vstupného konektora k výstupu.
Napájanie sa privádza na svorky v strede dosky. Napájacie napätie - 5V, maximálny prúd (keď sú všetky LED matice zapnuté) - 2A (pre bielu maticu).

Všetky vyššie uvedené informácie, ako aj ukážka matice vo videu nižšie. V ňom od 13:04 do 15:00 hovorím o závislosti jasu obrazovky od počtu matíc. Je to kvôli chybe v algoritme. Chyba bola opravená a teraz sa údaje načítajú skôr, ako sa obrazovka vypne.

Tiež ťa rád uvidím môj youtube kanál, kde stále veľa vecí pripájam k mikrokontrolérom.

Ďakujem vám všetkým za pozornosť!

Čas plynie nepozorovane a zdalo by sa, že nedávno zakúpené vybavenie je už mimo prevádzky. Takže po odpracovaní svojich 10 000 hodín si lampy môjho monitora (AOC 2216Sa) objednali dlhú životnosť. Najprv sa podsvietenie nezaplo na prvý krát (po zapnutí monitora sa podsvietenie po pár sekundách vypol), čo sa vyriešilo opätovným zapnutím/vypnutím monitora, časom bolo treba monitor vypnúť vypnuté / vypnuté už 3-krát, potom 5, potom 10 a v určitom okamihu nebolo možné zapnúť podsvietenie bez ohľadu na počet pokusov o jeho zapnutie. Lampy vytiahnuté na svetlo Božie sa ukázali byť s čiernymi okrajmi a legálne putovali do šrotu. Pokus o nasadenie náhradných lámp (boli zakúpené nové žiarovky vhodnej veľkosti) bol neúspešný (monitor dokázal niekoľkokrát zapnúť podsvietenie, ale rýchlo sa vrátil do režimu zapnutia-vypnutia) a zisťovanie príčin toho, čo by mohlo byť problém už v elektronike monitora ma priviedol k myšlienke, že bude jednoduchšie zostaviť si vlastné podsvietenie monitora na LED, ako opraviť existujúci invertorový obvod pre CCFL výbojky, najmä preto, že na sieti už boli články ukazujúce zásadnú možnosť takejto náhrady.

Monitor rozoberáme

Na tému rozoberania monitora už bolo napísaných veľa článkov, všetky monitory sú si navzájom veľmi podobné, takže v skratke:
1. Odskrutkujeme uchytenie zdroja monitora a jedinú skrutku v spodnej časti, ktorá drží zadnú stenu puzdra


2. V spodnej časti puzdra sú medzi prednou a zadnou stranou puzdra dva štrbiny, do jedného vložíme plochý skrutkovač a začneme snímať kryt zo západiek po celom obvode monitora (jednoducho jemným otočením skrutkovača okolo jeho osi a zdvihnutím krytu puzdra). Nie je potrebné vynakladať nadmerné úsilie, ale je ťažké vybrať puzdro zo západiek iba prvýkrát (počas opravy som ho mnohokrát otvoril, takže západky sa časom začali odstraňovať oveľa jednoduchšie).
3. Máme pohľad na inštaláciu vnútorného kovového rámu pred puzdrom:


Vyberieme dosku s tlačidlami zo západiek, vyberieme (v mojom prípade) konektor reproduktora a po odklopení dvoch západiek v spodnej časti vyberieme vnútorné kovové puzdro.
4. Vľavo vidíte 4 vodiče na pripojenie podsvietenia. Vyberieme ich miernym stláčaním, lebo. aby sa zabránilo vypadnutiu, konektor je vyrobený vo forme malého clothespin. Vytiahneme tiež široký kábel smerujúci k matrici (v hornej časti monitora) a stlačíme jeho konektor po stranách (pretože v konektore sú bočné západky, hoci to na prvý pohľad na konektor nie je zrejmé):


5. Teraz musíte rozobrať "sendvič" obsahujúci samotnú matricu a podsvietenie:


Po obvode sú západky, ktoré sa otvárajú miernym páčením pomocou rovnakého plochého skrutkovača. Najprv sa odstráni kovový rám, ktorý drží matricu, potom môžete odskrutkovať tri malé skrutky (bežný krížový skrutkovač nebude fungovať kvôli ich miniatúrnej veľkosti, budete potrebovať obzvlášť malý), ktoré držia maticovú riadiacu dosku a maticu je možné vybrať (najlepšie je položiť monitor na tvrdý povrch, napríklad na stôl pokrytý látkovou maticou, odskrutkovať riadiacu dosku, položiť ju na stôl a rozložiť cez koniec monitor a stačí zdvihnúť podsvietené puzdro zvislým nadvihnutím a matrica zostane ležať na stole v poradí - t.j. prikryť matricu ležiacu na stole zloženým podsvieteným puzdrom, omotať kábel cez koniec k riadiacej doske a priskrutkovaním riadiacej dosky opatrne zdvihnite zostavenú jednotku).
Ukazuje sa matica samostatne:


A podsvietený blok samostatne:


Podsvietený blok sa demontuje podobným spôsobom, len namiesto kovového rámu drží podsvietenie plastový rám, ktorý súčasne polohuje plexisklo slúžiace na rozptýlenie svetla podsvietenia. Väčšina západiek je po stranách a je podobná tým, ktoré držali kovový rám matrice (otvorte ich vypáčením pomocou plochého skrutkovača), ale po stranách je niekoľko západiek, ktoré sa otvárajú „do vnútra“ (treba stlačiť skrutkovačom tak, aby sa západky dostali do puzdra).
Najprv som si zapamätal polohu všetkých častí, ktoré sa majú odstrániť, ale potom sa ukázalo, že ich nebude možné zložiť „nesprávne“ a aj keď diely vyzerajú absolútne symetricky, vzdialenosti medzi západkami na rôznych stranách kovového rámu a upevňovacie výstupky po stranách plastového rámu, ktoré držia podsvietenie, neumožnia ich „nesprávnu montáž“.
To je vlastne všetko – demontovali sme monitor.

LED pásové osvetlenie

Najprv bolo rozhodnuté vyrobiť podsvietenie z LED pásu s bielymi LED 3528 - 120 LED na meter. Prvá vec, ktorá sa ukázala, bola, že šírka pásky bola 9 mm a šírka podsvietenia (a sedadla pre pásku) bola 7 mm (v skutočnosti existujú podsvietenia dvoch štandardov - 9 mm a 7 mm , ale v mojom prípade boli 7 mm). Preto sa po preskúmaní pásky rozhodlo odrezať 1 mm z každého okraja pásky, pretože. toto sa nedotklo vodivých dráh na prednej strane pásky (a na zadnej strane pozdĺž celej pásky sú dva široké napájacie vodiče, ktoré nestratia svoje vlastnosti znížením svojich vlastností o 1 mm pri podsvietení dĺžka 475 mm, pretože prúd bude malý). Len čo sa povie, tak urobí:


Rovnako úhľadné LED pásové svetlo orezané po celej dĺžke (na fotografii je príklad toho, čo sa stalo predtým a čo sa stalo po orezaní).
Budeme potrebovať dva pásy 475 mm pásky (19 segmentov po 3 LED na pás).
Chcel som, aby podsvietenie monitora fungovalo rovnako ako bežné (t. j. zapínalo a vypínalo sa ovládačom monitora), ale jas som chcel nastaviť „ručne“, ako na starých CRT monitoroch, pretože toto je často používaná funkcia a unavilo ma preliezať ponuku na obrazovke zakaždým, keď som stlačil niekoľko kláves (na mojom monitore klávesy vpravo a vľavo nenastavujú režim monitora, ale hlasitosť vstavaných reproduktorov , takže režimy bolo potrebné zakaždým zmeniť prostredníctvom ponuky). K tomu bol na sieti nájdený manuál k môjmu monitoru (pre koho je užitočný - priložený na konci článku) a na stránke s Power Board sa našli + 12V, On, Dim a GND podľa schémy , o ktoré máme záujem.


On - signál z riadiacej dosky na zapnutie podsvietenia (+ 5V)
Dim - ovládanie jasu podsvietenia PWM
+ 12V sa ukázalo byť ďaleko od 12, ale niekde okolo 16V bez zaťaženia podsvietenia a niekde okolo 13,67V pri zaťažení
Taktiež bolo rozhodnuté nerobiť žiadne PWM úpravy jasu podsvietenia, ale napájať podsvietenie jednosmerným prúdom (súčasne sa rieši problém s tým, že pri niektorých monitoroch nefunguje PWM podsvietenia pri veľmi vysoká frekvencia a niektoré oči sú z toho trochu unavenejšie). V mojom monitore bola frekvencia "natívneho" PWM 240 Hz.
Ďalej na doske boli nájdené kontakty, na ktoré je privedený signál On (označené červenou farbou) a + 12V na invertorovú jednotku (prepojka, ktorú treba odspájkovať, aby sa invertorová jednotka odpojila je označená zelenou farbou). (fotku je možné zväčšiť a zobraziť poznámky):


Lineárny regulátor LM2941 bol vzatý ako základ riadiaceho obvodu najmä preto, že pri prúde do 1A mal samostatný ovládací kolík On / Off, ktorý mal slúžiť na ovládanie zapnutia / vypnutia podsvietenia signálom On. z riadiacej dosky monitora. Je pravda, že v LM2941 je tento signál invertovaný (to znamená, že na výstupe je napätie, keď má vstup zapnutia / vypnutia nulový potenciál), takže som musel zostaviť invertor na jeden tranzistor, aby zodpovedal priamemu signálu zapnutia z riadiacej dosky. a invertovaný vstup LM2941. Schéma neobsahuje žiadne ďalšie excesy:


Výpočet výstupného napätia pre LM2941 sa vykonáva podľa vzorca:

Vout = Vref* (R1+R2)/R1

Kde Vref = 1,275 V, R1 vo vzorci zodpovedá R1 v obvode a R2 vo vzorci zodpovedá páru rezistorov RV1 + RV2 v obvode (zavedené sú dva odpory pre hladšiu reguláciu jasu a zníženie rozsahu regulovaných napätí premenlivým odporom RV1).
Ako R1 som vzal 1 kOhm a výber R2 sa vykonáva podľa vzorca:

R2=R1*(Vout/Vref-1)

Maximálne napätie, ktoré na pásku potrebujeme, je 13V (bral som o pár viac ako nominálnych 12V, aby som nestratil jas a páska prežije aj také mierne prepätie). Tie. maximálna hodnota R2 = 1000*(13/1,275-1) = 9,91kΩ. Minimálne napätie, pri ktorom páska ešte ako-tak svieti, je asi 7 voltov, t.j. minimálna hodnota R2 = 1000*(7/1,275-1) = 4,49kΩ. Náš R2 sa skladá z variabilného odporu RV1 a viacotáčkového trimra RV2. Získame odpor RV1 9,91 kOhm - 4,49 kOhm = 5,42 kOhm (vyberieme najbližšiu hodnotu RV1 - 5,1 kOhm) a nastavíme RV2 na približne 9,91 - 5,1 = 4,81 kOhm (v skutočnosti je najlepšie najprv zostaviť obvod, nastavte maximálny odpor RV1 a zmerajte napätie na výstupe LM2941 nastavte odpor RV2 tak, aby výstup mal požadované maximálne napätie (v našom prípade cca 13V).

Inštalácia LED pásika

Keďže po prestrihnutí pásky o 1 mm boli na koncoch pásky odkryté napájacie vodiče, nalepil som na puzdro elektrickú pásku v mieste, kde bude páska nalepená (bohužiaľ nie modrá, ale čierna). Zhora je nalepená páska (je dobré povrch zohriať fénom, pretože lepiaca páska oveľa lepšie drží na teplom povrchu):


Ďalej sa namontuje zadná fólia, plexisklo a svetelné filtre, ktoré ležia na vrchu plexiskla. Pozdĺž okrajov som pásku podoprel kúskami gumy (aby sa okraje pásky neodlepili):


Potom sa jednotka podsvietenia zostaví v opačnom poradí, nainštaluje sa matrica, vytiahnu sa vodiče podsvietenia.
Obvod bol zostavený na doske na krájanie (kvôli jednoduchosti som sa rozhodol, že dosku nebudem pestovať), bol priskrutkovaný cez otvory v zadnej stene kovovej skrinky monitora:




Napájanie a riadiaci signál On boli spustené z dosky napájacieho zdroja:


Odhadovaný výkon pridelený LM2941 sa vypočíta podľa vzorca:

Pd = (Vin-Vout)*Iout +Vin*Ignd

V mojom prípade je to Pd = (13,6-13) * 0,7 + 13,6 * 0,006 = 0,5 wattu, takže bolo rozhodnuté vystačiť si s najmenším radiátorom pre LM2941 (zasadený cez dielektrické tesnenie, pretože nie je izolovaný od zem v LM2941).
Konečná montáž ukázala celkom dobrý výkon dizajnu:


Z výhod:

  • Používa štandardný LED pásik
  • Jednoduchá riadiaca doska
Z nedostatkov:
  • Nedostatočný jas podsvietenia pri jasnom dennom svetle (monitor pred oknom)
  • LED diódy v páse nie sú dostatočne často rozmiestnené, aby zobrazovali malé kužele svetla z každej jednotlivej LED v blízkosti horného a spodného okraja monitora
  • Vyváženie bielej je trochu mimo a je mierne nazelenalé (s najväčšou pravdepodobnosťou je to vyriešené úpravou vyváženia bielej buď na samotnom monitore alebo grafickej karte)
Celkom dobré, jednoduché a možnosť rozpočtu oprava podsvietenia. Pozeranie filmov alebo používanie monitora ako kuchynského televízora je celkom pohodlné, no na každodennú prácu sa asi nehodí.

Ovládanie jasu pomocou PWM

Pre tých hackerov, ktorí si na rozdiel odo mňa s nostalgiou nepamätajú analógové ovládanie jasu a kontrastu na starom CRT monitory môžete vykonávať ovládanie zo štandardného PWM generovaného riadiacou doskou monitora bez odstránenia akýchkoľvek dodatočných ovládacích prvkov smerom von (bez vŕtania krytu monitora). Na to stačí zostaviť obvod AND-NOT na dvoch tranzistoroch na vstupe regulátora zapnutia / vypnutia a odstrániť ovládanie jasu na výstupe (nastavené výstupné napätie konštantná pri 12-13V). Upravená schéma:


Odpor trimra rezistora RV2 pre napätie 13V by mal byť okolo 9,9kOhm (lepšie je však nastaviť ho presne pri zapnutom regulátore)

Hustejšie LED podsvietenie

Na vyriešenie problému nedostatočného jasu (a zároveň rovnomernosti) podsvietenia sa rozhodlo inštalovať viac LED diód a častejšie. Keďže sa ukázalo, že kúpiť LED jednotlivo je drahšie ako kúpiť 1,5 metra pásky a odtiaľ ich spájkovať, zvolila sa ekonomickejšia možnosť (spájkovanie LED z pásky).
Samotných 3528 LED diód bolo umiestnených na 4 pásikoch širokých 6 mm a dlhých 238 mm, 3 LED v sérii v 15 paralelných zostavách na každom zo 4 pásikov (kabeláž pre LED je pripojená). Po spájkovaní LED a vodičov sa získa nasledovné:




Pásy sú položené po dvoch hore a dole s drôtmi k okraju monitora v kĺbe v strede:




Menovité napätie na LED diódach je 3,5 V (rozsah 3,2 až 3,8 V), takže zostava 3 LED diód v sérii by mala byť napájaná približne 10,5 V. Preto je potrebné prepočítať parametre regulátora:


Maximálne napätie, ktoré na pásku potrebujeme, je 10,5V. Tie. maximálna hodnota R2 = 1000*(10,5/1,275-1) = 7,23kΩ. Minimálne napätie, pri ktorom zostava LED ešte ako-tak svieti, je cca 4,5 voltu, t.j. minimálna hodnota R2 = 1000*(4,5/1,275-1) = 2,53kΩ. Náš R2 sa skladá z variabilného odporu RV1 a viacotáčkového trimra RV2. Získame odpor RV1 7,23 kOhm - 2,53 kOhm = 4,7 kOhm a nastavíme RV2 na približne 7,23-4,7 = 2,53 kOhm a upravíme ho v zostavenom obvode, aby sme získali 10,5 V na výstupe LM2941 pri maximálnom odpore RV1.
Jeden a pol krát viac LED spotrebuje 1,2 A prúdu (nominálne), takže strata energie na LM2941 sa bude rovnať Pd = (13,6-10,5) * 1,2 + 13,6 * 0,006 = 3,8 wattov, čo už vyžaduje pevnejšie chladič na odvádzanie tepla:


Zbierame, spájame, zlepšujeme sa:


Výhody:
  • Dostatočne vysoký jas (možno porovnateľný a možno dokonca lepší ako jas starého podsvietenia CCTL)
  • Nedostatok svetelných kužeľov na okrajoch monitora od jednotlivých LED diód (LED sa nachádzajú pomerne často a podsvietenie je rovnomerné)
  • Stále jednoduchý a lacný ovládací panel
nedostatky:
  • Problém s vyvážením bielej, ponechaním v zelenkavých tónoch, nebol nijako vyriešený
  • LM2941, aj keď s veľkým chladičom, je vyhrievaný a ohrieva všetko vo vnútri skrinky

Riadiaca doska založená na zostupnom regulátore

Na odstránenie problému s vykurovaním bolo rozhodnuté zostaviť stmievač založený na regulátore napätia Step-down (v mojom prípade bol vybraný LM2576 s prúdom do 3A). Má tiež invertovaný riadiaci vstup zapnutia / vypnutia, takže rovnaký invertor na jednom tranzistore je prítomný na prispôsobenie:


Cievka L1 ovplyvňuje účinnosť meniča a mala by byť 100-220 μH pre záťažový prúd asi 1,2-3A. Výstupné napätie sa vypočíta podľa vzorca:

Vout=Vref*(1+R2/R1)

Kde Vref = 1,23 V. Vzhľadom na R1 môžete získať R2 pomocou vzorca:

R2=R1*(Vout/Vref-1)

Vo výpočtoch je R1 ekvivalentné R4 v obvode a R2 je ekvivalentné RV1+RV2 v obvode. V našom prípade na úpravu napätia v rozsahu od 7,25 V do 10,5 V berieme R4 = 1,8 kOhm, premenný odpor RV1 = 4,7 kOhm a 10 kOhm orezávací odpor RV2 s počiatočnou aproximáciou 8,8 kOhm (po zostavení obvodu, jeho presnú hodnotu je najlepšie nastaviť meraním napätia na výstupe LM2576 pri maximálnom odpore RV1).
Pre tento ovládač som sa rozhodol vyrobiť dosku (na rozmeroch nezáležalo, pretože v monitore je dosť miesta na montáž aj veľkej dosky):


Zostava riadiacej dosky:


Po montáži do monitora:


Všetci sú tu:


Po montáži sa zdá, že všetko funguje:


Finálny variant:


Výhody:

  • Dostatočný jas
  • Znižovací ovládač sa nezahrieva a nezohrieva monitor
  • Žiadne PWM, čo znamená, že pri žiadnej frekvencii nič nebliká
  • Analógové (manuálne) ovládanie jasu
  • Žiadny minimálny limit jasu (pre tých, ktorí radi pracujú v noci)
nedostatky:
  • Mierne posunuté vyváženie bielej smerom k zeleným tónom (ale nie veľa)
  • Pri nízkom jase (veľmi nízkom) je viditeľná nerovnomernosť v žiare LED rôznych zostáv v dôsledku šírenia parametrov

Možnosti inovácie:

  • Vyváženie bielej je nastaviteľné v nastaveniach monitora aj v nastaveniach takmer akejkoľvek grafickej karty
  • Môžete skúsiť umiestniť iné LED diódy, ktoré výrazne neznížia vyváženie bielej
  • Aby ste sa vyhli nerovnomernému osvetleniu LED diód pri nízkom jase, môžete použiť: a) PWM (upravte jas pomocou PWM vždy dodávajúceho menovité napätie) alebo b) zapojte všetky LED do série a napájajte ich nastaviteľným zdrojom prúdu (ak zapojte všetkých 180 LED do série, budete potrebovať 630V a 20mA), potom musí cez všetky LED prechádzať rovnaký prúd a každá bude mať svoj úbytok napätia, jas sa reguluje zmenou prúdu a nie napätia.
  • Ak chcete vytvoriť obvod na báze PWM pre LM2576, môžete použiť obvod NAND na vstupe zapnutia / vypnutia tohto regulátora Step-down (podobne ako vyššie uvedený obvod pre LM2941), ale je lepšie dať stmievač v medzere záporného vodiča LED cez mosfet na logickej úrovni

Stiahnuť si môžete z odkazu:

  • Servisná príručka AOC2216Sa
  • Technické listy LM2941 a LM2576
  • Schéma regulátora LM2941 vo formáte Proteus 7 a PDF
  • Rozloženie dosky pre LED vo formáte Sprint Layout 5.0
  • Schéma a zapojenie dosky regulátora na LM2576 vo formáte Proteus 7 a PDF

LED diódy čoraz viac zaujímajú svoje miesto medzi svetelnými zdrojmi.
Nízka spotreba energie, jas umožnili LED nahradiť tradičné žiarovky a celkom s istotou konkurovať energeticky úsporným.
Podľa všeobecného trendu som sa rozhodol cítiť vlastnými rukami a pozrieť sa na maticu LED vlastnými očami, ktorá nevyžaduje žiadne samostatné ovládače, ale pripája sa priamo k 220 voltovej sieti. Koho táto téma zaujíma, prosím pod kat.
V dôsledku toho som sa rozhodol pre nasledujúci príklad:

Z popisu na stránke vyplýva, že tento svetelný zdroj:
- vyrobené technológiou LED COB;
- napájacie napätie 220 voltov;
- spotreba energie 30 wattov;
- farebná teplota 2500-3200K;
- materiál substrátu (základňa) hliník;
- celkové rozmery 40*60mm;

Kým balík cestoval, študoval som teóriu.
Čo je technológia LED COB?

Približne do roku 2009 mali LED produkty len jeden smer vývoja – zvyšovanie výkonu LED alebo Power LED. Vylepšenie tejto technológie umožnilo dosiahnuť výkon jednej LED na úrovni 10 wattov.
Ako sa ukázalo, ďalšie zvyšovanie výkonu nemá zmysel kvôli vysokým nákladom na výrobu samostatnej vysokovýkonnej LED. Dôležitú úlohu pri hľadaní iného spôsobu vývoja zohralo aj to, že LED je bodový zdroj svetla a ukázalo sa ako neľahké a nie príliš lacné osvetliť veľkú plochu pomocou vysokého výkonu. LED diódy. Na získanie viac-menej prijateľných výsledkov bolo potrebné použiť optické systémy, aby sa svetlo rozptýlilo.
Ďalším krokom bolo použitie SMD LED na vytvorenie prijateľných zdrojov difúzneho svetla – na jednu dosku bolo prispájkované veľké množstvo LED. Nevýhodou je celková prácnosť procesu – výroba jednotlivých LED diód (každá na vlastnom keramickom substráte + osobná fosforová vrstva a pod.). Okrem toho, nevýhodou metódy bola nízka spoľahlivosť jednotlivých LED a nutnosť opravy, ak by aspoň jedna z nich zlyhala.
Výsledkom bolo, že inžinieri prišli s myšlienkou, že je potrebné vyrábať LED diódy bez osobných atribútov a umiestniť ich na rovnakú dosku. krátka vzdialenosť od seba pod spoločnú fosforovú vrstvu, t.j. LED COB technológia. V konečnom dôsledku to umožnilo znížiť náklady na svetelný zdroj ako celok a v prípade výpadku jednotlivých LED zmeniť celý modul (maticu).

Balíček prišiel v žltej obálke s bublinkovou fóliou vo vnútri. Samotná matrica je uzavretá v zodpovedajúcom plastovom vrecku.





Ako vidíte, LED diódy sú skutočne umiestnené blízko seba, pokryté spoločnou vrstvou fosforu a chránené hmotou pripomínajúcou plastové lepidlo.
Biela hmota po obvode matrice a ochranného obvodu vodiča vyzerá ako guma alebo horúce lepidlo - nie pevná, elastická hmota. To umožnilo odstrániť ho z najvýznamnejších prípadov a určiť, že jedným z nich je diódový mostík MB10S s maximálnym konštantným spätným napätím 1000 voltov a maximálnym dopredným prúdom 0,5 ampéra.
Dátový hárok:

Rozmery zodpovedajú tým, ktoré sú uvedené v popise.



Hrúbka substrátu je 1 mm a hmotnosť matrice je až 8 gramov.

Je samozrejmé, že ako pre vysokovýkonné LED, aj matrice potrebujú chladič. Ako taký bol zvolený chladič z procesora.


Pomocou samorezných skrutiek pomocou tepelnej pasty KPT-8 bola matrica pripevnená k radiátoru.
V tomto slede akcií sa stala chyba - drôt mal byť spájkovaný pred pripojením matrice k radiátoru - teplo zo spájkovačky išlo do chladiča. Výsledok spájkovania je viditeľný na fotografii. Drôty však držali bezpečne a matricu som nezačal odstraňovať.


Prvé zaradenie urobilo nezmazateľný dojem - povedať „jasne“, nepovedať nič. Dokonca aj pri pohľade z diaľky v miernom uhle k rovine matrice sú poskytnuté "zajace". V porovnaní s tým, čo je k dispozícii energeticky úsporné žiarovky pri teplote 2800K je svetlo biele a je ho vela.

Izba s rozlohou 14 m2. metrov osvetlené viac než dobre.







Po 20 minútach sa teplota zvýšila na 85 stupňov. Ďalej som netestoval silu matrice, aj keď riadiace čipy môžu riadiť prúd cez LED diódy so silným ohrevom.

Ďalšie testy boli vykonané s použitím núteného chladenia so štandardným chladičom z tohto chladiča a doskou ovládania rýchlosti ventilátora. Zo starého zdroja PC som odstránil posledný.





Teplota sa hodinu a pol nezvýšila nad 31,5 stupňa a ventilátor pracoval na nízkych otáčkach bez zrýchľovania.



Potom bola z návrhu vylúčená doska riadenia rýchlosti ventilátora a napájanie bolo nahradené 9-voltovým.

Zvýšenie napätia v sieti umožnilo uistiť sa, že deklarovaná spotreba energie je pravdivá.



Kamera podľa očakávania reagovala na blikanie matice s frekvenciou 100 Hertzov. Neurobil som video, ale podarilo sa mi zachytiť nasledovné

Zvlnenie by bolo možné prekonať prispájkovaním kondenzátora na diódový mostík. To by spôsobilo zvýšenie napätia na 220 * 1,41 = 310,2 voltov a bolo by potrebné pohrať sa s obmedzovacími odpormi BP5132H, ale keďže som si bol spočiatku vedomý, že tento svetelný zdroj nie je pre obytné priestory, nezačal som tento boj.
Rozsah matice je všeobecné pouličné osvetlenie, technické miestnosti atď., a preto možno pulzácie zanedbať.
Pomocou LATR bolo možné zistiť (experiment sa uskutočnil v práci a nefotografoval, aby sa nezodpovedalo na otázky: „Prečo?“), že spodná hranica, pri ktorej matrica stále vyžaruje svetlo je 130 voltov. Nenapájal som viac ako 250 voltov, ale v takom prípade nebude maska ​​zvárača prekážať).
Vzhľadom na to, že tento svetelný zdroj má vysoký výkon a takpovediac zvýšenú hustotu svetla, nebude difúzna clona pred matricou vôbec zbytočná.

V dôsledku toho medzi nevýhody patria:
- zvýšený odvod tepla (náklady na technológiu, ale nie dizajn) a nutnosť použiť chladič (najlepšie aktívne chladenie);
- pomerne vysoké náklady.

Tieto nevýhody však viac ako kompenzuje jas tejto matrice, schopnosť osvetliť veľkú plochu a súlad s deklarovanými charakteristikami.
Blikanie nemožno pripísať negatívnym vlastnostiam, pretože oblasť použitia matrice NIE JE OBYTNÝMI priestormi.
Samostatne sa chcem obrátiť na prívržencov rádu „Haters bodu 18“). Priatelia, žiadam vás, aby ste boli objektívni pri posudzovaní informácií prezentovaných v recenzii, najmä preto, že ich zozbieranie, systematizácia a prezentovanie si vyžiadalo pomerne veľa úsilia a času.

Tovar bol poskytnutý na napísanie recenzie obchodom. Recenzia je zverejnená v súlade s bodom 18 Pravidiel stránky.

Plánujem kúpiť +44 Pridať k obľúbeným Páčila sa recenzia +60 +111

Načítava...
Hore