lunedì 7 giugno 2010

Arduino: qualche informazione in più

Dopo aver visto il primo sketch realizzabile con Arduino (una sorta di "Hello world!") e la realizzazione dell'interfacciamento a un sensore di luce (fotoresistenza) mi piacerebbe lasciarvi qualche altra informazione su Arduino. So bene che solitamente avviene il contrario ma a volte per far capire una cosa si può invertire la regola.
I più attenti avranno sicuramente notato la presenza di un grosso chip sulla scheda Arduino, si tratta del cuore della scheda di tinker ovvero del microcontrollore ATmega328. Cos'è un microcontrollore?
Prima di ancora di iniziare a interessarmi di Arduino ho avuto qualche piccola esperienza con altri microcontrollori, in particolar modo con la famiglia dei PIC (programmable interrupt controller) e nello specifico con il PIC16F84.
Tutti i microcontrollori si presentano esternamente come dei circuiti integrati, all'interno del package si trovano tuttavia diversi dispositivi tipici di un sistema a microprocessore! Solitamente l'involucro comprende:
  • una CPU (central process unit) per l'interpretazione dei programmi compilati dall'utente;
  • un'area di memoria di tipo PROM (programmable read only memory) per memorizzare il programma da eseguire;
  • un'area di memoria di tipo RAM (random access memory) per memorizzare le variabili del programma e le elaborazioni della CPU;
  • una linea per i segnali I/O per ricevere in ingresso i segnali provenienti dai sensori e produrre in uscita i segnali diretti agli attuatori (le linee di I/O possono essere dedicate a segnali analogici e/o binari, quindi digitali);
  • altri dispositivi vari fra cui contatori, convertitori A/D, bus e porte per la comunicazione (quest'ultima implementata sia nella forma parallela, PIA, che seriale, USART);
Detto ciò se non specifichiamo subito le caratteristiche interne di un microcontrollore rischiamo davvero di confonderlo con un vero e proprio microprocessore! Lo stesso Massimo Banzi definisce, in un suo video, Arduino come: un piccolo computer dalle dimensioni di una carta di credito. Nel corso degli anni si sono succedute diverse famiglie di microcontrollori, ognuna di queste con una propria struttura organizzativa interna che tuttavia possiamo ritenere pressapoco simile. Ecco allora che possiamo associare ad un microcontrollore un'architettura interna di riferimento che ci permette di iniziare ad apprezzarne le potenzialità:


Tutti i dispositivi elencati prima come periferiche dei microcontrollori possono trovare una loro collocazione in uno dei blocchi illustrati in figura. Ogni linea ha il suo significato, la disponibilità di così tanti dispositivi in uno spazio estremamente contenuto offre al progettista un valido strumento per la realizzazione di sistemi di controllo e altro! Con il microcontrollore ATmega328 la Atmel, l'azienda che produce il chip, ha dato inizio a una nuova famiglia di microcontrollori, quella a 8 bit. Alcuni parametri che definiscono meglio Arduino si possono trovare sul datasheet del costruttore. La memoria flash dedicata ai programmi è di 32KB, Arduino prevede un EEPROM di 1KB e un'area SRAM di 2KB (la memoria ram!). La frequenza di clock della cpu (che prevede poco più di 130 istruzioni) è di 20MHz.
Veniamo alle periferiche, in Arduino trovate due contatori a 8 bit, un contatore a 16 bit, 6 canali analogici dedicati all'output di tipo PWM (pulse-width modulation), 23 pin per la programmazione dell'I/O (di cui 6 di tipo PWM, quelli di prima, 6 di tipo analogico e il restante di tipo digitale), una periferica seriale per la comunicazione e tanta altra roba ancora.
Il microcontrollore è stato sistemato su una scheda (Arduino) assieme ad altri componenti per permettere l'interfacciamento, attraverso una porta usb, al PC. L'alimentazione (5V) utile alla scheda può essere rimediata attraverso la stessa porta usb oppure in maniera del tutto autonoma dal PC, attraverso un comune jack. Un led (PWR) indica lo stato della scheda: accesa o spenta. Altri due led (TX ed RX) si accendono non appena la scheda scambia bit con il PC (o con altri dispositivi). Di default è presente un ulteriore led collegato al pin (digitale) 13 del chip. Questo favorisce la prova della scheda, ad esempio con il primo sketch, il led può in ogni caso essere impiegato per altre funzioni, quali? Quelle che noi decideremo di programmare.

Nessun commento:

Posta un commento