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

horizontal rule

Lavoro eseguito dall'alunno Ciro Campanile

horizontal rule

L’obiettivo 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 d’uscita 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

bulletTecnologia CMOS
bulletRisoluzione 8 bit
bullet4 ingressi.

La tensione di riferimento fissa il valore di fondo scala del convertitore AD: così se vogliamo fermare il valore di fondo scala (configurazione d’uscita 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

L’integrato 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 d’uscita dell’operazionale. Per quanto riguarda l’interfaccia 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 d’uscita dell’ ADC al computer, dall’altra 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 dall’altro. 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:

bulletlo stesso numero di bit per carattere (5, 6, 7 o 8);
bulletstesso numero di bit di stop (1, 1 1/2 o 2);
bulletstessa velocità di trasmissione (baud rate);
bulletcontrollo di parità o incluso o escluso per ambedue;
bulletse 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 "

-Backa.gif (8562 byte)