EKSAMEN (Del 2, våren 2015) Løsningsforslag

Like dokumenter
Høgskoleni østfold EKSAMEN. Oppgavesettet består av 8 sider inklusiv denne forsiden og vedlegg.

EKSAMEN. Informasjon om eksamen. Emnekode og -navn: ITD13012 Datateknikk. Dato og tid: timer. Fagansvarlig: Robert Roppestad

består av 7 sider inklusiv denne forsiden og vedlegg. Kontroller at oppgaven er komplett før du begynner å besvare spørsmålene.

Eksamensoppgaven: Hele oppgavesettet består av 8 oppgaver. Hver oppgave har en %-angivelse som angir hvor mye den teller ved sensurering.

Emnenavn: Datateknikk. Eksamenstid: 3 timer. Faglærere: Robert Roppestad. Hele oppgavesettet består av 8 oppgaver, samt 1 vedlegg.

EKSAMEN (Del 1, høsten 2015)

Prototyping med Arduino del 2

NY EKSAMEN Emnekode: ITD13012

1. del av Del - EKSAMEN

Høgskoleni østfold EKSAMEN. Emnekode: Emne: ITD13012 Datateknikk (deleksamen 1, høstsemesteret) Dato: Eksamenstid: kl til kl.

Bruk av interrupt og Timer i Arduino-program.

Emnenavn: Datateknikk. Eksamenstid: 3 timer. Faglærer: Robert Roppestad. består av 5 sider inklusiv denne forsiden, samt 1 vedleggside.

EKSAMEN Emnekode: ITD13012

Høgskoleni østfold EKSAMEN. Dato: Eksamenstid: kl til kl. 1200

EKSAMEN (Del 1, høsten 2014)

Løsningsforslag til 1. del av Del - EKSAMEN

EKSAMEN Løsningsforslag Emne: Fysikk og datateknikk

WORKSHOP BRUK AV SENSORTEKNOLOGI

Løsningsforslag til EKSAMEN

Litt mer om Arduino. Roger Antonsen Sten Solli INF januar 2011

Steg 1: Installere programvaren

Ultralydsensor. Introduksjon. Litt om ultralydsensorer. Arduino. Skrevet av: Martin Ertsås & Morten Minde Neergaard

Blinkende lysdiode Introduksjon Arduino Lærerveiledning

ARDUINO STUDIELABEN PROGRAMMERING DIGITALE/ANALOGE INNDATA/UTDATA LYSDIODER FRITZING. Roger Antonsen INF januar 2012

INF1510: Bruksorientert design

EKSAMEN. Emne: Fysikk og datateknikk

7-Segment Display. Introduksjon. Steg 1: Finn frem utstyr. Til denne oppgaven trenger du. Skrevet av: Martin Ertsås & Morten Minde Neergaard

Løsningsforslag til 1. del av Del - EKSAMEN

7-Segment Display Nybegynner Arduino Lærerveiledning

Løsningsforslag til 2. del av Del - EKSAMEN

Høgskoleni østfold EKSAMEN. Emnekode: Emne: ITD30005 Industriell IT. Dato: Eksamenstid: kl til kl. 1300

Løsningsforslag til 2. del av Del - EKSAMEN

Prototyping med Arduino del 3

EKSAMEN. Oppgavesettet består av 3 oppgaver. Alle spørsmål på oppgavene skal besvares, og alle spørsmål teller likt til eksamen.

Løsningsforslag til EKSAMEN

SUPER DISCLAIMER. Vi endrer opplegget litt fra år til år, og vi hører på dere!

EKSAMEN. Oppgavesettet består av 3 oppgaver. Alle spørsmål på oppgavene skal besvares, og alle spørsmål teller likt til eksamen.

Datakonvertering. analog til digital og digital til analog

INF1510: Bruksorientert design

Høgskoleni Østfold. 1. del av Del - EKSAMEN. Datateknikk. Oppgavesettet består av 3 oppgaver. Alle sporsmal teller likt til eksamen.

Analog til digital omformer

EKSAMEN. Oppgavesettet består av 3 oppgaver. Alle spørsmål på oppgavene skal besvares, og alle spørsmål teller likt til eksamen.

Løsningsforslag til EKSAMEN

IN1060: Bruksorientert design

INF1510: Bruksorientert design

Antall vedlegg O Tillatte hjelpemidler:

Datakonvertering. analog til digital og digital til analog

Løsningsforslag til EKSAMEN

1 Innledning. 2 Virkemåte for kortet. Bli kjent med USB I/O kort K8055. NB! Ta med multimeter og lite skrujern!

EKSAMEN. Ta med utregninger i besvarelsen for å vise hvordan du har kommet fram til svaret.

Løsningsforslag til EKSAMEN

Bruk av interrupt og Timer i Arduino-program.

VEILEDNING TIL LABORATORIEØVELSE NR 4

EKSAMEN. Dato: 9. mai 2016 Eksamenstid: 09:00 13:00

Emnenavn: Industriell IT. Eksamenstid: 4 timer. Faglærer: Robert Roppestad

I oppgave 1 skal det prøves ut en binærteller i en integrert krets (IC). Telleren som skal brukes er SN74HC393N, hvor

EKSAMEN. Oppgavesettet består av 3 oppgaver. Alle spørsmål på oppgavene skal besvares, og alle spørsmål teller likt til eksamen.

EKSAMEN Emnekode: ITD12011

UNIVERSITETET I OSLO

Gruppe(r): 2EY Eksamenstid, fra-til: Eksamensoppgaven består av. Antall sider: 4 (Inkludert denne)

UNIVERSITETET I OSLO

ARDUINO STUDIELABEN. Roger Antonsen INF februar 2012

Test av USB IO-enhet. Regulering og HMI.

Den analoge verden blir digitalisert

Gruppe: D1A Dato: Tid: Antall oppgavesider: 3 Antall vedleggsider : 0

Python: Input og output

EKSAMEN. Operativsystemer. 1. Læreboken "A Practical Guide to Red Hat Linux" av Mark Sobell 2. Maks. tre A-4 ark med selvskrevne notater.

LABORATORIEOPPGAVE NR 6. Logiske kretser - DTL (Diode-Transistor Logic) Læringsmål: Oppbygning

Bruksanvisning - hovedpunkter Floalarm K 4

UNIVERSITETET I OSLO

EKSAMEN. Les gjennom alle oppgavene før du begynner. Husk at det ikke er gitt at oppgavene står sortert etter økende vanskelighetsgrad.

UNIVERSITETET I OSLO

FYS1210 Løsningsforslag Eksamen V2017

Fakultet for teknologi, kunst og design Teknologiske fag

Eksamen i Elektronikk 24. Mai Løsningsforslag Knut Harald Nygaard

Emnenavn: Fysikk og kjemi. Eksamenstid: 9:00 til 13:00. Faglærer: Erling P. Strand

EKSAMEN ITF Webprogrammering 1 Dato: Eksamenstid: Hjelpemidler: 2 A4 ark (4 sider) med egenproduserte notater (håndskrevne/maskinskrevne)

FYS1210 Løsningsforslag. Eksamen V2015

Fakultet for teknologi, kunst og design Teknologiske fag

«OPERASJONSFORSTERKERE»

C:\web\service-elektronikk\fagprover\Anders\flashlite_program_Anders.pas Page 1

Fakultet for teknologi, kunst og design Teknologiske fag

V 1000 RS. Leveransen omfatter.

Fag ITD Datateknikk. Laboppgave 7. Programmering av Arduino med Ethernet shield. Kort løsningsforslag.

Enkle logiske kretser Vi ser på DTL (Diode Transistor Logikk) og 74LSxx (Low Power Schottky logikk)

KYBERNETIKKLABORATORIET. FAG: Industriell IT DATO: OPPG.NR.: LV4. LabVIEW Temperaturmålinger BNC-2120

Tittel: Design av FSK-demodulator. Forfattere: Torstein Mellingen Langan. Versjon: 1.0 Dato: Innledning 1

Løsningsforslag til EKSAMEN

Dagens temaer. Fra kapittel 4 i Computer Organisation and Architecture. Kort om hurtigminne (RAM) Organisering av CPU: von Neuman-modellen

Høgskolen i Sør-Trøndelag Avdeling for teknologi

EKSAMEN. Oppgave 1. (26%)

Eksamen i emne TFE4110 DIGITALTEKNIKK MED KRETSTEKNIKK. Fredag 25. mai Tid. Kl LØSNINGSFORSLAG

Løsningsforslag til EKSAMEN

EKSAMEN. Emne: Algoritmer og datastrukturer

RAPPORT. Elektrolaboratoriet. Oppgave nr.: 5. Tittel: Komparator Skrevet av: Espen Severinsen. Klasse: 14HBIELEB Øvrige deltakere: Vegard Bakken.

EKSAMENSOPPGAVE. Les igjennom alle oppgaver før du begynner - for å danne deg et bilde av omfanget.

Eivind, ED0 Ingeniørfaglig yrkesutøvelse og arbeidsmetoder Individuell fremføring

Elektrolaboratoriet RAPPORT. Oppgave nr. 1. Spenningsdeling og strømdeling. Skrevet av xxxxxxxx. Klasse: 09HBINEA. Faglærer: Tor Arne Folkestad

1. Arduino Bluetooth 2 HC-05 modul

Fasit og sensorveiledning eksamen INF1411 våren Oppgave 1 Strøm, spenning, kapasitans og resistans (Vekt 20 %) A) B) Figur 1

Transkript:

EKSAMEN (Del 2, våren 2015) Løsningsforslag Emnekode: ITD13012 Emne: Datateknikk Dato: 13.05.2015 Eksamenstid: kl 0900 til kl 1200 Hjelpemidler: to A4-ark (fire sider) med egne notater "ikke-kommuniserende" kalkulator Eksamensoppgaven: Faglærer: Robert Roppestad Sensurdato: 03.06.2015 Karakterene er tilgjengelige for studenter på studentweb senest dagen etter oppgitt sensurfrist. Følg instruksjoner gitt på: http://www.hiof.no/index.php?id=7027 Oppgave 1. (8%) Forklar hvilken oppgave databussen, adressebussen og kontrollbussen har i en datamaskin. Hva utfører en adressedekoder? Hvilken betydning har antall bit en adressebuss består av for et datasystem? ---------------- Databuss. En buss (et antall parallelle ledere) som kan frakte data/kode til/fra CPU en. Instruksjoner (kode) samt data blir overført via databussen etter hvert som CPU en trenger dem. Resultater (data) blir lagret tilbake i minne via databussen eller blir skrevet (sendt) til en IO-port. Adressebuss. Adressebussen benyttes for å angi lokasjonen (adressen) i minne hvor data skal leses/skrives til/fra CPU en.

2 Kontrollbuss. CPU en styrer alle operasjoner via kontrollsignaler som brukes internt i CPU en samt ut på kontrollbussen til minne og IO-systemet Adressedekoderen mottar en binær-verdi (adresse) og dekoder den for å finne rette byte (bytes) i minne. Minne kan være organisert på mange ulike måter, dekoderen sørger for at rette minnelokasjon blir benyttet. Antall bit som adressebussen benytter angir hvor mye (antall bytes) minne som kan adresseres. Gitt av 2 bit. Oppgave 2. (7%) Forklar hva kretsen vist på figuren over utfører. Forklar når utgangen fra bufferet er høy eventuell lav. ------------ Figuren viser en pull-down motstand. Utgangen kobles mot jord når bryteren er åpen. Sikrer at vi måler 0 Volt med åpen bryter. Når bryteren lukkes vil utgangen være gitt av Vin. Vi får et høyt signal som indikerer at bryteren er lukket. Kretsen sikrer at spenningen til digitale inngang enten er 0Volt eller Vin Volt. Uten pull-down eller pull-up motstander vil signalet kunne flyte, og dermed gi et uklart inngangssignal til et målesystem. Oppgave 3. (7%) I figuren over benyttes en transistor. Hva kan en transistor benyttes til, og hvilken oppgave har den i kretsen vist på figuren? I kretsen inngår også en diode. Hvilken funksjon har den? ----- En transistor er en halvleder som kan styres vha spenning på basis-inngangen. Vi kan dermed benytte den som en bryter (av/på) funksjon eller for å indikere 0 eller 1 i et digitalt system. En transistor har også den egenskapen at den kan benyttes som en forsterker. En svak strøm inn på basis vil kunne gi en proporsjonalt mye større strøm fra kolletor til emitter. F.eks som forsterkning av lyd. På figuren har transistoren en oppgave som av/på bryter. En svak strøm fra Arduino-utgangen slår transistoren på, slik at den kan drive en mye større strøm fra et powersupply til DC-motoren. Arduino kan kun gi ut 40mA, og en DC-motor trenger mer strøm som da mates gjennom transistoren.

3 En diode leder kun strøm i en retning. Fra anode til katode. Den sperrer i motsatt retning. Dioden på figuren sperrer for strøm fra + til jord, men den vil kunne lede strøm i motsatt retning. Dette er aktuelt når vi slår av spenningstilførselen til motoren. Da vil motoren fortsette å rotere en stund, og genere en indusert spenning. Hvis ikke dioden leder den strømmen bort vil andre komponenter rundt motoren kunne ryke. Oppgave 4. (8%) Anta at du skal digitalisere et lyd-signal der den høyeste frekvensen i signalet er 10 KHz. Forklar hvilke operasjoner som må utføres for å få signalet fra analog til digital form. Hvilken samplingsfrekvens bør benyttes? Anta at det benyttes en 16 bit A/D omformer. Beregn hvilken %-vis nøyaktighet vi kan forvente av A/D-omformeren. ------- Signalet fra lyd-kilden bør først filtres med et lavpassfilter for å fjerne mulige aliasfrekvenser. Det betyr at vi bør filtrere bort alle signaler over 10 khz før sampling. Etter aliasfilteret går signalet til en sample/hold enhet som avleser den analoge verdien og holder i samplingstiden T. A/D-omformeren kan benytte ulike prinsipper, men suksessiv approksimasjon er mye benyttet. Den konverterer det analoge signalet til en bit-verdi. Antall bit A/D-omformeren består av gir området. O -> (2bit-1) Ex 16 bit gir et digital område fra 0 til 65535. Samplingsfrekvensen er gitt av Shannon/Nyquist teorem. Den bør være minst det dobbelte av den høyeste frekvensen i signalet. I dette tilfelle bør samlingsfrekvensen være minst 2* 10kHz = 20 khz = 20.000 Hz. A/D-omformeren vil aldri kunne gi et bede resultat en pluss/minus 0.5 LSB. I dette tilfell er 1 LSB = 1/2 bit = 1/ 2 16 = 1.5*10-5 Prosentvis utgjør 1 LSB = 1.5*10-5 *100% = 1.52*10-3 % = 0.00152 % Kan også angi svaret som pluss/minus 0.5 LSB -> +/- 0.00075 % Det betyr at en 16 bit A/D i seg selv har en god nøyaktighet, men andre feil rundt A/Domformeren kan innføre større unøyaktigheter.

4 Oppgave 5. (8%) Hva blir skrevet ut i monitoren hvis følgende program blir kjørt på en Arduino-enhet. ( Tips! Ascii-verdien til A er 65 ). void setup() Serial.begin(9600); void loop() char *navn="usa"; char tekst[40]="lehighton"; unsigned int verdi = 15, test = 1, resultat = 0; strcat(tekst,"-"); strcat(tekst,navn); Serial.println(tekst); for (int i = 1; i < 4 ; i++) tekst[13 - i] = 68 -i; Serial.println(tekst); Serial.println(""); for (int k = 15; k >= 0; k--) test = (1 << k); resultat = (verdi & test); if (resultat!= 0) Serial.print("1"); else Serial.print("0"); for(;;) ------ Utskrift: Lehighton-USA Lehighton-ABC 0000000000001111

5 Oppgave 6. (12%) Hva blir skrevet ut i monitoren hvis følgende program blir kjørt på en Arduino-enhet? Skriv svaret ditt i vinduet etter programlistingen. void setup() Serial.begin(9600); void loop() float verdier[3]; int ant = 3; int teller1 = 5, teller2 = 10 Utskrift: Verdien = 0.00 Verdien = 1.00 Verdien = 2.00 Verdien = 0.00 Verdien = 1.00 Verdien = 4.00 Teller1 = 5 Teller2 = 10 Teller1 = 5 Teller2 = 40

6 Oppgave 7. ( 22%) Anta at du har et Arduino starterkit tilgjengelig og en PC for programmering av enheten. Du skal lage et program for Arduino-enheten som løser følgende oppgave; Egg-timer. Du skal benytte 6 lysdioder med tilhørende motstander som skal kobles til 6 digitale utganger (2, 3, 4, 5, 6, 7 ). Det skal benyttes en buzzer for alarm som kobles til digital utgang 8. Du skal benytte en standard trykk-bryter som skal tilkobles til digital inngang 9 med en pull_down motstand. (Lav når bryteren ikke er trykket, og høy når bryteren trykkes). Du skal benytte millis()-funksjonen for å løse oppgaven (Se vedlegg). (Ikke en timer-funksjon). Når brukeren trykker på trykk-bryteren skal egg-timeren starte tidtakingen. Når det har gått 1 minutt skal lysdiode 1 tennes. Når det har gått 2 minutter skal både lysdiode 1 og lysdiode 2 tennes, og slik skal egg-timeren fortsette til alle 6 lysdioder er tent etter 6 minutter. Når lysdiode nummer 6 tennes skal det gis en alarm som skal vare i 5 sekunder med buzzeren på digital utgang 8. Deretter skal egg-timeren, slukke alle lysdioder og avvente at noen trykker på trykk-bryteren igjen. Hvis brukeren av systemet trykker på trykk-bryteren når egg-timeren er i ferd med å telle oppover skal den resettes og starte opptelling forfra igjen. Skriv et program som løser oppgaven beskrevet ovenfor. Du behøver ikke tegne koblings-skjema. Forklar med kommentarer eller etterfølgende tekst hvordan ditt program skal virke. ---------------- Mulig løsning. /* egg_timer Utganger: 6 LED styres. Innganger: En bryter med pull_up motstand. RR 2015 egg_timer_1.ino */ int old_switch_state = 0; int new_switch_state = 0; int timer_init = false; int led = 2; unsigned long start_time = 0; unsigned long current_time = 0; int intervall = 60000; // 1 minutt. void setup() Serial.begin(9600); // initialize the digital pin as an output. for ( int pin=2; pin < 8; pin++) pinmode(pin, OUTPUT); // Ikke nødvendig å initialisere utgang 8 for tone()-funksjonen. pinmode(9, INPUT); // tilkobling for trykk-bryter.

7 void loop() new_switch_state = digitalread(9); Serial.print("Trykkbryter er: "); Serial.println(new_switch_state); if ( (old_switch_state == 0) && (new_switch_state == 1)) // Bryter er trykket fra av til på timer_init = 1 ; // Resetter alle Led. Starter uansett forfra for (int i = 2; i < 8; i++) digitalwrite(i, LOW); notone(8); led = 2; start_time = millis(); // setter tilstanden timer_init til i1 (true) // slaår av lyd. old_switch_state = new_switch_state; // tar vare på tidsverdien if (timer_init == 1) current_time = millis(); if ( (current_time - start_time) > intervall ) start_time = current_time; digitalwrite(led, HIGH); led++; if ( led == 8 ) tone(8, 2000, 5000); delay(5000); // venter 5 sekunder før lyd og lys slås av. for (int i = 2; i < 8; i++) digitalwrite(i, LOW); led = 2; timer_init = 0; Serial.print("timer_init = "); Serial.println(timer_init);

8 Oppgave 8. ( 28%) Du skal i denne oppgaven benytte Arduino-enheten til å lage et overvåknings/alarmsystem for en fritidsbåt. Følgende er gitt; Til Arduino-enheten er det tilkoblet en analog temperatursensor til den analoge inngangen A0. Sensoren kan måle temperatur fra -500C til 1000C med et analogt utgangssignalet som vil ligge mellom 0 volt og 5 Volt. Det er også tilkoblet en analog nivåsensor til den analoge inngangen A1 som måler vann-nivået i bunn av båten. Måle-området er 0cm til 10cm med et analogt utgangssignal som vil ligge mellom 0 volt og 5 Volt. I tillegg er det tilkoblet en alarm-bryter (av/på) på døra til kabinen som detekterer om døra er lukket/åpen. Når døra er lukket er bryteren av. Når døra er åpen er bryteren på. Bryteren er tilkoblet digital inngang 2. Denne alarmbryteren skal tilkobles en interrupt-funksjon som detekterer om bryteren går fra av til på (stigende flanke). Det er også tilkoblet en av/på bryter til digital inngang 4. Bryteren er enten av eller på for å angi at alarmsystemet er passivt (av) eller aktivt (på). Til pinne 8 (digital I/O) er det tilkoblet en sirene (buzzer) som skal fungere som lydalarm. Du skal lage et program som løser følgende oppgave. 1. I loop()-funksjonen skal det hvert 5 sekund skrives til monitoren hva temperaturen er i grader Celsius, hva vann-nivået er i cm, og om døra er åpen/lukket. 2. Hvis døra til kabinen åpnes når alarmsystemet er aktivt skal interrupt-rutina kalle opp en funksjon void gsmvarsel(void). (Du behøver ikke lage den, anta at den eksisterer fra tidligere). Samtidig skal det gis en alarm med tone() funksjonen på pinne 8 i 10 minutter eller inntil brukeren passiviserer systemet med av/på bryteren. Skriv et program som løser oppgaven beskrevet ovenfor. Forklar med kommentarer eller etterfølgende tekst hvordan ditt program skal virke. ------ Mulig løsning. /* alarm_system. Oppg 8. Innganger: 2 analoge: A0 - Temperatur. A1 - Nivå Digital inn: Pinne 4. Passiv/aktivt alarm-system. Digital inn: Pinne 2. Dørbryter. Utganger: tone() på pinne 8. RR 2015 alarm_sys1.ino */ //Button pins const int BUTTON_INT = 0; //Interrupt 0 (pin 2 on the Uno) const int tempsensor = A0; const int nivaasensor = A1; volatile int startswitch = 0; void setup() pinmode (4, INPUT); // Passivt eller aktivt alarmsystem pinmode (2, INPUT); // Dørbryter, samt start av interrupt-rutina. pinmode (8, OUTPUT); // Lydalarm med tone() pinmode (10, OUTPUT); // Rød Led kun for test. Serial.begin(9600); attachinterrupt(button_int, interrupt, RISING); // setter opp interrupt-rutina.

9 void loop() float temperatur = 0.0; float nivaa = 0.0; float tempvolt =0.0; int doorswitch = 0; int tempbitverdi = 0; int nivaabitverdi = 0; doorswitch = digitalread(2); startswitch = digitalread(4); // Hvis Alarmen går kan vi slå av lyden ved å slå startbryter av. if (startswitch == 0 ) notone(8); // slår av eventuell alarmlyd // Leser av temperatursensor og skalerer tempbitverdi = analogread(a0); temperatur = (tempbitverdi/1024.0)*150.0-50.0; // Leser av nivåsensor og skalerer nivaabitverdi = analogread(a1); nivaa = (nivaabitverdi/1024.0)*10.0; Serial.println(""); Serial.print("Startbryter er: "); Serial.println(startSwitch); if (doorswitch == 0 ) Serial.println("Doerbryter er lukket."); else Serial.println("Doerbryter er aapen."); Serial.print("Temperaturen er: "); Serial.print(temperatur); Serial.println(" grader Celcius"); Serial.print("Nivaaet er: "); Serial.print(nivaa); Serial.println(" cm"); delay(5000); void interrupt(void) if ( startswitch ) // Bruker gsm og alarm kun når systemet er aktivt. digitalwrite( 10, HIGH); // Kun for test. Led lyser når interrupt rutine kjøres. tone(8, 1000,600000); // Sender en lyd på 1000Hz i 10 minutter gsmvarsel(); // Kaller opp gsmvarsel-rutina. void gsmvarsel(void) Serial.println(""); Serial.println("Sender tekstmelding til eier!!!!! ");