INTERFACCIA
RELE' PER PC
Introduzione
Descrizione
Elenco
Componenti
Collaudo
e messa a punto
Relay.exe
Delay.exe
Waitfor.exe
Possibili
Applicazioni del Circuito
vedi pure Progetto completo su Geocities
INTRODUZIONE
Con
il rapido progresso della tecnologia dei computers, quasi ognuno di noi
dispone di un vecchio 8088 o un 286 che non sa come utilizzare.
Questi
computer sono disponibili per essere adoperati come controllori dedicati
ad usi particolari come accendere/spegnere luci o altri apparati elettrici.
Il
progetto descrive un circuito semplicissimo per comandare 7 rele' di potenza
tramite l'interfaccia parallela del PC.
Ogni
rele' viene comandato dallo stato ON/OFF di un predefinito bit della porta
parallela.
Di
seguito viene riportato l'elenco della documentazione:
DESCRIZIONE
Il
circuito e' imperniato sull'integrato ULN2003.
All'interno
del chip sono alloggiati 7 darlington di potenza con i quali vengono pilotati
altrettanti rele' RL1-RL7.
I transistor
sono adatti a ricevere in ingresso espressamente dei livelli a 5 Volt.
I diodi
di volano che normalmente si aggiungono per evitare le extratensioni di
spegnimento della induttanza dei rele' sono gia' contenuti nel chip stesso.
E'
ovvio che i transistor invertono la polarita' del segnale d'ingresso.
Il
condensatore C1 e' usato come filtro la tensione d'alimentazione a 24V.
Il
cavo della parallela va collegato al connettore P9.
La
tensione di alimentazione dei rele' va collegata al connettore P8.
Il
cavo verso la porta parallela non dovrebbe superare la distanza di un metro,
anche se non dovrebbero esserci problemi visto che il circuito non ha elementi
di memoria.
Ogni
uscita del rele' dispone di un deviatore collegato ai connettori P1-P7
a 3 vie corrispondenti ai rele' RL1-RL7 rispettivamente.
Il
pin 2 di ogni connettore corrisponde al centrale del deviatore mentre il
pin 1 e' relativo al contatto NO e il pin 3 al contatto NC.
Ad
ogni rele' e' associato un led verde che si accende quando la bobina relativa
e' eccitata.
Le
resistenze vengono utilizzate per polarizzare i led.
Per
semplificare il circuito stampato e' stato previsto il montaggio delle
resistenze in verticale.
Ogni
rele' dispone di un deviatore doppio.
Per
semplicita' e' stato utilizzato un solo deviatore sfruttando sia il contatto
normalmente chiuso che quello normalmente aperto.
Qualora
non servisse il contatto normalmente chiuso (caso piu' comune) e' possibile
usare dei connettori a 2 vie invece che tre, lasciando libero il foro relativo
al pin 3.
Per
questo circuito sono stati utilizzati dei rele' a 24 V.
E'
possibile usare anche rele' con tensioni di funzionamento diverse
da 24 V, purche' inferiori, cambiando se necessario il valore delle resistenze
dei diodi.
ELENCO
COMPONENTI
Piastrina
-
R1-R7
= Resistenza 3K3 - 5% - 1/4W
-
C1 = Condensatore
Elettrolitico verticale 100uF/35V
-
U1 = Circuito
Integrato ULN2003A
-
D1-D7
= Diodo led verde da 5 mm
-
RL1-RL7
= Rele' da 24V - Contatti 10A
-
P1-P7
= Connettore 3 vie a saldare
-
P8 = Connettore
2 vie a saldare
-
P9 = Connettore
IDC 16 pin maschio
Cavo di
collegamento
-
1 Connettore
IDC 16 femmina a crimpare
-
1 Connettore
DB25 femmina a crimpare
-
1 metro
flat 16 fili
COLLAUDO
E MESSA A PUNTO
Preparare
un cavo flat a 16 pin collegando da un lato un IDC 16 femmina e dall'altro
un connnettore DB25 maschio.
Durante
la crimpatura del connettore DB25 accertarsi di posizionare il cavo flat
sul lato estremo del pin 1.
Cio'
e' dovuto al fatto che vengono utilizzati solo i pin 1-8 e 14-21 della
porta parallela lasciando gli altri 9 inutilizzati.
Per
il controllo dei rele' sono utilizzati i bit D0-D6 della porta parallela.
Per
semplificare il circuito stampato ed evitare l'uso di un biplaccato, la
connessione dei pin e' stata realizzata in ordine inverso a quello che
ci si poteva aspettare:
D0
= RL7
D1
= RL6
D2
= RL5
D3
= RL4
D4
= RL3
D5
= RL2
D6
= RL1
Nella
programmazione della porta bisogna tener conto di questo fattore.
Scompattando
il file relativo alla parte software si possono trovare all'interno tre
utility DOS:
-
RELAY
per controllare i bit della parallela
-
DELAY
per
attendere un predeterminato numero di secondi
-
WAITFOR
per attendere fino ad un predefinito orario in HH:MM
Creare
una directory di destinazione dei file e utilizzare il PC in modalita'
DOS per evitare problemi con Windows.
Connettere
una sorgente di tensione continua a 24V sul connettore P8.
Connettere
7 carichi sui connettori P1-P7.
Collegare
il cavo flat accertandosi del corretto orientamento del pin 1 sul connettore
P9 a meno che non abbiate usato un IDC polarizzato per evitare l'inversione
del collegamento.
Lanciare
il batch file test.bat e controllare che i rele' si attivino e disattivino
in sequenza da RL7 a RL1 con una cadenza di un secondo.
Utilizzando
le utility descritte e' possibile creare dei file batch secondo i gusti.
RELAY.EXE
L'utility
RELAY va utilizzata nel seguente modo:
RELAY
Il
valore di hex byte puo' essere specificato nel range 00h (tutti i rele'
OFF) - 7Fh (tutti i rele' ON).
Esempio:
RELAY 5A
La
porta parallela generera' l'output 5Ah (binary 0101 1010) causando l'attivazione
dei rele' RL6, RL4, RL3, RL1.
Di
seguito viene riportato il sorgente del programma.
Relay .c
#include
#include
#define LPT1 0x00400008 /* BIOS printer
address entries */
#define LPT2 0x0040000a
#define LPT3 0x0040000c
#define LPT4 0x0040000e
int main(int argc, char *argv[])
{
unsigned int port,data;
unsigned int far *bios_printer_addr;
if (argc>3) exit(1);
switch(argc)
{
case 1:
exit(1);
case 2:
port=*(bios_printer_addr=LPT1);
if (port==NULL)
{
printf("LPT1 does not exist
");
exit(1);
}
sscanf(argv[1],"%x",&data);
break;
case 3:
if (argv[1][0]=='/')
switch(argv[1][1])
{
case
'1':
port=*(bios_printer_addr=LPT1);
if (port==NULL)
{
printf("LPT1 does not exist
");
exit(1);
}
sscanf(argv[2],"%x",&data);
break;
case
'2':
port=*(bios_printer_addr=LPT2);
if (port==NULL)
{
printf("LPT2 does not exist
");
exit(1);
}
sscanf(argv[2],"%x",&data);
break;
case '3':
port=*(bios_printer_addr=LPT3);
if (port==NULL)
{
printf("LPT3 does not exist
");
exit(1);
}
sscanf(argv[2],"%x",&data);
break;
case '4':
port=*(bios_printer_addr=LPT4);
if (port==NULL)
{
printf("LPT4 does not exist
");
exit(1);
}
sscanf(argv[2],"%x",&data);
break;
default:
printf("Invalid printer port!
");
exit(1);
}
else exit(1);
}
outportb(port, (char)data);
return 0;
}
DELAY.EXE
L'utility
DELAY va utilizzata nel seguente modo:
DELAY
Il
valore massimo ammesso e' 32767. Il programma non controlla che il parametro
possa avere valore minore di 1 o maggiore di 32767.
Esempio:
DELAY 100
Il
programma rimane fermo per 100 secondi prima di terminare.
Di
seguito viene riportato il sorgente del programma.
Delay.c
#include
#define ESC 0x1b
int main(int argc,
char *argv[])
{
unsigned
int seconds;
if (argc<2)
exit(1);
seconds
= atoi(argv[1]);
while
(seconds) {
printf("
%05d",seconds);
delay(1000);
seconds--;
if (kbhit()) { if (getch()==ESC) exit(1); }
}
printf("
%05d",seconds);
return
0;
}
WAITFOR.EXE
L'
utility WAITFOR va utilizzata nel seguente modo:
WAITFOR
La
notazione usata e quella in ore-minuti su 24 ore.
I valori
ammessi sono 0-23 per HH e 0-59 per MM.
Esempio:
WAITFOR 18:30
Con
questo comando, il PC rimane in attesa fino alle ore 6 e 30 del pomeriggio.
Di
seguito viene riportato il sorgente del programma.
waitfor.c
#include
#include
#include
#define ESC 0x1b
int main(int argc,
char *argv[])
{
char timebuf[9];
char timeold[9];
if (argc<2)
exit(1);
do {
_strtime(timebuf);
if (strcmp(timebuf, timeold)) {
printf("
%s",timebuf);
strcpy(timeold,timebuf);
}
if (kbhit()) { if (getch()==ESC) exit(1); }
}
while (strncmp(argv[1],
timebuf, 5));
return 0;
}
POSSIBILI
APPLICAZIONI DEL CIRCUITO
Il
circuito e' stato progettato come complemento al Progetto del Presepio
Elettronico Multimediale per aggiungere ulteriori 7 uscite ON/OFF di potenza.
I contatti
dei rele' sostengono una corrente nominale di 10A @ 220V pari a oltre 2KW,
ma per ragioni di affidabilita' sarebbe opportuno limitare la corrente
a 3/4 A, specialmente per carichi fortemente induttivi.
Un'altra
interessante applicazione e' quella di un timer programmabile a 7 uscite.
E'
possibile utilizzarlo come timer one-shot.
Ad
esempio lo uso come timer per il bromografo o per il cancellatore di EPROM.
Con
la potenzialita' del PC e' possibile programmare il timer per tempi molto
lunghi e stabilire l'accensione e lo spegnimento delle uscite ad ore prestabilite.
Tenuto
conto della notevole potenza che il circuito riesce a controllare, potrebbe
anche essere utilizzato per accendere e spegnere una insegna luminosa costituita
da sette gruppi di lampade, creando degli splendidi effetti durante le
feste natalizie o altri tipi di manifestazioni.