Qual'è la differenza fra un microcontrollore (o microcontroller o MCU=MicroController Unit) e un microprocessore?
Il microcontroller integra tutta una serie di funzioni (su un unico chip) che lo rendono adatto ad interfacciarsi con il mondo esterno, come ad esempio uscire analogiche, digitali, pwm, ingressi digitali e analogici (ADC).
Inoltre il microcontrollore contiene al suo interno tutto quello che in genere serve per memorizzare il programma e eseguirlo, come ram, eprom, eeprom, rom, ecc..
Quindi un microcontrollore è progettato per interagire direttamente con il mondo esterno tramite un programma residente nella propria memoria interna e mediante l'uso di pin specializzati o configurabili dal programmatore.
Riassumendo il microprocessore integra sul chip solo la logica di elaborazione mentre richiede sempre delle unità esterne, memorie, gestori di segnali e dispositivi periferici per poter scambiare informazioni e interagire con l'esterno, il microcontrollore è invece un sistema completo, che integra in uno stesso chip il processore, la memoria permanente, la memoria volatile e i canali (pin) di I/O, oltre ad eventuali altri blocchi specializzati.
Arduino Uno è una scheda basata su microcontrollore Atmel ATmega328 che permette la realizzazione di diversi circuiti elettronici anche complessi con una certa facilità .
Le caratteristiche salienti di detta scheda sono riportate di seguito:
Processore Arduino Uno | Atmel ATmega328 |
Tensione di lavoro | 5Vdc |
Assorbimento a vuoto (solo arduino UNO) | 40-50mA |
Tensione di alimentazione consigliata | da 7Vdc a 12Vdc alimentabile con alimentatore esterno o via USB direttamente dal computer. |
Pin digitali | 14 configurabili via software come ingressi o uscite (6 utilizzabili come uscite PWM) |
Pin analogici | 6 ingressi |
Massima corrente per pin digitale | 40 mA massima |
Memoria Flash | 32KB |
Memoria Sram | 2KB |
Memoria EEPROM | 1KB |
Velocità di clock del microcontrollore | 16MHz |
La potenza di arduino uno non permette di fare elaborazioni video o campionamento di audio ad alta risoluzione, tuttavia è sufficiente per tutta una serie di sensori ed altre applicazioni anche relativamente complesse, specie se supportato da circuiti aggiuntivi progettati allo scopo di evitare al microcontrollore le più gravose operazioni.
Inoltre si tratta di un microcontrollore monotask, ovvero può svolgere una operazione per volta.
Quindi occorre adottare uno stile di programmazione che si adatti alle caratteristiche.
![]() |
Figura N.1 |
Nome del pin (scritta in bianco) | Funzione | Utilizzo |
Collegamento per alimentatore esterno. | Alimentazione con alimentatore esterno. | |
USB | Collegamento USB con il computer. | Alimentazione, programmazione, monitor seriale. |
Non Collegato | Pin non collegato previsto per future funzioni aggiuntive | NN |
IOREF |
| |
RESET | Reset di Arduino UNO. | Reset di Arduino UNO |
3,3 | Alimentazione stabilizzata da 3,3 Volt per alimentare dispositivi esterni | Uscita alimentazione |
5 | Alimentazione stabilizzata da 5 Volt per alimentare dispositivi esterni | Uscita alimentazione |
GND | Massa di Arduino UNO. | Massa (riferimento 0 Volt) |
GND | Massa di Arduino UNO. | Massa (riferimento 0 Volt) |
Vin | Tensione di alimentazione per arduino uno in parallelo al connettore di alimentazione. | Gestione Livelli logici dispositivi esterni |
A0 (Ingresso Analogico) | Ingresso Analogico | |
A1 (Ingresso Analogico) | Ingresso Analogico | |
A2 (Ingresso Analogico) | Ingresso Analogico | |
A3 (Ingresso Analogico) | Ingresso Analogico | |
A4 (Ingresso Analogico) | Ingresso Analogico | |
A5 (Ingresso Analogico) | Ingresso Analogico | |
0 (Digital I/O) | Ingresso/uscita digitale (il settaggio per ingresso o uscita si esegue via software) | I/O digitale |
1 (Digital I/O) | Ingresso/uscita digitale (il settaggio per ingresso o uscita si esegue via software) | I/O digitale |
2 (Digital I/O) | Ingresso/uscita digitale (il settaggio per ingresso o uscita si esegue via software) | I/O digitale |
3 (Digital i/o, PWM) | ||
4 (Digital I/O) | Ingresso/uscita digitale (il settaggio per ingresso o uscita si esegue via software) | I/O digitale |
5 (Digital i/o, PWM) | ||
6 (Digital i/o, PWM) | ||
7 (Digital I/O) | Ingresso/uscita digitale (il settaggio per ingresso o uscita si esegue via software) | I/O digitale |
8 (Digital I/O) | Ingresso/uscita digitale (il settaggio per ingresso o uscita si esegue via software) | I/O digitale |
9 (Digital i/o, PWM) | ||
10 (Digital i/o, PWM) | ||
11 (Digital i/o, PWM) | ||
12 (Digital I/O) | Ingresso/uscita digitale (il settaggio per ingresso o uscita si esegue via software) | I/O digitale |
13 (Digital I/O) | Ingresso/uscita digitale (il settaggio per ingresso o uscita si esegue via software) | I/O digitale |
GND | Massa di Arduino UNO. | Massa (riferimento 0 Volt) |
AREF | ||
NN | Pin non collegato previsto per future funzioni aggiuntive | NN |
NN | Pin non collegato previsto per future funzioni aggiuntive | NN |
L'arduino UNO può essere alimentato via USB o con un alimentatore sterno.
L'alimentazione è scelta automaticamente.
L'alimentazione esterna (non USB) può essere indistintamente un alimentatore o un pacco batterie.
L'alimentazione può essere collegata usando un plug oppure collegandosi al piedino Vin.
La scheda può funzionare con una alimentazione esterna da 6 a 20 Volt, tuttavia in funzione della corrente richiesta il regolatore presente sulla scheda deve dissipare una potenza proporzionale alla tensione di alimentazione e alla corrente, quindi attenzione a non surriscaldarlo.
Si consiglia quindi di mantenersi in un range che va da 7 a 12 Volt.
I pin di alimentazione sono i seguenti:
VIN.
Piedino a cui è possibile collegare l'alimentazione di arduino, è posto a monte del regolatore in modo similare al jack di alimentazione.
5V.
Questo piedino è a valle del regolatore di tensione presente su arduino e viene utilizzato per alimentare gli shields.
Alimentando dall'esterno questo piedino si bypassa il regolatore, pratica potenzialmente pericolosa per arduino.
3V3.
Uscita a 3,3 Volt per alimentare gli shields che richiedono tale tensione.
La massima corrente è 50 mA.
GND.
Riferimento di terra (potenziale 0 Volt).
La memoria disponibile sul microcontrollore ATmega328 è la seguente:
32 KB di memoria flash di cui 0,5KB utilizzati per il bootloader.
2 KB di memoria ram
1 KB di eeprom che può essere letta e scritta utilizzando la EEPROM library.
Ognuno dei 14 pin digitali di arduino può essere settato come ingresso o uscita.
Operano a 5V e possono fornire o assorbire (livello logico 0) una corrente di 40 mA (20 mA consigliata).
Questi pin hanno un resistore di pull-up di 20-50 KΩ (disconnesso per default).
Alcuni di questi pin hanno funzioni particolari che ora descriveremo:
0 (RX) e 1 (TX) possono essere utilizzati per trasmettere e ricevere dati seriali TTL.
2 e 3 possono essere usati per gli interrupt esterni.
Guardare la funzione attachInterrupt() per ulteriori dettagli.
3, 5, 6, 9, 10, e 11 possono essere settati come uscite PWM con una risoluzione di 8 bit tramite la funzione analogWrite()
10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK).
Utilizzati per la comunicazione con dispositivi esterni tramite il protocollo SPI utilizzando la SPI library.
13.
LED presente sulla scheda arduino.
Quando il piedino 13 è a livello alto il led si accende.
A0, A1, A2, A3, A4, A5.
Ingressi analogici con una risoluzione di 10 bit.
Per default convertono in digitale il valore di tensione al loro ingresso riferito al potenziale di 5V ma questo può essere cambiato utilizzando il piedino AREF come riferimento di tensione utilizzando la funzione analogReference().
A4 e A5 supportano la comunicazione TWI utilizzando la wire library.
RESET.
Utilizzato per resettare arduino.
Si attiva il reset ponendo il piedino a livello logico 0.
Si tratta di un connettore visibile sulla figura N.1 nel punto contrassegnato con "B".
| I microcontrollori in particolare se SMD (Surface Mount Chip) sono in genere saldati direttamente sul PCB. Per quello che riguarda arduino UNO il microcontrollore è posto su uno zoccolo , quindi rimpiazzabile (tranne per qualche eccezione riguardante alcuni cloni che utilizzano la versione SMD del micocontrollore ATmega328 che è saldato direttamente sul PCB). Per la programmazione la scheda arduino UNO utilizza la presa USB, ma per fare in modo che il computer possa colloquiare con arduinousando il connettore USB vi è una porzione di codice caricata sul microcontrollore chiamata bootloader. Se noi mettiamo sulla scheda arduino un microcontrollore nuovo il bootloader non è caricato ed occorre caricarlo utilizzando un programmatore e il connettore ICSP. Inoltre il connettore ICSP può essere utilizzato per collegare periferiche SPI (per questo utilizzo fare riferimento alla figura n.2) |