Scheda sperimentale per PIC16F887

Il PIC16F887 e' un nuovo e potente microcontrollore a 8 bit di Microchip. E' provvisto di numerose periferiche e di funzioni migliorate che lo rendono il sostituto ideale del celebre PIC16F877A. Ad esempio, il PIC16F887 e' dotato di oscillatore interno impostabile da 32 kHz a 8 MHz, 14 ingressi analogici selezionabili singolarmente, modulo Enhanced-USART, resistenze di pull-up interne e interrupt on-change estesi a tutti i pin della PORTB, possibilita' di misurare la tensione di alimentazione grazie ad un riferimento di tensione interno.

Sebbene condivida lo stesso set di istruzioni assembly degli altri PIC della famiglia 16F, i registri, i bit di configurazione e le periferiche migliorate richiedono impostazioni che non sono compatibili con il 16F877A.

La scheda sperimentale per PIC16F887 permette di svolgere alcuni esperimenti con questo microcontrollore ed e' adatta sia a coloro che iniziano ad imparare il linguaggio assembly della famiglia PIC16F di Microchip, sia a coloro che hanno gia' esperienza con i PIC ma vogliono provare questo nuovo e potente dispositivo. Tipiche applicazioni di un microcontrollore che possono essere realizzate con la scheda sono ad esempio: lampeggiare LED con ritardi generici e/O TIMER, comunicazione seriale con un computer, conversione di segnali analogici, la lettura di un pulsante, l'utilizzo di un display LCD, ecc.

Puoi richiedere ulteriori informazioni  qui  

A partire da un template specificamente scritto per questa scheda, l'utente puo' sviluppare i propri programmi, aggiungendo eventualmente altri componenti sulla scheda o tramite connettori, predisposti per rendere disponibili piu' ingressi/uscite.

La scheda si e' rivelata particolarmente utile per progetti di gruppo, poiche' permette di testare il codice con il medesimo hardware.

Il microcontrollore viene programmato "In-Circuit", senza essere rimosso dal suo zoccolo, mentre e' alimentato sulla scheda. E' compatibile sia con programmatori di tipo ICD2, sia con il PICKIT 2. Nel primo caso si utilizza un cavetto con connettore femmina per arrivare al connettore ICSP montato sulla scheda; nel secondo caso il PICKIT 2 puo' essere applicato direttamente, facendo attenzione al verso di inserzione. Il pinout del connettore ICSP e': Vpp - Vdd - GND - PGD - PGC - N.C.

Per quanto riguarda il software necessario a trasferire i file hex nella memoria del microcontrollore, MPLAB IDE di Microchip gestisce il processo con i programmatori citati sopra. Per il PICKIT 2 esiste anche un apposito software, con funzioni aggiuntive.

 

Il regolatore 7805 montato sulla scheda fornisce 5 V. E' necessaria una sorgente di alimentazione esterna, tipicamente 9 o 12 V. L'integrato e' montato sul bordo della scheda per favorire l'utilizzo di un dissipatore termico, se necessario.

Sulla scheda e' presente un sensore di temperatura analogico, il LM335, per sperimentare con il convertitore A/D. Altri due canali (RA2, RA3) sono accessibili tramite un connettore.

Due LED rossi permettono di svolgere i primi  esperimenti con le routine di delay e sono utili per il debug di altri programmi.

In basso a sinistra si trova il connettore per display LCD. A destra e' presente un MAX232 e condensatori a contorno, per la comunicazione seriale RS-232.

Due zone preforate permenttono l'aggiunta di altri componenti, ad esempio un pulsante, un sensore DS1820, ecc. e altri pin generici sono accessibili tramite un altro connettore, per poter interfacciare la scheda con altri circuiti o di espandere le sue funzioni con delle basette millefori (esempi: pilotare un rele' tramite un transistor, leggere un dip-switch, generare dei toni sonori con un altoparlante, ecc.).

La scheda e' di tipo singola faccia, senza solder mask e silkscreen. Le piste sono stagnate con procedimento chimico. Per il montaggio si raccomanda particolare attenzione ai componenti polarizzati (diodi, condensatori elettrolitici). 

Il display LCD puo' essere montato su un connettore femmina (in basso a sinistra) oppure collegato con pezzi di filo. Nella figura si nota anche l'aggiunta di un pulsante collegato a RB2 tramite un ponticello (giallo).

Pin-out del display LCD compatibile con il connettore montato sulla scheda:

 

Particolare del lato rame: stagnatura della piste con procedimento chimico.

Particolare del connettore ICSP (schema) visto dall'alto. Da sinistra verso destra: Vpp, Vdd, GND, DATA, CLOCK, n.c. Il connettore maschio con contatti da 0.025" distanziati di 0.100" puo' essere inserito direttamente nel connettore femmina del programmatore PICKIT 2.

 

 Schema elettrico

 Elenco dei componenti

 

ESPERIMENTI

  Scarica il template e i primi esperimenti! (right-click e "Salva destinazione con nome...", listati formattati per l'editor di MPLAB)

Template

e00.asm

Questo template configura il PIC16F887 con le impostazioni corrette per la scheda sperimentale. A partire dal template sono stati scritti i seguenti programmi; l'utente a sua volta puo' utilizzare questo file, apportandovi eventuali modifiche, per sviluppare le proprie applicazioni. 

Esperimento n.1

e01.asm

Far lampeggiare un LED e' stato per molti il primo progetto con un microcontrollore. Questo programma accende alternatamente i due LED rossi generando intervalli di circa mezzo secondo con routine di uso generale (software loops): conoscendo quanti cicli  macchina richiede un certo ciclo, e' possibile calcolare quanto tempo richiede la sua esecuzione. Per generare automaticamente cicli per ritardi arbitrari e' possibile utilizzare il Delay Code Generator.

Esperimento n.2

e02a.asm

e02b.asm

e02c.c

Comunicazione seriale (RS-232) con un computer. Il primo programma configura il modulo EUSART per ricevere e trasmettere a 9600 baud. Ogni carattere premuto sulla tastiera viene ricevuto dal PIC e re-inviato al computer (eco). E' necessario un terminale seriale (hyperterminal o equivalente) impostato per la stessa velocita', 1 bit di stop, no parita' e no controllo hardware.Il MAX232 sulla scheda adatta i livelli logici CMOS allo standard RS232.

Il secondo programma sfrutta una interessante funzione presente nel PIC16F887: l' auto-baud detection che permette di determinare la velocita' della trasmissione senza conscerla a priori. All'avvio del programma, si accende un LED rosso; a quel punto l'utente deve inviare il carattere 'U' premendo il tasto corrispondente sulla tastiera (esso e' particolare perche' ha 5 fronti di salita). Piu' praticamente, questa funzione consente di calibrare il modulo EUSART rispetto alle tolleranze dell'oscillatore e del trasmettitore.

Il terzo programma, scritto in linguaggio C (HI-TECH PICC LITE) mostra come configurare il modulo USART per 9600 baud con il C. Dopo l'inizializzazione, ogni carattere digitato viene rimandato al computer (eco). 

Esperimento n.3

e03a.c

e03a.hex

Per chi programma con mikroC, un esempio con il convertitore A/D, il sensore LM335, il display LCD: un termometro digitale, creato da un utente del forum per la scheda sperimentale. La tensione analogica fornita dal sensore di temperatura LM335 รจ proporzionale ai gradi Kelvin; essa viene convertita in un dato digitale a 10 bit dal microcontrollore. Successiva elaborazione permette di ricavare il valore in gradi Celsius, che viene visualizzato sul display.

I programmi in linguaggio assembly sono stati assemblati con MPASM WIN v5.11 sotto MPLAB. Per i programmi in C e' stato usato il compilatore HI-TECH PICC LITE v9.50, ove non diverdamente specificato.

 

FAQs:  alcune domande che abbiamo ricevuto sulla scheda, con relative risposte:


1) Non ho a disposizione il BAT42, posso sostituirlo con un comune 1N4148?

Risposta:
e' stato usato un diodo Schottky per la minor caduta di potenziale rispetto ai comuni diodi a giunzione pn; cio' viene consigliato anche nella documentazione di Microchip sulla programmazione In-Circuit. Il livello logico alto al pin /MCLR e' raggiunto anche se si usa un 1N4148, ma il BAT42 garantisce un margine piu' ampio.

2) Il collegamento del condensatore C9 e' diverso rispetto ad altri progetti con MAX232 che ho realizzato, perche'? Anche i valori di C6, C7, C8, C9 sono diversi (il datasheet suggerisce 1 microFarad)

Risposta:
il condensatore C9 puo' essere collegato indifferentemente a massa o a +Vcc. Per quanto riguarda i valori dei condensatori, 1 uF e' il valore minimo; visto che i condensatori elettrolitici hanno una certa tolleranza, valori adatti possono essere 2,2 o o 3,3 o 4,7 uF ad esempio. Possono essere usati condensatori da 10 uF senza problemi ed e' il valore piu' comune ed anche economico, di conseguenza. Nota: per i condensatori elettrolitici i fori sul circuito stampato sono distanziati di 2,54 mm; usando condensatori diversi o di altri produttori e' possibile che il passo dei terminali sia pari a 2 mm e il loro inserimento richiede una leggera pressione e/o adattamento dei terminali.

3) Il mio LCD ha 16 pin ed i contatti sono disposti sul lato inferiore del display (lo vedrei capovolto), mi suggerite di cercarne uno compatibile con la scheda?

Risposta:
non e' necessario. Cerca il datasheet del tuo LCD. Due pin sono probabilmente dedicati alla retroilluminazione. Puoi collegare il display con pezzi di filo e non con il connettore femmina che abbiamo usato per i nostri prototipi.

4) Come mai il connettore del PICKIT 2 ha 6 pin e quello della scheda ne ha 5 (vedo un foro aggiuntivo pero')?

Risposta: sulla scheda puo' essere montato un connettore a sei pin, il foro che vedi serve a questo infatti. Il sesto pin (AUX) non e' usato e non ci sono problemi se lo lasci scollegato. In ogni caso e' importante inserire il PICKIT 2 nel verso giusto: la freccia bianca indica Vpp.

Link utili:

 

 

 

I contenuti di questa pagina e di quelle collegate non possono essere riprodotti in alcun modo senza esplicito accordo con i rispettivi autori. L'unica eccezione consiste nel riassunto e nella citazione di parti di questo materiale a scopo di studio, discussione, documentazione o insegnamento, purche' venga citata la fonte e non si agisca a scopo di lucro.

 

 
 

 

Si declina ogni responsabilita' per errori ed inesattezze contenute in questa documentazione e per danni di qualsiasi natura derivanti dall'uso dei circuiti e dei programmi descritti. Nomi e marchi citati appartengono ai rispettivi proprietari.