projektovanje materijala za...
TRANSCRIPT
UNIVERZITET U NIŠU
ELEKTRONSKI FAKULTET
KATEDRA ZA MIKROELEKTRONIKU
PROJEKTOVANJE MATERIJALA ZA
ELEKTRONIKU
LABORATORIJSKI PRAKTIKUM
Master inž. Miloš Đorđević
Niš, mart 2020.
Elektronski fakultet, Univerzitet u Nišu
Projektovanje materijala za elektroniku
___________________________________________________________________________
Vežba I
Primena LED diode kao senzor intenziteta osvetljenja
A. Teorijski pregled vežbe
Svetleća dioda, koja se znatno češće zove LED (eng. Light-Emitting Diode) ili
fotoluminiscentna dioda električnu energiju, odnosno električni signal pretvara u svetlosnu
energiju, unutrašnji presek LED diode dat na slici 1.
Elektron u valentnoj zoni ima manju energiju od elektrona u provodnoj zoni za veličinu
širine zabranjene zone Eg. Ako je moguća rekombinacija direktnim prelaskom elektrona iz
provodne u valentnu zonu, a kod svetlećih dioda se biraju upravo takvi poluprovodnički
materijali koji to omogućavaju, oslobađa se tom prilikom električna energija čija je vrednost
jednaka Eg. Ova energija se pretvara u foton svetlosti energije hf = Eg.
Slika 1. Unutrašnji presek LED diode
Da bi poluprovodnik emitovao svetlost, neophodno je da postoji veliki broj pobuđenih
elektrona. Pobuđivanje elektrona sa nižeg na viši energetski nivo najbolje se postiže
injekcijom, dakle pomoću p-n spoja pri direktnoj polarizaciji, sl. 2a. U tom slučaju slobodni
elektroni iz provodne zone n-tipa prelaze u provodnu zonu p-tipa.
Pošto u p-tipu ima mnogo šupljina, porašće intenzitet rekombinacije, te će nastati svetlosno
zračenje − tkzv. spontana emisija. Ukoliko je struja veća, a to je direktna struja diode IF, biće
veća i jačina svetlosti, sl. 2b.
Slika 2. a − Način povezivanja luminiscentne diode; b − zavisnost jačine svetlosti od
struje direktno polarisane diode
Elektronski fakultet, Univerzitet u Nišu
Projektovanje materijala za elektroniku
___________________________________________________________________________
Od širine zabranjene zone zavisiće energija fotona, odnosno talasna dužina svetlosti. Prema
tome, izborom poluprovodnika možemo dobiti željenu talasnu dužinu svetlosti, slika 3. Odmah
treba istaći da se LED ne realizuju u silicijumskoj tehnologiji, tako da je njihov napon pri
direktnoj polarizaciji znatno veći od 0.7 V.Drugim rečima, LED se izrađuju od
poluprovodničkih materijala čije su vrednosti energetskih procepa veće nego u slučaju
silicijuma.
Slika 3. Spektralne karakteristike LED u vidljivom delu spectra
B. Praktični deo vežbe
LED dioda pored standardne primene u vidu binarnog indikatora (svetli ne svetli), može se
primeniti i kao senzor intenziteta osvetljenja. Naime, prilikom izlaganja LED diode određenom
intenzitetu svetlosti, na njenim krajevima se generiše napon. Vrednost napona zavisiće od
samog intenziteta osvetljenja, dakle što je veći intenzitet osvetljenja, veći i je napon na njenim
krajevima.
Kao najbolji senzor među LED diodama, pokazala se zelena LED dioda, koja ima najveću
promenu napona na svojim krajevima zavisno od promene intenziteta osvetljenja. Kao potvrda
ove tvrdnje, prilikom izrade vežbe biće iskorišćena zelena i žuta LED dioda, radi poređenja
dobijenih rezultata merenja. Kako ovo merenje imalo smisla, može se pridodati i fotootpornik
(LDR, eng. Light Dependent Resistor), koji se često koristi kao senzor intenziteta osvetljenja.
Električna šema vežbe je data na slici 4. koja će se praktično realizovati na protoploči, kao
demonstracija teorijskog dela vežbe. Kao što se može videti sa električne šeme, kako bi se
merio napon generisan na LED diodama, neophodno je najpre referencirati taj napon. Drugim
rečima, neophodno je izabrati naponski nivo u odnosu na koji se referencira napon koji merimo.
U ovom slučaju je to masa (GND), tako da je katoda LED dioda vezana na nulti potencijal. To
je kasnije neophodno definisati i u kodu priliko definisanja rada A/D konvertora. Sa anoda se
„uzimamo“ napon koji merimo i taj pin je nophodno povezati na jedan od ulaza A/D
konvertora.
Na električnoj šemi je dodat i fotootpornik (LDR), ali u kodu je izostavljen deo namenjen
njemu. U izveštaju o urađenoj vežbi je neophodno dodati deo koda kojim se meri napon na
fotootporniku zavisno od intenziteta osvetljenja.
Elektronski fakultet, Univerzitet u Nišu
Projektovanje materijala za elektroniku
___________________________________________________________________________
Slika 4. LED diode kao senzor osvetljenja
Programski kod:
U programskom jeziku Proton Basic dat je programski kod za praktičnu realizaciju vežbe,
na osnovu koga je moguće uporediti rezultata merenja napona generisanih na LED diodama:
Device 18F45K22
Xtal 32
Declare LCD_RSPin PORTD.0 ' RS pin - izbor cipa (citanje/pisanje)
Declare LCD_ENPin PORTD.1 ' EN pin - omogucavanje ispisa
Declare LCD_DTPin PORTD.4 ' DT pin - pinovi za podatke (D.4 - D.7)
Declare LCD_Type Alphanumeric ' Tip LCD-a - Alfanumericki (0)
Declare LCD_Lines 2 ' Broj linija (redova) na LCD-u
Declare LCD_Interface 4 ' Broj linija za komunikaciju uC <> LCD
'============================================
'======== Definisanje AD konvertora =========
'============================================
VREFCON0=%110100000 ' Postavljanje referentnog napona na 1.024V
ANSELD=%00000000 ' Def. Porta D kao digitalni
ANSELA=%00000111 ' Def. Porta A kao digitalni, osim A.0
ANSELB=%00000000 ' Def. Porta B kao digitalni
ANSELC=%00000000 ' Def. Porta C kao digitalni
TRISA=%00000111 ' Def. smera porta A -> ulazni A.0
ADCON1=%00001000 ' Ref. napon (Vref+=>VrefBuf),(Vref- => GND)
ADCON2=%10100010 ' Desno poravnanje, 8Tad, Fosc/32
Elektronski fakultet, Univerzitet u Nišu
Projektovanje materijala za elektroniku
___________________________________________________________________________ '============================================
'======== Definisanje promenljivih ==========
'============================================
Dim TmpW As Word ' Prom. za vrednosti A/D konverzije
Dim LED As Float ' Prom. za vrednosti A/D konverzije
Dim ADUkupno As Dword ' Ukupna vrednost A/D konverzije
Dim TmpW2 As Word ' Prom. za vrednosti A/D konverzije
Dim LED2 As Float ' Prom. za vrednosti A/D konverzije
Dim LDR As Word ' Prom. za vrednosti A/D konverzije
Dim ADUkupno2 As Dword ' Ukupna vrednost A/D konverzije
Dim I As Byte
Dim I2 As Byte
Print At 1,1, " LED dioda kao "
Print At 2,1, "senzor osvetlj."
DelayMS 1000
AD_scan:
While 1=1
'======================================
'========== Zelena LED dioda ==========
'======================================
ADCON0=%00000001 ' A.0
ADUkupno = 0
For I = 0 To 19 Step 1
TmpW = 0
TmpW = ADIn 0 ' Smestanje vr. A/D konverzije u promenljivu
ADUkupno = ADUkupno + TmpW
Next
ADUkupno = ADUkupno / 20
LED = ADUkupno / 1023
'======================================
'=========== Zuta LED dioda ===========
'======================================
ADUkupno2 = 0
ADCON0=%00000101 'A.1
For I2 = 0 To 19 Step 1
TmpW2 = 0
TmpW2 = ADIn 1
ADUkupno2 = ADUkupno2 + TmpW2
Next
ADUkupno2 = ADUkupno2 / 20
LED2 = ADUkupno2 / 1023
Cls
Print At 1,1, "LEDZel: ", Dec3 LED, " mV"
Print At 2,1, "LEDZut: ", Dec3 LED2, " mV"
DelayMS 500
GoTo AD_scan
Wend
Elektronski fakultet, Univerzitet u Nišu
Projektovanje materijala za elektroniku
___________________________________________________________________________
Vežba II
Primena Silicijumske (Si) 1N4148 diode kao senzor temperature
A. Teorijski pregled vežbe
Prekidačka dioda 1N4148 je vrsta diode koje u elektronskim kolima prelaze iz provodnog
u neprovodno stanje i obratno, najčešće pod dejstvom impulsne pobudese. Na taj način ove
diode ostvaruju funkciju elektronskog prekidača koji na određeni način razdvaja ili spaja
pojedine delove kola. Značajna primena prekidačkih dioda je u zaštiti elektronskih prekidača
od uticaja induktivnog opterećenja (slika 5.):
Slika 5. Primena prekidačkih dioda
Ostale primene ovih dioda su:
- Diodna logička kola,
- Zaštita naponskih regulatora od inverzne polarizacije,
- Prebacivanje sa mrećnog na baterijsko napajanje,
- ...
Pri direktnoj polarizaciji, porast temperature uzrokuje smanjenje vrednosti napona vođenja
diode, sa približno konstantnim temperaturnim koeficijentom:
𝑑𝑉𝐷
𝑑𝑇 ≈ −2 𝑚𝑉 −1
Pri inverznoj polarizaciji dolazi do porasta inverzne struje zasićenja diode. Vrednost
inverzne struje zasićenja se približno udvostručuje na svakih 10ºC porasta temperature!
B. Praktični deo vežbe
Kako je prethodno navedeno, prekidačke diode se najčešće koriste kao zaštita od inverzne
polarizacije, tj. u kolima komponenata sa induktivnim karakterom (kalemovi), kako bi zaštitile
ostatak kola od pražnjenja komponenata sa induktivnim karakterom nakon isključenja
napajanja preko ostatka kola.
Elektronski fakultet, Univerzitet u Nišu
Projektovanje materijala za elektroniku
___________________________________________________________________________
Ove diode se mogu iskoristiti na još jedan način, tj. mogu naći primenu kao senzori
temperature. Povećanje temperature prourokuje smanjenjem napona vođenja diode, koje je
skoro konstantno i iznosi ≈ -2.2 mV/ºC (slika 6.).
Slika 6. Uticaj temperature na smanjenje napona vođenja
Električna šema vežbe za određivanje temperature diodom 1N4148 je data na slici 7.
Slika 7. Električna šema vežbe određivanja temperature primenom Si diode – 1N4148
Kao što se vidi sa električne šeme, povezan je i temperaturni senzor LM35, koji između
ostalog služi i za upoređivanje izmerene vrednosti za temperaturu na 1N4148 diodi. LM35
temperaturni senzor se koristi u izradi vežbe prvenstveno za određivanje referentne vrednosti
napona na diodi na sobnoj temperaturi. Dakle, najpre je neophodno izmeriti napon na krajevima
1N4148 diode na sobnoj temperaturi, a kasnije vrednost tog napon uvesti u jednačinu za
određivanje temperature.
Elektronski fakultet, Univerzitet u Nišu
Projektovanje materijala za elektroniku
___________________________________________________________________________
Radi lakšeg razumevanja jednačine za sobnu temperaturu biće uzeta vrednost od 24°C
(TREF):
VAD = (Izmerena_vrednost_naponskih_nivoa_na_diodi(A/D) * 5) / 1023,
Nakon određivanja napona na diodi na sobnoj temperaturi neophodo je dobijene vrednosti
uneti u jednačinu za temperaturu:
TEMPDIODE = TREF + ((VAD – VAD_TRENUTNO) * 50)
Ukoliko je na sobnoj temperaturi izmereno 3.05, znači da je napon na diodi 0.610 V:
VAD = (Vx · 5) / 1023, kako je za VAD = 3.05V, za Vx dobijamo da je:
Vx = (VAD · 1023)/5 => Vx = (3.05 · 1023)/5 = 0.610 V = 610 mV
Programski kod:
Device 18F45K22
Xtal 32
Dim Tmp As Word
Dim LM35 As Word
Dim Temp As Float
Dim TempU As Float
Dim I As Byte
Declare LCD_RSPin PORTD.0 ' RS pin - izbor cipa (citanje/pisanje)
Declare LCD_ENPin PORTD.1 ' EN pin - omogucavanje ispisa
Declare LCD_DTPin PORTD.4 ' DT pin - pinovi za podatke (D.4 - D.7)
Declare LCD_Type Alphanumeric ' Tip LCD-a - Alfanumericki (0)
Declare LCD_Lines 2 ' Broj linija (redova) na LCD-u
Declare LCD_Interface 4 ' Broj linija za komunikaciju uC <> LCD
'======== Definisanje AD konvertora =========
VREFCON0=%11010000 ' Postavljanje referentnog napona na 1.024V
ANSELD=%00000000 ' Definisanje Porta D kao digitalni
ANSELA=%00000011 ' Definisanje Porta A kao digitalni, osim A.0
ANSELB=%00000000 ' Definisanje Porta B kao digitalni
ANSELC=%00000000 ' Definisanje Porta C kao digitalni
TRISA=%00000011 ' Definisanje smera porta A -> ulazni A.0
ADCON1=%00001000 ' Ref. napon (Vref+ => VrefBuf),(Vref- => GND)
ADCON2=%10100010 ' Desno poravnanje, 8Tad, Fosc/32
Main:
ADCON0=%00000001 ' Prvi analogni ulaz -> AN0
Tmp = ADIn 0
Temp = ((Tmp * 5) / 1023)
Temp = 24 + ((3.024 - Temp) * 50)
ADCON0=%00000101 ' Drugi analogni ulaz -> AN1
LM35 = ADIn 1
LM35 = LM35 / 10
Print At 1,1, "LM35 = ", Dec LM35, " ", $B0, "C"
Print At 2,1, "1N4148 = ", Dec Temp, " ",$B0,"C"
DelayMS 500 : Cls
GoTo Main
Elektronski fakultet, Univerzitet u Nišu
Projektovanje materijala za elektroniku
___________________________________________________________________________
Vežba III
Primena NTC termistora kao senzora temperature
A. Teorijski pregled vežbe
NTC termistor predstavlja nelinearni otpornik sa negativnim temperaturnim koeficijentom
(eng. Negative Temperature Coefficient). Kod ovog otpornika se otpornost smanjuje usled
povećanja temperature na njemu ili u njegovoj okolini. Proizvode se od polikristalnih oksidnih
poluprovodničkih materijala (Al2O3, ZnO, itd.). Promena otpornosti sa promenom temperature
se može opisati pomoću relacije:
RT = R∞ · eB/T ,
gde su R∞ i B konstante. Konstanta B naziva se temperaturna osetljivost i njena vrednost zavisi
od svojstava otpornog materijala. Temperatura i temperaturna osetljivost se izražavaju u
kelvinima (K = °C + 273). Zavisnost ptomene otpornosti sa promenom temperature je data na
slici 8.
Slika 8. Zavisnost otpornosti NTC termistora sa temperaturom
Najčešća primena ovih termistora jeste kao senzor temperature, ali i za ograničavanje
struje, gde se usled protoka struje kroz NTC termistor on samozagreva.
Neophodno je voditi računa da se temperatura koja se razvija na NTC termistoru predstavlja
u Kelvinima [K] - 0°C = 273 K (konsultovati kod).
B. Praktični deo vežbe
Na slici 9. je data električna šema koju je potrebno praktično realizovati.
Elektronski fakultet, Univerzitet u Nišu
Projektovanje materijala za elektroniku
___________________________________________________________________________
Slika 9. Električna šema vežbe za merenje temperature primenom NTC termistora
Programski kod:
Device 18F45K22
Xtal 32
Declare LCD_RSPin PORTD.0 ' RS pin - izbor cipa (citanje/pisanje)
Declare LCD_ENPin PORTD.1 ' EN pin - omogucavanje ispisa
Declare LCD_DTPin PORTD.4 ' DT pin - pinovi za podatke (D.4 - D.7)
Declare LCD_Type Alphanumeric ' Tip LCD-a - Alfanumericki (0)
Declare LCD_Lines 2 ' Broj linija (redova) na LCD-u
Declare LCD_Interface 4 ' Broj linija za komunikaciju uC <> LCD
'======== Definisanje AD konvertora =========
ANSELD=%00000000 ' Definisanje Porta D kao digitalni
ANSELA=%00000011 ' Definisanje Porta A kao digitalni, osim A.0
ANSELB=%00000000 ' Definisanje Porta B kao digitalni
ANSELC=%00000000 ' Definisanje Porta C kao digitalni
TRISA=%00000011 ' Definisanje smera porta A -> ulazni A.0
ADCON1=%00000000 ' Ref. napon (Vref+ => Vcc), (Vref- => GND)
ADCON2=%10100001 ' Right justified, 8Tad, Fosc/8
Dim Vo As Word
Dim LM35 As Word
Dim LM35F As Float
Dim logR2 As Float
Dim R2 As Float
Dim T As Float
Dim Tc As Float
Dim Tf As Float
Symbol C1 = 0.001009249522
Symbol C2 = 0.0002378405444
Symbol C3 = 0.0000002019202697
Symbol R1 = 10000
Main:
ADCON0=%00000001
Vo = ADIn 0
R2 = R1 * (1023.0 / (Vo - 1.0))
logR2 = Log (R2)
Elektronski fakultet, Univerzitet u Nišu
Projektovanje materijala za elektroniku
___________________________________________________________________________ T = (1.0 / (C1 + C2 * logR2 + C3 * logR2 * logR2 * logR2))
Tc = (T - 273.15) * 3.5489595
Tf = (Tc * 9.0)/ 5.0 + 32.0
Print At 1,1, "NTC= ", Dec Tc, $B0,"C"
DelayMS 500 : Cls
GoTo Main
Paramtri C1, C2 i C3 su konstante koje zavise od samog NTC termistora, u ovom slučaju
je korišćen NTC 10k termistor. 10k je oznaka da je u pitanju NTC termistor koji na sobnoj
temperaturi ima otpornost od 10kΩ. Iz tehničke dokumentacije je moguće naći parametre za
ostale termistore (NTC tipa).
Kao izveštaj za ovu vežbu je potrebno dodati temperaturni senzor LM35 i rezultate umesto
na LCD displeju štampati na serisjkom terminalu. Dobijene rezultate uslikati i dostaviti zajedno
sa šemom kojom je vršena simulacija i programski kod. LM35 vezati na PORTA.1 i tu
definisati A/D konvertor.
Elektronski fakultet, Univerzitet u Nišu
Projektovanje materijala za elektroniku
___________________________________________________________________________
IV vežba
Primena razdelnika napona za određivanje nepoznate otpornosti
A. Teorijski pregled vežbe
Razdelnik napona je najčešće primenjivano kolo u elektronici, kako kod primene raznih
senzora, tako i u kolima sa kondenzatorima, itd. Samo kolo se sastoji od dva (ili više otpornika,
slučaj kada je neophodno odrediti ekvivalentnu otpornost veza otpornika, da bi se svelo kolo
na dva redno vezana otpornika) između kojih se meri napon.
Određivanje napona na izlazu iz razdelnika napona je opisno jednačinom:
𝑉𝑂𝑈𝑇 =𝑅2
𝑅1 + 𝑅2∙ 𝑉𝐼𝑁
Razdelnik napona se često primenjuje kada je neophodno meriti napon na nekom od
senzora koji premašuje vrednost od 5V (maksimalna vrednost napona koja se sme dovesti na
A/D konvertor). U tom slučaju je neophodno znati koja je maksimalna vrednost koja se može
očekivati, kako bi se odabrao optimalan odnos otpornika R1 i R2, kako bi se za VOUT dobilo
maksimalno 5V.
B. Praktični deo vežbe
U slučaju kada nam je potrebno da odredimo nepoznatu otpornost R2, moguće je primeniti
upravo razdelnik napona. Merenjem napona na razdelniku, odnosno na otporniku R2, moguće
je vrlo lako odrediti njegovu otpornost:
𝑅2 =𝑉𝑂𝑈𝑇
𝑉𝐼𝑁 − 𝑉𝑂𝑈𝑇∙ 𝑅1
Električna šema ommetra je data na slici 10.
Slika 10. Električna šema ommetra
Elektronski fakultet, Univerzitet u Nišu
Projektovanje materijala za elektroniku
___________________________________________________________________________
Programski kod:
Device = 18F45K22
Xtal 32 ' Frekvencija oscilatora
ANSELD=%00000000 ' Svi pinovi porta D su digitalni (LCD displej)
VREFCON0=%11100000 ' Postavljanje referentnog napona na 2.048V
ANSELA=%00000100
TRISA=%00000100
ADCON0=%00001001 'AN2
ADCON1=%00001000
ADCON2=%10111110
Declare LCD_Type 0
Declare LCD_DTPin PORTD.4
Declare LCD_RSPin PORTD.0
Declare LCD_ENPin PORTD.1
Declare LCD_Interface 4
Declare LCD_Lines 2
Dim R As Word
Dim R_float As Float
Print At 1,4, "Digitalni"
Print At 2,5, "Ommetar"
DelayMS 1000 : Cls
Main:
DelayMS 500
ADCON0.1=1
While ADCON0.1=1
Wend
DelayMS 500
R = (ADRESH * 256) + ADRESL
R_float = (R * 2) / 1023
Print At 1,1, Dec8 R_float
R_float = (R_float * 330000) / (5 - R_float)
If R_float < 1000 Then
Print At 2,1, "R= ", Dec1 R_float
Print At 2,12, 244
EndIf
If R_float > 1000 And R_float < 1000000 Then
R_float = R_float / 1000
Print At 2,1, "R= ", Dec1 R_float
Print At 2,12, "k", 244
EndIf
If R_float > 1000000 Then
R_float = R_float / 1000000
Print At 2,1, "R= ", Dec1 R_float
Print At 2,12, "M", 244
EndIf
GoTo Main
U izveštaju je neophodno umesto potenciometra vezati paralelnu vezu otpornika RX1 i RX2,
čije su vrednosti RX1 = 120k i RX2 = 100k. Uslikati dobijene vrednosti i dostaviti sa šemom
simulacije. Sve rezultate štampati na serisjkom terminalu (Serail Com u Proton Basic-u).
Elektronski fakultet, Univerzitet u Nišu
Projektovanje materijala za elektroniku
___________________________________________________________________________
V vežba
Realizacija digitalnog kapacimetra korišćenjem A/D konvertora
A. Teorijski pregled vežbe
Kao što je poznato, kondenzator je pasivna elektronska komponenta koja se sastoji od dve
provodne (ploče) obloge između kojih je izolator, odnosno dielektrik. Kondenzatori se mogu
podeliti u dve osnovne grupe: nepolarizovani i polarizovani, odnosno dele se na keramičke i
elektrolitske kondenzatore. Zavisno od materijala od koga je izolator, zavisi i kapacitivnost
samog kondenzatora. Tako na primer ukoliko je potrebna veća kapacitivnost (elektrolitski
kondenzatori), najčešće je u pitanju Al2O3. S druge strane, ukoliko je potrebno primenjivati
kondenzatore na visokim frekvencijama (iznad 1 kHz), koriste se keramički kondenzatori (do
nekoliko GHz).
Slično otpornicima, kondenzatori imaju pored nazivne vrednosti i nazivnog radnog napona
ima toleranciju, odnosno, odstupanje vrednosti kapacitivnosti od nominalne (nazivne)
vrednosti. Ono što je karakteristično za elektrolitske kondenzatore je da se u praksi mogu vrlo
često sresti kondenzatori koji imaju toleranciju ±20%. U slučaju velikih kapacitivnosti, na
primer 470 µF, odstupanje može uticati na realnu vrednost kapacitivnosti. Tako na primer,
vrednost kondenzatora kapacitivnosti 470 µF je u opsegu 376 µF do 564 µF.
Simboli nepolarizovanog i polarizovanog kondenzatora su dati na slici 11.
Slika 11. Električni simboli nepolarizovanog i polarizovanog kondenzatora
B. Praktični deo vežbe
Vrlo često je neophodno izmeriti realnu vrednost kapacitivnosti kondenzatora, bez obzira
što na kućištu kondenzatora stoji oznaka o kapacitivnosti. Vrlo je nitno znati vrednost
tolerancije kondenzatora, u suprotnom odstupanje može dramatično da utiče na rad
elektronskog kola.
Postoje razni načini za realizaciju kapacimetra, ta rešenja često zahtevaju dodatna digitalna
kola, rezonatorska kola, itd. U ovoj vežbi biće dat primer realizacjie kapacimetra korišćenjem
A/D konvertora. Pored A/D konvertora neophodna je i upotreba tajmera, kojim se meri vreme
punjenja kondenzatora.
Prilikom merenja kapacitivnosti treba odrediti vreme za koje napon na kondenzatoru
dostigne 63.2% napona na koji je priključen (slika 12.).
Elektronski fakultet, Univerzitet u Nišu
Projektovanje materijala za elektroniku
___________________________________________________________________________
Slika 12. Karakteristika punjenja kondenzatora
Kao što se može videti da bi se kondenzator napunio na vrednost napona na koji je
priključen potrebno je 5 vremenskih konstanti (5τ). Treba obratiti pažnju da je svaka vremenska
konstanta (τ) na 63.2% od svake prethodne vremenske konstante (slika 13.).
Slika 13. Vreme punjenja kondenzatora
Za nas je od značaja prva vremenska konstanta, odnosno kada napon na kondenzatoru
dostigne 63.2% vrednost napona na koji je priključen, od trenutka kada je kondenzator prazan.
U svrhu merenja vremena koje je potrebno za dostizanje 63.2% vrednosti napona, koristi se
tajmer (eng. Timmer).
Elektronski fakultet, Univerzitet u Nišu
Projektovanje materijala za elektroniku
___________________________________________________________________________
Kada se izmeri vreme, primenjuje se jednačina za punjenje kondenzatora:
𝑉𝐶 = 𝑉𝑠 ∙ 𝑒−𝑡𝜏
Odavde se za τ može uzeti da je τ = R·C, kako bi se dalje C izrazilo na osnovu poznatih
parametara i dobila vrednost kapacitivnosti kondenzatora. Električna šema kapacimetra je data
na slici 14.
Slika 14. Električna šema kapacimetra
Merenje kapacitivnosti se pokreće tasterom koji je u pull-up konfiguraciji vezan na pin
PORTB.0 mikrokontrolera PIC18F2550. Kao što se može videti punjenje kondenzatora se
kontroliše preko dva otpornika R1 i R3 sa električne šeme. Preko otpornika R1 = 100kΩ
kondenzator se puni, dok je pin na kome je vezan R3 = 330Ω u stanju visoke impedanse.
Prilikom pražnjenja, kondenzator se preko paralelne veze otpornika R1 i R3 prazni.
Programski kod:
Device = 18F2550
'===================================================================
'================== Podesavanja za 8MHz za 18F2550 =================
'===================================================================
Xtal = 8
; 8MHZ (INTOSC) SETTINGS.
OSCCON.6 = 1 ; OSCCON REGISTER (IRCF2)
OSCCON.5 = 1 ; OSCCON REGISTER (IRCF1)
OSCCON.4 = 1 ; OSCCON REGISTER (IRCF0)
Config_Start
PLLDIV = 1 ;No prescale (4 MHz oscillator input drives PLL directly)
CPUDIV = OSC1_PLL2 ;[Primary Oscillator Src: /1][96 MHz PLL Src: /2]
USBDIV = 1 ;USB clock source comes directly from the primary
oscillator block with no postscale
Elektronski fakultet, Univerzitet u Nišu
Projektovanje materijala za elektroniku
___________________________________________________________________________ FOSC = INTOSCIO_EC ;Internal oscillator, port function on RA6, EC used
by USB (INTIO)
IESO = OFF ;Oscillator Switchover mode disabled
BOR = OFF ;Brown-out Reset disabled in hardware and software
WDT = OFF ;WDT disabled (control is placed on the SWDTEN bit)
PBADEN = OFF ;PORTB<4:0> pins are configured as digital I/O on Reset
LPT1OSC = OFF ;Timer1 configured for higher power operation
MCLRE = OFF ;RE3 input pin enabled; MCLR pin disabled
STVREN = OFF ;Stack full/underflow will not cause Reset
LVP = OFF ;Single-Supply ICSP disabled
XINST = OFF ;Instruction set extension and Indexed Addressing mode
disabled (Legacy mode)
Debug = OFF ;Background debugger disabled, RB6 and RB7 configured as
general purpose I/O pins
Config_End
'================================================================
'=============== Podesavanja za 8MHz za 18F2550 =================
'================================================================
'================================================================
'============= Podesavanja za Serijsku komunikaciju =============
'================================================================
' Declare Hserial_Baud 9600
' ' RCSTA register:
' ' 7 bit - SPEN: Serial Port Enable bit
' ' 6 bit - RX9: 9-bit Receive Enable bit
' ' 5 bit - SREN: Single Receive Enable bit
' ' 4 bit - CREN: Continuous Receive Enable bit
' ' 3 bit - ADEN: Address Detect Enable bit
' ' 2 bit - FERR: Framing Error bit
' ' 1 bit - OERR: Overrun Error bit
' ' 0 bit - RX9D: 9th bit of received data (Can be parity bit)
' Declare Hserial_RCSTA= %10010000 ' Enable continuous receive
' RCSTA = %10010000
' ' TXSTA register:
' ' 7 bit - CSRC: Clock Source Select bit
' ' 6 bit - TX9: 9-bit Transmit Enable bit
' ' 5 bit - TXEN: Transmit Enable bit
' ' 4 bit - SYNC: USART Mode Select bit
' ' 3 bit - Send Break Character bit
' ' 2 bit - BRGH: High Baud Rate Select bit
' ' 1 bit - TRMT: Transmit Shift Register Status bit
' ' 0 bit - TX9D: 9th bit of transmit data. Can be parity bit.
' Declare Hserial_TXSTA= %00100100 ' Enable transmit and asynchr. mode
' TXSTA = %00100100
' Declare Hserial_Clear= On ' Clear the buffer before receiving
'=============================================================
'============ Podesavanja za Serijsku komunikaciju ===========
'=============================================================
Declare Adin_Res = 10 ' 10-bit result required
Declare Adin_Tad = FRC ' RC OSC chosen
Declare Adin_Stime = 50 ' Allow 50us sample time
ADCON0 = %00000101
ADCON1 = %00001101
ADCON2 = %10000000
Elektronski fakultet, Univerzitet u Nišu
Projektovanje materijala za elektroniku
___________________________________________________________________________ Declare LCD_RSPin PORTB.2
Declare LCD_ENPin PORTB.3
Declare LCD_DTPin PORTB.4
Declare LCD_Interface 4
Declare LCD_Lines 2
Declare LCD_Type 0
DelayMS 500
Symbol GIE = INTCON.7 ' Global Interrupt Enable Bit
Symbol PEIE = INTCON.6
Symbol TMR1_Enable = PIE1.0 ' TMR1 interrupt enable
Symbol TMR1_On = T1CON.0 ' Enables TMR1 to start incrementing
Symbol CTRLPin = PORTC.1
Symbol Dischr = PORTC.2
Symbol Q = 0.0000144300
Output CTRLPin
Output Dischr
Print At 1,1, "Kapacimetar ADC"
DelayMS 500 : Cls
On_Hardware_Interrupt Interapt
GoTo Init
'==============================
'======== Promenljive =========
'==============================
Dim uS As Dword
Dim t As Float
Dim C As Float
Dim Took_To_Long As Bit
Dim Prom As Word
Dim TMR1_C As Word
Dim ADCap As Word
Dim Cap As Float
Dim A As Byte
'===============================
'======= Interapt rutina =======
'===============================
Interapt:
Context Save
GIE = 0
If PIR1.0 = 1 Then ' TMR1 overflow (Prekoracenje tajmera)
Inc Prom ' Povecaj promenljivu za 1 kada se resetuje
tajmer (TMR1 > 65535)
PIR1.0 = 0 ' Reset tajmera
EndIf
GIE = 1
Context Restore
Init:
TMR1_Enable = 0
GIE = 0
Elektronski fakultet, Univerzitet u Nišu
Projektovanje materijala za elektroniku
___________________________________________________________________________ PIR1.0 = 0
INTCON.6 = 1 ' Periferijski interapt
T1CON.1 = 0 ' 1 = External clock from pin RC0/T1OSO/T1CKI (on the
rising edge)
' 0 = Internal clock (FOSC/4)
T1CON.2 = 1 ' 1 = Do not synchronize external clock input
T1CON.4 = 1 ' 11 = 1:8 prescale value
T1CON.5 = 1 ' 10 = 1:4 prescale value
' 01 = 1:2 prescale value
' 00 = 1:1 prescale value
PIR1.0 = 0
'=======================================
'=========== Glavni deo koda ===========
'=======================================
Main:
If PORTB.0 = 0 Then
Print At 1,1, "Merenje..."
Inc A
TMR1H = 0 ' Resetuj TMR1
TMR1L = 0 ' Resetuj TMR1
TMR1_Enable = 1 ' Omoguci TMR1 interapt
GIE = 1 ' Omoguci globalni interapt
Prom = 0 ' Prom. za TMR1_Overflow (koliko se puta
overflownuo TMR1)
TMR1_On = 0 ' Onemoguci TMR1
DelayMS 500
EndIf
If A = 1 Then
High CTRLPin
TRISC.2 = 1
TMR1_On = 1 ' Omoguci TMR1 - merenje!
ADCON0.1=1
While ADCON0.1=1
Wend
ADCap = (ADRESH * 256 + ADRESL)
DelayMS 250
If ADCap >= 647 Then '640
TMR1_On = 0 'Onemoguci TMR1
uS = Prom * 65535 ' + (TMR1H * 256) + TMR1L
uS = uS + (TMR1H * 256)
uS = uS + TMR1L
t = (1866.667 * uS) / 100000
t = t * 2.1
Low CTRLPin
TRISC.2 = 0
Low Dischr
Cls
If t > 1000 Then
Print At 1,1, "C= ", Dec t/1000, "uF"
EndIf
Elektronski fakultet, Univerzitet u Nišu
Projektovanje materijala za elektroniku
___________________________________________________________________________ If t < 1000 Then
Print At 1,1, "C= ", Dec t, "nF"
EndIf
A = 0
EndIf
EndIf
GoTo Main
Kao što se vidi iz priloženog koda, naredbom On_Hardware_Interrupt Interapt
kompajler zna u koju labelu treba da ode kada se desi interrupt – prekid. Radi lakšeg
razumevanja ove naredbe, nakon On_Hardware_Interrupt može da stoji GoTo, čime se ne
menja sintaksa same naredbe. U delu naredbe gde se izvršava prekid ispituje se da li je došlo
do premašenja (Overflow) registra u kome se smešta vrednost tajmera (0-65535), nakon čega
se vrednost registra resetuje, a vrednost promenljive prom uveća za 1 pri svakom premašenju.
Kada se završi merenje, vrednost promenljive prom se množi sa 65535 kako bi se dobila
konačna vrednost do koje je brojao tajmer, a kasnije i dobilo vreme u sekundama za dalji
proračun kapacitivnosti.
Tajmer se pokreće pritiskom na taster i broji sve dok napon na kondenzatoru ne dostigne
vrednost od 63.2% napona na koji je priključen. Drugim rečima, ukoliko je napon na koji je
priključen kondenzator 5V, tajmer se isključuje kada je napon na njegovim krajevima dostigao
vrednost od 3.16V. Kako A/D konvertor radi isključivo sa naponskim nivoima (0-1023),
potrebno je da se dostigne 647 naponski nivo u datom opsegu, s obzirom da je referentni napon
u odnosu na koji se referencira od 0-5V podeljen na 1024 naponska nivoa.
U izveštaju je potrebno da se napiše deo koda koji bi na osnovu dobijene vrednosti za
kapacitivnost merenog kondenzatora na LCD displeju nakon prikaza kapacitivnosti prikazao
vrednost vremenske konstante τ i vremena punjenja t.