Grix.it - La comunity italiana più grande di elettronica.

Demo Board PIC

Valutazione attuale:  / 0
ScarsoOttimo 
Details

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:

 Demo Board PIC

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:

Demo Board PIC

Demo Board PIC


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:

Demo Board PIC

Demo Board PIC


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:

Demo Board PIC

Demo Board PIC

Demo Board PIC


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:

Demo Board PIC

Demo Board PIC


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:

Demo Board PICDemo Board PIC


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:

Demo Board PIC

Demo Board PIC


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:

Demo Board PIC

Demo Board PIC


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:

Demo Board PIC Demo Board PIC


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:

Demo Board PIC Demo Board PIC


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:

Demo Board PIC Demo Board PIC


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:

Demo Board PIC Demo Board PIC


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:

Demo Board PIC

Demo Board PIC


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. 

Demo Board PIC


Utilizzo del sensore LM35:

Demo Board PICSensore LM35 escluso

Demo Board PICSensore LM35 connesso all’ingresso RA1

 


Utilizzo del display LCD:

Display LCD ON Demo Board PIC

Display LCD OFFDemo Board PIC


Utilizzo della retro-illuminazione:

Demo Board PICRetro-illuminazione connessa all’uscita RA0

Demo Board PICRetro-illuminazione ON


Utilizzo delle resistenze di Pull-Up/Down:

Resistenze connesse in modalità Pull-DownDemo Board PIC

Resistenze connesse in modalità Pull-UpDemo Board PIC

Utilizzo dell’ingresso analogico:

Demo Board PICIngresso analogico connesso ad RA0

Demo Board PICIngresso analogico escluso

Utilizzo del display a led:

Display led ONDemo Board PIC

Display led OFFDemo Board PIC


Utilizzo dei pulsanti:

Demo Board PICPulsanti connessi a VCC

Demo Board PICPulsanti connessi a GND

Utilizzo dei led:

Led ONDemo Board PIC

Led OFFDemo Board PIC


Utilizzo dell’oscillatore:


Demo Board PICOscillatore non connesso(utilizzo delle porte RA6 ed RA7)


Demo Board PICOscillatore 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;
trisb = 0x00;
portb = 0x00;
porta = 0x00;


while(1){

if(porta.f0){
portb.f0 = portb.f0^1;
delay_ms(500);}

if(porta.f1){
portb.f1 = portb.f1^1;
delay_ms(500);}

if(porta.f2){
portb.f2 = portb.f2^1;
delay_ms(500);}

if(porta.f3){
portb.f3 = portb.f3^1;
delay_ms(500);}

if(porta.f4){
portb.f4 = portb.f4^1;
delay_ms(500);}

if(porta.f5){
portb.f5 = portb.f5^1;
delay_ms(500);}

}}

I selettori devono essere settati nel seguente modo:


Demo Board PIC Demo Board PIC Demo Board PIC


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;
trisb = 0x00;
portb = 0x00;
porta = 0x00;


while(1){

 portb = 0x39;
 porta.f3 = 1;
 delay_ms(5);
 porta.f3 = 0;

 portb = 0x06;
 porta.f2 = 1;
 delay_ms(5);
 porta.f2 = 0;

 portb = 0x77;
 porta.f1 = 1;
 delay_ms(5);
 porta.f1 = 0;

 portb = 0x3F;
 porta.f0 = 1;
 delay_ms(5);
 porta.f0 = 0;

}}

I selettori devono essere settati nel seguente modo:


Demo Board PIC Demo Board PIC Demo Board PIC



Il terzo esempio, permette di utilizzare il display LCD a matrice con la retroilluminazione abilitabile dal pic:

void main(void){

CMCON = 0x07;

trisa = 0x02;
trisb = 0x00;
portb = 0x00;
porta = 0x00;

  Lcd_Init(&PORTB);
  LCD_Cmd(LCD_CURSOR_OFF);
  LCD_Cmd(LCD_CLEAR);
  
  LCD_Out(1,1,"Vasile");
  LCD_Out(2,6,"Elettronica");

while(1){
if(porta.f1){
  porta.f0 = porta.f0^1;
  delay_ms(1000);}

}}

I selettori devono essere settati nel seguente modo:

Demo Board PIC Demo Board PIC Demo Board PIC


 Realizzazione:


Demo Board PIC

Demo Board PIC

Demo Board PIC

Demo Board PIC

Demo Board PIC

Demo Board PIC

Demo Board PIC

Demo Board PIC

Download:


Demo Board PIC
Schema elettrico;

Demo Board PICPrint bottom; 

Demo Board PICPrint top; 

Demo Board PICPrint serigrafia.

Per chi è interessato al pcb come quello in foto, può richiederlo tramite messaggio privato, il prezzo è di 4,80€

 

Saluti e buon lavoro

-=>Doctor<=-