• Lærebøker
  • Python
  • GeoGebra
  • Hoderegning
  • Test deg selv

Søk i Skolesaga

Søk etter lærebøker, kapitler, trinn og verktøy

Gratis interaktive lærebøker for norsk skole.

Lærebok
PersonvernVilkår

© 2025 Skolesaga · Alle rettigheter forbeholdt

Deler av innholdet er utviklet med hjelp av AI-verktøy

Teknologi og forskningslære 1Tilbake
4.7 Aktuatorer og styring
Aktuatorer og styring

4.7 Aktuatorer og styring

Alle fag for VG2

Motorer, servoer, reléer og styring av fysiske enheter.

30 min
5 oppgaver
MotorServoReléPWMAktuator
Din fremgang i kapitlet
0 / 5 oppgaver

Aktuatorer og styring

I forrige kapittel lærte du å lese sensorer – å hente informasjon inn til mikrokontrolleren. Nå skal vi se på den andre siden: aktuatorer – komponenter som lar mikrokontrolleren påvirke den fysiske verden.

En aktuator er det motsatte av en sensor: den omdanner et elektrisk signal til en fysisk handling. LED-en du allerede har brukt er en enkel aktuator (lys), men i dette kapittelet utforsker vi mer kraftfulle aktuatorer: motorer, servoer og reléer. Vi lærer også om PWM – en teknikk som lar Arduino-en styre hastighet og intensitet gradvis.

Aktuator

En aktuator er en komponent som konverterer et elektrisk signal til en fysisk handling.

Vanlige aktuatorer i elektronikkprosjekter:

AktuatorFysisk handlingEksempel
LEDLysStatusindikator, belysning
DC-motorRotasjon (kontinuerlig)Vifte, hjul på robot
ServomotorRotasjon (presis vinkel)Robotarm, styring
Stepper-motorRotasjon (steg for steg)3D-printer, CNC
ReléSvitsj for høy spenningStyre 230 V-apparater
BuzzerLydAlarm, melodi
SolenoidLineær bevegelseDørlås, ventil

Viktig: De fleste aktuatorer trekker mer strøm enn Arduino kan levere fra sine pinner (maks 20 mA per pinne). Vi trenger derfor ofte driverkretser – transistorer, motordrivere eller reléer – for å koble Arduino til større aktuatorer.

PWM – Pulsbreddemodulasjon
PWM (Pulse Width Modulation) er en teknikk der Arduino svitsjer en digital pinne raskt mellom HIGH og LOW for å simulere en analog utgang.

Nøkkelbegreper:
- Duty cycle: Andelen av tiden signalet er HIGH (i prosent)
- 0 % = alltid LOW (0 V effektivt)
- 50 % = halvparten HIGH, halvparten LOW (≈ 2,5 V effektivt)
- 100 % = alltid HIGH (5 V effektivt)
- Frekvens: Arduino-ens PWM-frekvens er ca. 490 Hz (pinnene 3, 9, 10, 11) eller 980 Hz (pinnene 5, 6)

I Arduino brukes analogWrite(pin, verdi):
- verdi er mellom 0 og 255 (8-bit)
- 0 = 0 % duty cycle (av)
- 127 = ca. 50 % duty cycle
- 255 = 100 % duty cycle (full effekt)

Bare pinnene merket med ~ (3, 5, 6, 9, 10, 11) støtter PWM!

✏️Eksempel: Gradvis dimming av LED med PWM

Skriv et program som gradvis øker og senker lysstyrken til en LED koblet til pinne 9 (PWM-pinne), slik at den «puster» – langsomt lyser opp og fader ut.

``cpp
// «Pustende» LED med PWM
// LED med forresistans på pinne 9

const int LEDPIN = 9;

void setup() {
pinMode(LED
PIN, OUTPUT);
}

void loop() {
// Øk lysstyrken gradvis (0 → 255)
for (int lysstyrke = 0; lysstyrke <= 255; lysstyrke++) {
analogWrite(LEDPIN, lysstyrke);
delay(10); // 10 ms mellom hvert steg
}

// Senk lysstyrken gradvis (255 → 0)
for (int lysstyrke = 255; lysstyrke >= 0; lysstyrke--) {
analogWrite(LED
PIN, lysstyrke);
delay(10);
}
}
`

Forklaring:
-
analogWrite(9, 0) = LED av (0 % duty cycle)
-
analogWrite(9, 127) = halv lysstyrke (ca. 50 %)
-
analogWrite(9, 255)` = full lysstyrke (100 %)

Hvert steg tar 10 ms. Med 256 steg opp og 256 steg ned tar én syklus ca. 512×10512 \times 10512×10 ms =5,12= 5{,}12=5,12 sekunder.

PWM-signalet svitsjer så raskt (490 Hz) at øyet oppfatter det som en jevn, dimmbar lysstyrke – ikke blinking.

📝Oppgave 1

Hva gjør analogWrite(9, 127) på en Arduino?

Servomotor

En servomotor (servo) er en motor som kan dreie til en spesifikk vinkel (vanligvis 0°–180°) og holde seg der.

Oppbygning:
- DC-motor med gir (for dreiemoment)
- Potensiometer (for posisjonsmåling)
- Styrekrets (sammenligner ønsket og faktisk posisjon)

Styring fra Arduino:
- Bruker Servo-biblioteket (inkludert i Arduino IDE)
- Signal: PWM-puls med varierende bredde (typisk 1–2 ms)
- servo.write(vinkel) – dreier til angitt vinkel (0–180)
- servo.attach(pin) – kobler servoen til en pinne

Kobling:
- Rød ledning: 5 V (strøm)
- Brun/svart ledning: GND
- Oransje/gul ledning: Signal (digital pinne)

Viktig: Servoer kan trekke mye strøm (opptil 500 mA). Ved bruk av flere servoer bør du bruke en ekstern strømforsyning i stedet for Arduinos 5 V-pinne.

✏️Eksempel: Styre en servomotor med potensiometer

Skriv et program som bruker et potensiometer (på A0) til å styre vinkelen på en servomotor (på pinne 9). Når du dreier potensiometeret, skal servoen følge etter.

``cpp
// Servo styrt av potensiometer
// Potensiometer på A0, servo på pinne 9

#include

Servo minServo;

void setup() {
minServo.attach(9); // Koble servo til pinne 9
Serial.begin(9600);
}

void loop() {
int potVerdi = analogRead(A0); // Les potensiometer (0-1023)
int vinkel = map(potVerdi, 0, 1023, 0, 180); // Konverter til vinkel

minServo.write(vinkel); // Drei servoen
Serial.print("Vinkel: ");
Serial.println(vinkel);

delay(20); // Kort pause for stabil drift
}
`

Forklaring:
-
analogRead(A0) gir en verdi 0–1023 fra potensiometeret.
-
map(potVerdi, 0, 1023, 0, 180) konverterer lineært fra området 0–1023 til 0–180.
-
minServo.write(vinkel) dreier servoen til den beregnede vinkelen.
-
map()`-funksjonen er svært nyttig for å konvertere mellom ulike verdiområder.

📝Oppgave 2

Hvorfor bør du bruke en ekstern strømforsyning når du kobler flere servoer til Arduino?

Relé

Et relé er en elektromekanisk bryter som lar et laveffekts styresignal (f.eks. 5 V fra Arduino) kontrollere en høyeffekts krets (f.eks. 230 V lysarmatur eller 12 V motor).

Virkemåte:
1. Arduino sender et signal (HIGH/LOW) til relémodulen
2. En elektromagnet i reléet tiltrekker en mekanisk bryter
3. Bryteren kobler eller bryter den eksterne kretsen

Typisk relémodul for Arduino:
- Styrespenning: 5 V (fra Arduino)
- Svitsjkapasitet: 10 A ved 250 V AC eller 30 V DC
- Inngangspinner: VCC, GND, IN (styresignal)
- Utgangsterminaler: COM (felles), NO (normalt åpen), NC (normalt lukket)

NO (Normally Open): Kretsen er brutt når reléet er av. Arduino slår den PÅ.
NC (Normally Closed): Kretsen er sluttet når reléet er av. Arduino slår den AV.

ADVARSEL: Arbeid med nettspenning (230 V) er livsfarlig. Bare kvalifiserte personer bør koble til nettspenning!

Bruksområder for reléer

Reléer brukes når Arduino skal styre enheter som krever mer strøm eller høyere spenning enn hva Arduino selv kan levere:

- Belysning: Styre rombelysning basert på bevegelsessensor
- Varmeelement: Slå på/av en varmeovn basert på temperatursensor
- Vannpumpe: Styre vanning av planter basert på jordfuktighet
- Ventilasjon: Styre en vifte basert på CO₂-nivå eller temperatur
- Dørlås: Åpne en elektrisk lås når riktig kode tastes inn

Relémoduler for Arduino er billige og enkle å bruke. Mange relémoduler har en innebygd LED som viser om reléet er aktivert, og en optokobler for å beskytte Arduino mot spenningstopper.

✏️Eksempel: Styre DC-motor med transistor og PWM

En liten DC-motor trekker 150 mA ved 5 V – for mye for en Arduino-pinne (maks 20 mA). Vis hvordan du bruker en NPN-transistor som driver, og skriv et program som styrer motorhastigheten med PWM.

Kobling:
``
Arduino pinne 9 --- [1 kΩ] --- Basis (B)
Kollektor (C) --- Motor --- 5 V
Emitter (E) --- GND
`
Legg til en frittgående diode (flyback diode) parallelt over motoren for å beskytte mot spenningstopper når motoren slås av.

Programkode:

`cpp
// Motorhastighet styrt med PWM via transistor
// Motor driver-transistor på pinne 9 (PWM)

const int MOTORPIN = 9;

void setup() {
pinMode(MOTOR
PIN, OUTPUT);
Serial.begin(9600);
}

void loop() {
// Stopp
Serial.println("Motor: STOPP");
analogWrite(MOTORPIN, 0);
delay(2000);

// Sakte (25 % hastighet)
Serial.println("Motor: SAKTE (25%)");
analogWrite(MOTOR
PIN, 64);
delay(3000);

// Medium (50 % hastighet)
Serial.println("Motor: MEDIUM (50%)");
analogWrite(MOTORPIN, 127);
delay(3000);

// Full fart (100 %)
Serial.println("Motor: FULL FART (100%)");
analogWrite(MOTOR
PIN, 255);
delay(3000);
}
`

Forklaring:
- Arduino sender et PWM-signal til basisen av transistoren via en 1 kΩ motstand.
- Transistoren fungerer som en «variabel bryter» som slipper gjennom strøm proporsjonal med PWM-signalet.
-
analogWrite(MOTOR_PIN, 64)` gir ca. 25 % hastighet, 127 gir ca. 50 %, osv.
- Flyback-dioden er kritisk: Når en motor slås av, genererer den en spenningstopp som kan ødelegge transistoren.

📝Oppgave 3

Hva er forskjellen mellom en vanlig DC-motor og en servomotor?

Viktige sikkerhetsregler:

1. Strømbegrensning: Koble aldri en motor direkte til en Arduino-pinne. Bruk alltid en transistor, motordriver eller relé som mellomledd.
2. Flyback-diode: Bruk alltid en diode parallelt over motorer og spoler (reléer) for å fange opp spenningstopper.
3. Ekstern strømforsyning: Motorer og servoer bør ha egen strømforsyning med felles GND med Arduino.
4. Nettspenning: Arbeid ALDRI med 230 V uten godkjent utstyr og veiledning av fagperson.
5. Mekanisk sikkerhet: Motorer og servoer kan klemme og skade. Hold fingrene unna bevegelige deler.
6. Varmeutvikling: Motordrivere og transistorer kan bli varme. Sørg for tilstrekkelig kjøling.

Oppsummering – Aktuatorer og styring

Aktuatorer omdanner elektriske signaler til fysiske handlinger:
- LED: Lys (enkleste aktuator)
- DC-motor: Kontinuerlig rotasjon (vifte, hjul)
- Servomotor: Presis vinkel 0–180° (robotarm, styremekanisme)
- Relé: Bryter for høy spenning/strøm (230 V apparater)

PWM (Pulsbreddemodulasjon):
- Simulerer analog utgang på digitale pinner
- analogWrite(pin, 0–255) styrer duty cycle
- Bare pinner merket ~ støtter PWM (3, 5, 6, 9, 10, 11)

Driverkretser:
- Arduino-pinner tåler maks 20 mA
- Transistorer, motordrivere og reléer kobler Arduino til kraftige aktuatorer
- Flyback-diode beskytter mot spenningstopper fra motorer og spoler

Sensor + mikrokontroller + aktuator danner grunnlaget for alle styringssystemer: les omgivelsene, ta beslutninger, utfør handlinger.

I neste kapittel samler vi alt i et komplett prosjekt!

📝Oppgave 4

Du vil bygge en automatisk vifte som slår seg på når temperaturen overstiger 25 °C. Du har en TMP36-sensor (på A0), en DC-motor koblet via transistor (på pinne 9), og en LED for statusvisning (på pinne 13). Skriv et Arduino-program som: a) Leser temperaturen hvert sekund. b) Slår på motoren og tenner LED-en når temperaturen er over 25 °C. c) Slår av motoren og slukker LED-en når temperaturen er 25 °C eller lavere. d) Skriver temperaturen og viftestatus til Serial Monitor.

📝Oppgave 5

Forklar med egne ord hva PWM er og hvordan det fungerer. Inkluder: a) Hva duty cycle betyr. b) Hvorfor PWM kan brukes til å dimme en LED, selv om signalet bare er 0 V eller 5 V. c) Hva analogWrite(9, 191) gjør – beregn duty cycle i prosent og gjennomsnittlig spenning.