microcontrollore (MCU)

Un microcontrollore è un circuito integrato compatto progettato per governare una specifica operazione in un sistema incorporato. Un tipico microcontrollore include un processore, una memoria e periferiche di input/output (I/O) su un singolo chip.

A volte indicato come un controller incorporato o unità microcontrollore (MCU), i microcontrollori si trovano in veicoli, robot, macchine per ufficio, dispositivi medici, ricetrasmettitori radio mobili, distributori automatici ed elettrodomestici, tra gli altri dispositivi. Sono essenzialmente semplici personal computer in miniatura (PC) progettati per controllare piccole caratteristiche di un componente più grande, senza un complesso sistema operativo front-end (OS).

Come funzionano i microcontrollori?

Un microcontrollore è incorporato all’interno di un sistema per controllare una singola funzione in un dispositivo. Lo fa interpretando i dati che riceve dalle sue periferiche I/O usando il suo processore centrale. Le informazioni temporanee che il microcontrollore riceve sono memorizzate nella sua memoria dati, dove il processore vi accede e usa le istruzioni memorizzate nella sua memoria programma per decifrare e applicare i dati in arrivo. Poi usa le sue periferiche I/O per comunicare ed eseguire l’azione appropriata.

I microcontrollori sono usati in una vasta gamma di sistemi e dispositivi. I dispositivi spesso utilizzano più microcontrollori che lavorano insieme all’interno del dispositivo per gestire i loro rispettivi compiti.

Per esempio, un’automobile potrebbe avere molti microcontrollori che controllano vari sistemi individuali all’interno, come il sistema antibloccaggio dei freni, il controllo della trazione, l’iniezione di carburante o il controllo delle sospensioni. Tutti i microcontrollori comunicano tra loro per informare le azioni corrette. Alcuni potrebbero comunicare con un computer centrale più complesso all’interno dell’auto, e altri potrebbero comunicare solo con altri microcontrollori. Inviano e ricevono dati usando le loro periferiche I/O ed elaborano quei dati per eseguire i loro compiti designati.

Quali sono gli elementi di un microcontrollore?

Gli elementi fondamentali di un microcontrollore sono:

  • Il processore (CPU) — Un processore può essere pensato come il cervello del dispositivo. Esso elabora e risponde a varie istruzioni che dirigono il funzionamento del microcontrollore. Questo comporta l’esecuzione di operazioni aritmetiche, logiche e di I/O di base. Esegue anche operazioni di trasferimento dati, che comunicano i comandi ad altri componenti del sistema embedded più grande.
  • Memoria — La memoria di un microcontrollore è usata per memorizzare i dati che il processore riceve e usa per rispondere alle istruzioni che è stato programmato per eseguire. Un microcontrollore ha due tipi principali di memoria:
    1. Memoria programma, che memorizza le informazioni a lungo termine sulle istruzioni che la CPU esegue. La memoria programma è una memoria non volatile, il che significa che mantiene le informazioni nel tempo senza bisogno di una fonte di alimentazione.
    2. Memoria dati, che è necessaria per la memorizzazione temporanea dei dati mentre le istruzioni vengono eseguite. La memoria dati è volatile, cioè i dati che contiene sono temporanei e vengono mantenuti solo se il dispositivo è collegato a una fonte di alimentazione.
  • Periferiche I/O — Le periferiche di input e output sono l’interfaccia del processore con il mondo esterno. Le porte di ingresso ricevono informazioni e le inviano al processore sotto forma di dati binari. Il processore riceve quei dati e invia le istruzioni necessarie ai dispositivi di uscita che eseguono compiti esterni al microcontrollore.

Mentre il processore, la memoria e le periferiche I/O sono gli elementi che definiscono il microprocessore, ci sono altri elementi che sono spesso inclusi. Il termine periferiche I/O si riferisce semplicemente ai componenti di supporto che si interfacciano con la memoria e il processore. Ci sono molti componenti di supporto che possono essere classificati come periferiche. Avere qualche manifestazione di una periferica I/O è fondamentale per un microprocessore, perché sono il meccanismo attraverso il quale il processore viene applicato.

Altri elementi di supporto di un microcontrollore includono:

  • Convertitore analogico-digitale (ADC) — Un ADC è un circuito che converte i segnali analogici in segnali digitali. Permette al processore al centro del microcontrollore di interfacciarsi con dispositivi analogici esterni, come i sensori.
  • Convertitore digitale-analogico (DAC) — Un DAC svolge la funzione inversa di un ADC e permette al processore al centro del microcontrollore di comunicare i suoi segnali in uscita a componenti analogici esterni.
  • Bus di sistema — Il bus di sistema è il filo connettivo che collega tutti i componenti del microcontrollore insieme.
  • Porta seriale — La porta seriale è un esempio di porta I/O che permette al microcontrollore di collegarsi a componenti esterni. Ha una funzione simile a quella di una porta USB o parallela ma differisce nel modo in cui scambia i bit.

Caratteristiche del microcontrollore

Il processore di un microcontrollore varia a seconda dell’applicazione. Le opzioni vanno dai semplici processori a 4-bit, 8-bit o 16-bit a quelli più complessi a 32-bit o 64-bit. I microcontrollori possono usare tipi di memoria volatile come la memoria ad accesso casuale (RAM) e tipi di memoria non volatile – questo include la memoria flash, la memoria di sola lettura programmabile cancellabile (EPROM) e la memoria di sola lettura programmabile cancellabile elettricamente (EEPROM).

Generalmente, i microcontrollori sono progettati per essere facilmente utilizzabili senza componenti di calcolo aggiuntivi perché sono progettati con sufficiente memoria a bordo e offrono pin per operazioni di I/O generali, in modo che possano interfacciarsi direttamente con sensori e altri componenti.

L’architettura dei microcontrollori può essere basata sull’architettura Harvard o sull’architettura von Neumann, entrambe offrono diversi metodi di scambio di dati tra il processore e la memoria. Con un’architettura Harvard, il bus dati e quello delle istruzioni sono separati, permettendo trasferimenti simultanei. Con un’architettura Von Neumann, un bus è usato sia per i dati che per le istruzioni.

I processori per microcontrollori possono essere basati sul complex instruction set computing (CISC) o sul reduced instruction set computing (RISC). CISC ha generalmente circa 80 istruzioni mentre RISC ne ha circa 30, così come più modalità di indirizzamento, 12-24 rispetto alle 3-5 di RISC. Mentre CISC può essere più facile da implementare e ha un uso più efficiente della memoria, può avere una degradazione delle prestazioni a causa del maggior numero di cicli di clock necessari per eseguire le istruzioni. Il RISC, che pone maggiore enfasi sul software, spesso fornisce prestazioni migliori dei processori CISC, che pongono maggiore enfasi sull’hardware, grazie al suo set di istruzioni semplificato e, quindi, una maggiore semplicità di progettazione, ma a causa dell’enfasi che pone sul software, il software può essere più complesso. Quale ISC viene usato varia a seconda dell’applicazione.

Quando furono disponibili per la prima volta, i microcontrollori usavano esclusivamente il linguaggio assembly. Oggi, il linguaggio di programmazione C è un’opzione popolare. Altri linguaggi comuni per microprocessori includono Python e JavaScript.

Le MCU sono dotate di pin di ingresso e uscita per implementare funzioni periferiche. Tali funzioni includono convertitori analogico-digitali, controllori di display a cristalli liquidi (LCD), orologio in tempo reale (RTC), trasmettitore ricevitore universale sincrono/asincrono (USART), timer, trasmettitore ricevitore universale asincrono (UART) e connettività bus seriale universale (USB). I sensori che raccolgono dati relativi all’umidità e alla temperatura, tra gli altri, sono anche spesso collegati ai microcontrollori.

Tipi di microcontrollori

Le MCU comuni includono l’Intel MCS-51, spesso indicato come un microcontrollore 8051, che è stato sviluppato nel 1985; il microcontrollore AVR sviluppato da Atmel nel 1996; il controller di interfaccia programmabile (PIC) di Microchip Technology; e vari microcontrollori con licenza Advanced RISC Machines (ARM).

Un certo numero di aziende produce e vende microcontrollori, tra cui NXP Semiconductors, Renesas Electronics, Silicon Labs e Texas Instruments.

Applicazioni dei microcontrollori

I microcontrollori sono utilizzati in diversi settori e applicazioni, tra cui la casa e l’impresa, l’automazione degli edifici, la produzione, la robotica, l’automotive, l’illuminazione, l’energia intelligente, l’automazione industriale, le comunicazioni e l’internet delle cose (IoT).

Un’applicazione molto specifica di un microcontrollore è il suo utilizzo come processore di segnali digitali. Spesso, i segnali analogici in entrata hanno un certo livello di rumore. Il rumore in questo contesto significa valori ambigui che non possono essere facilmente tradotti in valori digitali standard. Un microcontrollore può usare i suoi ADC e DAC per convertire il segnale analogico rumoroso in entrata in un segnale digitale uniforme in uscita.

I microcontrollori più semplici facilitano il funzionamento dei sistemi elettromeccanici che si trovano in oggetti di uso quotidiano, come forni, frigoriferi, tostapane, dispositivi mobili, portachiavi, sistemi di videogiochi, televisori e sistemi di irrigazione del prato. Sono anche comuni in macchine da ufficio come fotocopiatrici, scanner, fax e stampanti, così come contatori intelligenti, bancomat e sistemi di sicurezza.

I microcontrollori più sofisticati svolgono funzioni critiche in aerei, veicoli spaziali, navi oceaniche, veicoli, sistemi medici e di supporto vitale, così come nei robot. Negli scenari medici, i microcontrollori possono regolare le operazioni di un cuore artificiale, un rene o altri organi. Possono anche essere strumentali nel funzionamento dei dispositivi protesici.

Microcontrollori vs. microprocessori

La distinzione tra microcontrollori e microprocessori è diventata meno chiara man mano che la densità e la complessità dei chip è diventata relativamente economica da produrre e i microcontrollori hanno quindi integrato più funzionalità di tipo “computer generale”. Nel complesso, però, si può dire che i microcontrollori funzionano utilmente da soli, con una connessione diretta a sensori e attuatori, mentre i microprocessori sono progettati per massimizzare la potenza di calcolo sul chip, con connessioni bus interne (piuttosto che I/O diretto) all’hardware di supporto come RAM e porte seriali. In poche parole, le caffettiere usano microcontrollori; i computer desktop usano microprocessori.

Il microcontrollore Microchip Technology ATtiny817.

I microcontrollori sono meno costosi e usano meno energia dei microprocessori. I microprocessori non hanno RAM integrata, memoria di sola lettura (ROM) o altre periferiche sul chip, ma piuttosto si attaccano a queste con i loro pin. Un microprocessore può essere considerato il cuore di un sistema informatico, mentre un microcontrollore può essere considerato il cuore di un sistema embedded.

Scegliere il giusto microcontrollore

Ci sono una serie di considerazioni tecnologiche e commerciali da tenere a mente quando si sceglie un microcontrollore per un progetto.

Oltre al costo, è importante considerare la velocità massima, la quantità di RAM o ROM, il numero o i tipi di pin I/O su un MCU, così come il consumo di energia e i vincoli e il supporto allo sviluppo. Assicuratevi di fare domande come: