microcontroller (MCU)

Een microcontroller is een compacte geïntegreerde schakeling die is ontworpen om een specifieke bewerking in een ingebed systeem te besturen. Een typische microcontroller bevat een processor, geheugen en input/output (I/O) randapparatuur op een enkele chip.

Soms ook wel embedded controller of microcontroller unit (MCU) genoemd, worden microcontrollers aangetroffen in voertuigen, robots, kantoormachines, medische apparatuur, mobiele radiozendontvangers, verkoopautomaten en huishoudelijke apparaten, naast andere apparaten. Het zijn in wezen eenvoudige miniatuur personal computers (PC’s) die zijn ontworpen om kleine functies van een groter onderdeel te besturen, zonder een complex front-end besturingssysteem (OS).

Hoe werken microcontrollers?

Een microcontroller is ingebed in een systeem om een enkele functie in een apparaat te besturen. Hij doet dit door de gegevens die hij ontvangt van de I/O-randapparatuur te interpreteren met behulp van zijn centrale processor. De tijdelijke informatie die de microcontroller ontvangt, wordt opgeslagen in zijn datageheugen, waar de processor toegang toe heeft en instructies gebruikt die in het programmageheugen zijn opgeslagen om de binnenkomende gegevens te ontcijferen en toe te passen. Vervolgens gebruikt hij de I/O-periferie om te communiceren en de juiste actie uit te voeren.

Microcontrollers worden in een breed scala van systemen en apparaten gebruikt. Apparaten maken vaak gebruik van meerdere microcontrollers die binnen het apparaat samenwerken om hun respectieve taken uit te voeren.

Bijv. een auto kan veel microcontrollers hebben die verschillende individuele systemen aansturen, zoals het antiblokkeer remsysteem, tractiecontrole, brandstofinjectie of ophangingscontrole. Alle microcontrollers communiceren met elkaar om de juiste acties door te geven. Sommige kunnen communiceren met een meer complexe centrale computer in de auto, en andere kunnen alleen communiceren met andere microcontrollers. Ze verzenden en ontvangen gegevens met behulp van hun I/O-randapparatuur en verwerken die gegevens om de hun toegewezen taken uit te voeren.

Wat zijn de elementen van een microcontroller?

De kernelementen van een microcontroller zijn:

  • De processor (CPU) — Een processor kan worden gezien als het brein van het apparaat. Hij verwerkt en reageert op verschillende instructies die de werking van de microcontroller sturen. Dit omvat het uitvoeren van elementaire rekenkundige, logische en I/O-bewerkingen. Het voert ook data-transfer operaties uit, die commando’s doorgeven aan andere componenten in het grotere embedded systeem.
  • Geheugen — Het geheugen van een microcontroller wordt gebruikt om de data op te slaan die de processor ontvangt en gebruikt om te reageren op de instructies die hij geprogrammeerd is uit te voeren. Een microcontroller heeft twee hoofdtypen geheugen:
    1. Programmageheugen, waarin langetermijninformatie wordt opgeslagen over de instructies die de CPU uitvoert. Programmageheugen is niet-vluchtig, wat betekent dat het informatie gedurende langere tijd vasthoudt zonder dat het een stroombron nodig heeft.
    2. Gegevensgeheugen, dat nodig is voor de tijdelijke opslag van gegevens terwijl de instructies worden uitgevoerd. Datageheugen is vluchtig, wat betekent dat de gegevens die het bevat tijdelijk zijn en alleen worden behouden als het apparaat op een voedingsbron is aangesloten.
  • I/O-randapparatuur — De in- en uitvoerapparaten vormen de interface van de processor met de buitenwereld. De ingangspoorten ontvangen informatie en sturen die in de vorm van binaire gegevens naar de processor. De processor ontvangt die gegevens en zendt de nodige instructies naar uitvoerapparaten die taken uitvoeren buiten de microcontroller.

Weliswaar zijn de processor, het geheugen en de I/O-randapparatuur de bepalende elementen van de microprocessor, maar er zijn nog andere elementen die vaak worden meegerekend. De term I/O-randapparatuur zelf verwijst eenvoudig naar ondersteunende componenten die een interface vormen met het geheugen en de processor. Er zijn vele ondersteunende componenten die als randapparatuur kunnen worden geclassificeerd. Het hebben van een of andere verschijningsvorm van een I/O-randapparaat is elementair voor een microprocessor, omdat zij het mechanisme vormen waardoor de processor wordt toegepast.

Andere ondersteunende elementen van een microcontroller zijn:

  • Analoog naar digitaal omzetter (ADC) — Een ADC is een schakeling die analoge signalen omzet in digitale signalen. Hiermee kan de processor in het centrum van de microcontroller communiceren met externe analoge apparaten, zoals sensoren.
  • Digitaal naar analoog omzetter (DAC) — Een DAC heeft de omgekeerde functie van een ADC en stelt de processor in het centrum van de microcontroller in staat zijn uitgaande signalen te communiceren met externe analoge componenten.
  • Systeembus — De systeembus is de verbindingsdraad die alle componenten van de microcontroller met elkaar verbindt.
  • Seriële poort — De seriële poort is een voorbeeld van een I/O poort waarmee de microcontroller verbinding kan maken met externe componenten. De functie is vergelijkbaar met die van een USB- of een parallelle poort, maar verschilt in de manier waarop bits worden uitgewisseld.

Microcontroller-functies

De processor van een microcontroller varieert per toepassing. De mogelijkheden lopen uiteen van eenvoudige 4-bit, 8-bit of 16-bit processoren tot complexere 32-bit of 64-bit processoren. Microcontrollers kunnen gebruik maken van vluchtige geheugentypes zoals random access memory (RAM) en niet-vluchtige geheugentypes – dit omvat flashgeheugen, uitwisbaar programmeerbaar read-only geheugen (EPROM) en elektrisch uitwisbaar programmeerbaar read-only geheugen (EEPROM).

In het algemeen zijn microcontrollers zo ontworpen dat ze zonder extra rekencomponenten kunnen worden gebruikt, omdat ze voldoende geheugen aan boord hebben en pinnen voor algemene I/O-operaties, zodat ze rechtstreeks kunnen communiceren met sensoren en andere componenten.

De architectuur van microcontrollers kan gebaseerd zijn op de Harvard-architectuur of de von Neumann-architectuur, die beide verschillende methoden bieden voor de uitwisseling van gegevens tussen de processor en het geheugen. Bij de Harvard-architectuur zijn de databus en de instructies gescheiden, waardoor gelijktijdige overdracht mogelijk is. Bij een Von Neumann-architectuur wordt één bus gebruikt voor zowel data als instructies.

Microcontroller-processoren kunnen gebaseerd zijn op complexe instructieset computing (CISC) of gereduceerde instructieset computing (RISC). CISC heeft in het algemeen ongeveer 80 instructies, terwijl RISC er ongeveer 30 heeft, alsmede meer adresseringsmodi, 12-24 in vergelijking met de 3-5 van RISC. Hoewel CISC gemakkelijker te implementeren is en efficiënter gebruik maakt van het geheugen, kan de prestatie achteruitgaan als gevolg van het hogere aantal klokcycli dat nodig is om instructies uit te voeren. RISC, dat meer nadruk legt op software, levert vaak betere prestaties dan CISC-processoren, die meer nadruk leggen op hardware, vanwege de vereenvoudigde instructieset en daardoor grotere eenvoud van het ontwerp, maar vanwege de nadruk die wordt gelegd op software, kan de software complexer zijn. Welke ISC wordt gebruikt, hangt af van de toepassing.

Toen ze voor het eerst beschikbaar kwamen, gebruikten microcontrollers uitsluitend assembleertaal. Tegenwoordig is de programmeertaal C een populaire optie. Andere gangbare microprocessortalen zijn Python en JavaScript.

MCU’s zijn voorzien van in- en uitvoerpinnen om perifere functies te implementeren. Dergelijke functies omvatten analoog-digitaal-omzetters, LCD-controllers (liquid crystal display), real-time klok (RTC), universele synchrone/asynchrone ontvangstzender (USART), timers, universele asynchrone ontvangstzender (UART) en universele seriële bus (USB) connectiviteit. Sensoren die gegevens verzamelen over onder meer vochtigheid en temperatuur worden ook vaak aan microcontrollers gekoppeld.

Soorten microcontrollers

Gemeenschappelijke MCU’s zijn onder meer de Intel MCS-51, vaak 8051 microcontroller genoemd, die voor het eerst werd ontwikkeld in 1985; de AVR microcontroller die in 1996 door Atmel werd ontwikkeld; de programmeerbare interface controller (PIC) van Microchip Technology; en diverse gelicentieerde Advanced RISC Machines (ARM) microcontrollers.

Een aantal bedrijven produceert en verkoopt microcontrollers, waaronder NXP Semiconductors, Renesas Electronics, Silicon Labs en Texas Instruments.

Microcontroller-toepassingen

Microcontrollers worden gebruikt in meerdere industrieën en toepassingen, waaronder in huis en bedrijf, gebouwautomatisering, fabricage, robotica, auto’s, verlichting, slimme energie, industriële automatisering, communicatie en internet of things (IoT)-implementaties.

Een zeer specifieke toepassing van een microcontroller is het gebruik ervan als digitale signaalprocessor. Vaak gaan inkomende analoge signalen gepaard met een zekere mate van ruis. Ruis betekent in deze context dubbelzinnige waarden die niet gemakkelijk kunnen worden vertaald in standaard digitale waarden. Een microcontroller kan zijn ADC en DAC gebruiken om het inkomende ruisende analoge signaal om te zetten in een gelijkmatig uitgaand digitaal signaal.

De eenvoudigste microcontrollers vergemakkelijken de werking van elektromechanische systemen die in alledaagse gebruiksvoorwerpen worden aangetroffen, zoals ovens, koelkasten, broodroosters, mobiele apparaten, sleutelhangers, videospelsystemen, televisies en gazonberegeningssystemen. Ze worden ook vaak gebruikt in kantoormachines zoals fotokopieerapparaten, scanners, faxapparaten en printers, maar ook in slimme meters, geldautomaten en beveiligingssystemen.

Meer geavanceerde microcontrollers voeren kritieke functies uit in vliegtuigen, ruimtevaartuigen, zeeschepen, voertuigen, medische en levensondersteunende systemen, alsmede in robots. In medische scenario’s kunnen microcontrollers de werking van een kunsthart, nier of andere organen regelen. Zij kunnen ook een rol spelen bij de werking van prothesen.

Microcontrollers vs. microprocessoren

Het onderscheid tussen microcontrollers en microprocessoren is minder duidelijk geworden naarmate de dichtheid en complexiteit van chips relatief goedkoop te fabriceren is en microcontrollers daardoor meer “algemene computer”-functionaliteit hebben geïntegreerd. Over het algemeen kan echter worden gesteld dat microcontrollers op zichzelf nuttig functioneren, met een directe verbinding naar sensoren en actuatoren, terwijl microprocessoren zijn ontworpen om de rekenkracht op de chip te maximaliseren, met interne busverbindingen (in plaats van directe I/O) naar ondersteunende hardware zoals RAM en seriële poorten. Simpel gezegd, koffiezetapparaten gebruiken microcontrollers; desktop computers gebruiken microprocessoren.

De Microchip Technology ATtiny817 microcontroller.

Microcontrollers zijn minder duur en gebruiken minder stroom dan microprocessoren. Microprocessoren hebben geen ingebouwd RAM, read-only memory (ROM) of andere randapparatuur op de chip, maar sluiten hierop aan met hun pinnen. Een microprocessor kan worden beschouwd als het hart van een computersysteem, terwijl een microcontroller kan worden beschouwd als het hart van een ingebed systeem.

Het kiezen van de juiste microcontroller

Er zijn een aantal technologische en zakelijke overwegingen die in gedachten moeten worden gehouden bij het kiezen van een microcontroller voor een project.

Naast de kosten is het belangrijk om rekening te houden met de maximale snelheid, de hoeveelheid RAM of ROM, het aantal of de soorten I/O-pinnen op een MCU, evenals het stroomverbruik en de beperkingen en ontwikkelingsondersteuning. Stel vragen als: