Demo Board PIC
Link Articolo Originale:
http://www.grix.it/viewer.php?page=9974
Introduzione:
Lavorare e sperimentare con i microcontrollori pic è un esperienza molto gratificante; con un solo integrato si possono realizzare funzioni molto complesse risparmiando tempo e denaro.
Per testare il funzionamento è però necessario dotare il micro di alcuni componenti che ne permettano l’utilizzo, c’è chi ricorre all’utilizzo di una bread-board, chi preferisce saldare i componenti su millefori e chi realizza delle vere e proprie schede su PCB.
Ognuna delle precedenti scelte ha i propri pro e contro. L’utilizzo della bread, permette un rapido inserimento/rimozione dei componenti, ma nel caso in cui la si voglia utilizzare per progetti futuri è alquanto scomoda, perché impegnerebbe del posto utile allo sviluppo di progetti che non richiedono il micro; in più è sempre presente il rischio di spostare componenti o connettori. Le millefori invece permettono di saldare i componenti, quindi la si può utilizzare anche per altre applicazioni senza correre il rischio di “perdere i pezzi per la strada”; l’aspetto negativo di questa scelta risiede nella difficile concentrazione di periferiche su una superficie ridotta senza l’utilizzo di ponticelli realizzati con del filo. La scheda realizzata su pcb invece, permette un alloggio diretto dei componenti e distribuire le varie periferiche su uno spazio più ottimizzato in modo semplice.
Con questa breve distinzione non voglio screditare un metodo in confronto all’altro, ma è semplicemente una mia “idea” sulle tre tipologie elencate.
Dopo un paio d’anni intensi passati a sperimentare progetti con i pic, ho deciso di realizzare una scheda che avesse “a bordo” tutte le periferiche maggiormente utilizzate nei miei progetti, e la possibilità di espandere le risorse con circuiti esterni.
Descrizione:
Come visibile dallo schema elettrico, le periferiche che ho previsto sulla scheda sono le seguenti:
- Alimentatore;
- Pulsanti sugli ingressi della porta;
- Pulsanti sugli ingressi della portb;
- Led sulle uscite della porta;
- Led sulle uscite della portb;
- Resistenze di pull-up o pull-down sugli I/O della porta;
- Resistenze di pull-up o pull-down sugli I/O della portb;
- Oscillatore al quarzo;
- Display led a 4 digit;
- Display lcd con back light abilitabile in manuale o dall’uscita RA0;
- Trimmer per segnali analogici su RA0;
- Sensore di temperatura LM35 su RA1;
- Connettore per programmazione e debug;
- Connettore di espansione;
- Zoccolo per pic a 18 pin;
- Zoccolo per pic a 8 pin(solo test, non è possibile la programmazione e il debug).
Alimentatore:
L’alimentatore, permette di fornire alimentazione a tutte le periferiche presenti sulla scheda grazie all’ausilio si uno stabilizzatore lineare 7805; il diodo D1 evita che una possibile inversione di polarità possa danneggiare il circuito , mentre il LED17 notifica l’utente che la board è alimentata.
NB. Per piccoli assorbimenti è possibile utilizzare direttamente il programmatore(se è dotato di tale funzione) tramite il connettore per la programmazione.
Pulsanti RA ed RB:
La maggior parte dei nostri progetti sfruttano i pulsanti per gestire gli input, grazie ad essi è possibile inviare un livello logico agli ingressi del pic per fargli eseguire una determinata operazione: dalla semplice accensione di led fino alla gestione di operazioni molto complesse. Grazie al selettore SV5 per RA e SV6 per RB è possibile decidere il tipo di livello logico che si intende far giungere agli ingressi del micro.
Led RA ed RB:
I led, un altro utile accessorio che non poteva mancare sulla board, essi aiutano moltissimo a testare le varie tipologie di programmi che si realizzano; è possibile includerli o meno semplicemente agendo sui selettori SV3 per i led della RA e SV4 per quelli della RB.
Per limitare lo spazio occupato ho preferito utilizzare dei resistori nel contenitore sil (RN1 ed RN2).
Voglio precisare che nel caso in cui si utilizza l’oscillatore esterno, non è possibile usufruire delle porte RA6 ed RA7; in più RA5 è accessibile solo se durante la programmazione si setta l’MCLR interno.
Resistenze di pull-up/down su RA ed RB:
Un'altra interessante aggiunta che ho previsto sulla demoboard è la possibilità di inserire resistenze di pull-up o pull-down sulle linee di I/O. Grazie ai due selettori SV11 e SV12 è possibile selezionare la tipologia di resistenza, ovvero di Pull-up o Pull-down. Anche in questo caso per ridurre l’ingombro ho preferito utilizzare resistori in package sil.
Oscillatore al quarzo:
Anche se il pic dispone di un oscillatore interno, l’utilizzo di un quarzo permette di avere una maggiore frequenza di oscillazione e soprattutto una maggiore precisione nel scandire il tempo.
Per semplici applicazioni in cui non è necessario sincronizzarsi su tempistiche molto precise, l’oscillatore interno è più che sufficiente; ma se invece è necessario rispettare degli intervalli molto precisi, tipo la comunicazione UART, l’oscillatore interno difficilmente permette una comunicazione corretta, per questo motivo è meglio affidarsi ad un oscillatore quarzato.
I selettori SV7 E SV8 permettono di utilizzare le linee RA6 ed RA7 sia come I/O settando l’oscillatore interno al pic, che utilizzarle come ingressi per l’oscillatore.
Display led a 4 digit:
Tramite la PORTB è possibile pilotare dei display a 7 segmenti, utilizzando la tecnica del multiplexing; ovvero si abilitano in modo ciclico e a frequenza molto e26rdquo; sulle tre tipologie e i catodi dei display, e nel contempo sulle linee dati(RB) vengono trasmessi i valori da attribuire ai singoli digit; facendo ciò, all’occhio umano risulterebbe che i display siano accesi contemporaneamente.
L’utilizzo dei display è molto utile quando si vuole far interagire l’utente con il micro, infatti grazie ad esso è possibile visualizzare delle informazioni utili per l’esecuzione di alcuni programmi; il selettore SV9 permette di abilitare o disabilitare i display semplicemente rimuovendo il collegamento di massa dei transistor.
Display LCD con Back light:
A bordo della demoboard non poteva mancare assolutamente un display LCD 16x2 retroilluminato; grazie ad esso è possibile comunicare in modo più esauriente con l’utente, infatti è possibile non solo visualizzare numeri e alcuni caratteri, ma quasi tutta la tabella ASCII e caratteri personalizzati; per cui è possibile realizzare un interfaccia più completa e interagire in modo semplice con l’utente.
Il display è gestito dalle linee di comando RB, compatibile quindi con la libreria del compilatore Mikroc; la retroilluminazione è gestibile sia in manuale che tramite l’uscita RA0 del micro, semplicemente selezionando le due modalità tramite il selettore SV13.
Il display è attivabile o disattivabile tramite il selettore SV14 che fornisce o meno alimentazione al display.
Trimmer multigiro:
Alcuni dispositivi compatibili con la board(tra cui il 16F88) hanno la possibilità di acquisire segnali analogici tramite il convertitore A/D integrato; digitalizzando l’informazione è quindi possibile gestire trasduttori analogici. Il segnale analogico prelevabile dal pic tramite la linea analogica RA0 è fornito dal trimmer multigiro R1. È possibile disattivare questa funzione agendo sul selettore SV10, in modo da permettere l’utilizzo della linea per altre applicazioni.
Sensore di temperatura LM35:
Oltre al trimmer multigiro, sulla scheda ho previsto anche un sensore di temperatura analogico, LM35; grazie ad esso è possibile rilevare la temperatura ambiente ed essere letta dall’ingresso RA1. Il sensore LM35 incrementa di 10mV l’uscita per ogni grado centigrado rilevato, per cui 20°C corrispondono a 200mV.
Il selettore SV15 permette di liberare la linea RA1 dal segnale analogico uscente dal sensore oppure connetterlo ad esso per essere gestito dall’ingresso del micro.
Connettore per programmazione e debug:
Come introdotto nelle prime righe dell’articolo, la scheda permette la programmazione in-circuit, ovvero è possibile programmare il micro direttamente sulla board di sviluppo; permettendo così di non estrarre il pic.
Dal connettore è possibile prelevare anche l’alimentazione per testare piccoli circuiti che non richiedono una sostanziosa corrente per funzionare.
Il connettore è compatibile con il programmatore Pickit della microchip, quindi permette di integrare facilmente la scheda con l’ambiente di sviluppo MPLAB sia per la programmazione che per la funzione di debug.
Connettore di espansione:
Il connettore SV1 permette l’accesso in modo semplice a tutte le linee di I/O della board; sui suoi 20 pin sono riportate le linee RA, RB e l’alimentazione. Il connettore di espansione permette di utilizzare altre periferiche non previste sulla scheda, permettendo di ampliare notevolmente le applicazioni sviluppabili.
Zoccolo per pic a 8 e 18 pin:
Nello schema elettrico sono riportati i pin-out del 16F628 e del 12F675, ma non per questo la demoboard è compatibile solo con quei modelli; infatti permette il test di vari dispositivi aventi 8 e 18 pin.
La programmazione e il debug è possibile solo con i pic a 18 pin, altrimenti era necessario utilizzare altri selettori per selezionare le linee di programmazione per i pic a 8 pin, in quanto le linee non sono compatibili con ambedue i micro. Il socket IC2 è stato inserito ugualmente perché potrebbe tornare utile in caso si voglia testare un programma sviluppato per quel dispositivo.
Selezione delle periferiche:
Le periferiche elencate precedentemente per funzionare devono essere abilitate tramite i 13 selettori accessibili sul lato sinistro e al centro della board; l’utilizzo degli switch si è reso necessario in quanto le linee devono essere occupate da un solo dispositivo alla volta, altrimenti potrebbero esserci delle instabilità o guasti. Gli unici due selettori collocati al centro della scheda servono per escludere o meno l’utilizzo del quarzo.
Per focalizzare più facilmente gli switch, vicino ad ognuno di essi è serigrafato il nome del dispositivo che abilitano.
Utilizzo del sensore LM35:
Sensore LM35 escluso
Sensore LM35 connesso all’ingresso RA1
Utilizzo del display LCD:
Display LCD ON
Display LCD OFF
Utilizzo della retro-illuminazione:
Retro-illuminazione connessa all’uscita RA0
Retro-illuminazione ON
Utilizzo delle resistenze di Pull-Up/Down:
Resistenze connesse in modalità Pull-Down
Resistenze connesse in modalità Pull-Up
Utilizzo dell’ingresso analogico:
Ingresso analogico connesso ad RA0
Ingresso analogico escluso
Utilizzo del display a led:
Display led ON
Display led OFF
Utilizzo dei pulsanti:
Pulsanti connessi a VCC
Pulsanti connessi a GND
Utilizzo dei led:
Led ON
Led OFF
Utilizzo dell’oscillatore:
Oscillatore non connesso(utilizzo delle porte RA6 ed RA7)
Oscillatore connesso
Esempi di utilizzo:
Di seguito sono elencato alcuni programmi di esempio per testare le funzionalità della scheda, il micro utilizzato è un 16F628A e il compilatore è il Mikroc.
Il primo programma permette di accendere uno o più led della PORTB agendo sui pulsanti della PORTA:
void main(void){
CMCON = 0x07; trisa = 0x00;
if(porta.f0){ if(porta.f1){ if(porta.f2){ if(porta.f3){ if(porta.f4){ if(porta.f5){ }} |
I selettori devono essere settati nel seguente modo:
Il secondo esempio, permette di gestire il display a led, visualizzando con la tecnica del multiplexing la scritta “CIAO”:
void main(void){
CMCON = 0x07; trisa = 0x00;
portb = 0x39; portb = 0x06; portb = 0x77; portb = 0x3F; }} |
I selettori devono essere settati nel seguente modo:
Il terzo esempio, permette di utilizzare il display LCD a matrice con la retroilluminazione abilitabile dal pic:
void main(void){
CMCON = 0x07; trisa = 0x02; Lcd_Init(&PORTB); while(1){ }} |
I selettori devono essere settati nel seguente modo:
Realizzazione:
Download:
Per chi è interessato al pcb come quello in foto, può richiederlo tramite messaggio privato, il prezzo è di 4,80€
Saluti e buon lavoro