ESAMI DI MATURITÀ PROFESSIONALE

NUOVO ORDINAMENTO

Indirizzo :TECNICO DELLE INDUSTRIE ELETTRICHE E ELETTRONICHE

TEMA 1997:

Sopra un nastro che scorre ad una velocità variabile tra 1 e 10 m/sec sono disegnate linee nere dello spessore di 1 mm e distanziate di 10 cm. Un elemento fotosensibile rileva la presenza delle linee generando un impulso in corrispondenza di ciascuna di esse. A partire da questa rilevazione si desidera realizzare un sistema che consenta la rilevazione della velocità in m/sec con la precisione di due decimali e permetta inoltre :

-la lettura in ogni momento da parte di un operatore umano,

-l’attivazione di un segnale acustico ed eventualmente di un avviso scritto se la velocità supera il massimo o scende al di sotto del minimo stabilito,

-la registrazione ogni 5 minuti dei valori della velocità e la creazione di una tabella con i valori rilevati in 24 ore,

-la stampa ogni 24 ore della tabella dei valori associati all’ora del loro rilevamento e di un diagramma che indichi, per intervalli di velocità di un metro al secondo per quanto tempo nelle 24 ore si è mantenuta in ciascun intervallo.

Il candidato deve proporre per il sistema richiesto una soluzione che utilizzi componenti o apparati programmabili. In particolare, formulate le ipotesi aggiuntive che ritiene necessario, deve :

1) proporre lo schema generale del sistema illustrato la funzione ed il tipo di prestazione richiesta ai singoli blocchi,

2) proporre una realizzazione, con componenti, apparati e linguaggi di sua conoscenza e discutendo in particolare i problemi posti dai diversi valori di velocità a cui può scorrere il nastro :

a) della interfaccia destinata alla acquisizione dei dati e del programma che la governa,

b) di almeno un altro blocco di sua scelta oppure del programma per le elaborazioni e le stampe previste ogni 24 ore.

SOLUZIONE DEL PROBLEMA

Considerato che il sistema deve essere in grado di registrare ogni 5 minuti i valori della velocità misurata, creare una tabella con i valori rilevati in 24 ore con relativa stampa con anche statistiche annesse, si ritiene opportuno utilizzare un sistema assistito da un Personal Computer opportunamente programmato e interfacciato con un microconttrollore istruito per la lettura e valutazione della velocità e capace di colloquiare con la porta parallela del PC.

Schema a blocchi

FOTO RIVELAOTRE

Considerato che il sistema fotorivelatore deve riconoscere delle strisce nere disegnate sul nastro a sfondo chiaro, si ritiene idoneo l’uso di una barriera ottica a raggi infrarossi nel cui contenitore è alloggiato il diodo emettitore ed anche il fototransistore rivelatore. Ad esempio il tipo della SIMENS SFH900-2 può assolvere alle richieste del sistema. Funziona sul principio della rivelazione della variazione di luce riflessa fino ad una distanza di 5mm. La corrente massima diretta del diodo è di 50 mA mentre la corrente massima di collettore del fototransistore è di 10 mA. Per poter valutare il segnale ed avere l’impulso di adeguata ampiezza ,in corrispondenza della striscia nera, si dovrà far uso di un amplificatore operazionale e trigger di Schmitt per ottenere un impulso privo di incertezze. Il circuito dovrà dare in uscita (verso l’ST6210) un livello basso quando passa la striscia nera altrimenti livello alto a +5V.

SCHEMA FOTO-RIVELATORE

La prima metà dell'operazionale è configurata come amplificatore differenziale con guadagno A=470k/10k=47 mentre la seconda metà realizza un trigger di Schmitt con soglie pari a circa ±Voh=11V x 15k/(12k+15k)=6 Volt. Il fototransistore in presenza di luce all’infrarosso tende alla saturazione portando il pin 2 invertente ad un potenziale inferiore del pin 3 non invertente cosí da avere il pin 1 d’uscita a livello alto (quasi +Vcc). In queste condizioni sul pin 7 avremo un livello quasi di - Vcc e il transistor BC237 interdetto cioè uscita alta a + 5V. Quando il fototransisotre in presenza della striscia nera, non riceve luce, il pin 2 invertente tende a + Vcc così da superare il potenziale del pin 3 non invertente. L’uscita del primo operazionale andrà a livello quasi di - Vcc diventando meno positivo dell’ingresso non invertente così da far andare alto il pin 7 d’uscita. Il BC237 si satura e l’OUT va a livello basso. Per regolare il trimmer mettere fra il punto 2 e 3 del fotorivelatore una resistenza da circa 2k2 per simulare il fototransistor chiuso e girare il trimmer per avere sul pin 1 una tensione positiva rispetto a massa di 7/8V.

MICROCONTROLLORE

Si fa uso del microcontrollore per poter valutare il tempo che intercorre fra il passaggio di una striscia e l’altra in modo da poter risalire alla velocità. Infatti la velocità sarà data da : V = S/t

Conoscendo la distanza S fra una striscia e l’altra conoscendo t troveremo V.

La velocità sappiamo che può variare da 1 m/s a 10 m/s e pertanto :

Tmax = S/V = 0,1(m) / 1 m/s) = 0,1 secondi Tmin = 0,1 (m) / 10 (m/s) = 0,01 secondi

Dall’istante del riconoscimento di una striscia intendo continuare ad incrementare in un registro del micro (con riporto in un secondo registro) sino al riconoscimento di un’altra striscia così da uscire dal loop con un valore nei registri (x-y) direttamente proporzionale al tempo intercorso nell’interruzione dei due fasci, cioè il tempo che impiega il mezzo in movimento a percorrere i 10 Cm.

Il tempo viene valutato con la seguente routine :

	ldi	x,0			;prepara azzerato il registro x e y
	ldi	y,0
aspetta	jrs	0,port_a,aspetta		;rimani ad aspettare se non va a 0 il pin di controllo
conta	inc	x			;aggiungi 1 al registro x
	jrnc	ok			;se non c’è riporto vado a ok
	inc	y			;altrimenti incremento y
ok	jrr	0,port_a,conta		;continua a contare se l’ingresso resta a 0
conta2	inc	x			;aggiungi 1 al registro x
	jrnc	ok2			;se non c’è riporto vado a ok
	inc	y
ok2	jrs	0,port_a,conta2		;continua a contare fino al prossimo fronte di discesa

Con un quarzo di 8Mhz il micro esegue un ciclo macchina in un tempo di 1,625 micro secondi.

Per eseguire l’istruzione inc x ci vogliono 2 cicli, 4 per jrnc e 5 per l’istruzione jrs pertanto ogni incremento avviene in un tempo pari a 12 x 1,625 = 19,5 micro secondi.

Per il tempo di 0,1 S = 10.000 m S pari alla velocità di 1 m/s conterà  :

N(xy) = 10.000 : 19,5 = 512 (y = 2 e x = 0)

mentre per il tempo 0,01 S = 100.000 m S pari alla velocità di 10 m/s conterà :

N(xy) = 100.000 : 19,5 = 5128 (y = 20 e x = 28)

Il valore conteggiato nel registro y (byte MSB) e nel registro x (byte LSB) verranno inviati al PC. Il programma gestito dal PC dovrà ricostruire la velocità vera da visualizzare sul monitor.

RICOSTRUZIONE DELLA VELOCITÁ

Il valore della velocità dovrà essere rappresentato con due decimali pertanto il valore N(xy) = 512, che rappresenta la velocità di 1 m/s, deve essere convertito in un valore di 1,00 m/s mentre il N(xy) = 5128,deve essere convertito in un valore di 10,00.

V(m/s) = INT [(N(xy) / 513 + 0,005) x 100] / 100

Verifichiamo per N(xy) = 512 - dovrà dare 1,00 m/s

V(m/s) = INT [512/513 + 0,005) x 100] / 100 = INT [(0,998 + 0,005) x 100] /100 =

= INT (1,003 x100) /100 = INT(100,3) /100 = 100 /100 = 1,00 m/s (velocità espressa con due decimali)

Verifichiamo per N(xy) = 5128 - dovrà dare 10,00 m/s

V(m/s) = INT [5128/513 + 0,005) x 100] / 100 = INT [(9,996 + 0,005) x 100] /100 =

= INT (10,001 x100) /100 = INT(1000,1) /100 = 1000 /100 = 10,00 m/s (velocità espressa con due decimali)

Se vale per la velocità minima di 1 m/s e per la velocità massima di 10 m/s è ovvio che varrà anche per i valori intermedi.

DIAGRAMMA DI FLUSSO

Allo star del micro si dovrà configurare i pin di I/O (8 pin + 1 di uscita e 2 di ingresso). Il programma testerà l’ingresso e se permane a livello non va oltre. Se arriva il primo livello basso di un impulso d’ingresso (riconoscimento striscia nera) inizia la valutazione mediante una routine di conteggio per tutto il tempo che IN=0 ed anche per IN=1. Termina il conteggio quando arriva un nuovo livello basso dell’impuylso che riconosce un’altra striscia nera. A questo punto deve inviare al PC un registro alla volta cominciando da y = byte MSB (Most Significant Byte) e poi con x = byte LSB (Least Significant Byte), invocando la subroutine I/O. In I/O verrà messo alto il pin della linea WRITE per informare il PC che c’è il primo dato da leggere. Rimane ad attendere la conferma sulla linea READ un livello alto per poi azzerare la linea write e ritornare indietro. A colloquio terminato il micro deve tornare a controllare l’ingresso ma prima deve attendere che finisca se non lo fosse già l’impulso appena riconosciuto.

LISTATO ASSEMBLER

ldi		pdir_b, 11111111b	;port_b  configurata come uscita
ldi		popt_b,11111111b
ldi		port_b,00000000b

ldi		pdir_a, 00000100b	;port_a configurata come imput  su pa0 e pa1
ldi		popt_a,00000100b	;pa2 come out
ldi		port_a,00000000b

main	ldi 	wdog,255
	jrs	0,port_a,main	;se l'ingresso é alto torna a main
	ldi	x,0		;prepara azzerato il registro x e y
	ldi	y,0
conta	inc	x		;aggiungi 1 al registro x
	jrnc	ok		;se non c’è riporto vado a ok
	inc	y		;altrimenti incremento y
ok	jrr	0,port_a,conta	;continua a contare se l’ingresso resta a 0
conta2	inc	x		;aggiungi 1 al registro x
	jrnc	ok2		;se non c’è riporto vado a ok
	inc	y
ok2	jrs	0,port_a,conta2	;continua a contare fino al prossimo fronte di discesa
	ld	a,y		;mette in a il valore di y
	ld 	port_,b,a		;e lo mette sulla port_b per inviarlo al PC
	call	i_o		;dialoga con PC
	ld	a,x		;prende x
	ld 	port_b,a		;lo mette verso PC
	call	i_o		;dialoga con PC
resta	jrr	0,port_a,resta	;se siamo ancora in presenza dello stato basso resta qui
	jp	main		;ritorna a valutare velocità

i_o 	ldi	wdog,255
	ld	a,port_a		;legge port_a
	set	2,a		;mette a 1 il bit 2 
	ld	port_a,a		; e riscrive port_a con il pa2 settato
asp	ld	wdog,255
	jrs	0,port_a,asp	;aspetta risposta di conferma dal PC
	ld	a,port_a		;rimette pa2 a zero 
	res	2,a
	ld 	port_a,a
	ret			;ritorna

I/O mediante LPT1

(c) by Vittorio Crapella       [ Return ]      [Le mie pagine]