|
mini shield 4 fotocellule |
|
Identificazione progetto
progetto 3 |
autore |
|
note |
minishield 4 fotocellule |
Alejandro Gatto |
gatopardo23@libero.it |
Interfacciamo 4 sensori ottici alla Micro-GT mini per realizzare modellini di impianti, plastici, mini automazione a uso hobbystico |
Premessa
Con questo schema potrete realizzare un semplice circuito che potrà interfacciarsi a sistemi di controllo a microprocessore. Nella versione qui presentata vi è la compatibilità con gli ingressi digitali del PLC, ovvero 0 volt (segnale assente) e 24 volt (corrisponde a 1 logico). Si possono facilmente adattare i livelli di tensione in modo che possa essere interfacciato a una scheda a microprocessore con le tensioni standard TTL ovvero 0 - 5 volt. Si consiglia di effettuare l'adattamento alle tensioni TTL in uscita e non in ingresso mantenendo la tensione di alimentazione compresa tra 12 e 24 Vdc, con grande vantaggio per l;a stabilita' del circuito. Questo e' dovuto al fatto che l'operazionale impiegato e' poco adatto ad essere alimentato a 5V.
L'interfacciamento migliore si puo' ottenere impiegando, in uscita, una resistenza in serie e uno zener da 4,7V con anodo a massa e catodo al punto di prelievo. Questa tecnica e' semplice e efficace, spesso usata all'interno del gruppo G-Tronic per risolvere in maniera spiccia i problemi di interfacciamento.
Schema elettrico con descrizione
I quattro amplificatori operazionali sono usati come comparatori non invertenti. Nel caso impiegassimo come elemento sensibile delle foto resistenze standar, nella posizione indica sullo schema si avra' che un partitore fisso viene confrontato con un partitore variabile dovuto alla serie Foto resistenza con resistenza fissa. Il valore ohmmico delle foto resistenze diminuisce in maniera abbastanza lineare all'aumentare della luce incidente, questo comporta che il valore di tensione al morsetto 10 dell'operazionale aumenta se aumenta la luce esterna.
Per invertire la logica bastera' scambiare di posizione la resistenza da 47K con la fotoresistenza.
Nell'attuale posizione , con il fascio di luce incidente presente, il LED in uscita risulta acceso, interrompendo il fascio si spegne, sono cosi generati i due stati logici 1 e 0 tipici della fotocellula cablata chiusa.
Il trimmer , posto all'ingresso invertente, serve a tarare la soglia di scatto della fotocellula, quindi, se appena montato il circuiti avrete l'impressione che non funzioni, niente paura, tentate di effettuare una taratura ruotando il trimmer.
ATTENZIONE: Fotocellule di questo tipo non sono adatte a lavorare in ambiente industriale, ma solo per modellini in scale applicazioni hobbystiche, alcuni dei motivi sono:
Scarsa immunita' al rumore
sensibilita' a range estesi di luminosita', cosa che puo' migliorare usando dei filtri mono cromatici
mancanza di isteresi, difatti sarebbe meglio usare comparatori a finestra .
.
Circuito stampato con descrizione
Riportiamo qui sotto il circuito stampato PCB che sarà alloggiato in 6 esemplari in ogni basetta di misura standard 100x160 mm.
nella prossima figura viene riportato il solo Layout dei componenti per facilitare il montaggio.
La basetta 100x160 mm ha l'aspetto che possiamo vedere nella figura sottostante.
nota importante: Dal link sottostante potrai scaricare il PCB per realizzare il circuito, esso è realizzato con FidoCad, se quando lo apri vedi solo una lista di numeri (netlist), significa che non hai installato il Fidocad nel tuo PC, questo software è gratuito, è totalmente sicuro per il tuo PC e richiede solo un minuto per il download da questo sito. Se ancora non lo hai scaricato lo puoi ottenere cliccando qui -> FidoCad.
Download il file FidoCad delle basetta 100x160 mm
Firmware
Il sottostante programma, scritto e reso disponibile come test, puo' essere facilmente modificato e riadattato alle specifiche esigenze dato che le singole fotocellule sono acquisite in funzioni a se stanti. Solo per la fase di test ho pensato di porre un "eco" led dello stato delle fotocellule nel bargraph onboard, potrete utilizzare il programma cosi come e' semplicemente prelevando i segnali al pin del PIC ed andando a pilotare il transistor di potenza che a sua volta pilota l'attuatore in campo, sia esso una elettrovalvola, un rele', un teleruttore, ecc.
Ecco il Firmware, testato.
/*****************************************************
* Acquisizione mini shield 4 fotocellule
*
* le fotocellule sono normal1->1, interrotte->0 *
*
27/05/2012
*
*
ing. Alejandro Gatto
*
*
piattaforma Micro-GT mini
*
* MpLab 8.43 compilatore Hitech C16
*
*****************************************************/
#define _LEGACY_HEADERS //permette la definizione dei fuse all'interno del
sorgente
#include <pic.h> //libreria standard di riconoscimento hardware
#include <htc.h>
//inline Macro che imposta i fuse
__CONFIG (HS & WDTDIS & PWRTDIS & BORDIS & LVPDIS & DUNPROT & WRTEN & UNPROTECT);
//HS ->imposta oscillatore a alta velocità es 20Mhz, altre opzioni XT,LP,RC
//WDTDIS ->disabilita il watchdog timer obbligatorio nei programmi che non
gestiscono il suo reset
//PWRTDIS ->disabilita il timer di prima accensione
//BORDIS
//LVPDIS ->disabilita la programmazoe a bassa tensione dell'area flasch
//DUNPROT ->
//WRTEN -> abilita la scrittura dell'area flasch
//UNPROTECT -> disabilita la protezione del codice programma
#include "delay.h" //libreria potenziata versione 2010 di MicroChip per creare
ritardi
#define FTC0 RA0
#define FTC1 RA1
#define FTC2 RA2
#define FTC3 RA3
#define LED1 RB0
#define LED2 RB1
#define LED3 RB2
#define LED4 RB3
#define XTAL_FREQ 20MHZ
int a,b;
extern void leggi_FTC0(int a,int b); //predichiarazione funzione 1
extern void leggi_FTC1(void); //predichiarazione funzione 2
extern void leggi_FTC2(void); //predichiarazione funzione 3
extern void leggi_FTC3(void); //predichiarazione funzione 4
main(void) //inizia la funzione principale
{
ADCON1=0b00000111; //DISABILITA GLI INGRESSI ANALOGICI:
00000111 (CIOE' 7) DISABILITA TUTTI GLI INGRESSI
CMCON=0b00000111; //DISABILITA I COMPARATORI ANALOGICI
TRISA = 0xFF; // tutti ingressi digitali
TRISB = 0x00; // tutte uscite digitali
PORTA=0;
PORTB=0;
while(1){ //inizio ciclo infinito
if (FTC0==0){//condizine pressione primo pulsante
leggi_FTC0(a,b); // predisposto per passare due parametri ora inutili
}
else LED1=0;
if (FTC1==0){//condizine pressione secondo pulsante
leggi_FTC1(); // predisposto per non passare parametri
}
else LED2=0;
if (FTC2==0){//condizine pressione secondo pulsante
leggi_FTC2(); // predisposto per non passare parametri
}
else LED3=0;
if (FTC3==0){//condizine pressione secondo pulsante
leggi_FTC3(); // predisposto per non passare parametri
}
else LED4=0;
}
}
void leggi_FTC0(a,b){
if
(FTC0==0){
DelayMs(50);
//Antirimbalzo
if
(FTC0==0){
LED1=1;
}
}
}
void leggi_FTC1(void){
if (FTC1==0){
DelayMs(50);
//Antirimbalzo
if (FTC1==0){
LED2=1;
}
}
}
void leggi_FTC2(void){
if (FTC2==0){
DelayMs(50);
//Antirimbalzo
if (FTC1==0){
LED3=1;
}
}
}
void leggi_FTC3(void){
if (FTC3==0){
DelayMs(50); //Antirimbalzo
if (FTC1==0){
LED4=1;
}
}
}
Download programma completo -> acquisizione minishield 4 fotocellule
Download file hex per Micro-GT mini processore 16F876A -> hex 16F876A
Test
Il test lo
eseguiamo, come di consueto, prima con il realPic simulator e poi con l'hardawre
realistico.
Questo progetto è ridistribuibile secondo i termini di licenzaCreative Commons Attribuzione-Condividi allo stesso modo 3.0 Italia
Note aggiuntive
Visita i siti web sviluppati da Marco Visentini:
http://www.bb-yewilliam.it/ (il bed end brekfast di Jenny per chi fosse di passaggio a Padova)
http://www.amministrazionibugno.it/ (l'agenzia di amministrazione condominiale dell'amico Massimiliano)