Image of eBits Academy fundamentals illustration

Mikrokontroller - en minidator?

  • March 08, 2023
  • |
  • Jonas Rothausen

Mikrokontrollern är som en tom duk för att förverkliga idéer till alla möjliga prylar eller programmera små roliga spel. Mikrokontroller har också många praktiska användningar som vi möter varje dag, kanske utan att tänka på det. En mikrokontroller (MCU) är ett litet datorsystem på en enda integrerad krets, utformat för att styra särskilda enheter eller utföra bestämda uppgifter. Det är ett inbyggt system med processor, minne och in-/utgångsenheter. Du kan se en mikrokontroller som en mindre kraftfull PC eftersom de har liknande konstruktion och struktur. I en PC är dock CPU och minne separata delar, medan en mikrokontroller integrerar dem 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 använder vi dem egentligen med en mikrokontroller? Vi kan inte bara förvänta oss att mikrokontrollern gör det vi ber om. Vi måste instruera den att göra det vi vill, 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 introducerar vi dem i vår artikel om analoga kretsar, precis här - läs den vid behov! Varför är dessa komponenter så viktiga för en mikrokontroller? Vi kan använda dem för att bygga logiska grindar, som vi lärde oss om i denna blogg om digital elektronik. Logiska grindar är viktiga byggstenar. 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 artikeln om digitala kretsar: AND-grinden. Figur 4 nedan visar en AND-grind byggd av de tre komponenterna i 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, utan spänning från A eller B, blir det ingen spänning på Vout. Om A ändras till 5 V blir det fortfarande ingen spänning på Vout. Detsamma gäller B. Först när både A och B får 5 volt får vi 5 volt på Vout, eftersom båda transistorerna då leder. Detta koncept för AND-grinden visas nedan.


Figur 5: Observera att vi bara får 5 V på Vout 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 handlar om logiknivåerna hög och låg - 1 och 0 - ON och OFF.
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.

Digital elektronik använder bara två logiknivåer, 1 och 0, som i sanningstabellen ovan. En sanningstabell kan beskrivas med en ekvation. Alla logiska grindar har sanningstabeller och tillhörande ekvationer. Matematiken inom digital elektronik skiljer sig från vanlig matematik och kallas boolesk algebra. Detta behandlas i artikeln om 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 kommunicera med, 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 - 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.