You are on page 1of 26

< >.

SEMINARSKI RAD
Predmet: Projektovanje digitalnih sistema Tema:
Prikaz vremena, datuma i temperature na grafikom displeju LPC1766 STK razvojnog sistema

Profesor: dr Sinia Rani

Student: Nikola Ostoji, 885/2012

aak, 2013. godine

SADRAJ
Sadraj......................................................................................................................................2 UVOD......................................................................................................................................3 PROJEKTNI ZADATAK........................................................................................................4 REALIZACIJA SISTEMA......................................................................................................5 3.1 A/D konvertor...................................................................................................................8 3.2 Real Time Clock (RTC)..................................................................................................11 3.2.1 Opis RTC................................................................................................................11 3.2.2 Opis RTC pinova....................................................................................................12 3.2.3 Opis registara..........................................................................................................13 3.2.4 RTC prekidi.............................................................................................................13 3.2.5 Postupak kalibracije................................................................................................14 3.3 Grafiki displej................................................................................................................15 3.3.1 Komunikacija sa LCD displejom............................................................................16 3.4 Merenje temperature.......................................................................................................17 3.5 Realizacija softvera.........................................................................................................20 3.5.1 Glavni program.......................................................................................................20 3.5.2 Razvojni softver......................................................................................................21 3.6 Prikaz rezultata na grafikom displeju............................................................................21 ZAKLJUAK........................................................................................................................23 LITERATURA.......................................................................................................................24 Prilog......................................................................................................................................25

1.
UVOD
U okviru ovog seminarskog rada dat je postupak realizacije sistema za ispis vremena, datuma i temperature na grafikom LCD displeju . Opisan je razvojni sistem LPC1766-STK firme Olimex koji je korien za realizaciju sistema za praenje temperature i ispis vremena i datuma. Takoe su detaljnije opisani delovi razvojnog sistema koji su iskorieni u realizaciji sistema za praenje temperature kao to su mikrokontroler zasnovan na 32-bitnoj ARM Cortex M3 arhitekturi, njegov A/D konvertor, sat realnog vremena (RTC) i grafiki displej. Na kraju je objanjen postupak realizacije softvera uz pomoc CMSIS standarda i izvreno je ilustrovanje konanih rezultata zbog kojih je ova aplikacija i bila realizovana.

2.
PROJEKTNI ZADATAK
Projektni zadatak ovog rada je izrada sistema za merenje temperature i prikaz rezultata merenja na grafikom displeju. U ovom projektu akcenat je na korienju mikrokontrolera u akviziciji podataka kao i njegova komunikacija sa U/I ureajima kao to su temperaturni senzor i grafiki displej. Na grafikom displeju bi trebalo prikazati trenutnu vrednost temperature kao i grafikon promene temperature u odreenom vremenskom intervalu. Prednost korienja grafikona ogleda se u lakoj percepciji trenda temperature u odreenom vremenskom intervalu. Sistem se sastoji od analognog temperaturnog senzora, mikrokontrolera sa A/D konvertorom i LCD grafikog displeja koji slui za interakciju sa korisnikom. Temperatura e se meriti analognim rezistivnim senzorom koji je preko naponskog razdelnika povezan na A/D konvertor mikrokontrolera. Uloga temperaturnog senzora je da konvertuje temperaturu u promenu otopora, to rezultuje promenom napona na izlazu iz naponskog razdelnika. Rezultujui analogni naponski signal se digitalizuje uz pomo A/D konvertora kako bi bio spreman za dalju obradu u mikrokontroleru. Softver e biti organizovan u vidu sekvencijalnog programa tako to e se najpre oitati vrednost napona A/D konvertora a zatim e se napon prevesti u temperaturu u C. Vrednosti temperature e biti prikazana na grafikom displeju. Drugi zadatak je da pored temperature, na grafikom displeju prikaemo datum i vreme. To emo uraditi uz pomo sata realnog vremena (RTC).

3.
REALIZACIJA SISTEMA
Za realizaciju sistema za praenje temperature iskorien je razvojni sistem LPC1766STK firme Olimex koji poseduje LPC1766 mikrokontroler zasnovan na 32-bitnoj ARM Cortex-M3 arhitekturi, proizvoaa NXP Semiconductors, kao i brojne periferije. Temperaturni senzor je realizovan uz pomo NTC termistora postavljenog u razdelnik napona tako da promena otpora sa temperaturom dovodi do promene napona naponskog razdelnika. Napon sa naponskog razdelnika se uvodi u mikrokontroler, odnosno njegov A/D konvertor. A/D konverzijom se vrednost ulaznog napona predstavlja 12-bitnom binarnom vrednou. Rezultat A/D konverzije, tj. digitalizovana vrednost napona, se najpre raunski pretvara u otpor a zatim u vrednost temperature koja je izmerena termistorom. Rezultati temperature se smetaju u FIFO (First In, First Out) bafer i kao takvi se prikazuju na grafikom displeju gde se prati promena temperature u odnosu na vreme. Komunikacija mikrokontrolera i grafikog displeja se odvija preko SPI magistrale mikrokontrolera pri emu se mikrokontroler ponaa kao Master a grafiki displej kao Slave ureaj.

Slika 1. Blok ema sistema za prikaz vremena, datuma i temperature 1.1 LPC1766-STK razvojni sistem LPC1766-STK je razvojni sistem sa LPC1766 Cortex-M3 mikrokontrolerom firme NXP. Ovaj mikrokontroler poseduje razne serijske interfejse kao to su USB Device/Host/OTG, SPI, I2C, UART, CAN i drugi. Na ploi su dostupni audio ulaz i izlaz, digitalni akcelerometar, JTAG, Ethernet, TFT LCD i konektor za mini SD/MMC karticu. Ovo omoguava razvoj razliitih aplikacija sa irokim spektrom njihove primene.

Slika 2. Razvojna ploa LPC1766-STK

Osnovne karakteristike razvojne ploe: MCU: LPC1766 Cortex M3, 100 Mhz, 256KB Flash, 64KB RAM, Ether-net MAC, USB Host/ Device/OTG, x4 UARTS, CAN, SPI, SSP, I2C, I2S, ADC, DAC, TC LCD NOKIA 6610 128x128 x12bit color TFT sa Epson LCD kontrolerom digitani troosni akcelerometar sa 11-bitnom preciznou NTC temperaturni senzor Ethernet 100 Mbit CAN interfejs i konektor USB host, USB device i USB OTG konektor dve LED diode, tri tastera, dojstik i potenciometar konektor za mikro SD/MMC karticu 6

JTAG i TRACE konektori UEXT konektor za proirenje Audio ulaz i izlaz Baterija za sat realnog vremena (RTC) Dimenzije: 134.6x101.6mm 1.2 Mikrokontroler Mikrokontroler je baziran na ARM Cortex-M3 arhitekturi optimizovanoj za nisku potronju i jednostavnost upotrebe. Na slici 6.3 je prikazana blok ema porodice mikrokontrolera LPC17xx. Jezgro mikrokontrolera, ARM CORTEX-M3, komunicira sa ostatkom mikrokontrolera preko AHB (Advanced High-Speed Bus) magistrale. Na tu magistralu spojene su memorija (programska memorija, radna memorija i boot ROM memorija), USB kontroler i brzi periferni ulazi/izlazi opte namene. Na AHB magistralu spojen je i most (Bridge) prema APB (Advanced Peripheral Bus) magistrali na kojoj se nalaze sporije periferije mikrokontrolera.

Slika 3. Blok ema mikrokontrolera LPC1766 Mikrokontroler poseduje 70 U/I pinova opte namene koji su grupisani u portove P0-4, 256kB flash memorije, 64kB radne memorije, sa maksimalnom radnom frekvencijom od 100MHz. Mikrokontroler je spakovan u 80-pinsko LQFP kuite malih dimenzija. Napon napajanja mikrokontrolera je od 2.4 V do 3.6 V. Mikrokontroler se programira preko JTAG/SWD porta koji je prikaen na JTAG/SWD konektor na razvojnoj ploi. 3.1 A/D konvertor Mikrokontroler poseduje jedan 12-bitni A/D konvertor koji radi na principu sukcesivnih aproksimacija. Korienjem analognog multipleksera, na ulaz A/D konvertora se dovodi jedan od 8 ulaza sa eksternih pinova mikrokontrolera. Opseg konverzije A/D konvertora je od do , koji se moe dovesti eksterno ili fiksirati za napon napajanja od 3.3 V. Osnovno taktovanje A/D konvertora je omogueno od strane takta APB magistrale. Skaliranje takta na 8

takt potreban za proces sukcesivnog aproksimiranja (maksimalno 13 MHz) se vri uz pomo programabilnog delitelja. A/D konverzija zahteva 65 taktova kako bi bila uspeno zavrena. A/D konvertor podrava burst reim konverzije za jedan ili vie ulaza pri emu se konverzija obavlja na svim aktivnim pinovima naizmeninom brzinom do 200 kHz. A/D konvertor podrava power-down reim rada niske potronje. U tabeli 1 dat je opis pinova A/D konvertora. Tabela 1 Opis pinova A/D konvertora Pin Tip Opis Analogni ulazi. ADC elija moe meriti napon na bilo kojem od ovih ulaznih signala. Digitalni signali su iskljueni sa ADC ulaznih pinova kada je ADC funkcija AD0.7 do AD0.0 Ulazni selektovana na tim pinovima u Pin Select registru. Upozorenje. Ako se koristi ADC, nivo signala na ulaznim pinovima ne sme biti iznad nivoa u bilo kom

trenutku. Referentni naponi. Ovi pinovi obezbeuju referentne Referenca napone za ADC i DAC. Napomena: vezan na VDD (3V3) a na treba da bude

ako se ADC i DAC ne

koriste. Analogno napajanje i uzemljenje. Ovo bi obino Napajanje trebali da budu isti naponi kao i i ali bi trebali da

budu izolovani zbog smanjenja buke i mogue greke. Osnovna konfiguracija: 1. Napajanje: u PCOMP registru setovati PCADC bit Primedba: Prilikom reseta ADC je onemoguen. Da bi omoguili rad ADC-a, prvo setujemo PCADC bit a zatim omoguavamo ADC u AD0CR registru (bit PDN). Da bi onemoguili ADC, prvo briemo PDN bit, a zatim PCADC bit. 2. Takt: U PCLKSEL0 registru selektujemo PCLK_ADC. Za skaliranje takta ADC-a pogledati CLKDIV bitove u kontrolnom registru. 3. Pinovi: Omoguiti ADC0 pinove preko PINSEL registra. Izabrati pin reime za pinove sa ADC0 funkcijama preko PINMODE registara. 4. Prekidi: Prekidi su omogueni u NVIC kontroleru korienjem odgovarajueg Interrupt Set Enable registra.

Odabir kanala za konveziju se vri uz pomo SEL[7:0] bitova u kontrolnom registru A/D konvertora. Konverzija se startuje postavljanjem START bitova u kontrolnom registru A/D konvertora na odgovarajuu vrednost. Rezultat poslednje zavrene konverzije se uva u ADGDR registru podataka. Nakon zavretka konverzije DONE flag u ADGDR registru se postavlja na vrednost 1. Po zavretku konverzije, DONE flag e generisati prekid ukoliko je on omoguen u ADINTEN registru A/D konvertora.

Slika 4. Blok ema A/D konvertora Ako je u ADCR registru BURST bit 0 i u START polju vrednosti od 010 do 111, A/D konvertor e pokrenuti konverziju kada se na izabranom pinu desi ivica odreena u kontrolnom registru. U tom sluaju A/D konvertor zapoinje konverziju kada se: 1. Desi odreena ivica izabranog MATCH kanala (bilo kog od etiri). 2. Desi odreena ivica izabranog CAPTURE/MATCH kanala (bilo kog od dva). Stanje sa selektovanog pina i bit 27 u ADCR registru se vode na ulaz EXILI kola iji se izlaz koristi u logici za detekciju ivice. Kad je u ADDR registru vrednost DONE bita postavljena na 1, prekid je potvren vektorskom kontroleru prekida (NVIC). Softver moe koristiti bitove za omoguavanje prekida A/D konvertora da kontrolie da li e doi do prekida. Kad se oita vrednost ADDR registra, DONE bit se brie. 10

ADC funkcija mora biti izabrana preko PINSEL registara u cilju dobijanja ispravnog oitavanja napona na posmatranom pinu. PINMODE takoe treba podesiti na reim bez pullup ili pull-down otpornika. Za pin koji je prikljuen na ulaz AD konvertora nije mogue odabrati digitalnu funkciju na ulazu i uz to dobiti ispravna oitavanja. Unutranje kolo diskonektuje ADC hardver sa pridruenog pina kad god je digitalna funkcija odabrana na tom pinu. 3.2 Real Time Clock (RTC) Karakteristike RTC su: Meri prolazak vremena da se odri kalendar i sat, obezbedjuje seknde, minute, sate, dane u mesecu, mesece, godine, dane u nedelji, dan u godini. Mala snaga dizajnirana je da podri sistem, manje od jednog mikro ampera potreban je za rad baterije. Koristi snagu iz procesorskog napajanja kada je u funkciji. Dvadeset bajtova baterije uz podrku skaladitenja i RTC rada kada je struja uklonjena iz procesora. RTC napajanje je izolovano od ostatka ipa. Kalibracija brojaa omoguava prilagovavanje bolje od plus minus jedan sekund po danu sa jednom sekundom rezolucije. Periodni prekidi mogu se generisati iz bilo koje oblasti poveavanje vremena registara. Alarm prekid moe biti generisan za odreeni datum, vreme. 3.2.1 Opis RTC RTC je skup brojaa za merenje vremena kada je sistem za napajanje ukljuen i opcionalno kada je iskljuen. Koristi veoma malo energije kada njegovi registri ne pristupaju procesoru na LPC 17XX, RTC je taktovan razliitim posebno sa 32kHz oscilatorom koji proizvodi 1 Hz interne vremenske reference. RTC se napaja posebnom pumpom za napajanje VBAT, koji moe biti povezan sa beterijom. RTC napajanje je prikazano u konceptnoj formi na slici 5:

11

Slika 5. RTC domen konceptualnog dijagrama Detaljan pregled registara i kontrole RTC-a je prikazan na sledoj slici 5.3.

Slika 6. RTC funkcionalni blok dijagram 3.2.2 Opis RTC pinova Opis funkcija kontakata dat je u tabeli 2. Tabela 2. Opis RTC pinova Name RTCX1 RtCX2 Vbat Type I O I Description Input to the RTC odcillator Output from the RTC oscillator circuit RTC power supply

12

3.2.3 Opis registara Za veinu registara RESET vrednost kolona pokazuje NC, to znai da ovi registri ne menjaju strane od strane RESET. Softver mora inicijalizovati ove registere izmeu napajanja i podeavanja RTC-a u radu. Registri su podeljeni u pet grupa po funkcionalnosti. Opis tabele: Reset vrednosti vae samo za napajanje RTC blokova, dve vrste RESETA nemaju nikakav efekat na ovom bloku. Poto se RTC napaja energijom kada god je bilo koji od VDD ili V zalihe su prisutne snaga se poveava, RESET se deava samo kada su obe zalihe nestale i onda se ona ukljuuje. Na veinu registara ne utie napajanje raunara RTC-a i mora biti inicijalizovan pomou softvera. Ako je RTC omoguen RESET vrednosti oslikavaju podatke uskladitene samo u bitovima koji se koriste. 3.2.4 RTC prekidi Prekid se kontrolie preko Interrupt Location Register (ILR), broja CounterIncrement Interrupt Register (CIIR), alarm registara i AMR.Prekidi su generisani samo u tranzicionom prekidnom stanju. ILR odvojeno omoguava CIIR i AMR prekide. Svaki bit CIIR odgovara jednom vremenu brojaa. Ako je CIIR omoguen, broja uveava prekid koji je generisan. Alarm registri omoguavaju korisniku da odredi datum i vreme za prekid koji e biti generisan. RTC prkid moze da dovede mikrokontroler iz POWER-DOWN MOD kada RTC radi iz sopstvenog oscilatora na sopstvenim pinovima RTC X1-2. Kada RTC prekid omogui buenje kada se izabrani dogaaj desi, ciklus buenje je povezan sa XTAL pin je startovan Lokacija prekidnog registra je dvobitni registar koji pozicionira koji e se blokovi generisanja prekidati, kao to je prikazano u tabeli 3. Tabela 3. RTC prekidi Bit 0 1 31:21 Symbol RTCCIF Description When one, the counter Increment Interupt block generated an interrupt. Reserved, user software should not write ones to reserved bits

RTCALF When one, the alarm registers generated an interrupt -

Pisanjem jednog odgovarajueg bita brie se odgovarajui prekid. Pisanjem nule nema efekta, ovo nam omoguava da itamo kodove ovog registra i natrag da pie istu vrednost za brisanje prekida.Sat registar je etvorobitni koji kontrolie rad kola.Svaki NC bit u ovom registru treba da bude inicijalizovan kada je RTC prvi put ukljuen.

13

Broja poveanja prekidnog registra (CIIR) daje mogunost da generie prekid svaki put kada je broja uvean. Ovaj prekid vazi sve dok je osloboen od pisanja jedan do bita nula ILR[0]. Alarm Mask Register (AMR) omoguava registru da maskira bilo koji od alarma registara. Za alarm funkciju svaki ne maskirani alarm registar mora da odgovara na odgovarajue vreme, broja za prekid se generie. Prekid se generie samo kada se uporeuje sa prvom promenom bez odgovora. Prekid je uklonjen kada je napisan na odgovarajui nain u ILR. Ako su sve maske bita podeene onda je alarm iskljuen. RTC pomoni kontrolni registar sadi dodatne prekidine zastave koje nisu deo RTC-a. Na LPC 17XX jedino dodata prekidna zastava je za RTC oscilator. RTC pomoni ENABLE registar kontrolie da li su dodatni izvori prekida zastupljeni u RTC pomonom kontrolnom registru. 3.2.5 Postupak kalibracije Kalibrisana logika moe periodino podesiti vreme ali da ne uveava broja ili da uveava broja za dva umesto za jedan. Ovo omoguava kalibraciju RTC oscilatora pod nekim tanim naponom i temperaturnim uslovima, bez potrebe da eksterno izdvajamo RTC oscilator. Preporuena metoda za odreivanje vrednosti kalibracije je CLKOUT osobine za ne nametljivo posmatrnje RTC frekfencije oscilatora. Izraunavanje broja sati koji e se videti pre nego to je vreme iskljueno. Ta vrednost se koristi za odreivanje CALVAL. Ako je RTC oscilator eksterno izostavljen, ista metoda posmatranja RTC oscilatora moe biti od pomoi u ovom procesu. RTC tajmer omoguuje kalibraciju u CCR registru (postavljeni bitovi CLKEN=1 i CCALEN=0) u kalibracionom registru podeava se vrednost kalibracije CALVAL >= od jedan i bira se CALDIR=1. SEC tajmer i kalibracioni broja broje za svaki ciklus 1Hz po satu. Kada kalibraciona kontrola dostigne, kalibracija se podudara i svi RTC tajmeri e biti zaustavljeni za jedan ciklus, tako da se nee poveati tajmer u sledeem ciklusu. Ako se alarm podudari sa dogadjajem, javlja se u istom ciklusu kao ista kalibracija, alarm prekid e kasniti jedan ciklus da bi se izbegao drugi prekid alarma. Kalibracija napred omoguuje da je RTC tajmer i kalibracija u CCR registru(postavi bitove CLKEN=1 i CCALEN=0). U kalibracionom registru podeavamo vrednost kalibracije CALVAL=1 i izaberemo CALDIR=0. SEC tajmer kalibracioni i broja broji za svaki herc po satu. Kada kalibracioni broja dostigne CALVAL, kalibracija podudaranja se javlja i RTC tajmer se povea za dva. Kada kalibracija dogaaja LSB od ALSEC registra se trai da bude jedan, tako alarm prekida nee biti proputen dok preskoi jednu sekundu. 14

3.3 Grafiki displej Korieni displej u projektu je LCD (Liquid Crystals Display displej sa tenim kristalima). Zasniva se na aktivnoj TFT TN matrici ( thin film transistors twisted nematic ). Za kontrolu svakog piksela u matrici zaduen je poseban tranzistor odtampan direktno na providnoj staklenoj ploi. Nokia 6610 LCD korien na LPC1766-STK razvojnom sistemu baziran je na Philips PCF883 grafikom kontroleru.

Slika 7. Nokia 6610 grafiki displej Osnovne karakteristike ovog displeja su: 132x132 piksela 12-bitni prikaz boja 3.3 volta napajanje 9-bitni SPI serijski interfejs (clock/data signali) Philips PCF8833 grafiki kontroler Tabela 3. Pinovi Philips PCF883 grafikog kontrolera Pin 1 2 3 4 5 6 7 8 9 10 Opis : 3.3V #Reset Serial Data CLK #CS : 3.3V N.C. GND Vled- GND Vled +6V to 7V Funkcija Prikljuak za napajanje Reset displeja Linija podataka Signal takta Odabir moda (master, slave) Prikljuak za napajanje Nije konektovan Vezuje se na masu Vezuje se na masu Pozadinsko osvetljenje

15

3.3.1 Komunikacija sa LCD displejom Nokia 6100 koristi dvoini serijski SPI interfejs (takt i podaci). SPI (Serial Peripheral Interphace) predstavlja serijski protokol za brzu sinhronu komunikaciju izmeu ureaja. Ureaji komuniciraju na bazi master-slave odnosa, tako da master ureaj inicira poetak razmene podataka. On generie takt i selektuje ureaj sa kojim se uspostavlja komunikacija. Takoe, master ureaj odreuje brzinu, smer prenosa (da li se podaci alju, ili primaju) i format podataka. Podaci se mogu istovremeno prenositi u oba smera, od master ureaja prema slave ureaju i obrnuto. Za serijsku SPI komunikaciju koriste se 4 signala: SCK- Serial clock (takt serijske veze) SS Slave select (definisanje master/slave kontrolera) MISO Master in, slave out (ulaz master ureaja, izlaz slave-a) MOSI- Master out, slave in (izlaz master ureaja, ulaz slave-a) Komunikacija poinje kada master ureaj aktivira signal SS (slave select), to jest postavi logiku nulu na tu liniju (signal SS je na slici 8 oznaen kao SCE). SPI periferija na ARM Cortex M3 mikrokontroleru generie signal takta i alje podatke, tako da se displej ponaa kao slave ureaj. Olimex je u ovom sluaju odluio da ne implementira MISO0 signal koji bi omoguio da mikrokontroler vri oitavanja sa LCD displeja. Dakle, displej je iskljuivo write-only. Serijski se na displej alje 9 bitova pri emu 9-ti bit ukazuje na to da li se prenosi komandni bajt ili bajt podataka. Na vremenskom dijagramu ispod vidimo da je 9-ti bit prvi taktovan i on je postavljen na LOW ako indicira komandini bajt ili na HIGH ako indicira bajt podataka.

Slika 8. Slanje komandnih bajtova i bajtova podataka preko SPI interfejsa U specifikaciji PCF8833 grafikog kontrolera je dato da period serijskog takta SCLK bude ne manji od 150 nsec. SPI periferija je podeena da radi na taktu od 1MHz. 16

Olimex LPC1766-STK ploa koristi ARM Cortex-M3 mikroprocesor tako da se komande ili podaci alju na SPI interfejs kao neoznaeni celi brojevi (32-bita) u kojima se koristi samo niih 9 bitova. Hardverski interfejs koristi 5 ulazno/izlaznih port pinova; tri pina sa porta P1 i dva pina sa porta P3, kao to je prikazano u tabeli 4. Tabela 4. Ulazno/izlazni pinovi za vezu mikrokontrolera sa LCD displejom i njihove funkcije Port Pin P3[25] P1[21] P1[23] P1[24] P1[20] P3[26] Oznaka LCD_RST SSEL0 MISO0 MOSI0 SCK0 LCD_BL Funkcija LCD Reset (postaviti na LOW za reset ) LCD chip select (postaviti na LOW za selekciju LCD ipa) Master In Slave Out pin (nije korien za LCD interfejs) Master Out Slave In pin (serijski prenos na LCD slave) Serijski takt (na LCD slave) Kontrola pozadinskog osvetljenja (normalna PWM kontrola, 1= puno osvetljenje)

Kao to je prikazano u tabeli 4 iznad, Olimex je odluio da izbaci SPI0_MISO Master In bit koji bi omoguio itanje podataka sa LCD displeja. LED pozadinsko osvetljenje troi dosta struje, tako da je za ovu namenu korien pojaava na 7 volti. Pozadinsko osvetljenje se moe ukljuivati i iskljuivati korienjem P3[26] bita. Omoguena je i PWM kontrola pozadinskog osvetljenja. 3.4 Merenje temperature Temperaturni senzor koji se nalazi na Olimex LPC1766-STK razvojnoj ploi sadri NTC (negative temperature coefficient) termistor. Merenje temperature pomou NTC termistora je jednostavno, jeftino i pouzdano reenje. Primenjuje se kod merenja povrinske temperature. NTC termistor je temperaturno osetljivi otpornik. Promena otpora sa temperaturom je izrazito nelinearna, pa se ova nelinearnost mora kompenzovati. Zavisnost otpora od temperature data je na slici 9. Uopteno celu gamu ureaja karakteriu visoka osetljivost na temperaturne promene, tanost bolja od 1%, male dimenzije, brzina odziva od 1ms do 150s (najee oko 30s), vrednost nominalnog otpora na 20C, 10k-10M , stabilan na starenje (manje od 0.03C/god).

17

Slika 9. Zavisnost otpornosti NTC termistora od temperature Relacija izmeu otpora i temperature za termistore nije idealno linearna, pa je za precizna merenja na irem opsegu temperatura neophodno primeniti funkcije koje aproksimiraju R(T) karakteristiku termistora. Standardna formula za otpornost NTC termistora je funkcija temperature i data je u jednaini 6.1. RT = R0 e Odakle je, T= 1 1 1 R + ln( T ) T0 B R0 (2)
1 1 B( ) T T0

(1)

gde je R0 nominalna otpornost termistora na sobnoj temperaturi, B je materijalna konstanta u kelvinima i za NTC korien u ovom sistemu ona iznosi 4000K, i T je trenutna temperatura na termistoru u kelvinima. Na osnovu ove jednaine dobijena je aproksimacija realne temperaturne karakteristike, slika 10. Za Y apcisu je koriena logaritamska skala. Tipina vrednost za R0 je 1 - 10k, za NTC korien u ovom sistemu vrednost otpornika R0 je 10k.

18

Slika 10. Temperaturna karakteristika na logaritamskom grafiku Na slici 11 je prikazan temperatorni senzor koji omoguava mikrokontroleru merenje temperature uz pomo termistora.

Slika 11. Povezivanje termistora sa mikrokontrolerom Referentni napon na temperaturnom senzoru jednak je referentnom naponu A/D konvertora i u ovom sluaju iznosi 3.3V. Kombinacija termistora TH1 i pull-down otpornika R15 ini razdelnik napona i promena otpornosti na termistoru dovodi do promene napona na spoju. Tanost ovog kola zavisi od tolerancije otpornika i termistora kao i tanosti referentnog napona. Na osnovu ulaznog napona na A/D konvertoru moemo izraunati otpornost termistora: RX = R (VCC V0 ) V0 (3)

gde je R otpornost pull-down otpornika , VCC referentni napon a V0 napon na ulazu A/D konvertora. Ako dobijenu vrednost trenutne otpornosti termistora uvrstimo u jednainu 6.2 dobiemo trenutnu vrednost temperature. Obzirom da je termistor promenljivi otpornik, prolazak struje kroz njega e generisati toplotu. Zbog toga pull-down otpornik mora biti dovoljno veliki da zatiti termistor od preteranog samozagrevanja ili e sistem umesto temperature ambijenta meriti temperaturu koja je nastala usled disipacije termistora. 19

3.5 Realizacija softvera Korienjem CMSIS-a ubrzava se razvoj programske podrke i olakava korienje ve postojeeg koda. Deo interfejsa koji je zajedniki svim mikrokontrolerima Cortex definie ARM, a deo koji je specifian pojedinoj porodici definie njen proizvoa. Neke od CMSIS datoteka pisanih za LPC17xx familiju mikrokontrolera ukljuene su u demo projekte koji se besplatno dobijaju uz LPC1766-STK razvojni sistem i koji predstavljaju osnovne primere funkcionisanja pojedinih periferija razvojnog sistema. Svaki od tih primera, pored CMSIS datoteka i standardnih C biblioteka sadri i drajvere za pojedine module kao to je u naem sluaju grafiki displej. Razvijeni softver je smeten u internoj flash memoriji LPC1766 Cortex-M3 procesora. Softver je implementiran u programskom jeziku C prilagoenom korisnikoj familiji procesora, realizovan je modularno tako da se lako moe prilagoditi i novim zahtevima, ili se delovi koda mogu iskoristiti i za potpuno nove aplikacije. Softver obezbeuje sledee funkcionalnosti: 1. Inicijalizaciju periferija: Inicijalizaciju SPI modula Inicijalizacija RTC modula Inicijalizaciju A/D konvertora Inicijalizaciju grafikog displeja 2. Glavna programska petlja koja sadri algoritam za ispisivanje rezultata A/D konverzije na grafikom displeju, kao i za ispisivanje vremena i datuma. 3.5.1 Glavni program Na poetku glavnog programa vri se podeavanje glavnog takta mikrokontrolera, podeavanje perifernog takta, inicijalizacija grafikog displeja i inicijalizacija A/D konvertora. Kd za podeavanje takta mikrokontrolera i inicijalizaciju periferija nalazi se u main.c sekciji ovog projekta. Nakon inicijalizacije periferija, mikrokontroler se uvodi u beskonanu petlju. Rad sistema (program) je organizovan tako da se u beskonanoj petlji, jedna za drugom, neprekidno obavljaju tri aktivnosti: oitavanje digitalizovane vrednost izmerenog napona sa temperaturnog senzora, konverzija oitane vrednosti napona u temperaturu uz pomo matematike jednaine za linearizaciju prenosne karakteristike termistora i prikazivanje rezultat na grafikom displeju.

20

Slika 12. Dijagram toka glavnog programa 3.5.2 Razvojni softver Pri izradi softvera korieno je razvojno okruenje IAR Embedded Workbench. U okruenju su integrisane osnovne komponente za razvoj softvera u koje se ubrajaju asembler, C/C++ kompajler, linker, debug-er, kao i brojni pomoni alati. Kompajler, asembler i linker koji dolaze uz ovu verziju razvojnog okruenja optimizovani su za prevoenje izvornog kda u objektni kd koji je kompatibilan sa arhitekturom mikrokontrolera familije Cortex-M3, u koju spada i korieni model LPC1766. Izvorni kd programa, bilo da je pisan u asembleru ili C jeziku, potrebno ga je pre upisa u mikrokontroler prevesti u mainski jezik. To se moe uraditi u navedenom IAR Embedded Workbench razvojnom softveru, naravno nakon to se otklone sve eventualne greke. Kao rezultat ove operacije pojavie se objektni fajl u heksadecimalnom formatu (*.hex) koji nosi niz 14-bitnih instrukcija namenjenih mikrokontroleru. Programiranje mikrokontrolera LPC1766 na razvojnoj ploi LPC1766-STK se obavlja u par, prilino standardnih koraka. U naem sluaju, kao programator, koristiemo J-Link . JLink programator kao konektore sa jedne strane ima USB koji se prikljuuje na raunar, a sa druge strane JTAG konektor koji se prikljuuje na JTAG konektor na razvojnoj ploi. 3.6 Prikaz rezultata na grafikom displeju Ispis na grafikom displeju daje konani izgled i funkcionalnost sistemu. Slui za direktnu interakciju sa korisnikom i veoma je bitno da prikaz na displeju bude lepo dizajniran. Prilikom inicijalizacije displeja najpre je prikazan logo laboratorije za raunarsku tehniku. Logo je realizovan u Adobe Illustrator-u i dimenzije su mu 132 x132 piksela. Zatim je logo konvertovan u niz od 17424 elementa gde svaki element niza nosi 12-bitnu RGB informaciju o boji jednog piksela i kao takav se prikazuje na displeju. Na sledeoj slici dat je prikaz dobijenih rezultata na grafkom LCD displeju. 21

Slika 13. Logo CSL laboratorije i prikaz vremena, datuma i temperature na grafikom displeju

22

4.
ZAKLJUAK
Prednosti razvojnog sistema LC1766STK su brojne, obzirom da ovaj razvojni sistem poseduje veliki broj modula ukljuujui i grafiki LCD displej. Na pomenutom razvojnom sistemu je mogue razviti veliki broj aplikacija za irok spektar primene. Na ovom razvojnom sistemu je realizovana aplikacija za ispis vremena i datuma na displeju kao i za praenje temperature uz pomo temperaturnog senzonra. Kao i svaki projekat i ovaj je mogue nadogradidti na vii nivo koji se svakim danom polako podie pod uticajem razvoja savremene tehnologije.

23

5.
LITERATURA
[1] James P. Lynch, Nokia 6100 LCD Display Driver http://www.sparkfun.com/tutorial/Nokia%206100%20LCD%20Display%20Driver.pdf [2] NXP Semiconductors, LPC17xx User manual http://www.nxp.com/documents/user_manual/UM10360.pdf [3] Olimex Ltd., LPC1766-STK podrka https://www.olimex.com/Products/ARM/NXP/LPC1766-STK/

24

PRILOG
Inicijalizacija AD konvertora:
// ADC Inicijalizacija // Assign P1.31 to AIN5 ANALOG_TRIM_PIN_SEL = 3; ANALOG_TRIM_PIN_MODE = 2; PINSEL1_bit.P0_24 = 1; PINMODE1_bit.P0_24= 2; PCONP_bit.PCAD = 1; // Enable ADC clk // Set ADC clk <4.5 MHz AD0CR_bit.CLKDIV = (SYS_GetFpclk(24) / 4500000) + 1; // Select AIN5 //AD0CR_bit.SEL = 1<<5; AD0CR_bit.SEL = 1<<1; // Disable all interrupts ADINTEN = 0; // Enable ADC AD0CR_bit.PDN = 1; // Start conversion AD0CR_bit.START = 1;

Inicijalizacija LCD displeja:


// GLCD init GLCD_PowerUpInit((pInt8U)CSL_Logo.pPicStream); GLCD_Backlight(BACKLIGHT_ON); Dly100us((void*)50000);

Inicijalizacija RTC modula:


//Initialize RTC module RTCInit(); local_time.RTC_Sec = 40; local_time.RTC_Min = 59; local_time.RTC_Hour = 2; local_time.RTC_Mday = 8; local_time.RTC_Wday = 3; local_time.RTC_Yday = 12; /* current date 07/12/2006 */ local_time.RTC_Mon = 07; local_time.RTC_Year = 2006; RTCSetTime( local_time ); RTCStart();

Ispis temperature:
AdcData = AD0GDR; if(AdcData & (1UL << 31)) { AD0CR_bit.START = 1; ADCRaw=AdcData; ADCRaw >>= 4; ADCRaw &=0xFFF; Rx=(40950000/ADCRaw)-10000;

25

Temperatura=1.0/(1/293.0+log(Rx/10000.0)/4000.0); T=(int)(Temperatura-273); Dly100us((void*)3000); AdcData >>= 10; AdcData &= 0x7F; GLCD_SetFont(&Terminal_9_12_6,0x000F00,0xffffff); GLCD_SetWindow(91,79,131,89); GLCD_TextSetPos(0,0); GLCD_print("%d\337C",T);

Ispis vremena i datuma:


current_time = RTCGetTime(); if (current_time.RTC_Hour > 12){ current_time.RTC_Hour = current_time.RTC_Hour-12; } GLCD_SetFont(&Terminal_9_12_6,0x000F00,0xffffff); GLCD_SetWindow(17,36,30,55); GLCD_TextSetPos(0,0); if (current_time.RTC_Hour > 12) { GLCD_print(" AM"); } else{ GLCD_print("PM"); } GLCD_SetFont(&Terminal_18_24_12,0x000F00,0xffffff); GLCD_SetWindow(35,35,115,55); GLCD_TextSetPos(0,0); GLCD_print("%d",current_time.RTC_Hour); GLCD_print(":"); GLCD_print("%d",((current_time.RTC_Min/10)%10)); GLCD_print("%d",(current_time.RTC_Min %10)); GLCD_print(":"); GLCD_print("%d",((current_time.RTC_Sec/10)%10)); GLCD_print("%d",(current_time.RTC_Sec %10)); GLCD_SetFont(&Terminal_9_12_6,0x000F00,0xffffff); GLCD_SetWindow(17,79,90,89); GLCD_TextSetPos(0,0); GLCD_print("%d",((current_time.RTC_Yday/10)%10)); GLCD_print("%d",(current_time.RTC_Yday %10)); GLCD_print("/"); GLCD_print("%d",((current_time.RTC_Mon/10)%10)); GLCD_print("%d",(current_time.RTC_Mon %10)); GLCD_print("/"); GLCD_print("%d",((current_time.RTC_Year/10)%10)); GLCD_print("%d",(current_time.RTC_Year %10));

26

You might also like