Logo audio valvole
Banner Audiovalvole
Gruppo Facebook Audio Valvole il sito degli appassionati di elettronica valvolareCompra Audiovalvole eBook su lulu.com

Il microcontrollore Arduino UNO

Arduino uno: Microcontrollori e microprocessori

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: di cosa si tratta?

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 UnoAtmel ATmega328
Tensione di lavoro5Vdc
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 Flash32KB
Memoria Sram2KB
Memoria EEPROM1KB
Velocità di clock del microcontrollore16MHz

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.

Arduino uno nei particolari

Arduino UNO
Figura N.1

Descrizione dei pin di arduino UNO in ardine dal lato sinistro a quello destro dall'alto al basso

Nome del pin (scritta in bianco) Funzione Utilizzo
Alimentazione
Collegamento per alimentatore esterno.
Tensione consigliata da 7 a 12V.
Tensione operativa limite 6-20V.
Alimentazione con alimentatore esterno.
USB
Collegamento USB con il computer.
Serve per l'alimentazione di arduino, per il collegamento seriale, sia per il monitor seriale che per la programmazione di Arduino UNO.
Alimentazione, programmazione, monitor seriale.
Non Collegato
Pin non collegato previsto per future funzioni aggiuntive
NN
IOREF
Uscita con tensione uguale allo stato logico uno utilizzata per gestire la compatibilità degli shields con i livelli logici delle varie versioni di arduino.
Per esempio Vin in arduino uno è 5V che corrisponde allo stato logico uno (o alto), per arduino DUE Vin è 3,3V.
 
RESET
Reset di Arduino UNO.
Il reset si ottiene portando a livello basso lo stato logico di questo pin.
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.
Da collegarsi alla massa dei dispositivi esterni
Massa (riferimento 0 Volt)
GND
Massa di Arduino UNO.
Da collegarsi alla massa dei dispositivi esterni
Massa (riferimento 0 Volt)
Vin
Tensione di alimentazione per arduino uno in parallelo al connettore di alimentazione.
Tensione consigliata da 7 a 12V.
Tensione operativa limite 6-20V.
Gestione Livelli logici dispositivi esterni
A0 (Ingresso Analogico)
Ingresso analogico per convertitore ADC con conversione a 10 bit (1024 valori)
Ingresso Analogico
A1 (Ingresso Analogico)
Ingresso analogico per convertitore ADC con conversione a 10 bit (1024 valori)
Ingresso Analogico
A2 (Ingresso Analogico)
Ingresso analogico per convertitore ADC con conversione a 10 bit (1024 valori)
Ingresso Analogico
A3 (Ingresso Analogico)
Ingresso analogico per convertitore ADC con conversione a 10 bit (1024 valori)
Ingresso Analogico
A4 (Ingresso Analogico)
Ingresso analogico per convertitore ADC con conversione a 10 bit (1024 valori)
Ingresso Analogico
A5 (Ingresso Analogico)
Ingresso analogico per convertitore ADC con conversione a 10 bit (1024 valori)
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)
Ingresso/uscita digitale con possibilità di uscita PWM a 8 bit.
(il settaggio per ingresso, uscita o pwm si esegue via software)
I/O digitale, 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)
Ingresso/uscita digitale con possibilità di uscita PWM a 8 bit.
(il settaggio per ingresso, uscita o pwm si esegue via software)
I/O digitale, PWM
6 (Digital i/o, PWM)
Ingresso/uscita digitale con possibilità di uscita PWM a 8 bit.
(il settaggio per ingresso, uscita o pwm si esegue via software)
I/O digitale, 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)
Ingresso/uscita digitale con possibilità di uscita PWM a 8 bit.
(il settaggio per ingresso, uscita o pwm si esegue via software)
I/O digitale, PWM
10 (Digital i/o, PWM)
Ingresso/uscita digitale con possibilità di uscita PWM a 8 bit.
(il settaggio per ingresso, uscita o pwm si esegue via software)
I/O digitale, PWM
11 (Digital i/o, PWM)
Ingresso/uscita digitale con possibilità di uscita PWM a 8 bit.
(il settaggio per ingresso o uscita o pwm si esegue via software)
I/O digitale, 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.
Da collegarsi alla massa dei dispositivi esterni
Massa (riferimento 0 Volt)
AREF
Riferimento in tensione per il convertitore analogico digitale.
Se sugli ingressi analogici abbiamo un valore da convertire in digitale che è più basso dei 5V si può migliorare la conversione mettendo su AREF una tensione uguale a quella massima che assume il segnale da convertire.
Ingresso riferimento tensione ADC
NN
Pin non collegato previsto per future funzioni aggiuntive
NN
NN
Pin non collegato previsto per future funzioni aggiuntive
NN

Tensioni e correnti

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).

Memoria

La memoria disponibile sul microcontrollore ATmega328 è la seguente:

Input/Output

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 KOhm (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.

Connettore ICSP (In-Circuit Serial Programming)

Si tratta di un connettore visibile sulla figura N.1 nel punto contrassegnato con "B".

Connettore ICSP (In-Circuit Serial Programming)
Figura N.2
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)
Inizio Pagina