MATURITA' ELETTRONICA AMBRA 1990
***
Nel centro storico di una città sono dislocate 8 stazioni per il rilevamento ed il monitoraggio a distanza della concentrazione di ossido di carbonio nell'aria e per la misura della temperatura della stessa tramite appositi sensori.
Ciascuna stazione effettua i rilevamenti delle due grandezze ad intervallo di un minuto ed immagazzina le informazioni.
Tutte le stazioni sono collegate in rete configurata a stella ad un centro di raccolta e controllo che funge da nodo master posto al centro della stella e sono da esso interrogate ciclicamente ad intervalli di un'ora circa per ricevere i dati raccolti.
Ciascuna stazione è costituita da :
- un sensore di temperatura che fornisce una corrente di 1 µA per ogni grado Kelvin e deve rilevare temperature in un campo compreso tra -20 °C e +50 °C (per T= 273 °K I = 273 µA );
- un sistema rilevatore delle presenza di ossido di carbonio nell'aria che fornisce in uscita una tensione continua secondo la tabella riportata di seguito :
V (volt) 0 1.25 2.50 2.90 3.12 3.50 3.75 4.05 4.25 4.40 4.50 5
C (ppm) 50 100 300 500 700 1000 1300 1700 2000 2300 2500 4500
- un multiplexer analogico che accetta in ingresso segnali in tensione compresi tra 0 V e +5V;
- un convertitore A/D ad approssimazioni successive che accetta in ingresso per la conversione ad 8 bit (con tempo di conversione 25 µsec) tensioni comprese tra 0 V e +10 V;
- un µP che acquisisce e memorizza i dati relativi alla temperatura ed alla concentrazione di ossido di carbonio.
-----
Il candidato, formulate le necessarie ipotesi aggiuntive :
- dimensioni le opportune interfacce hardware : sensore/mux, sistema di rilevamento ossido/mux, mux/convertitore;
- descriva tramite schema a blocchi la struttura della stazione di rilevamento e dell'intero collegamento interponendo e illustrando i blocchi e le interfacce che ritiene intervengano nel processo di acquisizione , memorizzazione, trasmissione dei dati;
- scriva in un linguaggio di sua conoscenza il programma di gestione ed immagazzinamento dati da parte del µP;
- illustri con quali modalità e quali dispositivi si possono inviare da ciascuna stazione al centro di controllo, situato a distanza, i dati raccolti dal µP.
Il candidato inoltre facoltativamente :
- descriva un adeguato protocollo di comunicazione che consenta il corretto trasferimento dei dati (livello 2 del modello OSI/ISO);
- descriva una possibile struttura alternativa della rete che collega, con un unico cavo, le 8 stazioni periferiche ed il centro di raccolta dei dati.
RISOLUZIONE
Il problema può essere affrontato e risolto in vari modi, al limite non rispettando alcune richieste specifiche del progetto e offrendo quindi alcune soluzioni circuitali più flessibili e moderne.
Si tenga presente che per la misura di un valore, e quindi per la successiva conversione A/D, ogni sensore dispone di circa mezzo minuto di tempo e che il tempo dedicato ad ogni singola stazione per la trasmissione dei dati memorizzati è di : 60 min / 8 = 7 min circa. Ne consegue che ogi volta che una delle stazioni viene interpellata dovrà inviare alla stazione centrale, in un tempo massimo di circa 7 minuti, 60 valori di °T e 60 di CO misurati e memorizzati in RAM.
Come si vede non esiste un problema di tempi visto che questi risultano essere più che sufficienti per gestire l'intero processo di acquisizione, memorizzazione e trasmissione dei dati.
Vediamo una prima possibile soluzione :
SCHEMA A BLOCCHI COMPLESSIVO DEL SISTEMA

Si tratta di un sistema complesso che può essere descritto analizzando le funzioni di ogni suo singolo blocco.
Per soddisfare le richieste del progetto occorrono :
1) Un convertitore I/V che ha lo scopo di trasformare il segnale in corrente proveniente dal sensore di temperatura in un segnale di tensione che copra il range di lavoro (0/+5 volt) del MUX analogico.
2) Un inseguitore di tensione che ha lo scopo di non caricare il segnale proveniente dal rilevatore di CO; deve cioè presentare un'alta impedenza di ingresso ed una bassa impedenza d'uscita.
3) Un MUX analogico la cui funzione è quella di selezionare in base ad un opportuno segnale di comando quale dei due canali inviare al convertitore A/D.
4) Un amplificatore che deve innalzare il segnale uscente dal MUX per adattarlo alla tensione in ingresso al convertitore (0/+10 volt).
5) Un convertitore A/D con le caratteristiche richieste dal testo.
6) Un sistema di trasmissione a distanza dei dati.
7) Un sistema a µP comprendente ROM e RAM :
- il µP ha il compito di acquisire i dati, salvarli, inviarli a distanza, controllare l'intero sistema e gestire i relativi segnali di controllo per una corretta temporizzazione delle operazioni;
- la RAM ha il compito di memorizzare temporaneamente i dati acquisiti;
- la ROM contiene il programma di gestione.
8) Una rete di decodifica degli indirizzi dei vari dispositivi contenente eventualmente anche un timer per la temporizzazione delle operazioni di acquisizione;
9) Un visualizzatore a display (opzionale)
1) CONVERTITORE I / V
Il sensore di temperatura ha un comportamento lineare :
253 microampere per il limite inferiore (- 20 °C) e 323 per il limite superiore (+ 50 °C).
Il segnale in corrente variabile da 253 a 323 microamper deve essere convertito in una tensione variabile da 0 a +5 volt.
Uno schema possibile è quello riportato di seguito.
Dato che, come si è visto, è presente un offset di 253µA. si dovrà fare in modo che una corrente pari a questa sia sempre sottratta. Il circuito sarà allora quello di figura:

la RK, supponendo Vcc=12V, sarà data da:
![]()
In questo modo quando IT=273µA, sarà:
![]()
Quando invece IT=323µA si avrà:
![]()
da cui si ricava R sapendo che Vo dev'essere 5V:
![]()
In questo caso si potrà adoperare una resistenza fissa di 68K con in serie un trimmer da 4.7K.
Una soluzione alternativa, non rispondente però alle specifiche del problema, potrebbe essere quella di usare un sensore di temperatura che fornisca direttamente una tensione.
Il sensore LM335 sarebbe ideale. In tal caso occorrerebbe solamente riportare la tensione nell'ambito della variazione 0-5 volt accettata in ingresso dal MUX.
2) INSEGUITORE
La relazione tensione - concentrazione ossido di carbonio ha l'andamento riportato in figura.

Potrebbe essere supposto esponenziale. Risulta però non semplice la determinazione , anche in via sperimentale, della esatta legge matematica che lega le due grandezze per cui anche l'uso di un amplificatore antilogaritmico appare eccessivo.
Un semplice INSEGUITORE DI TENSIONE può servire allo scopo di separare il sensore di CO dagli stadi successivi. La tensione generata dal sensore in questo caso è già nei limiti accettati dal MUX analogico.
Un semplice schema per l'inseguitore è quello riportato in figura.

3) MULTIPLEXER ANALOGICO
Una possibile soluzione per quanto riguarda il multiplexaggio dei due canali prevede l'uso di due interruttori analogici.
L'integrato MC140066 contiene 4 switches analogici. Se ne useranno due comandati da segnali digitali complementari secondo lo schema di figura.

Il dato D del FF va collegato al bit Do del bus dati mentre l'attivazione dello stesso FF tramite il suo segnale di CK avviene con una rete dei decodifica. Si potrebbe adottare per esempio quella dello schema successivo :

Quando l'uscita della porta NOR commuta da 0 a 1 per effetto dei segnali Y1, WR, A0, A1 allora il FF ricopia in Q il dato Do. Tutto questo sarà ottenibile con una operazione di OUT da parte dello Z80.
4) AMPLIFICATORE
L'uscita del MUX fornisce una tensione massima di 5V, mentre l'ADC, come vuole il testo, accetta in ingresso tensioni da 0 a 10V, per cui occorre amplificare il segnale all'uscita del primo con l'amplificatore non invertente di figura:

il cui guadagno è dato da :
![]()
Le resistenze, uguali, si pongono di 10 K in modo che siano il più possibile soddisfatte le caratteristiche dell'operazionale ideale.
10 K sono infatti molto più piccoli della resistenza d'ingresso e sono molto più grandi della resistenza d'uscita dell'operazionale.
Tuttavia se si adopera l' ADC 0803 esso è alimentato a 5V per cui non si rende necessario adoperare l'amplificatore appena descritto.
Il vantaggio di tale ADC rispetto al tipo indicato dal testo è quello di una maggiore compatibilità con il µP in quanto :
lavora con tensioni di 5V ;
ha i segnali di controllo direttamente riconoscibili dallo Z80;
possiede un segnale di INTR utilizzabile come E.O.C. ;
possiede il CK interno.
5) CONVERTITORE A / D
Non è necessario inserire un SAMPLE/HOLD perchè le grandezze in esame sono lentamente variabili nel tempo e inoltre le letture dei sensori, e quindi le relative conversioni, avvengono ad intervalli di circa mezzo minuto per ogni stazione.
Per soddisfare le specifiche del testo si potrebbe utilizzare l'ADC 0800 che ha le seguenti caratteristiche :
- accetta segnali compresi fra 0 e +10 V;
- il tempo di conversione è di 50 µsec; infatti tale integrato per la conversione impiega circa 40 periodi di CK e si suppone di lavorare al massimo della frequenza consentita (800 KHz cioè T=1.2 µsec) per cui 1.2 * 40 = 50 ; il tempo di conversione è doppio rispetto a quello richiesto dal testo ma comunque sufficiente a soddisfare il tempo di rilevamento dei sensori;

-Pur disponendo di un segnale di EOC è possibile demandare ad un timer esterno la temporizzazione della lettura dei dati convertiti.
Decidiamo però di utilizzare l'ADC0803 per i motivi precedentemente esposti.

Le sue caratteristiche sono :
- accetta in ingresso tensioni variabili tra 0 e 5V;
- ha un tempo di conversione di 100 µsec comunque sufficiente allo scopo.
Per un corretto funzionamento del dispositivo bisogna operare come segue :
- per configurare il generatore di CK interno occorre inserire una resistenza di 10 K ed una capacità di 150 pF in modo da ottenere una frequenza di CK,consigliata dal costruttore, di circa 840 KHz;
- per generare la Vref = 1/2 Vcc occorre progettare il partitore resistivo come da figura.

L'abilitazione dell'ADC avverrà utilizzando sempre lo stesso decodificatore 74LS139 ed in particolare la linea Y0.
Dallo schema complessivo risulta che le porte di I/O sono da considerarsi tre :
ADC in lettura;
Adc in scrittura;
flip flop '7474.
A tali porte competono i seguenti indirizzi :
- l'ADC corrisponde all'indirizzo XXXXXX00; se l'operazione dovrà essere di lettura del dato convertito saranno attivi i segnali di controllo IORQ e RD; l'istruzione corrispondente per lo Z80 sarà IN A,( 0H);
- se l'operazione sarà quella corrispondente allo START OF CONVERTION i segnali di controllo attivi sranno IORQ e WR; l'istruzione eseguita dallo Z80 sarà OUT (0),A.
In tal caso il dato scritto sul bus dati non avrà alcuna importanza e andrà perso.
- il flip flop '7474 risponde all'indirizzo XXXXXX01; i segnali di controllo abilitati in tal caso saranno IORQ e WR.
Il programma di gestione in assembler Z80 può essere realizzato in vari modi a seconda delle scelte H.W. effettuate.
-TEMPORIZZAZIONI EFFETTUATE CON RITARDI S.W.
In tal caso è il programma che con opportune routine di ritardo permetterà al convertitore ADC di terminare la conversione ed inoltre si preoccuperà di effettuare un rilevamento al minuto per ogni grandezza.
- UTILIZZO DEI SEGNALI DI INTERRUZIONE
E' possibile utilizzare il segnale di INTR dell'ADC per comunicare l'E.O.C.
In tal caso non è più necessaria una routine di ritardo perchè il µP viene avvertito tramite il segnale di INT della fine conversione.
Il segnale di INTR potrebbe anche essere testato a Polling.
- SOLUZIONI ALTERNATIVE
Un'altra possibile soluzione sarebbe quella di utilizzare un timer esterno per es. realizzato con un NE555 e testare a Polling l'uscita del timer.
Il timer potrebbe poi essere realizzato anche con un CTC Z80.
Le soluzioni sono quindi molteplici.
Riportiamo un possibile D.di F. di un programma che utilizza le routine di ritardo.

RETE DI TRASMISSIONE
Si decide di usare l'interfaccia RS232C.
Potrebbe essere usata una USART del tipo 8251 per collegare il bus dati alla linea seriale.
L'8251 infatti è una USART programmabile che colloquia in parallelo verso il bus dati e in seriale verso la RS232.
Le caratteristiche del collegamento tra le otto stazioni di monitoraggio e l'elaboratore centrale, con interrogazione ciclica delle prime da parte di quest'ultimo, portano a concludere che la struttura hardware del sistema trasmissivo é di tipo time sharing.
Nel testo non viene fatto alcun riferimento alle distanze tra le stazioni di rilevamento dei dati e la stazione centrale. E' comunque abbastanza ovvio che tali distanze non possono essere molto brevi (dell'ordine di qualche Km), per cui il collegamento non può essere diretto (pena l'eccessivo deterioramento di segnali).
Il collegamento tra le varie stazioni e il master può quindi essere effettuato attraverso la linea telefonica commutata.
Si può scegliere tranquillamente la linea commutata e non quella dedicata dato che la velocità nel nostro caso non é un elemento critico. Ciascuna stazione ha infatti a disposizione oltre 7 minuti per comunicare i dati raccolti al master.
Il collegamento tra le stazioni e la linea telefonica viene fatto ovviamente attraverso modem e seriale RS232C.
Per lo stesso motivo di prima, il modem non é necessario che sia particolarmente veloce.
Si può quindi scegliere un modem V.21 o un modem V.23 ( in genere in commercio sono abbinati) che sono caratterizzati il primo da una velocità di trasmissione di 300 bps e il secondo fino a 1200 bps, in grado entrambi di trasmettere sia su linea commutata che dedicata, con trasmissione asincrona il primo e sincrona/asincrona il secondo, con modulazione FSK entrambi.
Per quanto riguarda il protocollo di trasmissione del secondo livello (si ricorda che si tratta del Data Link, cioè di quel protocollo che si occupa del trasferimento dei dati da una stazione trasmittente verso una ricevente e che comprende anche l'eventuale controllo degli errori di trasmissione), sempre per il motivo della velocità come requisito non indispensabile, si può optare per una trasmissione asincrona.
Il protocollo asincrono é quello Start-Stop, in cui la trasmissione avviene per caratteri singoli ciascuno dei quali risulta formato da:
Un campo, di Start, formato da 1 bit.
Un campo di dati formato da 8 bit (prevedendo di adoperare il codice ASCII a 8 bit)
Un campo di parità formato da 1 bit
Un campo di Stop formato da 1, 1,5 oppure 2 bit.
In alternativa si può adoperare il protocollo sincrono di tipo BSC, nel quale ciascuna informazione é costituita da un blocco di caratteri formato da:
Due o più caratteri di inizio trama (PAD e SYN)
Un campo dati costituito da un blocco di caratteri
Un campo di controllo errori costituito dal BCC
Una serie di caratteri di controllo
Per quanto riguarda il controllo degli errori, come si vede, nel primo protocollo esso é costituito dal controllo di parità (non sempre sicuro), mentre nel secondo é costituito dal carattere BCC.
Comunque in entrambi i casi si può ricorrere ad un controllo aggiuntivo che può consistere nell'effettuare, periodicamente, la somma (binaria) di Byte che costituiscono l'informazione (o il blocco di informazione trasmesso) ed inviarlo come ultimo dato. Il ricevitore effettuerà a sua volta la somma dei byte che costituiscono l'informazione (o il blocco), eccetto l'ultimo e lo confronterà con questo. Se le due somme coincidono, darà l'OK per la trasmissione delle rimanenti informazioni , se ci sono, (ACK in BSC) altrimenti chiederà la ritrasmissione dell'informazione errata (NAK in BSC).
Per una descrizione dettagliata del collegamento tra la linea e il modem attraverso la seriale RS232C, si rimanda alle lezioni svolte.
Una struttura alternativa alla rete a stella che colleghi con un unico cavo le 8 stazioni periferiche e il centro di raccolta dei dati é la seguente:

In questo caso però non possono essere adoperati i modem per collegare le varie stazioni alla linea (perché vi sono dei tratti comuni) e quindi il collegamento deve essere diretto, per esempio con cavo coassiale.
L'inconveniente di questo tipo di collegamento é che l'ultima stazione non può distare più di qualche Km (2 o 3) perché altrimenti il segnale sarebbe eccessivamente deteriorato al suo arrivo al centro di raccolta.
Si potrebbero mettere lungo il percorso delle stazioni di rigenerazione del segnale. Il loro numero dipende dalla distanza (non conosciuta) del cavo.