MISURE PER L’AUTOMAZIONE
Introduzione ai microcontrollori ................................................................................................ 3
Evoluzione e applicazioni ......................................................................................................................... 3
Cosa sono i PIC? ....................................................................................................................................... 4
Compilatore Assembler ............................................................................................................................ 6
Il PIC 16F84A ............................................................................................................................................ 6
IL PIC 16F877A ........................................................................................................................................11
FPGA (Field Programmable Gate Array) ..................................................................................... 13
Architettura di un FPGA ..........................................................................................................................14
Protocolli di Comunicazione Seriali ........................................................................................... 16
Trasmissioni ............................................................................................................................................16
Trasmissione Seriale ...............................................................................................................................17
Seriale RS422 ..........................................................................................................................................28
Seriale RS485 ..........................................................................................................................................29
Bus USB ..................................................................................................................................................30
Bus FireWire (IEEE 1394) .........................................................................................................................36
Bus Seriale I2C ........................................................................................................................................38
Bus Seriale SPI.........................................................................................................................................40
Circuiti di condizionamento ...................................................................................................... 42
Filtri ............................................................................................................................................. 44
Filtri Analogici .........................................................................................................................................44
Filtri Digitali ............................................................................................................................................45
Filtri ARMA .............................................................................................................................................46
CAN Bus ........................................................................................................................................ 51
Principi di Comunicazione .......................................................................................................................52
Il CAN Bus secondo il modello ISO/OSI: Physical Layer .............................................................................53
Il CAN Bus secondo il modello ISO/OSI: Data Link Layer ...........................................................................55
Programmare in linguaggio C .................................................................................................... 59
Tipi di dati ...............................................................................................................................................59
Codifiche binarie .....................................................................................................................................62
Esempio di programma ...........................................................................................................................62
Rappresentazione dei dati in memoria ..................................................................................... 64
Le basi di rappresentazione .....................................................................................................................64
Rappresentazione dei numeri interi in memoria ......................................................................................65
Rappresentazione dei numeri reali in memoria .......................................................................................66
Operazioni logiche ..................................................................................................................................66
Gestione dei numeri per un microcontrollore .......................................................................... 68
Sistemi di acquisizione dati ........................................................................................................ 71
Classificazione .........................................................................................................................................71
Campionamento .....................................................................................................................................72
Campionamento S/H ...............................................................................................................................74
Quantizzazione e codifica ........................................................................................................................75
Sistemi di acquisizione dati con più grandezze ........................................................................................76
Ingressi analogici .....................................................................................................................................78
Collegamenti con la sorgente del segnale ................................................................................................78
Acquisizione continua .............................................................................................................................80
Introduzione ai microcontrollori
Un microcontrollore, in elettronica digitale, è un dispositivo elettronico integrato su singolo circuito
elettronico, nato come evoluzione alternativa al microprocessore. 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, e pertanto è necessario programmarlo. Il principale impiego è rivolto ai sistemi
embedded, ovvero per tutte quelle applicazioni specifiche 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.
Quando nell'aprile del 1972 Intel ha introdotto sul mercato il primo processore a 8 bit - lo 8008 - esso
consisteva di una ALU (Aritmetici & Logical Unit) per svolgere operazioni logiche e matematiche e di una
unità di elaborazione elementare (CPU) per controllare il flusso di dati e indirizzi tra la ALU e i circuiti
esterni di supporto. Successivamente, l'architettura interna del microprocessore (in seguito spesso
chiamato semplicemente CPU) si è evoluta velocemente con lo sviluppo di blocchi interni via via più
complessi (maggior numero di bit elaborati) e con capacità e velocità di calcolo crescenti in modo
esponenziale.
Per quanto potente, 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. Le
funzioni e gli stati logici sono controllati direttamente dal programma inserito nel microcontrollore.
Esempio di microcontrollore con circuito.
È un microcontrollore a 2 porte: porta RA (di 5
pin) e porta RB (di 8 pin).
La frequenza scelta per questo microcontrollore
è di 4MHz.
MCLR è il reset del programma che permette il
riavvio.
Evoluzione e applicazioni
Nel corso degli anni i circuiti sono diventati più compatti, e quindi composti da meno componenti, e sono
diventati sempre più performanti. Questo è stato possibile per una serie di motivi: i componenti sono
diventati sempre più piccoli e quindi è stato possibile sviluppare circuiti di dimensioni minori; aumento del
numero di funzioni; l’evoluzione dei componenti che, per la loro flessibilità e facilità di impiego, hanno
avuto il sopravvento nel mercato dell’elettronica.
I microcontrollori sono presenti in molti degli oggetti che utilizziamo quotidianamente. L’automobile ha un
microcontrollore per ogni sua centralina: l’apertura o la chiusura di ogni finestrino è regolata da una
specifica centralina con il rispettivo microcontrollore, così come l’airbag, l’Abs e il controllo temperatura
dell’abitacolo. La SIM del cellulare ha un proprio microcontrollore: quando salviamo un numero inviamo
un’informazione al microcontrollore che salverà il contatto nella memoria della SIM, quando chiamiamo
qualcuno preleviamo un’informazione contenuta nella memoria della SIM tramite il microcontrollore. Nei
lettori MP3 un microcontrollore legge la memoria dove è memorizzata la traccia che vogliamo ascoltare,
esegue un algoritmo di decodifica con lo standard MP3 per poi dare l’informazione in uscita su un
convertitore D/A (ad una cassa o cuffia). Nelle centraline degli allarmi ci sono i microcontrollori che leggono
gli stati dei sensori ad infrarossi, dei sensori magnetici e altri. Nelle centraline dei cancelli automatici il
microcontrollore invia l’informazione di apertura e chiusura del cancello.
Cosa sono i PIC?
PIC è una famiglia di circuiti integrati a semiconduttore con funzioni di microcontrollore prodotto dalla
Microchip Technology. Il termine PIC non è usato come un acronimo: il suo nome aziendale è "PICmicro".
Anche se generalmente sta per "Programmable Interface Controller", il suo primo produttore (la "General
Instrument") usava l'acronimo per "Programmable Intelligent Computer".
I PICmicro (in questo caso un PIC16F84A) si presentano esternamente come dei
normali circuiti integrati TTL (Transistor-transistor logic) o CMOS, ma internamente
dispongono di tutti dispositivi tipici di un sistema a microprocessore.
Ci sono vari modelli di PIC, si differenziano per numero di linee di I/O e per dotazione di dispositivi. Ci sono
modelli piccoli (sigla PI12C5xx a 8 pin, chiamati anche famiglia a 12), modelli grandi )sigla PIC18Cxx dotati di
40 e più pin, chiamati anche famiglia a 18).
L’architettura interna di un PIC è la seguente:
Una CPU, carica le istruzioni dei programmi in memoria, le interpreta e manipola i dati di conseguenza;
Una memoria FLASH (l’equivalente di un hard disk);
Una memoria RAM, che ha una larghezza di 8 bit e una profondità che varia da pochi byte (25 nei
PIC16C5x) fino a qualche kilobyte;
Una PROGRAM MEMORY (memoria di programma), è una memoria speciale di tipo FLASH, non
cancellabile elettricamente, ed utilizzata per tenere memorizzato il programma da eseguire. La sua
larghezza varia da 12 bit (ad esempio, nel PIC16C54) a 14 bit (ad esempio, nel PIC16F628) a 16 bit (ad
esempio, nel PIC18F4520). La sua profondità varia da 512 byte a 128 kibibyte (KiB).
Il REGISTER FILE, è un insieme di locazioni di memoria RAM, ovvero memorie con cui è possibile leggere e
modificare il contenuto senza l’ausilio di programmatori esterni e direttamente dal programma in
esecuzione sul PIC.
L’ALU (unità aritmetico logica) è la componente più complessa del PIC in quanto contiene tutta la
circuiteria delegata a svolgere le funzioni di calcolo e manipolazione dei dati durante l’esecuzione di un
programma.
L’ACCUMULATORE o REGISTRO W, una semplice locazione di memoria in grado di contenere un solo
valore a 8 bit.
Il PROGRAM COUNTER, il registro della CPU la cui funzione è quella di conservare l'indirizzo di memoria
della prossima istruzione da eseguire.
Una serie di LINEE DI I/O, ovvero linee di ingresso e di uscita per pilotare dispositivi esterni o ricevere
impulsi da sensori, pulsanti, ecc. La presenza di periferiche a bordo del chip è uno delle differenze
principali tra un microprocessore ed un microcontrollore. Nei PIC si parte da dei semplici I/O digitali per
arrivare a funzioni complesse passando attraverso una notevole varietà di altre funzioni.
Un TIMER. Su tutte le versioni è implementato almeno un temporizzatore da 8 bit. Si arriva fino a 5
temporizzatori con larghezze a 8 o 16 bit. Su tutte è inoltre implementato un temporizzatore speciale
chiamato WDT (Watch Dog Timer), che serve (se utilizzato) a far ripartire il microcontrollore in caso di
blocco del programma. Il timer funziona in base alla frequenza di lavoro del PIC e/o può utilizzarne,
tramite un apposito piedino, una diversa da quella di lavoro tramite un oscillatore esterno. Ad ogni timer,
inoltre, può essere associato un divisore di frequenza integrato chiamato PRESCALER, che divide la
frequenza di lavoro di: 2, 4, 8, 16, 32, 64, 128, 256 volte.
Può contenere dispositivi ausiliari quali generatori di clock, bus dedicati, contatori, convertitori A/D ecc.
Come detto in precedenza, anche per il PIC è necessario preparare un programma per farlo funzionare. I
linguaggi di programmazione utilizzato può essere Assembler (linguaggio a basso livello) che permette una
compilazione immediata del codice considerando che è una traduzione uno ad uno, C (linguaggio ad alto
livello), C++, Visual basic, ecc. Per scrivere un programma per un PIC bisogna conoscere bene come è fatto
al suo interno; per fare ciò bisogna studiare il manuale del microcontrollore.
Lo stesso microcontrollore può essere presente in più package.
1. Package PDIP 2. Package SOIC 3. Package SSOP
Nella figura 1 troviamo il Package PDIP (Dual In-line Package). È di forma rettangolare, con due file parallele
di piedini (o pin) disposti sui lati maggiori e piegati in modo da essere quasi perpendicolari alla superficie
del rettangolo. I piedini attraversano dei fori per andare da un lato all’altro.
Nella figura 2 abbiamo il Package SOIC (Small outline integrated circuit). Non presentano i fori per il
passaggio dei piedino e la saldatura si fa dallo stesso lato dove è posto il piedino.
Nella figura 3 è rappresentato il Package SSOP (Shrink small-outline package). È simile al package SOIC a
con dimensioni ancora minori.
Nel manuale del microcontrollore è possibile trovare la descrizione dei pin per ogni package disponibile. È
importante sapere la posizione e il numero di un determinato pin quando lavora con una scheda.
Compilatore Assembler
Si scrive il programma in Assembler, si compila il programma per il PIC scelto e si carica il file eseguibile sul
PIC con un dispositivo chiamato programmatore. Durante la compilazione, il compilatore genera una serie
di file con il nome identico al source da cui derivano, ma con estensione diversa.
.HEX è il file contenete gli opcode da inserire nella memoria programma del PIC. Un opcode (operation
code, codice operativo) è una porzione d'istruzione in linguaggio macchina che specifica l'operazione che
deve essere eseguita. Il file .HEX non è in formato binario ma un file codificato in un formato inventato dalla
Intel per la descrizione dei file binari in formato ASCII. Tale formato è direttamente riconoscibile da
qualsiasi programmatore di PIC il quale provvederà a leggere da questo formato gli opcode ed a trasferirli
nella memoria del PIC.
.LST è un file di testo in cui viene riportato l'intero source Assembler e la corrispondente traduzione in
opcode.
.ERR contiene la lista degli errori di compilazione riscontrati ed il numero di linea all'interno del source
Assembler in cui sono stati rilevati.
I file .LST e .ERR vengono utilizzati per il controllo di quanto effettuato in compilazione. Solo il file .HEX
viene utilizzato realmente per programmare il PIC.
Il PIC 16F84A
Il PIC 16F84A dispone di un set di 35 istruzioni elementari (RISC), e ogni istruzione occupa una sola
locazione della memoria programma. Quasi tutte le istruzioni vengono eseguite in 4 cicli di clock, un PIC
cloccato a 4Mhz è perciò in grado di eseguire 1 milione di istruzioni al secondo e ogni istruzione dura 1µS.
Le istruzioni di branch (salto) possono richiedere 8 cicli di clock anziché 4. Nella terminologia Microchip un
gruppo di 4 cicli di clock è detto "ciclo", per cui le istruzioni vengono eseguite in uno o due cicli.
La frequenza massima di clock è di 20MHZ, per frequenze superiori non funzionerà correttamente.
La memoria FLASH per le istruzioni è da 1 K (1024 istruzioni) programmabile con l'ausilio di un computer
esterno. Questa memoria supporta fino ad un massimo di 1000 cicli di cancellazione/scrittura.
Ha memoria RAM dei dati da 90 bytes, dei quali 22 utilizzati per i registri interni di sistema (SFR = Special
Function Registers) e i restanti 68 come registri utente liberi (GPR = General Purpose Register).
Ha una memoria EEPROM (memoria non volatile) interna da 64 bytes, che può essere programmata via
software dal PIC stesso e sopporta fino ad un massimo di 1 milione di cicli di cancellazione/scrittura. Tale
memoria non può essere utilizzata come RAM aggiuntiva per via della sua lentezza (20 ms in scrittura) e per
via dell
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.