ID.nl logo
Welke microcontrollers bestaan er en waar zijn ze goed voor?
© https://ethereumcode.io/
Huis

Welke microcontrollers bestaan er en waar zijn ze goed voor?

Ze zitten in je auto, in je magnetron, in je wasmachine, maar ook in je pc, en ze vormen het hart van de Arduino- en ESP32-ontwikkelbordjes: microcontrollers. Onzichtbaar op de achtergrond wordt bijna ons hele leven erdoor draaiende gehouden. Welke microcontrollers bestaan er en hoe werken ze precies?

Als je een maaltijd in je magnetron zet, kies je de juiste tijd en instellingen en zet je hem aan. Aan het einde zegt je magnetron ‘ping!’ en is je maaltijd opgewarmd.

Heb je je al eens afgevraagd hoe dat werkt? Eigenlijk zit er in je magnetron een hele (kleine) computer die een programmaatje afwerkt dat enerzijds reageert op de knoppen en anderzijds, als je dat hebt, op het lcd-scherm. Ook stuurt de computer de elektronenbuis aan die de maaltijd met microgolven verwarmt. Die kleine computer is een microcontroller. Je hebt er waarschijnlijk tientallen in huis.

Een microcontroller is een chip die eigenlijk een hele computer in één pakket behuist. Daarin zitten een processor, geheugen (ram en rom) en allerlei poorten naar de buitenwereld. Terwijl je bij een gemiddelde processor voor je desktopcomputer dus nog een heel moederbord, ram-geheugen en storage nodig hebt om er iets nuttigs mee te doen, heb je bij een microcontroller slechts een beperkt aantal externe componenten nodig. Wat weerstanden en condensatoren zijn doorgaans voldoende voor een werkende microcontroller-opstelling.

Die verregaande integratie in een microcontroller is mogelijk omdat dit geen chip is voor flexibele apparaten, zoals pc’s. Microcontrollers zijn ontworpen om specifieke toepassingen uit te voeren, zoals in een magnetron, een pinautomaat, een wasmachine of een pacemaker. Een laag stroomverbruik en een lage kostprijs zijn voor die toepassingen belangrijk.

Lage prestaties met hoge impact

Low-end microcontrollers hebben dan ook een processorsnelheid van maar enkele MHz en slechts enkele kilobytes ram-geheugen. Kijk bijvoorbeeld naar de Arduino Uno, een populair ontwikkelbordje om mee te experimenteren. De microcontroller op dat bordje is de AVR ATmega328P. Die werkt op een kloksnelheid van 16 MHz, heeft 2 KB sram, 1 KB eeprom en 32 KB flashgeheugen.

Vergeleken met de gigahertzen, gigabytes en terabytes die we op onze pc’s gewend zijn, lijken die specificaties ondermaats. Maar toch kun je hiermee ongelooflijk veel projecten aansturen: muziekinstrumenten, robotautootjes, weerstations, je planten automatisch water geven... Je kunt het zo gek niet bedenken of iemand heeft het al weleens met die kleine ATmega328P gedaan.

Microcontroller of SoC? Waarschijnlijk heb je ook al gehoord van een system-on-a-chip (SoC), wat op het eerste gezicht hetzelfde lijkt: een processor geïntegreerd met andere componenten. De grens tussen wat we als een microcontroller beschouwen en wat als een SoC is nogal vaag. Maar doorgaans is een SoC met een snellere processor uitgerust, heeft die meer ram en bevat hij mogelijk radiochips (wifi en/of mobiel netwerk) of een ingebouwde gpu.  Alle smartphones en tablets zijn dan ook gebouwd rond een SoC, maar ook de Raspberry Pi, apparaten zoals een nas en slimme luidsprekers. Ook de Apple M1 is een SoC: deze integreert een arm-processor, ram, gpu, image-signal-processor, Secure Enclave (een coprocessor voor veilige opslag van sleutels) en controllers voor NVMe en thunderbolt 4.

Pinnetjes

Als je een low-end microcontroller zoals een ATmega328P van een Arduino Uno ziet, is het eerste wat opvalt de pinnetjes die eruit steken. Elk van die pinnetjes heeft een functie. Sommige sluit je aan op een voeding, zodat de chip stroom krijgt, maar de meeste dienen om met de omgeving te communiceren.

Komt de chip in een dip-behuizing, dan kun je die pinnetjes eenvoudigweg in een breadboard prikken. Door dan jumperwires in een gaatje in dezelfde rij als een pin te steken, verbind je het draadje met die pin. Op die manier bouw je eenvoudig elektronische schakelingen op met componenten die met de microcontroller kunnen communiceren.

Een Arduino Uno-bordje is dan eigenlijk gewoon een printplaatje waarop de ATmega328P is geplaatst en alle pinnetjes verbonden zijn met ofwel de headers op het bordje, ofwel met andere componenten van het printplaatje, zoals de spanningsregelaar, statusleds en de resetknop. Je kunt het eigenlijk vergelijken met een moederbord voor een processor: een Arduino Uno maakt een ATmega328P-microcontroller alleen wat handiger om te gebruiken en om andere componenten op aan te sluiten.

©PXimport

De eenvoudigste manier om met een microcontroller te communiceren is wat we GPIO noemen (general-purpose input/output). Elke GPIO-pin kunnen we aansturen door een bit op een specifiek adres in het geheugen van de microcontroller op 1 of 0 te zetten. Schrijven we er 1 naar, dan wordt een spanning van bijvoorbeeld 5 V over de pin gelegd; schrijven we er 0 naar, dan wordt de spanning 0 V.

Als je dan bijvoorbeeld tussen die pin en 0 V een led en een weerstand plaatst, gaat de led aan wanneer je 1 naar de pin schrijft en uit wanneer je er 0 naar schrijft. Bij een 1 vloeit er immers een stroom van 5 V naar 0 V. De weerstand dient om de stroom te beperken tot wat de led aankan.

Ook in de andere richting werkt dat. Als je de GPIO-pin als invoer configureert, zal de microcontroller de spanning die je aan de pin aanlegt (5 V of 0 V) interpreteren als een 1 of 0. Op die manier sluit je een knop aan op de pin. Druk je de knop in, dan maakt die intern een verbinding tussen 5 V en de pin van de microcontroller, waardoor die een 1 registreert. 

Laat je de knop los, dan wordt er doorgaans via een pull-downweerstand voor gezorgd dat de pin verbonden is met 0 V en dus een 0 registreert. Op dezelfde manier sluit je een PIR-sensor voor aanwezigheidsdetectie aan: de pin registreert dan 1 als de sensor iemand waarneemt en anders 0.

Protocols en bussen

Telkens 1 bit in of uit de microcontroller sturen, is voldoende voor eenvoudige toepassingen, maar vaak heb je complexere vormen van communicatie nodig. Daarvoor zijn er allerlei protocollen ontwikkeld. Bijvoorbeeld UART (universal asynchronous receiver-transmitter), een protocol voor seriële communicatie waarbij je bytes in twee richtingen kunt sturen. 

Het protocol beschrijft hoe je de opeenvolgende bits moet sturen. Zo bestaan er UART-modules die je in een usb-poort van je pc kunt steken. Communiceren met de microcontroller doe je dan door de RX-pin van de microcontroller met de TX-pin van de UART-module te verbinden en andersom: RX staat voor receive en TX voor transmit.

Voor communicatie met meerdere componenten, zoals sensoren, externe geheugens en schermen, maak je meestal gebruik van een bus zoals I²C (Inter-Integrated Circuit, uitgevonden door Philips) en SPI (Serial Peripheral Interface). I²C wordt ook wel Two-Wire genoemd, omdat er twee pinnen worden gebruikt: SDA om de seriële data door te sturen en SCL om een kloksignaal te sturen. 

SPI (ook weleens Four-Wire genoemd) heeft vier pinnen: SCLK voor de klok, MOSI voor communicatie van de master (meestal de microcontroller) naar de slave en MISO voor de andere richting, en SS om te selecteren met welke slave de master spreekt. Voor elke slave heb je een extra pin SS nodig. Bij de meeste microcontrollers zijn er specifieke pinnen aanwezig voor UART, I²C en SPI.

©PXimport

Digitaal of analoog

Tot nu toe hebben we het alleen maar over 0 en 1 gehad, digitale gegevens dus. Maar heel wat sensoren geven analoge gegevens door, bijvoorbeeld een temperatuursensor of druksensor waarvan de weerstand varieert met de gemeten waarde. Met een spanningsdeler haal je uit die variabele weerstand een variabele spanning, die dus een analoge voorstelling van de meetwaarde is. 

Gelukkig bestaat er een component die een analoge waarde (bijvoorbeeld een spanning) kan omzetten naar een digitale waarde (bijvoorbeeld een 10bit-getal): de ADC (analoog-digitaalomzetter).

ADC’s bestaan als losse componenten (bijvoorbeeld via I²C of SPI aan te sluiten), maar veel microcontrollers hebben ook zelf een of meer ADC’S ingebouwd. Ook in de andere richting bestaat er een component: de DAC (digitaal-analoogomzetter) zet een digitale waarde (bijvoorbeeld een 10bit-getal) om in een analoge waarde (bijvoorbeeld een spanning van 0 tot de voedingsspanning).

Sommige microcontrollers hebben ook een DAC ingebouwd. Al met al zijn microcontrollers dus de perfecte componenten om de digitale en analoge wereld te verenigen. Een Raspberry Pi bijvoorbeeld heeft geen ADC ingebouwd, terwijl een Arduino-bordje er meerdere heeft.

Microcontroller-behuizingen Dezelfde microcontroller kun je vaak in meerdere types behuizingen kopen. Op breadboards zul je vaak DIP-behuizingen tegenkomen: dual in-line package. De chip zit dan in een rechthoekig blokje met aan twee tegenovergelegen zijden pinnetjes die naar onderen uitsteken. Standaard liggen de pinnetjes 2,54 mm (een tiende inch) van elkaar, waardoor ze op een breadboard passen.  In massaproductie vind je eerder varianten van QFP (quad flat package), waarbij een vierkante behuizing aan elke zijde een rij pinnetjes heeft, met een afstand van 0,4 tot 1 mm, die op de printplaat worden gesoldeerd. Een soortgelijke behuizing is QFN (quad-flat no-leads), waarbij er geen pinnetjes uitsteken maar er onderaan de chip aan de vier zijden rijen kopersporen zijn die rechtstreeks op de banen van de printplaat aansluiten. Deze zijn moeilijk met de hand te solderen.

Microcontrollerfamilies

Net zoals er voor pc’s allerlei processorfamilies bestaan, heb je ook diverse families van microcontrollers. De belangrijkste onderverdeling is op basis van de processorarchitectuur. Populair bij hobbyisten zijn de 8bit-AVR-microcontrollers van Atmel (in 2016 overgenomen door Microchip). Ze zijn onderverdeeld in twee subfamilies: de ATtiny-serie met minder pinnen, geheugen en functies (de basismodellen hebben zelfs geen ram-geheugen, UART, I²C en SPI) en de krachtigere ATmega-serie die in de meeste Arduino-bordjes zit.

Een familie die zowel bij hobbyisten als industriële ontwikkelaars populair is, zijn de PIC-microcontrollers, die al sinds 1976 meegaan. Hun populariteit is te danken aan hun lage kostprijs, brede beschikbaarheid en heel wat bestaande code.

Een andere populaire low-end microcontroller in de industrie is de 8051. Oorspronkelijk werd deze in 1980 door Intel ontwikkeld onder de naam MCS-51. In 2007 is Intel met de productie gestopt, maar tientallen andere chipfabrikanten produceren nog altijd hun eigen klonen van de 8051, vaak met een snellere klok en extra functies. Ze worden gebruikt in auto’s, meetsystemen, transceivers voor bluetooth, Zigbee en andere draadloze protocollen, in usb-sticks enzovoort.

©PXimport

Als je naar de krachtigere microcontrollers gaat, kom je bij 32- en 64bit-families uit. De laatste jaren hebben vooral de Xtensa-processors van Tensilica (in 2013 overgekocht door Cadence) een flinke opmars gemaakt. Het zijn immers de processors in de ESP8266- en ESP32-microcontrollers van het Chinese Espressif. Deze zijn populair bij hobbyisten door hun geïntegreerde wifi en (voor de ESP32) bluetooth, en omdat ze eenvoudig te programmeren zijn in de Arduino IDE of via frameworks als ESPHome. De bordjes gebouwd rond de microcontrollers van Espressif zijn dan ook populair voor doe-het-zelf-domotica.

Tot de krachtigste en flexibelste microcontrollers behoren die gebouwd rond de ARM-architectuur. De high-end versies daarvan vind je in je smartphone en ook in computerbordjes zoals een Raspberry Pi, al spreken we dan meer van een SoC. 

ARM kent veel subfamilies, maar voor de klassieke microcontrollertoepassingen zijn vooral de ARM Cortex-M-processors (32 bit) gebruikt. Die vind je bijvoorbeeld in de AT SAM-serie van Atmel die in de krachtigere Arduino-bordjes zitten, in de populaire STM32-familie van STMicroelectronics, en in de nRF-serie van Nordic Semiconductor voor draadloze toepassingen, zoals bluetooth en thread.

Ontwikkelbordjes

Voor industriële toepassingen wordt een printplaat op maat ontworpen, waarop een microcontroller staat. Maar wie zelf aan de slag wil met een microcontroller, heeft een ontwikkelbordje nodig. Dat geeft eenvoudig toegang tot de pinnen van de microcontroller via standaard pinheaders en voegt zaken zoals een spanningsregelaar en usb-naar-UART-omzetter toe, zodat je het bordje eenvoudig op je pc kunt aansluiten.

Voor elke microcontrollerfamilie bestaan er wel ontwikkelbordjes in allerlei vormen en groottes. Voor de AVR-familie zijn de Arduino-bordjes populair. Sommige daarvan, zoals de Arduino Nano, prik je op een breadboard, maar de meeste komen in een groter formaat met vrouwelijke pinheaders waarin je jumperwires steekt. 

Voor de Espressif-microcontrollers is het kleinere formaat dat je op een breadboard prikt alomtegenwoordig. Voor de nRF-serie heeft Nordic Semicondictor grote ontwikkelborden, maar ook versies in de vorm van een stick die je in de usb-poort van je pc schuift. Ook de BBC micro:bit en micro:bit v2 zijn leuke ontwikkelbordjes voor de nRF-microcontrollers.

©PXimport

Microcontroller programmeren

Kijken we tot slot nog even naar hoe het programmeren van een microcontroller werkt. Als je gewend bent om voor een pc of een computerbordje zoals een Raspberry Pi te programmeren, krijg je zeker een cultuurschok wanneer je voor het eerst een microcontroller programmeert. Doorgaans draait er immers geen besturingssysteem op een microcontroller. Er draait slechts één programma op: wat jij schrijft. 

Dat programma schrijf je in het ingebouwde flash-geheugen. Als je de stroom uitschakelt en weer inschakelt, begint de microcontroller het programma onmiddellijk uit te voeren. Dat maakt een microcontroller betrouwbaarder in werking dan een processorbordje zoals een Raspberry Pi.

De best ondersteunde programmeertalen op microcontrollers zijn C of C++, maar die zijn niet het toegankelijkst. Het Arduino-ecosysteem lost dat op door een standaardbibliotheek en allerlei uitbreidingen aan te bieden. Die vormen een laag bovenop het onderliggende C++. 

Andere oplossingen zijn MicroPython en CircuitPython die een afgeslankte versie van Python op microcontrollers aanbieden, en Espruino dat het mogelijk maakt om JavaScript op een microcontroller te gebruiken. Voor industriële toepassingen gebruik je eerder een realtime besturingssysteem zoals Zephyr, dat je in C programmeert.

Ontwikkelomgevingen

Om het proces van code programmeren en de firmware naar je microcontroller flashen te vereenvoudigen, bestaan er allerlei ontwikkelomgevingen. Die tonen bijvoorbeeld fouten in je code, compileren met één druk op een knop je code tot machinecode in de instructieset van de processor, en flashen de firmware naar je ontwikkelbordje. 

Programmeer je een Arduino-bordje, dan doe je dat doorgaans in de Arduino IDE (wat staat voor integrated development environment). Maar dankzij de ondersteuning van andere bordjes kun je met de Arduino IDE ook ESP8266- of ESP32-bordjes programmeren.

Ook populair is PlatformIO, een opensource-plug-in die van Microsofts ontwikkelomgeving Visual Studio Code een ontwikkelomgeving voor microcontrollers maakt. Het voordeel van PlatformIO is dat je met één ontwikkelomgeving voor diverse platforms en frameworks voor microcontrollers kunt ontwikkelen, inclusief Arduino, Espressifs framework en Zephyr. 

Visual Studio Code is bovendien ook bruikbaar om voor een Raspberry Pi of je pc te programmeren. Op deze manier verenig je dus al je programmeerprojecten in één omgeving.

▼ Volgende artikel
Wat is Liquid Glass? Alles over instellen en aanpassen op je iPhone
© Apple
Huis

Wat is Liquid Glass? Alles over instellen en aanpassen op je iPhone

Liquid Glass is een nieuwe manier waarop Apple de vormgeving van knoppen, tabbladen, iconen en widgets neerzet. Alles krijgt een glasachtige uitstraling: halfdoorzichtig en met kleuren die meekomen uit je wallpaper of de inhoud van een app. Het reageert bovendien vloeiend op beweging, omdat het beeld steeds in realtime wordt opgebouwd. Zo ontstaat een herkenbare stijl die op al je Apple-apparaten hetzelfde aanvoelt.

In dit artikel lees je wat Apple's nieuwe Liquid Glass precies is en wat het doet. We laten zien hoe je de instellingen aanpast, het effect naar smaak bijstelt en wat je kunt doen als je het rustiger wilt houden.

Lees meer over iOS 26

Op je iPhone zie je Liquid Glass meteen terug in het toegangsscherm, het Dock, de zoekbalk en appmappen. Iconen ogen daarbij gelaagd en glanzend of zelfs helemaal doorzichtig. Wil je dat proberen, houd dan je beginscherm ingedrukt tot de iconen bewegen, tik op Wijzig, kies Pas aan en zet Helder aan. Tik daarna ergens op het scherm om te bevestigen. Je ziet direct hoe de achtergrond subtiel door de iconen heen komt. Vind je het toch minder prettig, dan kun je op dezelfde plek altijd terug naar Automatisch of Donker.

Op welke toestellen en vanaf welke versie?

Liquid Glass is onderdeel van iOS 26, dat vanaf 15 september beschikbaar is voor alle ondersteunde iPhones. Extra downloads zijn niet nodig. Apple geeft aan dat iPhone 11 en iPhone SE (2e generatie) en nieuwer worden ondersteund.

Wil je nagaan of jouw toestel in aanmerking komt, open Instellingen, kies Algemeen en tik op Software-update. Zie je iOS 26 staan, dan kun je meteen bijwerken. Maak vooraf een back-up en update je apps. Voer de update bij voorkeur uit via wifi en zorg dat de batterij minstens halfvol is, of sluit je iPhone aan op de oplader. Wil je controleren of de installatie geslaagd is, ga dan in Instellingen naar Algemeen, open Info en bekijk het versienummer.

Ook iPadOS 26 en macOS Tahoe 26 ondersteunen Liquid Glass, zodat de uitstraling op je iPad en Mac aansluit bij die van je iPhone. Apple heeft dezelfde stijl bovendien doorgetrokken naar watchOS en tvOS, waardoor al je apparaten er herkenbaar en consistent uitzien.

©Apple

Zo maak je Liquid Glass rustiger

Liquid Glass helemaal uitschakelen kan niet, maar je kunt het effect wel verzachten. Open Instellingen, tik op Toegankelijkheid, kies Weergave en tekstgrootte en zet Maak minder doorzichtig aan. Achtergronden worden dan donkerder, waardoor contrast en leesbaarheid verbeteren zonder dat de glaslook verdwijnt.

Wil je nog meer verschil zien, zet op dezelfde pagina ook Verhoog contrast aan. Voor een snelle manier ga je in Instellingen naar Toegankelijkheid, open je Activeringsknop en vink je Maak minder doorzichtig aan. Je kunt de functie dan via het bedieningspaneel eenvoudig aanpassen.

Vind je vooral de transparante iconen te overheersend, houd dan opnieuw je beginscherm ingedrukt, tik op Wijzig, kies Pas aan en ga terug naar Automatisch of Donker. Donkere achtergronden en de Donkere modus (te vinden bij Beeldscherm en helderheid) dempen het glaseffect eveneens, bijvoorbeeld buiten in fel zonlicht. Zo houd je in elke situatie zelf de regie over hoe nadrukkelijk Liquid Glass aanwezig is.

Hoesje nodig

Voor je iPhone 17?
▼ Volgende artikel
Datumnotatie aanpassen in verzendlijsten in Word
© gamjai - stock.adobe.com
Huis

Datumnotatie aanpassen in verzendlijsten in Word

Verzendlijsten in Microsoft Word zijn handig om brieven, documenten en zelfs etiketten te personaliseren. Er is wel een probleem wanneer het gaat om datums, daar zal Word automatisch de Amerikaanse datumnotatie gebruiken en niet de Nederlandse. Op deze manier los je dat op.

Wat gaan we doen?

In dit artikel gaan we laten zien hoe je in Microsoft Word de Amerikaanse datumnotatie omzet naar de Nederlandse. Stap voor stap pas je een schakeloptie toe, kies je het juiste formaat en bekijk je direct het resultaat in je verzendlijsten.

Schakelopties

Wanneer je in Word een gegevenslijst uit Excel gebruikt om brieven samen te voegen via Afdruk samenvoegen, dan gebeurt er iets vreemds. Alle datums die in Excel correct staan genoteerd (bijvoorbeeld 7 september 2025) worden dan omgedraaid met een slash (bijvoorbeeld 9/7/2025). In de Amerikaanse datumnotatie staat de maand namelijk altijd vooraan. Het gaat om een bug in Word, maar gelukkig kun je dit oplossen met zogenaamde schakelopties. Schakelopties zijn codes die je aan een samenvoegveld toevoegt om de weergave van de gegevens aan te passen. Voor datumnotaties gebruik je de schakeloptie: \@ (de datum/tijd-weergave).

Microsoft Word gebruikt bij Afdruk samenvoegen automatisch de Amerikaanse datumnotatie, waarbij de maand het eerst komt.

Veldweergave aanpassen

Nadat je de samenvoegvelden in het Word-document hebt geplaatst, klik je met de rechtermuisknop op het samenvoegveld van de datum. In het contextueel menu kies je de opdracht Andere veldweergave. Je kunt ook dit veld ook selecteren met de sneltoets Alt+F9. Hierdoor wordt het datumveld op een andere manier weergegeven. Veronderstel dat het veld de naam «datum» heeft, dan zal het nu verschijnen als {MERGEFIELD “Datum”}. Plaats de cursor achter de naam van het samenvoegveld, maar vóór de accolade } en plak of typ dan de onderstaande code afhankelijk van hoe je de datum wilt zien.

SchakeloptieDatumweergave 7 septemberDatumweergave 25 december
\@ “dd-MM-yyyy”07-09-202525-12-2025
\@ “d-M-yyyy”7-9-202525-12-2025
\@ “ddd d MMM yyyy”Zo 7 sep 2025Do 25 december 2025
\@ “dddd d MMMM yyyy”Zondag 7 september 2025Donderdag 25 december 2025

Het eindresultaat ziet er dan bijvoorbeeld als volgt uit: {MERGEFIELD datum \@ “dd-MM-yyyy”}. Voor maanden gebruik je de hoofdletter M, de kleine letter m staat voor minuten.

Voeg de schakeloptie toe.

Voorbeeld bekijken

Daarna klik je opnieuw met de rechtermuisknop op het samenvoegveld en weer selecteer je de opdracht Andere veldweergave. Klik dan nogmaals met de rechtermuisknop op het samenvoegveld en kies de optie Veld bijwerken. In het Lint bij het tabblad Verzendlijsten klik je op de knop Voorbeeld van het resultaat, en nu zul je zien dat de datum correct wordt weergegeven.

De datumnotatie staat nu in het Nederlands.

Papieren agenda nodig?

Kies uit duizenden modellen