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)