predstavljamo / mala ıola rtv-servisiranja 41sspbvrec/umn/12_13/se_upravljanje z... · program...

9
SVET ELEKTRONIKE MAREC 2004 41 Slika 5: Način prikaza slike na ekranu z in-line masko katerih tipih televizorja demagnetizacija deluje samo takrat, ko sprejemnik priklo- pimo na omrežje s pomočjo glavnega sti- kala, torej ga je dovolj le izklopiti in po- novno vklopiti z daljinskim upravljalnikom. Če demagnetizacija ne deluje, je napaka najpogosteje v PTC-uporu. Serviserji TV- sprejemnikov običajno imajo zunanjo tu- ljavo za demagnetiziranje, ki jo za trenu- tek približajo in nato postopoma odmika- jo od ekrana – princip je enak, neprijetna okvara pa je odpravljena “v hipu”. Pri starejših TV-sprejemnikih, pri katerih ni več mogoče nastaviti barve, je napaka najverjetneje v sami katodni cevi. Tekom velikega števila ur obratovanja našega spre- jemnika pride na katodah do nabiranja ok- sida, ki ni enakomeren na vsaki katodi, zato emisije elektronov iz katod niso več ena- ke, kar je videti ali kot pomanjkanje ali kot prevladovanje ene izmed treh osnovnih barv na sliki, najpogosteje v ozadju. Čeje sprejemnik starejši, se ekrana ne splača za- menjati, vendar se ga včasih da uspešno regenerirati. Regeneriranje se izvaja tako, da se na G1 vsake katode pripelje ena lini- ja izmenične napetosti, druga linija pa se pripelje na katodo, ki se jo želi regenerira- ti. Nekateri ekrani imajo za vsako barvo poseben priključek za G1, nekateri pa ima- jo skupne G1-priključek za vse tri. Gretje katod mora delovati. V trenutku priklopa druge izmenične linije na katodo se preki- ne gretje in takrat pride do pregorevanja oksida. Ta postopek se večkrat ponovi, ozi- roma se ponavlja tako dolgo, dokler več ne “letijo iskre” pregorele oksidne plasti. Pri puščanju v obratovanje takšnega ekra- na je potrebno biti previden, ker lahko pri- de do kratkega stika katod in pregoreva- nja izhodnih RGB-tranzistorjev. Sicer pa Opomba uredništva: Sheme, uporab- ljene v tem prispevku, in besedilo, ki se nanje nanaša, v nobenem primeru ne implicirajo, da se opisane okvare do- gajajo samo ali najpogosteje na spre- jemniku, katerega shema je uporablje- na, niti niso karakteristične za ostale naprave istega proizvajalca. je to precej neprijeten postopek, posebej če nam ne uspe takoj, ker temu lahko sledi zapleteno popravilo RGB-modula. Prav tako opisani postopek ni vedno uspešen, včasih pa je doseženo le kratkotrajno iz- boljšanje. Pri delu na TV-ekranu je potrebno biti zelo previden, ker lahko pride do zloma vrat- nega dela, kjer je steklo tudi najtanjše. Če v notranjosti vratnega dela vidimo preska- kovanje vijoločastih isker, je to zagotovo znak, da je steklo nekje počilo in se je v notranjost prebil zrak. V ekranu je sicer vakuum, zato lahko zaradi njegove mehan- ske poškodbe pride do implozije, ki rezul- tira s pokom in letečimi kosi stekla. Zato previdno in brez mehanskih poškodb! l PREDSTAVLJAMO / Mala šola RTV-servisiranja Upravljanje z osvetlitvijo ozadja LCD-prikazovalnika Alfanumerični in grafični LCD-prikazovalniki se proizvajajo v dveh osnovnih izvedbah; z ali brez osvetlitve ozad- ja. Sam običajno uporabljam tiste brez osvetlitve: ne le zato, ker so cenejši, temveč tudi zato, ker so manjši porabniki energije. Kajti medtem ko se poraba mikrokontrolerja in prikazovalnika giblje okoli 10 mA, bomo za osvetlitev potrebovali 50–100 mA. Pa vendarle, če je prikazovalnik postavljen na slabo osvetljeno mesto, druge izbire nimamo in osvetlitev ozadja postane nujna ... Avtor: mag. Vladimir Mitrović, univ. dipl. inž E-mail: [email protected]) Osvetlitev LCD-prikazovalnika je tanka ploščica, ki je nameščena pod sam prika- zovalnik, njena priključka, anoda in kato- da (gre za neke vrste svetlečo diodo), pa sta praviloma ločena od “+” in “-” pri- ključka prikazovalnika. Ker sta tako pri- kazovalnik kot osvetlitev projektirana za 5-voltno napajanje, je najenostavnejša in najpogostejša rešitev, ko se osvetlitev na- paja iz istega stabiliziranega vira, iz kate- rega se napajata tudi prikazovalnik in mi- krokontroler, lahko prek serijskega upora 10–47 ohmov (slika 1a). Vendar to tudi ni Slika 1a:Mikrokontroler, prikazovalnik in osvetlitev ozadja najpogosteje napajamo iz istega stabi- liziranega napetostnega vira 5 V

Upload: others

Post on 01-Mar-2021

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: PREDSTAVLJAMO / Mala ıola RTV-servisiranja 41sspbvrec/UMN/12_13/se_upravljanje z... · Program Bascom8051 Mikrokontroler bo upravljal z intenziteto osvetlitve s pomoŁjo pulzno-ıirinske

S V E T E L E K T R O N I K E M A R E C 2 0 0 4

41

Slika 5: Način prikaza slike na ekranu z in-linemasko

katerih tipih televizorja demagnetizacijadeluje samo takrat, ko sprejemnik priklo-pimo na omrežje s pomočjo glavnega sti-kala, torej ga je dovolj le izklopiti in po-novno vklopiti z daljinskim upravljalnikom.Če demagnetizacija ne deluje, je napakanajpogosteje v PTC-uporu. Serviserji TV-sprejemnikov običajno imajo zunanjo tu-ljavo za demagnetiziranje, ki jo za trenu-tek približajo in nato postopoma odmika-jo od ekrana – princip je enak, neprijetnaokvara pa je odpravljena “v hipu”.Pri starejših TV-sprejemnikih, pri katerihni več mogoče nastaviti barve, je napakanajverjetneje v sami katodni cevi. Tekomvelikega števila ur obratovanja našega spre-jemnika pride na katodah do nabiranja ok-sida, ki ni enakomeren na vsaki katodi, zatoemisije elektronov iz katod niso več ena-ke, kar je videti ali kot pomanjkanje ali kotprevladovanje ene izmed treh osnovnihbarv na sliki, najpogosteje v ozadju. Čejesprejemnik starejši, se ekrana ne splača za-menjati, vendar se ga včasih da uspešnoregenerirati. Regeneriranje se izvaja tako,da se na G1 vsake katode pripelje ena lini-ja izmenične napetosti, druga linija pa sepripelje na katodo, ki se jo želi regenerira-

ti. Nekateri ekrani imajo za vsako barvoposeben priključek za G1, nekateri pa ima-jo skupne G1-priključek za vse tri. Gretjekatod mora delovati. V trenutku priklopadruge izmenične linije na katodo se preki-ne gretje in takrat pride do pregorevanjaoksida. Ta postopek se večkrat ponovi, ozi-roma se ponavlja tako dolgo, dokler večne “letijo iskre” pregorele oksidne plasti.Pri puščanju v obratovanje takšnega ekra-na je potrebno biti previden, ker lahko pri-de do kratkega stika katod in pregoreva-nja izhodnih RGB-tranzistorjev. Sicer pa

Opomba uredništva: Sheme, uporab-ljene v tem prispevku, in besedilo, kise nanje nanaša, v nobenem primerune implicirajo, da se opisane okvare do-gajajo samo ali najpogosteje na spre-jemniku, katerega shema je uporablje-na, niti niso karakteristične za ostalenaprave istega proizvajalca.

je to precej neprijeten postopek, posebejče nam ne uspe takoj, ker temu lahko sledizapleteno popravilo RGB-modula. Pravtako opisani postopek ni vedno uspešen,včasih pa je doseženo le kratkotrajno iz-boljšanje.Pri delu na TV-ekranu je potrebno biti zelopreviden, ker lahko pride do zloma vrat-nega dela, kjer je steklo tudi najtanjše. Čev notranjosti vratnega dela vidimo preska-kovanje vijoločastih isker, je to zagotovoznak, da je steklo nekje počilo in se je vnotranjost prebil zrak. V ekranu je sicervakuum, zato lahko zaradi njegove mehan-ske poškodbe pride do implozije, ki rezul-tira s pokom in letečimi kosi stekla. Zatoprevidno in brez mehanskih poškodb! l

P R E D S T A V L J A M O / M a l a š o l a R T V - s e r v i s i r a n j a

Upravljanje z osvetlitvijo ozadjaLCD-prikazovalnika

Alfanumerični in grafični LCD-prikazovalniki se proizvajajo v dveh osnovnih izvedbah; z ali brez osvetlitve ozad-ja. Sam običajno uporabljam tiste brez osvetlitve: ne le zato, ker so cenejši, temveč tudi zato, ker so manjšiporabniki energije. Kajti medtem ko se poraba mikrokontrolerja in prikazovalnika giblje okoli 10 mA, bomo zaosvetlitev potrebovali 50–100 mA. Pa vendarle, če je prikazovalnik postavljen na slabo osvetljeno mesto, drugeizbire nimamo in osvetlitev ozadja postane nujna ...

Avtor: mag. Vladimir Mitrović, univ. dipl. inžE-mail: [email protected])

Osvetlitev LCD-prikazovalnika je tankaploščica, ki je nameščena pod sam prika-zovalnik, njena priključka, anoda in kato-da (gre za neke vrste svetlečo diodo), pasta praviloma ločena od “+” in “-” pri-ključka prikazovalnika. Ker sta tako pri-kazovalnik kot osvetlitev projektirana za5-voltno napajanje, je najenostavnejša innajpogostejša rešitev, ko se osvetlitev na-paja iz istega stabiliziranega vira, iz kate-rega se napajata tudi prikazovalnik in mi-krokontroler, lahko prek serijskega upora10–47 ohmov (slika 1a). Vendar to tudi ni

Slika 1a:Mikrokontroler, prikazovalnik in osvetlitev ozadja najpogosteje napajamo iz istega stabi-liziranega napetostnega vira 5 V

Page 2: PREDSTAVLJAMO / Mala ıola RTV-servisiranja 41sspbvrec/UMN/12_13/se_upravljanje z... · Program Bascom8051 Mikrokontroler bo upravljal z intenziteto osvetlitve s pomoŁjo pulzno-ıirinske

M A R E C 2 0 0 4 S V E T E L E K T R O N I K E

42

tudi edina možna rešitev! Ločenost pri-ključkov nam daje možnost, da osvetlitevnapajamo iz popolnoma ali iz delno ločene-ga napajalnega vira. Slika 1b prikazuje pri-mer, ko se osvetlitev napaja iz nestabilizi-ranega vira – na ta način smo precej raz-bremenili napetostni stabilizator s tvega-njem minimalnih nihanj intenzitete osvet-litve pri fluktuacijah omrežne napetosti. Vobeh primerih upornost serijskega uporadoločimo glede na želeno intenziteto os-vetlitve, najpogosteje eksperimentalno, pričemer pazimo, da tok ne preseže 100 mA.Včasih je upor vgrajen že na sam prikazo-valnik, vendar je ta predviden za 5-voltnonapajanje in njegova upornost v nobenemprimeru ne bo zadostovala za rešitev, pri-kazano na sliki 1b.V tem članku bomo pokazali, kako lahkoz osvetlitvijo ozadja upravljamo iz mikro-kontrolerja. Mogoče se vam zdi, da gre zanepotrebno zapletanje, ker želeno intenzi-teto osvetlitve tako ali tako lahko nastavi-mo z zunanjim uporom? Vendar z dodat-kom enega samega tranzistorja (slika 1c)dobimo tudi nekatere nove, zanimive mož-nosti: ne le, da bomo lahko programskoprižigali in ugašali osvetlitev in nastavljalinjeno intenziteto, temveč bomo to lahkoizvajali dinamično in s tem dosegali zani-mive svetlobne učinke.Idejo s slike 1c smo podrobneje predstavi-li na slikah 2 in 3: slika 2 prikazuje načinpovezave z mikrokontrolerjem iz družine8051 (AT89C2051), slika 3 pa z mikrokon-trolerjem iz družine AVR (AT90S2313).

P R O G R A M I R A N J E / O s v e t l i t e v L C D - p r i k a z o v a l n i k a

Slika 1b: Včasih je boljša rešitev, če osvetlitev ozadja napajamo iz nestabiliziranega vira

Slika 1c: Z dodatkom enega tranzistorja lahko intenziteto osvetlitve ozadja upravljamo iz mikrokon-trolerja

Slika 2: Shema testne vezave za upravljanje z osvetlitvijo ozadja s pomočjo mikrokontrolerja 8051

Uporabljena mikrokontrolerja sta medsabo pin-kompatibilna, shemi pa sta tudiskoraj identični. Največja razlika je v izved-bi reset vezja, kjer sta komponenti R1 inC1 zamenjali mesti. Druga sprememba je,da na sliki 3 ni pull-up upora R3, ki ga mi-krokontroler AT89C2051 zahteva na pri-ključku P1.1. Nič slabega se ne bo zgodilo,če ta upor obdržimo tudi pri AVR-rešitvi.(Zanimivo je, da bo tudi vezje z 2051 naj-

pogosteje dobro delovalo brez tega upora,ki ga nadomešča priključek prikazovalni-ka. Vendar je s pull-up uporom – varneje!)Opazite, da smo se odločili za napajanjeosvetlitve ozadja iz stabiliziranega vira, kotje prikazano na sliki 1a. Vendar se boupravljanje z osvetlitvijo ozadja izvajaloenako dobro tudi v drugem primeru, ki jeprikazan na sliki 1b. V obeh primerih uporR2 izberemo glede na najmočnejšo potreb-no osvetlitev. S stikalom/kratkostičnikomJ1 premostimo tranzistor T1 in trajno vklo-pimo najmočnejšo osvetlitev. V kratkemboste lahko v našem prodajnem servisu do-bili LCD-modul, narejen po shemi na sliki2, ki je primeren za 8051 in AVR-mikro-kontrolerje in vsebuje alfanumerični 16x2prikazovalnik z osvetlitvijo, R2-R4 in T1ter konektor za priklop na testno ploščoBascom.

Program Bascom8051Mikrokontroler bo upravljal z intenzitetoosvetlitve s pomočjo pulzno-širinske mo-dulacije. Program mora zagotavljati impul-ze fiksne frekvence (50–1000 Hz) na iz-hodu P1.3, razmerje signal/pavza teh im-pulzov pa določa odstotek časa, ko bo tran-zistor odprt. S tem je določen tudi pov-prečni tok skozi tranzistor in na koncu tudiintenziteta osvetlitve. Princip je identičentistemu, ki smo ga opisali v članku“Večbarvna svetleča dioda, upravljana zmikrokontrolerjem” v prejšnji številki Sve-ta elektronike. Tam smo prav tako generi-

Page 3: PREDSTAVLJAMO / Mala ıola RTV-servisiranja 41sspbvrec/UMN/12_13/se_upravljanje z... · Program Bascom8051 Mikrokontroler bo upravljal z intenziteto osvetlitve s pomoŁjo pulzno-ıirinske

S V E T E L E K T R O N I K E M A R E C 2 0 0 4

43P R O G R A M I R A N J E / O s v e t l i t e v L C D - p r i k a z o v a l n i k a

rali širinsko modulirane impulze, vendartukaj ne moremo uporabiti opisanega po-stopka. Zakaj? Pri večbarvni svetleči dio-di je mikrokontroler upravljal s tokom sko-zi posamezne diode in to je bila njegovaedina naloga – zato smo lahko potrebnepostopke napisali znotraj zanke v glavnemprogramu. Po drugi strani je upravljanje zosvetlitvijo ozadja postransko opravilo, kise mora izvajati vzporedno z nekim dru-gim osnovnim opravilom mikrokontroler-ja, in sicer na način, da ga le-ta minimalnomoti in upočasnjuje. Zato bomo tukaj ce-lotno nalogo rešili s pomočjo časovnegavezja Timer0 in pridružene prekinitevnerutine “Tim0_sub”:

Config Timer0 = Timer , Gate = Internal, Mode = 1On Timer0 Tim0_sub NosaveEnable InterruptsEnable Timer0......Tim0_sub: Stop Timer0 Th0 = Luc_0 Luc_0 = Luc_1 Luc_1 = Th0 Tl0 = 0 P1.3 = Not P1.3 Start Timer0Return

Izgleda enostavno ... in kako deluje?

mo vsebini spremenljivkam “Luc_0” in“Luc_1”, tako da bo pri naslednji izvrši-tvi prekinitevne rutine vpisana “tista dru-ga vrednost”, ravno tako kot to diagramtudi prikazuje. V spodnjih 8 bitov, regi-ster “Tl0”, se vedno vpiše 0, kar je ekvi-valentno množenju z 256. Pri vsaki izvr-šitvi prekinitvene rutine se še komplemen-tira stanje pina P1.3, namesto vpisa kon-kretnih vrednosti “0” in “1”. Če je vse do-bro sinhronizirano, bo začetna vrednostspremenljivke “Luc_0” določila trajanjestanja “0” na pinu P1.3 (tranzistor iz-ključen), spremenljivke “Luc_1” pa tra-janje stanja “1” (tranzistor vključen). Kerčasovno vezje šteje od zadane vrednostinavzgor, bo večje vpisano število pome-nilo krajše trajanje pridruženega stanja inobratno.Predvideno je 64 nivojev osvetlitve. Pred-postavimo, da nam ustreza osvetlitev 48;v tem primeru je v spremenljivki “Luc_0”in “Luc_1” potrebno vpisati:

Slika 3: Shema testne vezave za upravljanje z osvetlitvijo ozadja s pomočjo mikrokontrolerja AVR

Logični prikaz delovanja jepodan z diagramom na sliki4, ki združuje tisto, kar delasamo vezje (svetle hišice), intisto, kar dela program v pre-kinitevni rutini (zatemnjenehišice). Spremenljivki“Luc_0” in “Luc_1” se izme-nično vpisujeta v števec časov-nega vezja, s čimer določatatrajanje stanja “0” in “1” naizhodu P1.3. Števec je vezje,ki bo neodvisno od programaštel cikle mikrokontrolerja(mikrosekunde) ter sprožilprekinitev, ko bo preštel dokonca (=65536). Takrat se bospremenilo stanje izhodnegapina P1.3, v števec se bo vpi-sala nova začetna vrednost inproces štetja se bo začel zno-va ...Vpis začetne vrednosti v šte-vec in sprememba stanja iz-hodnega pina se izvedeta vprekinitevni rutini“Tim0_sub”. Da bi bila pre-kinitevna rutina čim krajša inhitrejša, smo v programu“preklopili” zgornji in spod-nji del diagrama poteka, v re-gister “Th0”, tj. v zgornjih 8bitov števca timerja 0, pa ved-no vpišemo spremenljivko“Luc_1”. Istočasno zamenja-

Slika 4: Diagram prikazuje način delovanja časovnega vezjamikrokontrolerja AT89C2051 v režimu 1

�TEVEC=

65536-256*LUÈ_1

�TEVEC=�TEVEC + 1

�TEVEC=

65536?

VSAKO µs

VSAKO µs

�TEVEC=

65536-256*LUÈ_0

�TEVEC=�TEVEC + 1

�TEVEC=

65536?

Page 4: PREDSTAVLJAMO / Mala ıola RTV-servisiranja 41sspbvrec/UMN/12_13/se_upravljanje z... · Program Bascom8051 Mikrokontroler bo upravljal z intenziteto osvetlitve s pomoŁjo pulzno-ıirinske

M A R E C 2 0 0 4 S V E T E L E K T R O N I K E

44

Luc_1 = 256 - 48 = 208Luc_0 = 256 - (64 - 40) = 192 + 48 = 240

Stanje “1” na izhodu bo trajalo(256 - 208) x 256 = 48 x 256 = 12288 µs

Z 256 smo množili zato, ker je vrednostvpisana v zgornjih 8 bitov števca; spodnjih8 bitov se mora “zvrteti”, da se bo vred-nost zgornje polovice števca povečala za1, kar pa traja ravno 256 µs. Na podobennačin izračunamo, da stanje “0” traja 4096µs, torej je skupno trajanje 16384 µs: tran-zistor in osvetlitev ozadja bosta vključena3/4 časa. Skupno trajanje določa tudi frek-venco (f = 1 / T) in ta v tem primeru znašapribližno 61 Hz. To je povsem dovolj, daosvetlitev ne bo utripala. Formuli zaizračun vrednosti spremenljivk “Luc_0” in“Luc_1” kažeta, da se le-ti spreminjata vnasprotnih smereh (kolikor se ena poveča,toliko se druga zmanjša), zato bo frekven-ca ostala stalna – spreminjalo se bo le raz-merje signal/pavza. Ravno tako, kot smosi zamislili! V konfiguracijskih ukazih zaTimer0 je uporabljena opcija “Nosave”. Tosmo lahko naredili zato, ker noben izmedukazov v prekinitevni rutini ne uporabljaregistrov, zato jih niti ni potrebno shranje-vati (kar je preverjeno v asemblerski kodi,dobljeni s prevajanjem programa Bascom).Takšna prekinitevna rutina traja le 15 µsin ker se znotraj 16384 µs izvrši 2-krat, bopovprečna upočasnitev programa pod 0,2

%. Brez opcije “Nosave” bi Bascom rednoshranjeval vse registre na začetku prekini-tvene rutine in jih na koncu obnovil, kar bipodaljšalo trajanje na 106 µs. V tem pri-meru bi povprečna upočasnitev programaše vedno znašala zanemarljivih 1,3 %, ven-dar bi lahko zakasnitev okoli 100 µs podr-la timing serijske komunikacije, komuni-kacije I2C ali 1-wire! Zato je v takšnih pri-merih potrebno zelo pozorno preveriti, alilahko uporabimo “Nosave” brez oškodo-vanja intergitete programa. Da se ne bi pre-več mučili z izračunom vrednosti za spre-menljivki “Luc_0” in “Luc_1”, je vpeljananova spremenljivka “Luc”, v katero vpiše-mo vrednost v razponu od 0 (prikazoval-nik ugasnjen) do 64 (prikazovalnik maksi-malno osvetljen), nato pokličemo podpro-gram “Vklopi_luc”:

Luc = 48Gosub Vklopi_luc...Vklopi_luc: Stop Timer0 If Luc = 0 Then Reset P1.3 Elseif Luc > 63 Then Set P1.3 Else Luc_0 = Luc + 192 Luc_1 = 256 - Luc Set P1.3 Th0 = Luc_1

Tl0 = 0 Start Timer0 End IfReturn

Če je vpisana mejna vrednost 0 ali 64, pod-program ustavi delovanje časovnega vezjain trajno izklopi, oziroma vklopi, osvetli-tev. V vseh ostalih primerih podprogramizračuna potrebne vrednosti spremenljivk“Luc_0” in “Luc_1”, vklopi osvetlitev (SetP1.3), naloži začetno stanje v registerčasovnega vezja in ga zažene – preostalose bo izvedlo v prekinitveni rutini, kot jeprej opisano. Po nastavitvi osvetlitve ozad-ja lahko program počne kar koli; občasnobo prekinjan s kratkotrajnimi izvršitvamiprekinitvene rutine, vendar programerjuo tem ni več potrebno skrbeti.Napisali bomo enostaven testni program,s katerim bomo preverili delovanje opisa-nega koncepta:

Luc = 32Gosub Vklopi_lucDo Home U Lcd �Luc = � ; Luc ; � � Debounce P3.0 , 0 , Svetleje , Sub Debounce P3.3 , 0 , Temneje , SubLoop

Svetleje: If Luc < 64 Then Incr Luc Gosub Vklopi_lucReturn

Temneje:

If Luc > 0 Then Decr Luc Gosub Vklopi_lucReturn

Inicialno je nastavljenasrednja osvetlitev (32),nato vstopimo v zanko, vkateri izmenično izpisu-jemo na prikazovalnikutrenutno stanje spremen-ljivke “Luc” in preverja-mo, ali je pritisnjena ka-tera izmed dveh tipk, kista priključeni na P3.0 inP3.2. S pritiskom na tidve tipki spreminjamovrednost spremenljivke“Luc” in osvetlitev ozad-ja.Napisali bomo še en test-ni program z enostavnimsvetlobnim učinkom:

P R O G R A M I R A N J E / O s v e t l i t e v L C D - p r i k a z o v a l n i k a

Page 5: PREDSTAVLJAMO / Mala ıola RTV-servisiranja 41sspbvrec/UMN/12_13/se_upravljanje z... · Program Bascom8051 Mikrokontroler bo upravljal z intenziteto osvetlitve s pomoŁjo pulzno-ıirinske

S V E T E L E K T R O N I K E M A R E C 2 0 0 4

45

RADIO LASER,RADIO LASER,RADIO LASER,RADIO LASER,RADIO LASER,PPPPPodgorodgorodgorodgorodgorssssskkkkka 1a 1a 1a 1a 1,,,,,

2380 Slo2380 Slo2380 Slo2380 Slo2380 Slovvvvvenenenenenj Grj Grj Grj Grj Gradecadecadecadecadec

POSLOVNI STIKI:02 8821-700

GLASBENE ŽELJE:090 40 48

e-mail:

www.laserr.si - online - live

e-mail:

www.laserr.si - online - live

[email protected]@laserr.si

Do For Luc = 0 To 63 Home U Lcd �Luc = � ; Luc ; � � Gosub Vklopi_luc Waitms 25 Next For Luc = 64 Downto 1 Home U Lcd �Luc = � ; Luc ; � � Gosub Vklopi_luc Waitms 25 NextLoop

V zankah For-Next se vrednost spremen-ljivke “Luc” spreminja od 0 do 64 in natonazaj na 0, kar povzroča postopno priži-ganje in ugašanje osvetlitve ozadja. Hi-trost učinka je odvisna od uporabljenegaukaza Waitms, s katerim lahko eksperi-mentiramo.Če opisani program preizkusimo v prak-si, bomo opazili, da pri vsaki spremembiosvetlitve prikazovalnik bolj ali manj izra-ženo utripne. To smo lahko opazili tudipri prvem primeru, vendar je bilo bolj pri-krito – sedaj so spremembe osvetlitve po-

gostejše, zato je tudi motnja bolj izražena.S pozornim raziskovanjem je ugotovljeno,da je problem v podprogramu “Vklo-pi_luc”, kjer se pri vsaki spremembi osvet-litve prekine delovanje časovnega vezja,vpišejo nove vrednosti v njegov register invklopi osvetlitev (Set P1.3), ne glede na tre-nutno stanje števca in osvetlitve. Tako na-stanejo diskontinuitete v sicer ritmični iz-menjavi vključene in izključene osvetlitve– posledica so omenjena utripanja.Kako se jih znebiti? Sedaj že govorimo oprogramerskih f inesah! Podprogram“Vklopi_luc” bomo modificirali tako, dabo postavil P1.3 in vrednost v registerčasovnega vezja le, ko bo ta trenutno iz-ključen (osvetlitev ozadja je izklopljena alitrajno vklopljena). Če je že bila nastavlje-na neka osvetlitev in časovno vezje deluje,bo podprogram samo izračunal nove vred-nosti za “Luc_0” in “Luc_1”; te vrednostibodo dejansko uporabljene šele pri prvi na-slednji prekinitvi:

Vklopi_luc: If Luc = 0 Then Stop Timer0 Reset P1.3 Elseif Luc > 63 Then

Stop Timer0 Set P1.3 Else Disable Timer0 Luc_0 = Luc + 192 Luc_1 = 256 - Luc If Tcon.4 = 0 Then Set P1.3 Th0 = Luc_1 Tl0 = 0 Start Timer0 Else If P1.3 = 0 Then Swap Luc_0 ,Luc_1 End If Enable Timer0 End IfReturn

S preverjanjem 4. bita registra Tcon lahkougotovimo, ali je Timer0 aktiviran ali ne.Kot prej rečeno, bomo vpisali vrednosti vregister timerja 0 le, če ta ni aktiven(Tcon.4 = 0). V nasprotnem moramo pre-veriti, v katerem stanju je izhodni pin P1.3in morebiti zamenjati vrednosti spremen-ljivkam “Luc_0” in “Luc_1”.(Zakaj? “Luc_0” in “Luc_1” določata tra-

P R O G R A M I R A N J E / O s v e t l i t e v L C D - p r i k a z o v a l n i k a

Page 6: PREDSTAVLJAMO / Mala ıola RTV-servisiranja 41sspbvrec/UMN/12_13/se_upravljanje z... · Program Bascom8051 Mikrokontroler bo upravljal z intenziteto osvetlitve s pomoŁjo pulzno-ıirinske

M A R E C 2 0 0 4 S V E T E L E K T R O N I K E

46

janje stanja “0” in “1”, vendar naziv spre-menljivke ustreza stanju, ki ga definirasamo v začetni nastavitvi. Z vsako izvrši-tvijo prekinitvene rutine se njuni vsebinizamenjata, tako se v “Luc_1” izmeničnovpisuje trajanje “1” in “0”. S tem smozmanjšali število If-ov v prekinitveni ruti-ni, vendar moramo paziti, da vrednosti vpi-šemo skladno s stanjem pina P1.3. Opazi-te še, da so med izvajanjem celotnega po-stopka onemogočene prekinitve (Disable/Enable Timer0), da se prekinitev ne bi zgo-dila v “nepravem trenutku”. Časovno vez-je ves čas deluje in prekinitev bo prelože-na le za nekaj deset µs.)

Z opisano modifikacijo sprememba nivo-ja osvetlitve poteka gladko, brez kakršne-ga koli utripanja, kar je predpogoj za reali-zacijo tega in drugih svetlobnih učinkov.Edini nekontrolirani “blisk” nastane privklopu napajanja (in pri vsakem resetu),ko mikrokontroler postavi vse priključke,torej tudi pin P1.3, v stanje log. “1”. Čepravtakoj na začetku programa postavimo P1.3v stanje log. “0”, tega ni mogoče nareditidovolj hitro, tako da bo viden kratkotrajnivklop osvetlitve ozadja. Dejanskega prob-lema pravzaprav tukaj niti ni, ker se utri-panje ne ponavlja med delovanjem; če pavas vendarle moti, ga lahko odpravite z do-datkom tranzistorja T2 in upora R5, kot jeprikazano na sliki 5. T2 bo izključil T1, do-kler program ne “prevzame kontrole” nadmikrokontrolerjem: na samem začetku jeoba tranzistorja potrebno izključiti v tak-šnem vrstnem redu:

Reset P1.3Reset P1.0

Program BascomAVROmenili smo že veliko podobnost shem naslikah 2 in 3 ter da sta hardverski rešitvi z8051 in AVR-mikrokontrolerjem (skoraj)identični. Bascom8051 in BascomAVR stasi prav tako zelo podobna, zato pričakuje-mo, da bo tudi AVR-program enak prejš-njemu. Vendar to drži le delno! Razlike iz-virajo iz drugačne arhitekture dveh družinmikrokontrolerjev. Tukaj bomo najprej mo-rali eksplicitno definirati način uporabe po-sameznih priključkov:

Config Portb = OutputPortb.3 = 0Config Pind.0 = InputConfig Pind.3 = InputPortd.0 = 1Portd.3 = 1

Ampak iz istega razloga ne bomo imeli te-žav z nekontroliranim vklopom osvetlitvepri vklopu vezja, ker bo priključek PB3pred definiranjem – izključen.Uporabljeni AVR-mikrokontrolerAT90S2313 ima dve medsebojno različničasovni vezji. Če se odločimo za Timer0 z8-bitnim števcem, pred katerim je 10-bitnidelilnik (prescaler), bomo njegovo konfi-guriranje izvedli na naslednji način:

Config Timer0 = Timer , Prescale = 1024Stop Timer0On Timer0 Tim0_subEnable Interrupts

Z deljenjem s 1024 smo približno izenačilihitrosti, s katerima števca štejeta: Mikro-kontroler iz družine 8051, ko deluje pri 12MHz, šteje mikrosekunde in kot je prej raz-loženo se zgornjih 8 bitov števca povečaza 1 vsakih 256 µs. AVR-mikrokontrolerpri 10 MHz šteje 1/10 mikrosekunde, zatose bo 8-bitni števec, po deljenju s 1024,povečeval vsakih 102,4 µs. Zato bo frek-venca na krmilnem pinu PB3 nekoliko viš-

Slika 5: Modifikacija sheme s slike 2, ki odpra-vi “blisk” pri vklopu napajalne napetosti

Opisani postopki so del programaLCD_8051.bas, ki si ga lahko brezplačnosnamete s spletnih strani Sveta elektroni-ke. Program vsebuje tudi oba analiziranaprimera, ki se izbirata z odklopom/priklo-pom pina P3.5 na maso. Program je prila-gojen testni plošči Bascom in LCD-modu-lu, vendar ga je možno izvajati na vsakemvezju, ki je narejeno po shemi na sliki 2.

Program: LCD_8051.bas

P R O G R A M I R A N J E / O s v e t l i t e v L C D - p r i k a z o v a l n i k a

Page 7: PREDSTAVLJAMO / Mala ıola RTV-servisiranja 41sspbvrec/UMN/12_13/se_upravljanje z... · Program Bascom8051 Mikrokontroler bo upravljal z intenziteto osvetlitve s pomoŁjo pulzno-ıirinske

S V E T E L E K T R O N I K E M A R E C 2 0 0 4

47

stali del programa je identičen prej opisa-ni rešitvi Bascom8051, le da se posamezniregistri drugače imenujejo. Celoten pro-gram LCD_AVR0.bas si lahko snamete znaših spletnih strani. Uporaba časovnegavezja Timer1 ponuja drugačno, zelo ele-gantno možnost rešitve zadanega proble-ma:

Config Timer1 = Pwm , Pwm = 8 ,Prescale = 64 , Compare A Pwm = ClearDownStop Timer1

Takole konfigurirani Timer1 bo štel od 0do 255 in nato nazaj do 0 ter pri tem pri-merjal vrednost v števcu z vrednostjo vCompareA registru. Ko se vrednosti ize-načita, se bo stanje izhodnega pina OC1(= PB3) postavilo v “0” ali “1”, odvisno od

smeri, v katero števec šteje.Opisano je prikazano z dia-gramom na sliki 6; opazimo,da se vse dogaja izključno nahardverski ravni – tukaj nepotrebujemo nobene prekini-tvene rutine! Za en cikel štet-ja, s preddelilnim faktorjem64, bomo potrebovali okoli3,3 ms, kar se bo izrazilo sfrekvenco okoli 300 Hz. Zvpisom vrednosti med 1 in254 v register CompareAdoločimo trenutek, ko boOC1 spremenil stanje in stem tudi širino impulza: Ti-mer1 deluje kot pulzno-širin-ski generator. V podprogra-mu “Vklopi_luc” prenesemovrednost iz spremenljivke“Luc” v register CompareAter jo pri tem pomnožimo s4:

Vklopi_luc: If Luc = 0 Then Stop Timer1 Reset Portb.3 Elseif Luc > 63 Then Stop Timer1 Set Portb.3 Else Luc_w = Luc + Luc Luc_w = Luc_w + Luc_w Compare1a = Luc_w If Tccr1b = 0 Then Set Portb.3 Start Timer1 End If End IfReturn

ja kot prej, in sicer okoli 152 Hz. Ta spre-memba je dobrodošla: tako kot slika na100-herčnih televizorjih manj utripa kot sli-ka na 50-herčnih televizorjih, bo tudi tu-kaj povečanje frekvence povzročilo osvet-litev prikazovalnika z manj utripanja. Čeuporabimo 4-megaherčni kvarc (najvišjadovoljena frekvenca nekaterih AVR-mikro-kontrolerjev), bo frekvenca še vedno zna-šala zadovoljivih 61 Hz. Prav tako zaradivišje hitrosti AVR-mikrokontrolerjev ni bilopotrebno uporabiti opcije “Nosave” – pre-kinitevna rutina traja okoli 15,5 µs inupočasnjuje izvršitev programa le za 0,47%. Na ta način smo si prihranili analizira-nje, katere registre prekinitevna rutina upo-rablja, in njihovo shranjevanje na sklad;AVR-ji intenzivno uporabljajo registre, zatoje v BascomuAVR potrebno biti zelo pre-viden pri uporabi opcije “Nosave”. Preo-

Slika 6: Diagram prikazuje način delovanja časovnega vezjamikrokontrolerja AT90S2313 v PWM-režimu

Z množenjem “raztegnemo” razpon osvet-litve 1-63 na 4-252, da bi optimalno izkori-stili zmogljivosti 8-bitnega števca. Tudi tu-kaj ustavimo delovanje časovnega vezja intrajno postavimo izhodni pin v stanje log.0" ali log. “1”, ko je “Luc” = 0 oziroma 64.Preostali del programa je identičen prejopisanemu, celoten programLCD_AVR1.bas pa si lahko snamete z:www.svet-el.si.Rešitev z AVR-mikrokontrolerjem in časov-nim vezjem Timer1 je programersko gle-dano najelegantnejša. Edina pomanjklji-vost takšne rešitve je v tem, da moramouporabljati pin PB3 (OC1), ker je ta zno-traj mikrokontrolerja povezan s kompara-torjem timerja 1. V vseh ostalih rešitvahlahko uporabljamo kateri koli pin, ker gapostavljamo programsko; mi smo uporab-ljali PB3, oziroma P1.3, samo zato, da bivse rešitve bile pin-kompatibilne. l

P R O G R A M I R A N J E / O s v e t l i t e v L C D - p r i k a z o v a l n i k a

�TEVEC=LUÈ?

VSAKIH 6,4µs

VSAKIH 6,4µs

�TEVEC=0

�TEVEC=�TEVEC + 1

�TEVEC=�TEVEC - 1

�TEVEC=LUÈ?

�TEVEC=255?

�TEVEC=0?

Page 8: PREDSTAVLJAMO / Mala ıola RTV-servisiranja 41sspbvrec/UMN/12_13/se_upravljanje z... · Program Bascom8051 Mikrokontroler bo upravljal z intenziteto osvetlitve s pomoŁjo pulzno-ıirinske

M A R E C 2 0 0 4 S V E T E L E K T R O N I K E

48

Page 9: PREDSTAVLJAMO / Mala ıola RTV-servisiranja 41sspbvrec/UMN/12_13/se_upravljanje z... · Program Bascom8051 Mikrokontroler bo upravljal z intenziteto osvetlitve s pomoŁjo pulzno-ıirinske

S V E T E L E K T R O N I K E M A R E C 2 0 0 4

49P R O G R A M I R A N J E / O s v e t l i t e v L C D - p r i k a z o v a l n i k a

Program: LCD_AVR0.bas

Program: LCD_AVR1.bas