Motorer, servoer, reléer og styring av fysiske enheter.
Fra å lese til å handle
I forrige kapittel lærte Arduino-en å lese omverdenen gjennom sensorer. Nå skal den lære å handle i den. Det skjer gjennom aktuatorer -- komponenter som omdanner et elektrisk signal til en fysisk handling. En aktuator er rett og slett det motsatte av en sensor.
Den enkleste aktuatoren har du allerede brukt: LED-en, som lager lys. Men i dette kapittelet skal vi møte kraftigere typer -- motorer, servoer og reléer -- som kan rotere hjul, dreie robotarmer og slå på 230 V-apparater. Vi skal også lære PWM, et smart triks som lar Arduino styre hastighet og lysstyrke gradvis, selv om den bare kan skru av og på.
PWM: å dimme med av og på
Her møter vi et lite paradoks. En digital pinne kan bare gi 0 V eller 5 V -- av eller på. Hvordan kan man da dimme en LED til halv styrke, eller kjøre en motor på halv fart? Svaret er PWM, pulsbreddemodulasjon. Trikset er å svitsje pinnen av og på så raskt at øyet og motoren bare oppfatter gjennomsnittet.
Nøkkelbegrepet er duty cycle -- andelen av tiden signalet er på. Er det 0 prosent, er pinnen alltid av; ved 50 prosent er den på halve tiden, som tilsvarer rundt 2,5 V i gjennomsnitt; og ved 100 prosent er den alltid på. I Arduino styrer vi dette med analogWrite(pin, verdi), der verdien går fra 0 til 255: 0 er av, 127 er omtrent halv styrke, og 255 er full styrke. Bare pinnene merket med en tilde -- 3, 5, 6, 9, 10 og 11 -- støtter PWM.
Et fint eksempel er en LED som «puster». Med en løkke som lar analogWrite gå sakte fra 0 til 255 og tilbake, lyser LED-en gradvis opp og falmer ut. Fordi signalet svitsjer rundt 490 ganger i sekundet, ser øyet en jevn dimming, ikke blinking. Vil du regne på det: analogWrite(9, 191) gir en duty cycle på prosent, altså en gjennomsnittsspenning på rundt 3,75 V og en LED på cirka tre fjerdedels styrke.
Motorer og servoer
En vanlig DC-motor roterer kontinuerlig så lenge den får strøm, og egner seg til hjul og vifter. Med PWM kan vi styre farten -- lavt PWM-tall gir sakte rotasjon, høyt gir full fart. Men her kommer en viktig regel: en motor trekker langt mer strøm enn en Arduino-pinne tåler, som maks er 20 mA. Derfor kobler vi aldri en motor rett på en pinne. I stedet bruker vi en transistor som driver: et lite PWM-signal fra Arduino styrer basisen, og transistoren slipper gjennom den store motorstrømmen. Vi legger også alltid til en frittgående diode (flyback-diode) parallelt over motoren, fordi en motor lager en farlig spenningstopp i det øyeblikket den slås av -- en topp som ellers kan ødelegge transistoren.
En servomotor er annerledes. Den roterer ikke fritt, men dreier til en bestemt vinkel, vanligvis mellom 0 og 180 grader, og holder seg der. Inni har den en DC-motor med gir, et potensiometer som måler posisjonen, og en styrekrets som hele tiden sammenligner ønsket og faktisk vinkel. Servoer er perfekte til robotarmer og styremekanismer. I Arduino bruker vi Servo-biblioteket: servo.attach(pin) kobler servoen til en pinne, og servo.write(vinkel) dreier den. Et fint eksempel er å styre en servo med et potensiometer -- du leser potensiometeret med analogRead, bruker map() til å gjøre om verdien fra 0-1023 til 0-180 grader, og skriver vinkelen til servoen, som følger etter. Også servoer trekker mye strøm, opptil 500 mA, så bruker du flere, bør de ha en ekstern strømforsyning med felles jord med Arduino.
Reléet -- og hele styringssløyfen
Noen ganger vil vi styre noe mye kraftigere enn en liten motor, for eksempel en lampe på 230 V eller en større 12 V-enhet. Da bruker vi et relé -- en elektromekanisk bryter der et lite styresignal fra Arduino kontrollerer en helt egen høyeffektskrets. Når Arduino sender et signal, tiltrekker en elektromagnet i reléet en mekanisk bryter som slutter eller bryter den eksterne kretsen. En typisk relémodul styres med 5 V og kan svitsje opptil 10 A. Den har terminaler kalt COM, NO (normalt åpen) og NC (normalt lukket): med NO er kretsen brutt til Arduino slår den på, mens med NC er den sluttet til Arduino slår den av. Reléer brukes til å styre belysning, varmeelementer, vannpumper og vifter. Men én advarsel er livsviktig: arbeid med nettspenning på 230 V er livsfarlig, og bare kvalifiserte personer bør koble til det.
Når vi nå har både sensorer og aktuatorer, kan vi sette sammen et helt styringssystem. Mønsteret er alltid det samme: les omgivelsene, ta en beslutning, utfør en handling, og gjenta. Tenk deg en automatisk vifte: Arduino leser en temperatursensor, og hvis temperaturen overstiger 25 grader, slår den på motoren via en transistor og tenner en rød LED; ellers slår den av motoren og tenner en grønn. Akkurat denne sløyfen -- sensor inn, beslutning, aktuator ut -- er grunnlaget for alt fra hobbyprosjekter til industrielle kontrollsystemer. Og noen sikkerhetsregler følger oss: koble aldri en motor rett på en pinne, bruk alltid flyback-diode over motorer og spoler, gi motorer og servoer egen strømforsyning med felles jord, og hold fingrene unna bevegelige deler.
Oppsummering
Vi har sett at aktuatorer omdanner elektriske signaler til fysiske handlinger -- LED til lys, DC-motor til rotasjon, servo til en presis vinkel, og relé til en bryter for kraftige kretser. PWM lar Arduino styre hastighet og lysstyrke gradvis ved å svitsje raskt av og på, styrt med analogWrite(pin, 0-255).
Siden aktuatorer ofte trekker mer enn de 20 mA en pinne tåler, bruker vi driverkretser som transistorer og reléer, og en flyback-diode beskytter mot spenningstopper. Sammen danner sensor, mikrokontroller og aktuator det grunnleggende mønsteret i alle styringssystemer: les, beslutt, handle, gjenta -- alltid med sikkerheten i tankene.
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.