Obligatorisk oppgave nr.4
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 = 1e-12\)
- \(k\) er Boltzmann’s konstant \(= 1.38064852e-23\)
- \(q\) er absultutt verdi av elektron ladning \(= 1.6020e-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;
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 for fotgjengere skal det lyse gr?nt for bilene.
- 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.
- Det skal lages tikkende lyd fra piezo elementet s? lenge det lyser gr?nt for fotgjengere.
- N?r det har v?rt gr?nt for fotgjengere i 4 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.
MERK: Det er ikke lagt inn motstander i kretsene. Det er del av oppgaven at dere skal finne riktige motstander og 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.
- 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.
- Oppgavene skal l?ses individuelt.
- 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 i tekstfiler p? formen
<filnavn>.ino
. - Filmopptak skal leveres p? formen
oblig<nummer>_<brukernavn>.mp4
, alternativt kan oppsettet vises frem fysisk til gruppel?rer i lab?velsene. For mer informasjon om innlevering av video, se her.
- 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)