Tilbake
4.8
Praktiske kretser og prosjekter

4.8 Praktiske kretser og prosjekter

Bygge komplette kretser med sensorer, aktuatorer og mikrokontroller.

35 min
5 oppgaver
KretskonstruksjonBreadboardProsjektFeilsøking
Du leser den tradisjonelle versjonen
Din fremgang i kapitlet
0 / 5 oppgaver

Prosjektarbeid med elektronikk

I dei føregåande kapitla har du lært om grunnleggjande elektrisitet, Ohms lov, koplingar, komponentar, mikrokontrollarar, sensorar og aktuatorar. No er det tid for å setje alt saman i eit prosjekt.

Prosjektarbeid er ein sentral del av teknologi og forskingslære. Det handlar ikkje berre om å byggje noko som fungerer – det handlar like mykje om å planleggje systematisk, dokumentere prosessen og reflektere over resultatet. I dette kapittelet lærer du ei strukturert tilnærming til elektronikkprosjekt, frå idé til ferdig produkt.

Prosjektfasane

Eit elektronikkprosjekt følgjer typisk fem fasar:

1. Idé og kravspesifikasjon
- Kva skal prosjektet gjere?
- Kva for sensorar og aktuatorar trengst?
- Kva for avgrensingar finst (budsjett, tid, tilgjengeleg utstyr)?

2. Design og planlegging
- Lag eit blokkdiagram som viser hovuddelane i systemet
- Teikn eit koplingsskjema med alle komponentar
- Skriv pseudokode for programmet (logikken i klartekst)

3. Prototyping og bygging
- Bygg kretsen på breadboard (loddefri montering)
- Skriv og test programkoden trinnvis (éin funksjon om gongen)
- Test og feilsøk undervegs

4. Testing og forbetring
- Test at alle funksjonar fungerer som planlagt
- Mål yting og presisjon
- Gjer forbetringar basert på testresultata

5. Dokumentasjon og presentasjon
- Skriv ein prosjektrapport
- Dokumenter koplingsskjema, kode og resultat
- Reflekter over kva som fungerte og kva du ville gjort annleis

Blokkdiagram – den store oversikta

Eit blokkdiagram er ei forenkla teikning som viser hovuddelane i prosjektet og korleis dei heng saman. Det gir deg oversikt før du går inn i detaljane.

Døme – automatisk plantevatnar:

[Jordfuktighets-  ] ──→ [Arduino Uno] ──→ [Vannpumpe   ]
[   sensor (A0)   ]     [            ]     [(via relé)  ]
                         [            ]
[LCD-display      ] ←── [            ] ──→ [LED (status)]
[(I2C: SDA, SCL)  ]     [            ]     [(pinne 13)  ]

Blokkdiagrammet viser at:
- Inngang: Jordfuktsensoren sender data til Arduino
- Prosessering: Arduino les sensoren og tek avgjerder
- Utgang: Vasspumpe (via relé), LED og LCD-display

Start alltid med blokkdiagrammet – det hjelper deg å forstå heilskapen og identifisere kva for komponentar du treng.

✏️Døme: Planleggje eit «smart romovervåkar»-prosjekt

Du vil lage eit system som måler temperatur og lysnivå i eit rom, viser verdiane på Serial Monitor, og aktiverer ein alarm (buzzer) dersom temperaturen overstig 30 °C. Lag ein kravspesifikasjon og eit blokkdiagram.

Kravspesifikasjon:

KravSkildring
K1Måle temperatur med TMP36-sensor
K2Måle lysnivå med LDR
K3Vise temperatur og lysverdi på Serial Monitor kvart 2. sekund
K4Aktivere buzzer når temperatur > 30 °C
K5LED-indikator: grøn = OK, raud = alarm

Komponentliste:
- Arduino Uno
- TMP36 temperatursensor
- LDR + 10 kΩ motstand
- Piezo-buzzer
- Grøn LED + 220 Ω motstand

- Raud LED + 220 Ω motstand
- Breadboard og leidningar
Blokkdiagram:

[TMP36 (A0)]  ──→  [Arduino Uno]  ──→  [Buzzer (pinne 8)    ]
[LDR   (A1)]  ──→  [            ]  ──→  [Grønn LED (pinne 10)]
                    [            ]  ──→  [Rød LED (pinne 11)  ]
                    [            ]  ──→  [Serial Monitor (USB) ]
Pseudokode:
1. Les temperatur frå TMP36
2. Les lysverdi frå LDR
3. Skriv verdiane til Serial Monitor

4. Dersom temperatur > 30: slå på buzzer og raud LED, slukk grøn LED

5. Elles: slukk buzzer og raud LED, tenn grøn LED

6. Vent 2 sekund
7. Gjenta frå steg 1

📝Oppgave 1

Kva for rekkjefølgje bør fasane i eit elektronikkprosjekt følgje?

Systematisk feilsøking
Feilsøking (debugging) er ein av dei viktigaste ferdigheitene i elektronikkprosjekt. Når noko ikkje fungerer, bør du jobbe systematisk:

Trinn 1: Isoler problemet
- Er det eit maskinvareproblem (kopling) eller eit programvareproblem (kode)?
- Test med eit kjent, enkelt program (f.eks. Blink) for å sjekke at Arduino fungerer

Trinn 2: Del og hersk
- Test kvar komponent for seg, ikkje alt på éin gong
- Bruk Serial.println() for å skrive ut verdiar og sjå kva programmet gjer

Trinn 3: Sjekk dei vanlegaste feila
- Lause leidningar på breadboard
- Feil pinne i koden vs. koplinga
- Manglande GND-tilkopling (alle komponentar må dele felles jord)
- Manglande forresistans for LED-ar
- Feil retning på diodar, LED-ar, transistorar
- Syntaksfeil i koden (manglande semikolon, feil parentesar)

Trinn 4: Dokumenter og lær
- Skriv ned kva feilen var og korleis du løyste han
- Neste gong sparar du tid ved å kjenne att feilen

Serial.println() – det viktigaste feilsøkingsverktøyet ditt

Det kraftigaste verktøyet for feilsøking av Arduino-program er Serial.println(). Ved å skrive ut verdiar, tilstandar og meldingar til Serial Monitor kan du «sjå» kva programmet gjer innvendig.

Gode feilsøkingspraksisar:

void loop() {
  int sensorVerdi = analogRead(A0);
  Serial.print("Sensor A0 = ");
  Serial.println(sensorVerdi);  // Se om sensoren leses riktig

  float temperatur = (sensorVerdi * 5.0 / 1024.0 - 0.5) * 100.0;
  Serial.print("Beregnet temp = ");
  Serial.println(temperatur);   // Se om konverteringen er riktig

  if (temperatur > 25.0) {
    Serial.println("→ OVER grense, motor PÅ");
    digitalWrite(9, HIGH);
  } else {
    Serial.println("→ Under grense, motor AV");
    digitalWrite(9, LOW);
  }

  delay(1000);
}

Med slike utskrifter kan du raskt sjå om sensoren gir fornuftige verdiar, om utrekninga er rett, og om programflyten følgjer logikken du venta.

✏️Døme: Komplett prosjekt – smart romovervåkar

Skriv den komplette Arduino-koden for «smart romovervåkar»-prosjektet: TMP36 (A0), LDR (A1), buzzer (pinne 8), grøn LED (pinne 10), raud LED (pinne 11). Alarm ved temperatur over 30 °C.

// Smart romovervåker
// TMP36 på A0, LDR på A1
// Buzzer på pinne 8, grønn LED pinne 10, rød LED pinne 11

const int TEMP_PIN = A0;
const int LYS_PIN = A1;
const int BUZZER_PIN = 8;
const int GRONN_LED = 10;
const int ROD_LED = 11;
const float ALARM_TEMP = 30.0;

void setup() {
  pinMode(BUZZER_PIN, OUTPUT);
  pinMode(GRONN_LED, OUTPUT);
  pinMode(ROD_LED, OUTPUT);
  Serial.begin(9600);
  Serial.println("=== Smart Romovervåker ===");
  Serial.println("Alarm ved temperatur over 30 °C");
  Serial.println("");
}

void loop() {
  // --- Les sensorer ---
  int tempRa = analogRead(TEMP_PIN);
  float spenning = tempRa * (5.0 / 1024.0);
  float temperatur = (spenning - 0.5) * 100.0;

  int lysVerdi = analogRead(LYS_PIN);

  // --- Vis på Serial Monitor ---
  Serial.print("Temp: ");
  Serial.print(temperatur, 1);
  Serial.print(" °C  |  Lys: ");
  Serial.print(lysVerdi);

  // --- Kontroller aktuatorer ---
  if (temperatur > ALARM_TEMP) {
    // ALARM – for varmt!
    digitalWrite(BUZZER_PIN, HIGH);
    digitalWrite(ROD_LED, HIGH);
    digitalWrite(GRONN_LED, LOW);
    Serial.println("  |  ALARM!");
  } else {
    // Alt OK
    digitalWrite(BUZZER_PIN, LOW);
    digitalWrite(ROD_LED, LOW);
    digitalWrite(GRONN_LED, HIGH);
    Serial.println("  |  OK");
  }

  delay(2000);  // Oppdater hvert 2. sekund
}

Koden følgjer mønsteret: Les sensorar → Behandle data → Styr aktuatorar → Vis status. Dette er eit grunnleggjande mønster som blir brukt i dei aller fleste styringssystem, frå enkle hobbyprosjekt til industrielle kontrollsystem.

📝Oppgave 2

Kva for ein av desse er den beste framgangsmåten for å feilsøke ein Arduino-krets som ikkje fungerer?

Prosjektdokumentasjon

God dokumentasjon er like viktig som sjølve prosjektet. Ein prosjektrapport bør innehalde:

1. Innleiing
- Kva er målet med prosjektet?
- Kva for problemstilling løyser det?

2. Kravspesifikasjon
- Kva skal prosjektet gjere? (funksjonskrav)
- Kva for avgrensingar finst? (tid, budsjett, utstyr)

3. Design
- Blokkdiagram (overordna systemvising)
- Koplingsskjema (detaljert kretsskjema)
- Pseudokode eller flytdiagram for programmet

4. Gjennomføring
- Steg-for-steg skildring av byggjeprosessen
- Bilete/teikningar av prototypen
- Komplett programkode med kommentarar

5. Testing og resultat
- Kva blei testa? Korleis?
- Fungerer prosjektet som planlagt?
- Målingar og data (tabellar, grafar)

6. Drøfting og refleksjon
- Kva fungerte bra?
- Kva ville du gjort annleis?
- Kva lærte du?
- Moglege forbetringar

Tips for god prosjektrapport

Bilete og skjermbilete:
- Ta bilete av prototypen undervegs (ikkje berre ferdig)
- Inkluder skjermbilete frå Serial Monitor som viser at systemet fungerer
- Fotografer koplingane på breadboardet

Kodekommentarar:
Koden i rapporten skal ha gode kommentarar som forklarar kvifor, ikkje berre kva:

// Dårlig kommentar:
int x = analogRead(A0);  // Les A0

// God kommentar:
int tempRa = analogRead(A0);  // Les TMP36-sensor (gir 10 mV/°C)

Bruk tabellar for testresultat:

TestVenta resultatFaktisk resultatStatus
Temp < 30 °CGrøn LED, ingen lydGrøn LED, ingen lydOK
Temp > 30 °CRaud LED, buzzerRaud LED, buzzerOK
Sensor frakoplaVis feilmeldingViser 0 °CMå forbetrast

Ærlegdom:
Skriv ærleg om det som ikkje fungerte. Det viser at du forstår prosjektet og har lært av prosessen. Ingen ventar eit perfekt resultat – det er prosessen og refleksjonen som tel.

Oppsummering – Prosjektarbeid med elektronikk

Dei fem prosjektfasane:
1. Idé og kravspesifikasjon – definer kva prosjektet skal gjere
2. Design og planlegging – blokkdiagram, koplingsskjema, pseudokode
3. Prototyping og bygging – breadboard, trinnvis utvikling
4. Testing og forbetring – systematisk testing, iterativ forbetring
5. Dokumentasjon og presentasjon – rapport, refleksjon

Feilsøking:
- Isoler problemet: maskinvare eller programvare?
- Del og hersk: test éin komponent om gongen
- Bruk Serial.println() for å «sjå» kva programmet gjer
- Sjekk vanlege feil: lause leidningar, feil pinne, manglande GND

Dokumentasjon:
- Innleiing, kravspek, design, gjennomføring, testing, drøfting
- Bilete, koplingsskjema og kommentert kode
- Ærleg refleksjon over kva som fungerte og kva som kan forbetrast

Det viktigaste mønsteret i alle styringssystem:
Les sensorar → Behandle data → Styr aktuatorar → Gjenta

Gratulerer – du har no det teoretiske grunnlaget for å planleggje, byggje og dokumentere dine eigne elektronikkprosjekt med Arduino!

📝Oppgave 3

Vel eitt av prosjekta nedanfor og lag ein komplett prosjektplan: a) Automatisk nattlys, b) Parkeringsassistent med ultralydsensor, c) Temperaturalarm. Planen skal innehalde: 1) Kravspesifikasjon (minst 4 krav), 2) Komponentliste, 3) Blokkdiagram, 4) Pseudokode for programmet.

📝Oppgave 4

Skriv ein komplett prosjektrapport for romovervåkar-prosjektet frå dømet i dette kapittelet. Inkluder: a) Innleiing med prosjektmål, b) Kravspesifikasjon i tabellform, c) Blokkdiagram, d) Koplingsliste (kva for pinnar blir brukte til kva), e) Den komplette koden med kommentarar, f) Ein testplan med minst 3 testar og venta resultat, g) Refleksjon: minst to ting du ville forbetra.

Dette kapitlet er skrevet av Anthropics toppmodeller (Claude Opus og Claude Fable) og er foreløpig ikke manuelt gjennomgått — kvalitetskontrollen gjøres av uavhengige KI-agenter, og innmeldte feil rettes fortløpende. Funnet en feil? Meld fra, så retter vi den. Les mer om hvordan innholdet lages.