Obligatorisk oppgave nr.4
Noe av utstyret som brukes, fra og med oppgave 6 er ikke tilgjengelig i settet deres, men dere kan f? det utlevert i resepsjonen i f?rste etasje p? IFI. P?regn ? fremvise gyldig studentbevis. Lykke til!
DEL I - design av LED-driver
Oppgave 1
Vi ?nsker ? lage en light-emitting diode (LED) lyskilde og vi vil diskutere 2 m?ter ? gj?re det p?
En praktisk LED har et str?m/spennings-forhold som kan beskrives ved f?lgende ligning.
\[I=I_0\left(e^{\frac{qV}{nkT}}-1\right)\]
der:
- \(I_0\) er “dark saturation current”, vi kan anta at den har verdi \(I_0 = 1*10^{-12}\)
- \(k\) er Boltzmann’s konstant: \(k = 1.38064852*10^{-23}\)
- \(q\) er absultutt verdi av elektron ladning: \(q = 1.6020*10^{-19}\)
- \(T\) er temperatur i Kelvin, vi antar \(T = 300K\)
- \(n\) er en idealitetsfaktor som modelerer mange ting, slik som produksjonsavvik, og temperatur
Anta at vi har kj?pt 2 stk. LEDs med produksjonsavvik modelert ved \(n=1.6\) og \(n=1.3\). Disse LEDs er laget for ? t?le 1A. Ved st?rre str?mmer blir de fort ?delagte, og ved mindre str?m f?r vi for lite lys.
- Plot en kurve i Python eller Matlab som viser str?m som funksjon av spenning V for LED nr.1 med idealitetsfaktor \(n=1.6\). Vi vil se verdier fra V=0-1.4V og I=0-2A
- La oss koble dioden rett til en konstant spenningskilde Vdd p? 1.14V slik som i figuren under. Hva blir str?mmen?
Oppgave 2:
Vi bytter ut LED nr.1 med LED nr.2 som har en idealitetsfaktor p? \(n=1.3\) og bruker samme spenningskilde p? 1.14V.
- Hva blir ideelt sett str?mmen i LED nr.2?
Oppgave 3:
Vi pr?ver ? koble diodene i serie med en motstand. Sett opp et uttrykk som beskriver sammenheng mellom str?m og spenning i kretsen under. Du trenger ikke l?se ligningen da den er vrien ? l?se. Vi bruker variablene Vd for spenningen over dioden og Vdd for forsyningsspenningen.
Oppgave 4:
Finn verdien p? R n?r Vdd er 10V og vi ?nsker en str?m p? 1A gjennom dioden. Her skal vi ikke l?se ligningen fra oppgave 3, men bare gj?re et grovt anslag basert p? at vi tenker oss at spenningen over dioden er 1V uansett str?m (dette vil gi litt lavere str?m enn ?nsket)
Oppgave 5:
Vi skal n? n?yaktig finne str?mmen i dioden for den motstandsverdien du fant i oppgave 4. Vi kan lett numerisk finne verdien uten ? l?se ligningen fra oppgave 3, med ? bruke en for-l?kke i Python eller Matlab (vi trenger ikke skaffe oss noen analog-kretssimulator). Her ser vi et rett-fram eksempel basert p? Matlab og en motstandsverdi p? 10 Ohm
I0 = 1e-12; % 1e-12 betyr 1*10^(-12)
k=1.38064852e-23;
T = 300;
q = 1.6020e-19;
n = 1.6;
R = 10;
Vdd = 10;
Vd = 1.14; % Initiell start verdi
for m=1:100000 % Itererer
I = I0 * (exp(q*Vd/(n*k*T))-1); % Finner str?m i dioden
Vr = I*R; % Finner spenningen over R som f?lge av str?mmen
if Vdd - Vr > Vd % Sjekker om vi n? har for lav Vd spenning
Vd = Vd + 0.00001; % Justerer hvis for lav
else
Vd = Vd - 0.00001; % Justerer andre veien
end
end
I
Vd
- Finn str?mmen for den motstandsverdien du fant i oppgave 4 for LED nr.1 med \(n=1.6\).
Vi bytter n? ut LED nr.1 med LED nr.2 der \(n=1.3\).
- Hva blir str?mmen n? for samme motstandsverdi?
Kommentar
- LED regnes som str?mstyrte komponenter, og vi ser at n?r vi styrer
str?mmen direkte ved ? styre spenningen, f?r vi fort problemer hvis vi
skal bytte ut en LED med en annen som ikke er helt lik. LED-str?mmen
?ker vanligvis med temperatur pga at n-verdien er sterkt temperatur
avhengig. Dvs. at hvis man kobler en LED rett p? en spenningskilde og
temperaturen ?ker, vil man fort f? en ustabil situasjon som ender med at
str?mmen blir for stor og LEDen brenner opp. Vi s? at en serie-motstand
regulerer str?mmen, og dette er en vanlig l?sning. Siden LED str?mmen er
s? f?lsom for spenning forst?r vi ogs? at ? koble en LED rett p? en
spenningskilde er vanskelig da man m? finne en kilde med akkurat rett
spenning. Batteri vil ikke kunne brukes da spenningen synker under bruk.
Med en regulert l?sning er det ikke noe problem om batterispenningen
synker noe.
- En seriemotstand vil introdusere et varmetap og for store str?mmer / store LEDs, eller hvis det er viktig ? spare str?m, regulerer vi vanligvis heller med en str?msensor og PWM.
- N? n?r du har koden for ? plotte diodestr?m som funksjon av diodespenning kan det v?re oppklarende ? plotte kurvene for begge diodene i samme plott for ? se hvordan kurvene blir flyttet for forskjellige n-verdier
DEL II - Trafikklys
Oppgave 6
Bakgrunn: I denne oppgaven skal dere lage et system for trafikklys tilsvarende trafikklyset som i Blindernveien (se bildet under). Systemet dere skal lage er ikke et veikryss men et lyskryss for fotgjengere.
Tilstander for trafikklys:
- S? lenge ingen trykker p? knappen, skal:
- Trafikklys bil:
- Lyse gr?nt.
- Trafikklys fotgjenger:
- Lyse r?dt.
- Piezo elementet pipe 0,5 sekunder AV og 0,5 sekunder P?.
- Trafikklys bil:
- N?r en fotgjenger trykker p? knappen, skal:
- Trafikklys bil:
- Etter 2 sekunder skal trafikklyset for bil g? til gult.
- Etter 1 sekund skal trafikklyset for bil g? til r?dt.
- N?r det har blitt r?dt for fotgjenger blir det f?rst gult i 1 sekund, og s? gr?nt igjen for biler.
- Trafikklys fotgjenger:
- Bl? LED skal indikere at bryteren er trykket inntil det blir gr?nt lys for fotgjenger.
- N?r det har blitt r?dt lys for bilene skal det g? 1 sekund f?r det blir g?nt for fotgjengere.
- Piezo elementet pipe 0,125 sekunder AV og 0,125 sekunder P?.
- N?r det har v?rt gr?nt for fotgjengere i 6 sekunder, skal det blinke gr?nt (0.5 sekunder av/p?) i tre iterasjoner. Deretter skal det lyse r?dt for fotgjengere.
- Trafikklys bil:
Oppgave 6 A)
Lag en skjematisk tegning for systemet og lim det inn som bilde i
PDFen. Du kan tegne for h?nd eller du kan bruke Fritzing
for ? tegne kretsen. Dersom du ?nsker ? bruke Fritzing,
kan du laste ned Oblig4_6.fzz og
bruke den som utgangspunkt. Under ser dere en start p? hvordan kretsen
skal se ut. Det er opp til dere hvor p? br?dbrettet dere ?nsker ?
plassere komponentene, men det er viktig at dere bruker
samme pin
som skissert under slik at gruppel?rere kan teste
koden deres med eget oppsett. Bryteren (B1) skal kobles med en
pull-down-motstand (R7).
Komponent | Benevnelse |
---|---|
Piezo h?ytaler | J1 |
Button | B1 |
R?d LED | L1, L4 |
Gul LED | L2 |
Gr?nn LED | L3, L5 |
Bl? LED | L6 |
220 Ohm motstand LED* | R1, …, R6 |
10K Ohm motstand bryter | R7 |
* Dere m? hente en stk motstand p? 220 Ohm (R6) i resepsjonen. Resten av utstyret har dere i settene deres.
MERK: Det er ikke lagt inn motstander i skjemaet. Det er del av oppgaven at dere skal slutte kretsene selv.
Oppgave 6 B)
Koble opp kretsen dere har skissert i Oppgave 6 A) og ta
bilde av oppsettet som skal settes inn i PDFen. Dere skal ogs?
programmere Arduinoen slik som anvist i Tilstander for
trafikklys ovenfor. Levér koden i egen fil som
oblig4_<brukernavn>.ino
. Krav til koden:
- Dere skal bruke pin som anvist i skissen ovenfor og i tabellen nedenfor.
- Husk ? koble opp kresten med motstander for ? ikke brenne LEDene eller kortslutte bryteren.
- Kommenter koden slik at det blir enklere for gruppel?rer ? rette den.
- Koden skal v?re ikke-blokkerende, som i dette tilfellet vil si at
knappen m? h?ndteres med interrupt. Et tips er ? bruke
attachInterrupt()
. Se mer i Arduinos dokumentasjon. - Tips til piezo er ? bruke funksjonen
tone()
. Se mer i Arduinos dokumentsjon.
pin | komponent | funksjon |
---|---|---|
D2 | bryter | Brukergrensesnitt for fotgjengere |
D3 | Bl? LED | Indikerer at bryter er trykket |
D4 | Gr?nn LED | Gr?nt lys fotgjengere |
D5 | R?d LED | R?dt lys fotgjengere |
D10 | piezo | Lyd |
D11 | Gr?nn LED | Gr?nt lys for bilister |
D12 | Gul LED | Gult lys for bilister |
D13 | R?d LED | R?dt lys for bilister |
Innlevering:
- Arduinokoden skal leveres som egen fil p? formen
oblig4_<brukernavn>.ino
. - Python- eller Matlabkoden skal leveres som egen fil p? formen
oblig4_<brukernavn>.py
/oblig4_<brukernavn>.m
. - Tekstlig besvarelse med illustrasjoner skal leveres i PDF-format p?
formen
oblig4_<brukernavn>.pdf
.
Generelle krav til innlevering
- Sett dere inn i sikkerhetsrutiner for lab.
- IFIs retningslinjer for obligatoriske oppgaver finner dere her.
- Oppgavene skal l?ses individuelt med mindre annet er oppgitt i oppgaveteksten.
- Besvarelsene leveres i f?lgende format i Canvas:
- Tekstlig besvarelse skal leveres PDF format p?
formen
oblig<nummer>_<brukernavn>.pdf
. (Se v?r LaTeX-mal) - Arduinokode skal leveres p? formen
<filnavn>.ino
. - Processingkode skal leveres p? formen
<filnavn>.pde
. - Matlabkode skal leveres p? formen
<filnavn>.m
. - Pythonkode skal leveres p? formen
<filnavn>.py
.
- Tekstlig besvarelse skal leveres PDF format p?
formen
- Plott m? inkludere tittel og benevnelser p? aksene. Man m? ogs? oppgi m?leenhet i parentes hvis man plotter en fysisk st?rrelse (se eksempel i malene: Plotting i Python og Plotting i Matlab)
- Plotter dere flere kurver i samme plott m? dere spesifisere kurvene med “legend” (se eksempel i malene)