Maturità Elettronica e Telecomunicazioni 97
a cura del prof. Giuseppe Spalierno - docente di Elettronica presso l'I.T.I. "Modesto PANETTI" - B A R I
Soluzione
Il sistema di fotorivelazione genera un impulso quando il nastro si sposta di 10cm.
Se il nastro si muove a velocità costante v (m/s) si ha un treno di onde rettangolari con frequenza f (Hz) proporzionale alla velocità del nastro attraverso la formula:
v = f · d |
(1) |
ove d = 10cm è la distanza tra una tacca nera e la successiva.
Inviando gli impulsi ad un PC è possibile, attraverso un software opportuno, risalire alla frequenza e quindi alla velocità del nastro. Per facilitare l’acquisizione si decide di trasformare l’onda impulsiva avente duty-cycle:
D = TH / T = (1mm/v) / (10cm/v) = 0.01
in onda quadra con D=0.5 attraverso un divisore di frequenza per due realizzato con un FLIP-FLOP avente J=K=1 ed inviando gli impulsi del fotorivelatore all’ingresso di clock come in figura.
a gestione del sistema di controllo se la velocità è fuori range è affidata interamente al software che consente l’attivazione del sistema di allarme acustico attraverso l’emissione di un suono specifico irradiato grazie all’impiego di una scheda sonora interna al PC. L’allarme ottico avviene attraverso l’invio di un messaggio sul monitor del computer.
Le funzioni richieste al software, pertanto, sono:
acquisizione dell’onda quadra istante per istante e determinazione della frequenza degli impulsi del fotorivelatore da cui risalire alla velocità;
controllo se il valore della velocità rientra nei limiti imposti (1m/s < v < 10m/s): in caso negativo il software emette un segnale acustico e stampa su monitor un messaggio di allarme;
acquisizione del valore della velocità e dell’orario di acquisizione ogni 5 minuti e salvataggio di tali valori in un archivio su disco;
stampa, dopo 24 ore, dell’archivio e del tempo in cui la velocità, nell’arco delle 24 ore, ha assunto valori compresi tra 1m/s e 2m/s, tra 2m/s e 3m/s, …, 9m/s e 10m/s.
Dimensionamento del fotorivelatore.
Si utilizza un fotodiodo che, quando è colpito dal fascio di luce, genera la fotocorrente:
IP = 50 µA mentre IP = 0 in condizioni di buio.
VCC -VD
5 - 0
R = ------------- = ----------- = 100K Ohm
ID
50·10-6
La traccia del compito impone che il sistema abbia, come risoluzione, la seconda cifra decimale della velocità,
per cui, se il nastro si muovesse con la velocità di 0.01m/s=1cm/s, l’intervallo
di tempo tra due impulsi consecutivi sarebbe:
Dt = d/ Dv=10cm / 1cm/s = 10s
Avendo deciso di acquisire la forma d’onda Q avente frequenza pari alla metà di quella associata ad A, per conservare la stessa risoluzione di 1cm/s utilizzo una finestra temporale pari a Dt = 20s.
Indicando con N il numero di livelli alti campionati nell’intervallo di tempo Dt, la frequenza dei livelli alti vale N/Dt e quella degli impulsi emessi dal fotorivelatore vale: f = 2·N/Dt. La velocità del nastro, finalmente, vale per la (1):
v = 2·N·d/Dt = 2·N·0.1 / 20 = 0.01·N (2)
Esempio:
se v=1m/s (velocità minima) in
20 secondi il nastro percorre lo spazio pari a 20m.
Il numero di impulsi emessi dal
fotorivelatore sono:
20m/10cm. = 200;
il software rileva un numero N = 200/2 = 100 livelli alti della linea Q.
Applicando direttamente la (2) ricavo la velocità: v = 0.01 · N = 0.01 · 100 = 1.00 m/s
se v=10m/s (velocità massima) in 20 secondi il nastro percorre lo spazio pari a 200m.
Il numero di impulsi emessi dal fotorivelatore sono:
200m/10cm. = 2000;
il software rileva un numero N=2000/2=1000 livelli alti della linea Q.
Applicando direttamente la (2) ricavo la velocità: v = 0.01 · N = 0.01 · 1000 = 10.00 m/s
Per l’acquisizione della linea Q si decide l’impiego dell’interfaccia Centronics normalmente utilizzata per il pilotaggio di una stampante. Le linee del connettore Centronics disponibili sul retro del PC hanno piedinatura, significato, valore ed indirizzo riportate nella seguente tabella.
Linee interfaccia Centronics
PIN |
NOME |
DIREZIONE |
INDIRIZZO ED USO |
1 |
STROBE |
USCITA |
890 OUT 890,1
(0V) |
2 |
DATA1 |
USCITA |
|
3 |
DATA2 |
USCITA |
|
4 |
DATA3 |
USCITA |
|
5 |
DATA4 |
USCITA |
OUT 888, N |
6 |
DATA5 |
USCITA |
per |
7 |
DATA6 |
USCITA |
0 £ N £ 255 |
8 |
DATA7 |
USCITA |
|
9 |
DATA8 |
USCITA |
|
10 |
ACK |
INGRESSO |
B3 (64) SE ALTO |
11 |
BUSY |
INGRESSO |
B4 (128) SE BASSO |
12 |
PAPER OUT |
INGRESSO |
B2 (32) SE ALTO |
13 |
SELECTED |
INGRESSO |
B1 (16) SE ALTO |
14 |
AUTOFEED |
USCITA |
890 OUT 890,2 (0V) |
15 |
ERROR |
INGRESSO |
B0 ( 8 ) SE ALTO |
16 |
INIZIALIZE PRINTER |
USCITA |
890 OUT 890,4 (5V) |
17 |
SELECT INPUT |
USCITA |
890 OUT 890,8 (0V) |
25 |
GND |
Le linee di uscita DATA8...DATA1, di indirizzo 888 (378 esadecimale), situate tra i pin 9....2, sono memorizzate.
INDIRIZZO: 888 |
DATA8 |
DATA7 |
DATA6 |
DATA5 |
DATA4 |
DATA3 |
DATA2 |
DATA1 |
PIN: | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 |
L’interfaccia Centronics possiede 5 linee di ingresso all’indirizzo 889 (379 esadecimale) con i seguenti valori e logiche di funzionamento:
BUSY (pin 11) vale 128 se è al livello basso (logica negativa).
ACK (pin 10) vale 64 se è al livello alto (logica positiva).
PAPER OUT (pin 12) vale 32 se è al livello alto (logica positiva).
SELECTED (pin 13) vale 16 se è al livello alto (logica positiva).
Pin 15 vale 8 se è al livello alto (logica positiva).
indirizzo 889 :
BUSY |
ACK |
PAPER OUT |
SELECTED |
ERROR |
1 |
1 |
1 |
11 | 10 | 12 | 13 | 15 |
i rimanenti 3 bit meno significativi del byte di ingresso non sono accessibili sul connettore e sono poste, internamente, al livello alto (1112 = 710 ).
Avendo a disposizione 5 bit (32 combinazioni) è possibile acquisire valore compresi tra 0 e 31.
Ciò si realizza con i seguenti passaggi:
A = A XOR 128 (per complementare il bit applicato su BUSY);
A = A - 7 (per azzerare i tre bit meno significativi : operazione, comunque, non necessaria);
A = A/8 (per lo scorrimento a destra di 3 posizioni).
L'algoritmo di acquisizione in linguaggio QBASIC risulta, pertanto:
A = ((INP(889) XOR 128) - 7 ) / 8
In questo modo la parola di ingresso A assume un valore compreso tra 0 e 31.
L’indirizzo Centronics 890 (37A esadecimale) rende disponibile in uscita altri 4 bit di cui tre attive in logica negativa ed una in logica positiva :
STB = STROBE (pin 1) vale 1 se è al livello basso (logica negativa).
AF = AUTOFEED (pin 14) vale 2 se è al livello basso (logica negativa).
IP = INIZIALIZE PRINTER (pin 16) vale 4 se è al livello alto (logica positiva).
SI = SELECT INPUT (pin 17) vale 8 se è al livello basso (logica negativa).
IRQE = ABILITA INTERRUPT vale 16 se è al livello alto (logica positiva) ma non è disponibile fisicamente.
indirizzo 890 : |
IRQE |
SI |
IP |
AF |
STB |
|||
PIN: | 17 | 16 | 14 | 1 |
Se si intende trasmettere una parola a 4 bit con valore compreso tra 0 e 15 e con i bit attivi
in logica positiva, occorre commutare (XOR con 1 logico) i bit STB, AF e SI e lasciare inalterato (XOR con zero logico) il bit IP :
OUT(890), A XOR 11
A3 |
A2 |
A1 |
A0 |
A |
Dato nel PC |
1 |
0 |
1 |
1 |
11 |
Maschera |
A3 |
A2 |
A1 |
A0 |
A XOR 11 |
complementa A3 A1 e A0 |
A3 |
A2 |
A1 |
A0 |
A |
Dato in uscita |
Si riporta l’istruzione di acquisizione in C++ della linea Q applicata al pin 15 dell’interfaccia Centronics:
q = (inport(889) & 8 )/8
q = 1 se sul pin 15 c’è il livello logico alto, viceversa si ha: q = 0.
L’istruzione consente di non preoccuparci del livello logico esistente sulle altre linee della porta di ingresso all’indirizzo 889; infatti, indicando con B7…B0 il byte acquisito con l’istruzione inport(889), il prodotto logico: (inport(889) & 8 ) fornisce:
inport(889) |
B7 |
B6 |
B5 |
B4 |
B3 |
B2 |
B1 |
B0 |
8 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
inport(889) & 8 |
0 |
0 |
0 |
0 |
B3 |
0 |
0 |
0 |