Hvilken mikrocontroller er den bedste?

En af de spørgsmål vi bliver stillet oftest er, hvilken mikrocontroller der er den bedste. Specielt for nybegyndere i digitalelektronikkens verden, kan det være svært at vælge hvilken mikrocontroller eller udviklingskort man skal købe. I denne guide prøver vi at gøre dig klogere på det spørgsmål.

Hvad er et godt / dårligt valg?

Når du kigger rundt på siden og ser på de enkelte produkter, kan du sikkert blive fristet til at vælge det udviklingskort med de vildeste specifikationer, eller det der er billigst. Men at vælge en mikrocontroller med den hurtigste processor og mest flash hukommelse, er ikke nødvendigvis et smart valg.

Når du skal vælge hvilken mikrocontroller dit projekt skal baseres på, spiller følgende ind:

  • Strømforbrug – Hvis dit projekt skal drives af batterier eller en solcelle, bør du kigge på mikrocontrollerens strømforbrug og standbyforbrug.
  • Hastighed – hvis dit projekt skal beregne en masse tal, eller arbejde med store mængder data, er hastighed godt. Hvis dit projekt derimod er relativt simpelt, kan du vælge en langsommere mikrocontroller, og sandsynligvis spare penge.
  • Pris – find ud af hvad dit budget er, men vær også opmærksom på, at en lavere pris er lig med færre funktioner og mindre hastighed/hukommelse.
  • Kommunikationsmuligheder – hvis dit projekt skal kommunikere med dig eller andre projekter, så overvej hvordan. Radio-kommunikation er fantastisk, men kræver en del flere komponenter. Hvis dit projekt skal gøres mere permanent på en hjemmelavet printplade, giver det også en del flere udgifter til certificeringer. En nemmere løsning er kommunikation via USB – eller måske infrarøde signaler.
  • Programmering – de sidste år er det blevet meget nemmere at komme i gang med programmering af mikrocontrollere, og selvom understøtningen af programmeringssprog er mindre vigtigt når du vælger mikrocontroller, er det stadig vigtigt. Med Microsoft MakeCode programmerer du ved hjælp af grafiske blokke der kobles sammen. MakeCode understøtter kun få udviklingskort, men Adafruit’s Circuit Playground Express er en af dem. MicroPython og CircuitPython er noget mere understøttet af forskellige mikrocontrollere, og er nemt at komme i gang med hvis du allerede kender til Python. Endelig kan langt de fleste kort programmeres via Arduino udviklingsmiljøet, men her skal du forvente at bruge mere tid på at sætte dig ind i sproget. Heldigvis er Arduino meget brugt, og du kan finde masser af guides på nettet.

Typer af mikrocontrollere

En mikrocontroller består af en mikroprocessor og et antal ekstra kredsløb der føjer ekstra funktioner til kredsen (på engelsk: ”peripherals”). De ekstra funktioner kan eksempelvis være USB, tællere, serielle porte og analog-til-digital konvertere.

Mikrocontrollere er opdelt efter hvor mange bits de processere og læse/skrive til hukommelsen på en gang. I dag er de mest brugte mikrocontrollere 8-bit eller 32-bit.

8-bit mikrocontrollere

8-bit mikrocontrollere er de simpleste, og har været på markedet i mange år. Det betyder der er et stort udvalg at vælge imellem, de er forholdsvist enkle at lære, og der findes mange eksempelkoder på nettet.

Det mest populære 8-bit udviklingskort er Arduino UNO, som er baseret på ATmega328 mikrocontrolleren.

8-bit mikrocontrollere kan komme med mange ekstra funktioner, eller få, men generelt er de kendetegnet ved at være forbundet direkte til mikroprocessoren og de fysiske ben på chippen.

Hvis du ændrer spændingen på et ben, konverterer støtte-kredsløbet det til en værdi i processoren, som din kode kan bruge. Skal du sende en værdi til et ben via din kode, fungerer det på samme måde.

32-bit mikrocontrollere

32-bit mikrocontrollere skal mere ses som en enhed hvori masser af komponenter er samlet i en lille boks. Selve mikrocontrolleren er kun en lille del af enheden, og er typisk licenseret fra andre, eksempelvis bliver firmaet ARM’s Cortex serie ofte brugt.

Støttekredsløbene (peripherals) i en 32-bit mikrocontroller er typisk separate enheder der kommunikerer via en intern kommunikationsbus, og næsten alle funktioner er splittet op i separate enheder. I Microchip’s SAMD21 og SAMD51 som findes i flere af de udviklingskort vi fører, er CPU’en, RAM og FLASH hukommelsen alle separate enheder.

Mere omkring støttekredsløb i 32-bit mikrocontrollere

Støttekredsløbene (engelsk: peripherals) er alt det ekstra udenom kernefunktionen at processere tal/regnestykker. Eksempelvis: fysiske ind/udgange, SPI, ADCUART I2S, kapacitiv touch mm.

Støttekredsløbene har ikke en direkte forbindelse til processoren, men er linket sammen via forskellige busforbindelser. Det gør at de kan operere mere selvstændigt og eksempelvis ved en anden clock-frekvens end selve processoren. Adskillelsen gør også at de kan kommunikere direkte med andre støttekredsløb udenom processoren, og chips med DMA (Direct Memory Access) kan flytte hele datablokke udenom processoren. På den måde kan du konfigurere mikrocontrolleren til at gøre mange ting med selve processoren slukket.

Alle de ekstra funktioner har dog også en bagside. Softwaren der er skrevet til enkelte produkter for at få understøttelse i eksempelvis Arduino softwaren kan være forskellig fra producent til producent, og alle mikrocontrollerens funktioner er ikke nødvendigvis understøttet.

System On Chip enheder (SOC)

En SOC er typisk en 32-bit mikrocontroller lavet til at klare meget specifikke opgaver. Det betyder at unødvendige funktioner er skåret væk, til fordel for den enkelte opgave.

Den populære chip ESP8266 er et godt eksempel. Den er designet til at give WiFi funktionalitet for en meget lav pris. Chippen har meget få ind/udgange og støttekredsløb, men en af støttekredsløbene er en WiFi radio.

Nogle projekter bruger denne chip uden WiFi radioen tændt på grund af prisen, men prisen er at det kan være svært at skifte til en anden mikrocontroller hvis behovet for flere ind/udgange skulle opstå.

Mikrocontrollere i vores produkter

Nu har du lidt basisviden om de forskellige typer af mikrocontrollere, så lad os kigge på hvilke produkter vi har i sortimentet med forskellige typer af mikrocontrollere.

8-bit udviklingskort

8-bit mikrocontrollere er ikke kraftige nok til Microsoft MakeCode, MicroPython og CircuitPython, så her har du kun mulighed for at bruge Arduino.

De sidste par år er 32-bit mikrocontrollerne faldet meget i pris, så overvej eventuelt om du skal gå op i et kraftigere 32-bit udviklingskort.

ATtiny85 mikrocontrolleren

En simpel og lille mikrocontroller i 8-bens DIP hus, der er god til meget simple opgaver.

ATtiny85 har 8-bit timere der kan generere  PWM signaler, et seriel interface der kan programmeres til at snakke I2C eller SPI, og en 10-bit analog-til-digital konverter.

Eksempler på funktioner ATtiny85 vil være god til: Forsinket tænd/sluk af et signal baseret på timer-funktionen. Læse værdien fra 2-3 indgange, og derudfra beslutte hvad der skal sendes ud på en udgang.

Vi har følgende ATtiny85 udviklingskort:

ATmega328P mikrocontrolleren

Hvis du begynder at læse om Arduino, vil du helt sikkert støde på ATmega328P kredsen. Det mest populære Arduino kort gennem tiden er Arduino UNO, som gjorde ATmega328P kredsen kendt.

Mikrocontrolleren opererer typisk ved 16MHz, og har 32K FLASH hukommelse, 2K RAM og 1K EEPROM. Af indbygget tilbehør har den to 8-bit timere, én 16-bit timer, seks PWM kanaler, 10-bit ADC, separate hardware seriel, SPI og I2C interfaces.

Mikrocontrolleren er en god all-round chip der kan bruges til mange projekter. Hvis du søger lidt rundt på google efter "Arduino UNO projects", kan du finde tusindvis af forskellige projekter hvor denne kreds viser hvad den kan.

Vi har blandt andet følgende produkter i sortimentet hvor ATmega328P kredsen er "hjernen" bag:

ATmega32U4 mikrocontrolleren

Denne mikrocontroller kan sammenlignes med ATmega328P kredsen, men har også indbygget full-speed (12Mbps) USB. Mikroprocessoren opererer normalt ved 16MHz, og har 16 GPIO ben. Den store fordel ved ATmega32U4 kredsen er den indbyggede USB funktionalitet, som kan få enheden til at agere som USB input enhed (en computer vil kunne se enheden som et tastatur eller en mus).

Mikroprocessoren har 32K FLASH hukommelse, 1K EEPROM og 2,5K RAM. Af tilbehør har den én 8-bit timer, én 10-bit timer, to 16-bit timere, 14 PWM kanaler, hardware serielt interface der kan konfigureres som SPI interface, og separate I2C og SPI interfaces, én 10-bit ADC, og selvfølgelig 12Mbps USB interface.

Et udpluk af ATmega32U4 baserede udviklingskort:

32-bit udviklingskort

Med et 32-bit udviklingskort får du meget mere processorkraft, FLASH hukommelse og RAM. For få år siden var prisforskellen mellem 8-bit mikrokontrollere og 16-bit mikrocontrollere stor, men i dag er prisen næsten den samme. Det betyder at flere og flere flytter deres projekter over på de mere kraftfulde 32-bit enheder.

Hvis du vil eksperimentere med MicroPython og CircuitPython, skal du have fingrene i en af disse kort.

SAMD21E mikrocontrolleren

Denne chip fra Microchip (tidligere Atmel) bruger en ARM Cortex M0+ mikrocontroller, som er omtrent så lille og simpel som en 32-bit mikrocontroller kan blive.

Mikrokontrolleren opererer ved 48MHz (stabiliseret med en 32,768MHz krystal), og har 38 GPIO ben. Chippen har 256K Flash og 32K RAM. Den har ingen EEPROM, men du kan læse og skrive til Flash hukommelsen.

Produkter med SAMD21E:

SAMD21G mikrokontrolleren

Denne chip fra Microchip (tidligere Atmel) bruger en ARM Cortex M0+ mikrocontroller, som er omtrent så lille og simpel som en 32-bit mikrocontroller kan blive.

Mikrokontrolleren opererer ved 48MHz (stabiliseret med en 32,768MHz krystal), og har 38 GPIO ben. Chippen har 256K Flash og 32K RAM. Den har ingen EEPROM, men du kan læse og skrive til Flash hukommelsen.

Produkter med SAMD21G:

SAMD51 mikrocontrolleren

Produkter med SAMD51: