Image of eBits Academy fundamentals illustration

Mikrokontroller

  • March 02, 2023
  • |
  • Jonas Rothausen

Introduktion

Denna mikrokontroller är som en tom duk där du kan förverkliga dina idéer till prylar eller till och med skapa små roliga spel själv. Den har också massor av praktiska användningar som vi möter varje dag, kanske utan att tänka på det.

En mikrokontroller (MCU) är ett litet, självständigt datorsystem på en integrerad krets, utformat för att styra bestämda enheter eller utföra särskilda uppgifter. Det är ett inbyggt system med processor, minne och in-/utgångsenheter.
Du kan se en mikrokontroller som en mindre kraftfull PC eftersom uppbyggnad och struktur liknar varandra. I en PC är CPU, minne och seriellt gränssnitt separata delar, medan de i en mikrokontroller är integrerade i en enda krets.

Figur 1: En mikrokontroller och en PC.


Precis som vi kan ansluta tangentbord, headset och skärmar till en PC för in- och utdata kan vi ansluta enheter till mikrokontroller. Vi kan exempelvis ansluta knappar och lysdioder.

Figur 2

Vi kan också ansluta olika slags sensorer för att mäta sådant vi tycker är intressant, exempelvis fuktighet, temperatur eller rörelse. Nedan finns en lista över några av dessa sensorer, som vi kan använda med en mikrokontroller.

Alla dessa lysdioder, sensorer och knappar är häftiga. Men hur gör vi egentligen? Vi kan inte bara förvänta oss att mikrokontrollern gör det vi säger; den skulle inte förstå, oavsett hur mycket vi skriker. Vi måste instruera den på rätt sätt! Låt oss ta reda på hur. 


Vad är en mikrokontroller?

Vad är en mikrokontroller, och hur är den tillverkad? För att förstå detta behöver vi grundläggande kunskap om några komponenter som finns i en mikrokontroller, såsom motstånd, transistorer och dioder; se figur 3.


Figur 3: Symboler för ett motstånd, en transistor och en diod.

Om du är osäker på vad komponenterna är eller vad de används till har vi en blogg om dem precis här – läs den vid behov! 

Men varför är komponenterna så viktiga för en mikrokontroller? Med dem kan vi bygga logiska grindar, som vi lärde oss om i denna blogg om digital elektronik.
Dessa logiska grindar är viktiga eftersom de behandlar digitala logiknivåer; mätning av en kontinuerlig analog spänning kräver en ADC, inte bara en logisk grind. Låt oss illustrera detta med en av grindarna från bloggen om digitala kretsar: AND-grinden.

Figur 4 nedan visar uppbyggnaden av en AND-grind med de tre komponenterna från figur 3.

Figur 4: En krets för en AND-grind.
Spänningskällor: Vin, A och B
Transistorer: T1 och T2
Motstånd: Ra, Rb och Rout


I artikeln om analoga kretsar lärde vi oss att om 5 V ansluts till kollektor på transistor T1 (Vin) i figur 4, och A och B inte har någon spänning, blir utspänningen noll (Vout). Om A ändras till 5 V finns fortfarande ingen utspänning. Detsamma gäller B. Först när både A och B får 5 volt blir utgången 5 volt, eftersom båda transistorerna då är ledande.
Detta koncept för AND-grinden visas nedan.

Figur 5: Observera att utgången bara blir 5 V när både A och B har 5 V.


Om vi ersätter 5 V och 0 V med ettor och nollor får vi så kallade sanningstabeller. Kom ihåg att digital elektronik bara handlar om hög och låg.

När ersättningen gjorts får vi en sanningstabell.
Figur 6 är sanningstabellen för AND-grinden. Detta är början på digital elektronik och hur mikrokontroller förstår saker.



Figur 6: Sanningstabell för en AND-grind.

I digital elektronik finns bara logiknivåerna hög och låg, 1 och 0, som i sanningstabellen ovan. Tabellen kan beskrivas med en ekvation. Alla grindar har sanningstabeller och tillhörande ekvationer, men matematiken skiljer sig från vanlig matematik och kallas boolesk algebra. Det behandlas i den nämnda bloggen (digitala kretsar).  

Med dessa logiska grindar kan vi bygga strukturer som adderar, multiplicerar eller lagrar digital information - med andra ord arbetar med den. Sådana strukturer, exempelvis ADDER, MULTIPLIER och RAM, finns inuti mikrokontroller.

För att styra och använda ADDER, MULTIPLIER och RAM använder vi ett program. Programmet lagras i mikrokontrollerns minne och kan överföras via programmeringsstift.

 Figur 7: ROM står för Read-Only Memory. 

Som figur 7 visar kan programmet som kommunicerar med ADDER, MULTIPLIER och RAM ses som rader av nollor och ettor. Raderna kan exempelvis se ut så här:

 

Figur 8: Utdrag ur figur 7.

Varje rad förmedlar information till mikrokontrollerns minne så att mikrokontrollern vet vad som pågår och kan förstå våra instruktioner. Få människor kan enkelt tolka dessa rader av nollor och ettor. Att avkoda och förstå varje rad vore svårt och tidskrävande, så vi har något som kallas assemblerspråk. Assemblerspråk är för skickliga programmerare med god förståelse för den aktuella mikrokontrollerns konstruktion. Sådana personer skapar programmeringsspråk som är lättare att använda så att vi andra kan programmera mer intuitivt och på så sätt koppla samman elektronik med människor.

Sammanfattningsvis innebär instruktioner till en mikrokontroller att ett programmeringsspråk översätts till nollor och ettor. Exempel är C och C++, som ofta används med mikrokontroller.

Dessa utvecklare hjälper oss att programmera mikrokontroller snabbare och enklare, eftersom assemblerkod vanligtvis kräver betydligt fler rader än C eller C++ för samma resultat.

För att göra det ännu enklare kan vi använda programbibliotek när vi programmerar mikrokontroller. Ett bibliotek är som en uppsättning kommandon som kan importeras för att utöka programmeringsverktygen. Det låter mikrokontrollern förstå vissa genvägar som är enklare att använda. Genom att importera ett matematikbibliotek kan du exempelvis använda matematiska begrepp på ett lättillgängligt sätt i koden. Många olika bibliotek väntar på ditt nästa projekt! Det finns också många välgjorda handledningar för mikrokontroller på nätet, som dem du hittar här.

Bara fantasin sätter gränser för vad en mikrokontroller kan göra! Den kompakta storleken, låga strömförbrukningen och låga kostnaden gör dem populära för många tillämpningar.

Förenklad logikmodell: 0V och 5V i AND-exemplet är idealiserade logiknivåer. En verklig BJT-krets har spänningsfall och belastningsberoende nivåer; mät utgången och kontrollera nästa ingångs gränser. Anslut inte 5V till en mikrokontroller som inte är 5V-tolerant.

Lämna en kommentar

Observera att kommentarer måste godkännas innan de publiceras.