Docente: Prof. Mauro De Berardis
Lavori eseguiti dagli alunni della classe
Quinta B TIEN IPSIA
Teramo
Coordinamento: Prof. Mauro De Berardis, Prof.
Loreto Giovannucci
Caso di acquisizione dati
Lavoro eseguito dall'alunno Ciro Campanile
Lobiettivo della tesina è quello
di progettare e realizzare un sistema di controllo di
temperatura, utilizzando un personal computer
programmato in linguaggio Qbasic.
Con un termometro si vuole misurare la
temperatura di un ambiente, se la temperatura sale al di
sopra di una soglia, viene azionato un ventilatore: non
appena la temperatura ritorna al di sotto del valore di
soglia, il ventilatore viene disattivato.
Schema a blocchi
La sonda di temperatura LM.35, fornisce
sul piedino duscita una tensione proporzionale alla
temperatura.
Alla temperatura di 0° C, la sonda non
fornisce nessuna tensione, ma per ogni decimo di grado di
aumento, eroga in uscita una tensione di 1mV. Pertanto,
si può far riferimento alla seguente tabella:
Temperatura
[C°] |
Tensione
[mV] |
0 |
0 |
0,5 |
5 |
1 |
10 |
5 |
50 |
10 |
100 |
20 |
500 |
100 |
1000 |
Il Convertitore
Analogico/Digitale utilizzato è l ADC 0804 e
presenta le seguenti caratteristiche
| Tecnologia CMOS |
| Risoluzione 8 bit |
| 4 ingressi. |
La tensione di riferimento fissa il
valore di fondo scala del convertitore AD: così se
vogliamo fermare il valore di fondo scala (configurazione
duscita 11111111 (255) decimale) ad una Temperatura
di 100°, che corrisponde ad una tensione di 1 V, bisogna
applicare una tensione di riferimento di 0.5 Volt.
Per realizzare i blocchi di
condizionamento e di conversione A/D, ho utilizzato il
circuito LX.1129 di Nuova
Elettronica® realizzato
da alunni dell'Istituto degli anni precedenti, e il cui
funzionamentoho simulato per mezzo di .
.
Elenco componenti:
R1 = 10.000 ohm 1/4 watt |
R6=1.000 ohm 1/4 watt |
C2=100 pF a disco |
C7=1000.000 pF a poliestere
630 V |
R2 = 18.000 ohm 1/4 watt |
R7=47.000 ohm 1/4 watt |
C3=100.000 pF a disco |
DS1=diodo 1N.4007 |
R3 = 1.000 ohm trimmer |
R8=100.000 ohm 1/4 watt |
C4=100.000 pF poliestere |
TR1=NPN tipo BC.547 |
R4 = 1.800 ohm 1/4 watt |
R9=4.700 ohm 1/4 watt |
C5=10.000 pF a poliestere |
TR2=NPN tipo BC.547 |
R5=10.000 ohm 1/4 watt |
C1=100.000 pf a poliestere |
C6=100.000 pF a poliestere 630
V |
IC1=ADC.0804 |
IC2=TS.271CN |
IC3=sonda LM.35 |
RELE'1=relè 12 volt 1 scambio |
CONN1=connettore 25 poli
femmina |
Lintegrato TS.271
CN, è un operazionale che consente tramite il partitore
R2 R3 R4, di applicare
sul piedino 9 del ADC la tensione di riferimento di 0.5
Volt. Questa tensione si può tarare, agendo sul trimmer
R3 e misurando la tensione sul piedino
duscita delloperazionale. Per quanto riguarda
linterfaccia con il PC, esistono in commercio
dispositivi autoalimentati, molto versatili e compatti:
anche in questo caso, il Prof. De Berardis mi ha fornito
un circuito già realizzato da alunni dell'Istituto degli
anni precedenti e basato sul progetto Lx.1127 di Nuova Elettronica®.
schema
elettrico del circuito LX1127
R1=100.000
ohm ¼ watt |
C12=22
pF a disco |
C1=1.000
m F elettr. 25 volt |
C13=22
pF a disco |
C2=100.000
pF poliestere |
C14=1
m F elettr. 63 volt |
C3=100.000
pF poliestere |
RS1=ponte
raddrizz. 100 V 1 A |
C4=100
m F elettr. 25 volt |
XTAL=quarzo
8 MHz |
C5=100
m F elettr. 25 volt |
IC1=m A
7805 |
C6=4,7
m F elettr. 63 volt |
IC2=AD.232 |
C7=4,7
m F elettr. 63 volt |
IC3=EP.1127 |
C8=4,7
m F elettr. 63 volt |
T1=trasform.
25 watt (T025.01) |
C9=4,7
m F elettr. 63 volt |
CONN.1=morsettiera
3 poli |
C10=4,7
m F elettr. 63 volt |
CONN.2=connettore
25 poli F. |
C11=100.000
pF poliestere |
CONN.3=connettore
25 poli M. |
Elenco
componenti del circuito LX1127
L'interfaccia è caratterizzata da due
porte programmabili sia in ingresso che in uscita: come
si vede dallo schema elettrico sopra disegnato, una porta
è utilizzata interamente per comunicare i dati
duscita dell ADC al computer, dallaltra
porta il bit B0 viene utilizzato per pilotare,
tramite TR1 e TR2, il relé, che
attiva o disattiva il ventilatore a seconda della
temperatura rilevata dalla sonda LM.35 e secondo il
programma di gestione che ho scritto utilizzando il
linguaggio Qbasic.
Elettronica, Telecomunicazioni e applicazioni
Il cavo che connette l'interfaccia
parallela/seriale con il computer è stata realizzata
tenendo conto delle caratteristiche delle I/F seriali e
dei connettori DB25 maschio e femmina.
Trasferimento seriale dati a breve distanza.
In seguito si analizzeranno alcuni dei metodi più
usuali per il trasferimento seriale dei dati. Alla base
del trasferimento seriale dei dati è legata la
possibilità di inviare a distanza delle informazioni,
utilizzando un numero ridotto di linee. Nel caso più
semplice esse possono essere solo due. In tal caso il
trasmettitore (Tx) è collegato con il ricevitore
(Rx) con due soli conduttori di cui uno
costituisce il collegamento di massa.
E evidente che volendo trasmettere un dato
formato da otto bit è necessario che ciascun bit del
dato venga inviato, in tempi diversi, sull'unica linea
disponibile. Ovvero si deve effettuare una trasformazione
seriale del dato. Si supponga per esempio di voler
trasmettere il byte, espresso in binario, 1 0 0 1 0 1
1 0 con D7=1, D6=0, D5=0,
D4=1, D3=0, D2=1,
D1=1 e D0=0. Per
rendere seriale tale dato debbono essere inviati sulla
linea di trasmissione uno alla volta i singoli bit,
partendo per esempio dal bit meno significativo D0.
Ogni bit naturalmente deve permanere sulla linea per
uno stesso periodo di tempo. E' chiaro che per inviare
dal trasmettitore al ricevitore il byte completo occorre
un tempo pari a: durata del bit x 8. Quindi per
trasmettere l'informazione contenuta nel byte occorre un
tempo superiore rispetto alla trasmissione di dati
parallela. Per poter aumentare la velocità di
trasmissione occorre diminuire la durata dei bit.
Normalmente il trasferimento di dati è effettuato per
un gran numero byte in successione. Nasce pertanto il
problema di come il ricevitore possa distinguere un byte
dallaltro. In base alla tecnica utilizzata per
inviare la successione di dati si parla di trasmissione sincrona
o di trasmissione asincrona.
In questa sede si prenderà in esame esclusivamente il
trasferimento asincrono. Con tale modalità di
trasferimento, per permettere al ricevitore il
riconoscimento di ciascun byte trasmesso viene aggiunto
ad esso un byte iniziale detto bit di start a
livello basso e uno o più bit alla fine, detti
bit di stop a livello alto.
II numero di bit di stop può essere uno, uno e
mezzo o due. In tale maniera il dato da inviare non sarà
composto da soli 8 bit ma ne conterrà 10 o più. In tale
tipo di trasmissione è comunque prevista la possibilità
di trasferire dati con un numero di bit inferiore a 8
(ovvero caratteri formati da 5, 6, 7 o 8 bit). Inoltre
durante le pause di trasmissione tra un carattere e
l'altro la linea di trasmissione deve essere mantenuta
dal trasmettitore a livello alto. In tal modo il bit di
start porterà la linea di trasmissione da livello alto a
livello basso. Tale stato segnalerà al ricevitore che
sta per iniziare la trasmissione di un nuovo carattere.
La ricezione di ogni singolo carattere può essere
effettuata dal ricevitore se esso conosce di quanti bit
è formato ogni carattere (5, 6, 7, o 8), il numero di
bit di stop inseriti al termine di ogni dato (1, 1 e 1/2
o 2) e se infine conosce la durata dei singoli bit.
Affinché il trasmettitore ed il ricevitore possano
operare con bit della stessa durata essi sono pilotati da
appositi oscillatori al quarzo funzionanti con la stessa
frequenza. Inoltre, poiché è prevista la possibilità
di variare entro certi limiti la durata dei bit e quindi
la velocità di trasmissione, l'apparato ricevitore e
quello trasmettitore debbono necessariamente operare con
la stessa velocità. La velocità di trasmissione è
espressa in bit/s (bit al secondo) ed esprime ovviamente
il numero di bit che vengono trasferiti sulla linea di
trasmissione in un secondo. Tale velocità a volte è
espressa anche come baud rate. I bit che
costituiscono il dato, immessi dal trasmettitore sulla
linea di trasmissione, a volte possono subire delle
alterazioni a causa dei disturbi di diversa natura e cosi
possono venire interpretati dal ricevitore con un livello
diverso da quello iniziale. In tale maniera si producono
errori sul carattere ricevuto essendo uno o più bit a
livello diverso da quello di partenza. E possibile
effettuare un certo controllo sull'esattezza del dato
trasmesso, in modo molto semplice, aggiungendo al
carattere un ulteriore bit detto bit di parità.
In tal modo può essere effettuato dal ricevitore un
controllo detto di parità pari (parole con
un numero pari di 1) o parità dispari
(parole con numero dispari di 1). Fissato a priori quale
tipo di controllo di parità si vuole effettuare, il
trasmettitore aggiunge al carattere un bit a livello alto
o basso in modo che il dato trasmesso contenga sempre un
numero pari di uno per la parità pari, o un
numero dispari di uno per la parità dispari. In
tale maniera il ricevitore, conoscendo quale deve essere
la parità del carattere ricevuto, controlla se essa
effettivamente è rispettata. E evidente che tale
tipo di controllo è efficace, solo se durante la
trasmissione si altera un numero dispari di bit (uno o
più). Può, infatti succedere che alterandosi un numero
di bit pari, il carattere ricevuto risulta errato, ma non
è riscontrato alcun errore di parità. Nella tabella che
segue sono esposti alcuni esempi. Nella prima riga è
presente il carattere trasmesso e in quelle successive il
carattere ricevuto con eventuali errori su alcuni bit. Si
ipotizza un controllo con parità dispari.
Se viene abilitato il controllo di parità il bit di
controllo della parità, viene inserito al termine
del carattere, prima del bit (o dei bit) di stop. Nella
figura seguente è mostrato un carattere seriale a 8 bit
completo bit di start, del bit di controllo di parità
e di un bit di stop. Nella trasmissione asincrona
quindi il trasmettitore invia sulla linea di
trasmissione, che a riposo deve trovarsi a livello alto,
una serie di caratteri ognuno dei quali viene fatto
precedere da un bit di start ed è chiuso, da uno
o più bit di stop e può eventualmente contenere un bit
per il controllo di parità. L'invio di ciascun
carattere può avvenire in qualsiasi momento senza che ci
sia alcuna relazione di tempo con quello precedentemente
trasmesso. E solamente essenziale che la linea, tra
l'invio di un carattere e l'altro, rimanga nello stato di
riposo. Dall'assenza di sincronismo tra l'invio di un
carattere e l'altro deriva il nome di trasmissione
seriale asincrona. II ricevitore che controlla in
continuazione lo stato della linea, nel momento che
constata che il livello su questa si abbassa, interpreta
il fatto come bit di start. Servendosi di un segnale di
clock interno, che in genere ha un periodo pari ad 1/16
della durata dei bit, effettua il campionamento della
linea di trasmissione pressappoco a metà di ogni bit
successivo rilevandone lo stato alto o basso. II
campionamento procede fino al completamento di tutto il
carattere.
Nella figura sono rappresentati due caratteri seriali.
Da quanto precedentemente affermato risulta che per
effettuare il trasferimento di dati in modo asincrono, il
trasmettitore ed il ricevitore debbono essere
programmati perché operino con le stesse modalità,
e, più precisamente, essi debbono lavorare con:
| lo stesso numero di bit per carattere (5,
6, 7 o 8); |
| stesso numero di bit di stop (1, 1 1/2 o
2); |
| stessa velocità di trasmissione (baud
rate); |
| controllo di parità o incluso o escluso
per ambedue; |
| se il controllo di parità e incluso, stesso tipo
di parità (parità pari o parità dispari per
ambedue) . |
In commercio esistono appositi dispositivi
programmabili che possono essere interfacciati
direttamente con le CPU o con il BUS del PC, essi possono
svolgere la funzione di trasmettitori e ricevitori di
dati seriali, provvedendo sia alla trasformazione dei
dati da parallelo a seriale (Tx) che a quella da seriale
a parallelo (Rx), oltre a svolgere altre numerose
funzioni di controllo. Tali dispositivi sono denominati
comunemente UART (Unità Asincrona Ricezione
Trasmissione) o anche ACE (Asynchronous
Comunications Element) se adatti al solo
trasferimento asincrono dei dati o anche USART (Unità
Sincrona Asincrona Ricezione Trasmissione) se possono
operare anche con modalità di trasferimento di tipo
sincrono.
Inglese
DATA SHEET DELL
ADC 0804
Un
segmento del data sheet
Description
The ADC0802 family are CMOS 6-Bit,
successive-approximation A/D converters which use a
modified potentiometric ladder and are designed to
operate with the 8080A control bus via three-state
outputs. These converters appear to the processor as
memory locations or I/0 ports, and hence no interfacing
logic is required.
The differential analog voltage input
has good common mode-rejection and permits offsetting the
analog zero-input- voltage value. In addition the voltage
reference input can be adjusted to allow encoding any
smaller, analog voltage span to the full 8 bits of
resolution.
Traduzione
del segmento
Le famiglie ADC 0802
sono convertitori A/D ad approssimazioni successive CMOS
ad 8 bit che usano un LADDER potenziometrico modificato e
sono progettate per operare con il control bus dell'
8080A per mezzo di uscite three-state. Questi
convertitori appaiono per il processore come locazioni di
memoria oppure porte di ingresso/uscita, e quindi nessuna
logica d'interfaccia è richiesta.
La tensione analogica
differenziale d'ingresso ha un buon rapporto di reiezione
in modo comune e consente di settare il valore analogico
della tensione d'ingresso uguale a 0.
Inoltre, la tensione
d'ingresso di riferimento può essere regolata per
permettere la decodifica di qualsiasi intervallo di
tensione analogica ad una piena risoluzione di 8 bit.
Matematica
La caratteristica di
uscita di un convertitore AD è lineare, ossia è
rappresentata da una retta
Equazione
della retta
Retta
passante per l'origine
Essendo m=sen (ß)/cos(ß)=tg (ß), dove ß rappresenta l'angolo orientato in senso
antiorario formato dall'asse delle ascisse x con la
retta, l'angolo ß può essere determinato applicando la
formula ß=arctg(m)
Laboratorio
di Sistemi
Il sistema di controllo di temperatura
è stato realizzato praticamente utilizzando un
elaboratore IBM PS/2 30® in ambiente Ms Dos 6.0
L'allievo Ciro Campanile
prova il circuito per il controllo di temperatura di tipo
on/off
Il
listato QBasic
'***********************************************************************************************************
'
PROGRAM : C_TEMP.BAS
'
COMPILING: BC C_TEMP
'
LINKING : LINK C_TEMP
'
EXECUTABLE: C_TEMP.EXE
'
AUTHOR : CIRO CAMPANILE
'
TEACHER : MAURO DE BERARDIS
'
DATE : 1999
'DESCRIPTION:
Programma di gestione, scritto in linguaggio QBasic, che
realizza l'interfaccia software di un
'
sistema di acquisizione dati e di controllo ON/OFF di
temperatura. La temperatura, rilevata con una sonda
'
LM.35 condizionata, convertita e trasmessa al PC con una
scheda di acquisizione e una I/F
'
seriale-parallela bidirezionale, viene confrontata con
una temperatura di riferimento: se è superiore
'
viene attivato un elemento riaffreddatore (ventilatore)
'***********************************************************************************************************
'
viene fissato il valore di default della temperatura di
riferimento
TRIF
= 23
DATO=20
GIRA
= 1
j=0
'
apre ed inizializza la porta seriale COM1,il baud-rate
viene fissato
'
a 2400 bit/sec, nessuna parità (none), 8 bit di dati, 1
bit di stop
OPEN
"Com1:2400,n,8,1" FOR RANDOM AS #1
GOSUB
MASK
WHILE
GIRA = 1
PRINT
#1, CHR$(0);
PRINT
#1, CHR$(0);
PRINT
#1, CHR$(2);
DATO$
= INPUT$(1, #1)
DATO
= ASC(DATO$) * 127/255
LOCATE
13, 21: COLOR 15, 1: PRINT " TEMPERATURA RILEVATA :
"; INT(DATO*10) / 10
LOCATE
13,55:PRINT "øC"
IF
DATO>TRIF THEN
j=J+1
ELSE
J=0
ENDIF
JMAX=15
IF
DATO > TRIF AND J>JMAX THEN
PRINT
#1,CHR$(1);
PRINT
#1,CHR$(1) ;
PRINT
#1,CHR$(5) ;
PRINT
#1,CHR$(1) ;
LOCATE
18,30: COLOR 15,0: PRINT " VENTILATORE ON "
ELSE
PRINT
#1,CHR$(1);
PRINT
#1,CHR$(1) ;
PRINT
#1,CHR$(5) ;
PRINT
#1,CHR$(0) ;
LOCATE
18,30: COLOR 15,0: PRINT " VENTILATORE OFF "
END
IF
FOR
I=1 TO 2000
IF
INKEY$ = "I" OR INKEY$="i" THEN
LOCATE
12,21:COLOR 15,0:PRINT " "
LOCATE
12, 21: INPUT "TEMPERATURA DI RIFER. [øC]:";
TRIF
GOSUB
MASK
I=2000
END
IF
IF
INKEY$ = "F" OR INKEY$="f" THEN
GIRA
= 0
I=2000
END
IF
NEXT
I
WEND
CLS
LOCATE
12,30:COLOR 7,0:PRINT "FINE ELABORAZIONE"
END
'
'
SUBROUTINES
'
MASK:
CLS
SCREEN
0
LOCATE
2, 29: COLOR 15, 0: PRINT " IPSIA TERAMO"
LOCATE
3, 29: COLOR 15, 0: PRINT " CLASSE VB"
LOCATE
4, 29: COLOR 15, 0: PRINT "ANNO SCOLASTICO
98-99"
LOCATE
6, 10: COLOR 14, 0 : PRINT "SISTEMA DI ACQUISIZIONE
DATI PER IL CONTROLLO DI TEMPERATURA"
LOCATE
7, 10: COLOR 15, 0 : PRINT " Tesina realizzata
dall'alunno Ciro Campanile"
LOCATE
12, 21:COLOR 15,1 : PRINT " TEMPERATURA DI
RIFERIMENTO: "; TRIF
LOCATE
12,54: PRINT " øC"
LOCATE
22, 10: COLOR 14,1: PRINT " <F> per finire
<I> imposta temperatura di riferimento "
-