I microcontrollori Microchip – Progetto Smart Home

    0
    108

    Tra i microcontrollori più usati in commercio troviamo quella della Microchip, che offre una vasta gamma di MCU assicurando una grande performance ed una buona flessibilità. Inoltre mette a diposizione per gli utenti meno esperti che non hanno molta familiarità con l’assembly dei software di alto livello, , quali compilatori “mikroC” o “mikroBasic”. Le MCU della Microchip sono raggruppate un base alle dimensioni della “Word Istruzione” e del “Set Istruzione”, come mostrato in seguito:

    • 8 pin, PIC12CXXX/PIC12FXXX, istruzione a 12/14 bit.
    • Base-Line, PIC16C5X, istruzione a 12 bit.
    • Mid-Range, PIC16CXXX/ PIC16FXXX, istruzione a 14 bit.
    • High-Performance, PIC17CXXX, istruzione a 16 bit.
    • Enhanced, PIC18CXXX / PIC18FXXX, istruzione a 16 bit.

    I microcontrollori usati nel nostro progetto appartengono alla fascia MidRange e sono il PIC16F887 e il PIC16F876

    Il Microcontrollore PIC16F887

    Il microcontrollore PIC16F887 si occupa della gran parte delle funzione del sistema domotico. Le sue principali caratteristiche (facendo riferimento al datasheet) sono:

    • CPU RISC ad alte prestazioni, cioè dispone di un ridotto set di istruzioni in assembly aventi tempi di esecuzione simili.
    • La maggior parte delle istruzioni richiede un solo ciclo della CPU per essere eseguita, un ciclo corrispondono a 4 impulsi di clock.
    • Supporta differenti tipi di generatori di clock e frequenze di clock fino a 31Mhz.
    • Uscite in grado di supportare fino a 20mA continuativamente.
    • 5 porte di I/O denominate PORTA, PORTB, PORTC, PORTD, PORTE
    • Dispone di molte periferiche interne, tra cui: 3 timer, un convertitore A/D a 14 canali con una risoluzione di 10bit, un modulo PWM con una frequenza massima di 20MHz, due comparatori analogici, USART interno implementato a livello hardware e una EEPROM interna di 256 byte.

    La struttura interna della seguente MCU, compresi la CPU, le memorie e i pin I/O sono mostrati diagramma a blocchi al lato.

    Il package del microcontrollore è un PDIP a 40 piedini, i suoi terminali spesso svolgono più funzioni e tutte le funzioni del microcontrollore (modalità terminali input o output, periferiche, interrupts, etc) sono selezionabili tramite dei registri di configurazione interna. La piedinatura del PIC16F887 è a seguente:

    Questi microcontrollori PIC sono caratterizzata dall’avere una ROM di tipo FLASH, ciò consente di effettuare più programmazioni del firmware senza dover necessariamente cambiare ogni volta microcontrollore. La programmazione può avvenire in due modalità: attraverso un programmatore esterno, con la necessità di rimuovere dalla scheda di utilizzo il microcontrollore ogni qualvolta si debba riprogrammarlo oppure direttamente sulla scheda attraverso una interfaccia che va predisposta (ICSP “In-Circuit Serial Programming”).

    L’integrato richieda una tensione di alimentazione compresa tra 2V e 6V (valore tipico di 5V) da applicare ai terminali indicati con VDD (terminale positivo) e VSS (terminale di massa GND). I pin OSC1/CLKIN e OSC2/CLKOUT devono essere collegati ad un quarzo o una rete RC per generare un clock di sistema. Il RESET del PIC si realizza portando il piedino MCRL al livello basso. Tale linea deve essere normalmente tenuta al livello alto VDD.

    Anche i microcontrollori hanno dei valori massimo che non devono superare per salvaguardare la vita dell’integrato. Questi valori, sempre, riportati nei datasheet sono i seguenti per il PIC16F887:

    Il Microcontrollore PIC16F876A

    Il microcontrollore PIC16F876A può essere definito il fratello minore del 16F887 in quanto presenta le stesse caratteristiche elettriche e di configurazione, la differenza sta nel numero di pin e nel numero inferiore di funzioni. Il package è un PDIP a 28 piedini e di seguito troviamo la sua piedinatura:

    Le caratteristiche in cui si differenzia rispetto al precedente microcontrollore sono:

    • Supporta differenti tipi di generatori di clock e frequenze di clock fino a 20Mhz.
    • 3 porte di I/O denominate PORTA, PORTB, PORTC
    • Tra le peroferiche troviamo: 3 timer, un convertitore A/D a 8 canali con una risoluzione di 10bit, un modulo PWM, due comparatori analogici, USART interno implementato a livello hardware e una EEPROM interna di 256 byte.

    Compilatore mikroBasic

    Per programmare i due microcontrollori si è fatto uso del compilatore “mikroBasic”, messo a disposizione direttamente dall’azienda Microchip in versione freeware, e facendo uso del linguaggio BASIC. Contiene al suo interno già tantissime librerie per gestire tutte le periferiche presenti nei PIC, tra cui quelle per l’ADC, l’UART, il PWM, i Display, etc. ad esempio la librerie ADC si occupa di gestire molto semplicemente l’acquisizione di segnali analogici da un canale o di generare una forma d’onda rettangolare con la libreria PWM.