I microcontrollori sono "nascosti" all'interno di un numero sorprendente di dispositivi elettronici, dal forno a microonde passando per TV e smartphone. In questa nuova epoca di Industry 4.0 (IIoT) e Internet delle cose (IoT),i microcontrollori rappresentano una soluzione ben collaudata nel campo dell'elettronica con un'architettura efficiente per il supporto di una vasta gamma di opzioni di connettività.
Un microcontrollore (MCU) utilizza tecniche di microelettronica per ridurre in un piccolo pacchetto (o package) vari componenti quali CPU (Central Processing Unit) e memoria. Presenta diversi pin di ingresso e uscita, attraverso i quali è possibile interagire con il mondo esterno. Ovviamente, il microcontrollore così com'è stato realizzato non fa nulla, è necessario programmarlo attraverso un insieme di istruzioni che rappresenta il firmware del sistema installato sulla memoria del dispositivo.
Il principale impiego è rivolto ai sistemi embedded, ovvero per tutte quelle applicazioni specifiche (special purpose) relativamente al controllo digitale. A differenza dei microprocessori che rappresentano il cuore puro di un computer progettati per applicazioni generali, il microcontrollore vuole rivolgere la massima efficienza verso una particolare applicazione ottimizzando il rapporto costo-prestazione.
Si può pensare a un microcontrollore come un piccolo computer; è possibile collegare un display, alcuni pulsanti, un motore e alcuni sensori come accelerometri e giroscopi, il tutto programmato affinché eseguano determinate funzioni.
La selezione di un microcontrollore per un progetto è un compito arduo; devono essere non solo considerati i relativi fattori tecnici hardware e software, ma anche i tempi e costi che possono paralizzare un progetto.
La scelta delle interfacce di comunicazione è una delle prime fasi che un progettista dovrebbe tener conto nella valutazione di un microcontrollore. Le periferiche come USB ed Ethernet rappresentano le classiche interfacce di utilizzo, così come I2C, SPI e UART. L'opportuna valutazione di queste periferiche insieme alle porte I/O per la gestione dei segnali di sensori esterni impiegati nel progetto (p.e. sensore di temperatura), influenzano notevolmente non solo gli aspetti di programmazione, ma anche quelli hardware legati al numero di pin richiesti dal microcontrollore. La figura sottostante mostra un esempio generico di uno schema a blocchi di un microcontrollore.
I componenti di un microcontrollore
La CPU è il cervello di qualsiasi dispositivo di elaborazione. Il blocco Interrupt è una subroutine che interrompe il funzionamento principale del microcontrollore per eseguire qualche altro programma. Il Bus è un insieme di fili che funzionano come un canale di comunicazione o mezzo per il trasferimento di dati e segnali di controllo. I timer, invece, sono utilizzati per la misura di intervalli di tempo impiegati nella sincronizzazione di dispositivi. Come per tutti i circuiti digitali, il microcontrollore è un dispositivo che richiede il clock (OSC) per il suo funzionamento.
Il clock è un segnale digitale che commuta continuamente da un livello basso (0 logico) ad uno alto (1 logico), questo viene eseguito molte volte al secondo e per ogni impulso la circuiteria interna esegue un'operazione o istruzione come parte del codice compilato. Il clock è il riferimento che sincronizza tutte le operazioni e il trasferimento dati.
Un solo package non è in grado di dissipare l'elevata energia richiesta con frequenze di clock elevate come nei microprocessori, per contro, il clock dei microcontrollori è al di sotto dei valori che troviamo nei classici sistemi a microprocessore (GHz).
La programmazione
La programmazione di un microcontrollore può sembrare un po' complicata, in realtà i passi necessari possono essere riassunti in 3 punti essenziali: scrivere il codice, compilare il codice in linguaggio macchina o linguaggio binario, caricare il codice macchina sul microcontrollore.
Il programma di gestione risiede all'interno del microcontrollore in un'apposita area non volatile.
Strumenti e kit di sviluppo permettono di gestire molto facilmente la programmazione attraverso interfacce utente grafiche ad alto livello che seguono passo-passo il progettista nell'implementazione del codice macchina sul microcontrollore, disponendo, inoltre, di librerie e funzioni per rendere molto semplice la scrittura del codice.
Si possono trovare microcontrollori a 8-bit, 16-bit e 32-bit. Questi numeri si riferiscono alle dimensioni del bus dati. In termini pratici, con un bus dati più grande è possibile eseguire calcoli più complessi. Il microcontrollore a 8-bit è il tipo più comunemente usato dagli hobbisti. In generale ha un minor numero di pin in modo che sia più facile da saldare (e da programmare).
Il mercato dei microcontrollori è molto competitivo con diverse soluzioni che spaziano dal settore Automotive passando per quello Indossabile (Wearable). AVR Atmel e PIC Microchip sono quelli maggiormente conosciuti dal popolo degli hobbisti, non a caso qualche tempo fa c'è stata l'acquisizione dell'Atmel da parte della Microchip.
AVR è il tipo di microcontrollore utilizzato sulla famosa scheda Arduino impiegata nei più svariati campi della domotica attraverso le sue tipologie quali Arduino Uno (visualizzata nella figura sopra con in evidenza il microcontrollore ATmega a 28 pin), e quella M0 Pro per ambiti professionali con il debug incorporato.
Arduino One | ||
SunFounder Project Super Starter Kit | ||
Box trasparente per Arduino Uno |