Title: home
1home
2sommario
3intro_blocchi
INTRODUZIONE Lobbiettivo del progetto è
realizzare un modellino di autovelox che misuri
la velocità di un oggetto e la visualizzi su un
display. La velocità sarà determinata con la
relazione velocitàspazio/tempo, dove lo spazio
è la distanza in mm tra i due sensori che
rilevano il passaggio delloggetto mentre il
tempo sono i secondi necessari alloggetto per
andare da un sensore allaltro.
SCHEMA A BLOCCHI
4funzionamento
PRINCIPIO DI FUNZIONAMENTO Vi sono due sensori,
ognuna formata da un diodo emettitore di luce
infrarossa a 930nm e da un fototransistor
sensibile alla luce infrarossa (con sensibilità
massima a 930nm, compatibile quindi con il diodo
emettitore) messi uno di fronte allaltro. Il
fototransistor si comporta da circuito aperto se
non colpito dalla luce infrarossa mentre si
comporta da cortocircuito in caso di massimo
irraggiamento. Collegato ad ogni sensore cè un
amplificatore operazionale utilizzato come
trigger non invertente a soglie non simmetriche
in modo da avere in uscita livelli di tensione
stabili a seconda della ricezione infrarossa del
fototransistor che potrebbe funzionare non
regolarmente a causa di un cattivo allineamento
con lemettitore o in caso di irraggiamento di
luce solare che contiene raggi infrarossi che
interferiscono con quelli dellemettitore. Lopera
zionale è seguito da un transistor in serie ad
una resistenza collegata a 5v, che dà in uscita
5v in caso di visibilità tra emettitore e
transistor, mentre 0v in caso di interruzione del
raggio infrarosso, cioè in caso di passaggio
dellauto in uscita risultano esattamente i due
livelli compatibili TTL, 5v come livello alto e
0v come livello basso. I due circuiti rilevatori
sono collegati ad un flip-flop JK (TTL 7476) con
J e K a massa, il primo sensore al preset e il
secondo al clear, in modo da avere in uscita dal
flip-flop un impulso di lunghezza pari al tempo
necessario allauto per andare dal primo sensore
al secondo. Questo impulso entra nel PTA1 del
microcontrollore HC08 a 16pin. Il uC è
programmato per dare in uscita (sugli 8bit del
PTB) un numero tra 0 e 255 che rappresenta la
velocità. Sul PTA3 il uC è collegato un pulsante
normalmente aperto collegato a massa che, con la
resistenza di pull-up allinterno dellintegrato
attivata attraverso il software, serve da reset
del uC. Gli 8bit del uC sono collegati agli 8bit
in ingresso di un convertitore digitale-analogico
(AD558) che converte il numero binario entrante
(0-255) nei suoi ingressi, nella corrispondente
tensione tra 0 e 2,55v. In successione vi sono
poi due amplificatori operazionali in
configurazione invertente, il primo con guadagno
-0,39 e laltro di guadagno -1.
5funzionamento2
In questo modo, il range di tensione in ingresso
(0-2,55v) sarà attenuato luscita varierà quindi
tra 0v e 1v. Vista limpossibilità di avere
precisamente un guadagno di 0,39 a causa dei
limitati valori commerciali delle resistenze, il
guadagno totale dei due operazionali in cascata
sarà 0,37 e il range varierà tra 0v e 0,944v. Lo
stadio finale, di visualizzazione della velocità,
è composto da un particolare convertitore A/D
(CA3162), un display driver (CA3161) e tre
display sette segmenti ad anodo comune (H-)
alimentati attraverso transistor BC328, questi
ultimi pilotati dal convertitore A/D. LADC ha il
compito principale di convertire in quattro bit
una tensione compresa tra 0v e 1v e di inviarli
al driver display che pilota i display sette
segmenti. I display sono pilotati in sequenza
dal convertitore escono rapidamente in bit i tre
numeri da visualizzare e contemporaneamente
pilota i tre display attraverso i tre transistor.
Il numero visualizzato corrisponde ai mV entranti
nel conv. A/D. Anche se il range di tensione
entrante ha un valore massimo di 944mV, sarà
possibile visualizzare correttamente i valori
agendo sui trimmer, modificando il valore di
fondo scala e quindi, il guadagno. USCITE DI
OGNI BLOCCO
6ir
EMETTITORE E FOTOTRANSISTOR A INFRAROSSI Il led
emettitore di luce infrarossa utilizzato nel
circuito è lOP165 della OPTEK. È un led di 3mm
che emette luce infrarossa a 930nm, a breve
distanza e con uno stretto angolo di
trasmissione. Per un funzionamento ottimale
necessita di una tensione di polarizzazione
diretta di 1,6v e sopporta una corrente massima
di 10mA. I tempi di accensione e spegnimento del
led sono dellordine dei nanosecondi e sono
quindi trascurabili ai fini del
progetto. Il fototransistor scelto è
invece lOP505 sempre della OPTEK, progettato
appositamente per lavorare in accoppiata con
lemettitore OP165, anchesso quindi sensibile ai
raggi infrarossi a 930nm questo teoricamente si
comporta da circuito aperto se la base non è
colpita da infrarossi mentre da cortocircuito (va
in zona di saturazione) se la base è irradiata, e
in questultimo caso la tensione tra collettore
ed emettitore è di 400mV.
7ir2
PRINCIPIO DI FUNZIONAMENTO DI UN LED
INFRAROSSO Un LED (light emitting diode) è un
particolare tipo di diodo che emette una piccola
quantità di luce se attraversato da una corrente
elettrica. Esso è formato internamente da un chip
di materiale semiconduttore ed esternamente da
due terminali. La luce è una forma di energia che
viene rilasciata da un atomo. Questa è composta
da piccolissime particelle chiamate fotoni che
rappresentano la singola unità di luce. In un
atomo ci sono differenti elettroni che si muovo
in un orbita intorno al nucleo. A seconda
dell'orbita, un elettrone ha una certa quantità
di energia. Più l'orbita è larga, più esso è
carico. Quando un elettrone passa da un orbita
larga ad una inferiore, esso perde un po della
sua energia e lo fa sotto forma di un fotone. Più
è alta l'energia rilasciata dall'elettrone, più
il fotone è potente. Le cariche negative della
regione N passano nella regione P per occupare le
lacune con carica positiva. Visto che le lacune
hanno un quantitativo di energia inferiore alle
cariche negative, esse devono consumare della
carica per poterli occupare e generano quindi
fotoni (producendo la luce). Questo processo
accade in tutti i diodi ma è visibile solo in
quelli in cui la lunghezza donda dei fotoni
prodotti è visibile dall'occhio umano. Usando
materiali in cui gli elettroni hanno delle
quantità inferiori di elettricità, la lunghezza
donda dei fotoni sarà più alta della soglia
visibile e non può essere percepita dal nostro
occhio, formando un led a infrarossi.
8ir3
PRINCIPIO DI FUNZIONAMENTO DI UN
FOTOTRANSISTOR Come noto, un transistor è formato
da una giunzione NPN o PNP. Un fototransistor è
un particolare BJT (bipolare) che si presenta
allesterno con soli 2 terminali, infatti la base
non è più pilotata in corrente ma con la luce
(fotoni). La giunzione attiva di un
fototransistor è la giunzione base-collettore
polarizzata inversamente. In una giunzione P-N
polarizzata inversamente, se irradiata di luce,
si verifica un aumento della corrente inversa
dovuta ai portatori minoritari. Questo perché
quando una radiazione colpisce un semiconduttore
drogato produce coppie elettrone-lacuna con
conseguente aumento dei portatori minoritari.
VCC
R
N
LUCE
ZONA DI SVUOTAMENTO
P
N
collettore
emettitore
9ir4
PROVA DEL CIRCUITO DI RILEVAMENTO DI PASSAGGIO A
INFRAROSSI
SCHEMA CIRCUITALE
Vir
Vop
DIMENSIONAMENTO
NOTE
-FURMULA LED IR
Visto che la corrente massima sopportata dal led
IR è di 50mA, scelgo una corrente di 40mA. La
tensione del led acceso è di 1V.
-FORMULE FOTOTRANSISTOR
Scelgo una corrente Ic di 5mA. Per una forte
saturazione del transistor, la corrente di base
Ib devessere circa un decimo di Ic quindi sarà
0.5mA.
-FORMULE TRIGGER NON INVERTENTE
Scelgo una Vtm (valore di soglia) di 4.16V e una
Vh (isteresi) di 0.29V per non rischiare disturbi
e malfunzionamenti.
10ir5
GRAFICO LIVELLI TRIGGER NON INVERTENTE
TABELLA VALORI
Vir Vref Vtm Vop Vo
On 2.59V 3.90V 4.16V 0.20V 4.92V
Off 4.93V 3.90V 4.16V 3.68V 0.05V
OSSERVAZIONI
Collegando in uscita un led (in serie ad una
resistenza) è stato possibile notare il passaggio
di un oggetto attraverso il sensore a seconda del
led acceso o spento. Il led è acceso quando non
cè passaggio e si spegne nel momento in cui un
oggetto interrompe il raggio luminoso
infrarosso. Vista la poca potenza dei dispositivi
ottici, tra emettitore e fototransistor si è
scelta una distanza di circa 3cm per garantire un
ottimo funzionamento anche con uno scarso
allineamento.
11ff
FLIP FLOP Come componente memorizzatore si è
scelto il flip-flop JK 7476 della serie TTL.
Questo componente ha il compito di dare uscita
alta per tutta la durata del passaggio
delloggetto tra i due sensori. La configurazione
del flip-flop, per svolgere questo compito, sarà
quella con J e K a massa e i due circuiti
rilevatori di passaggio collegati il primo al
preset e il secondo al clear (entrambi attivi
bassi).
SCHEMA CIRCUITALE
TABELLA VALORI
SECONDO SENSORE
N.B. Livelli TTL nel caso in cui gli ingressi J e
K siano a massa.
PRIMO SENSORE
PIEDINATURA
OSSERVAZIONI
Per verificare praticamente il corretto
funzionamento del circuito memorizzatore, in
uscita si è collegato un led. Questo led si
accende quando loggetto attraversa il primo
sensore e si spegne quando attraversa il secondo.
Il led acceso corrisponde al livello alto TTL
cioè 5V.
12hc08
MICROCONTROLLORE HC08 Il microcontrollore è
utilizzato per generare in uscita un valore che
opportunamente amplificato corrisponderà alla
velocità delloggetto. Il microcontrollore scelto
è il Motorola HC08 a 16pin (QY), il software per
programmarlo è il Codewarrior della Metrowerks,
la scheda di programmazione utilizzata è la
PK-HC08QT per lHC08 a 8pin (QT). Questultima è
stata opportunamente modificata per poter
programmare anche lHC08 a 16pin (QY). Luscita
binaria che darà la velocità corrisponderà agli
8bit del PORT B. Lingresso del micro è invece il
PTA1 ed è collegato alluscita del flip-flop.
Luscita del flip-flop può essere collegata
direttamente nel micro, essendo questultima
compatibile con i livelli TTL. Il programma è
stato scritto in linguaggio ASSEMBLER (linguaggio
più vicino al linguaggio macchina), per la scarsa
conoscenza del linguaggio C (linguaggio più
vicino al linguaggio umano) da parte del
candidato e per motivi di scarsa memoria del
componente (un programma scritto in C richiede
molta più memoria di un programma di pari utilità
scritto in ASM). La piedinatura del micro è la
seguente
PIEDINATURA
13hc08
SCHEMA INTERNO DELLHC08
- I principali componenti del microcontrollore
sono - ALU (aritmetic logic unit) è il circuito che
svolge calcoli aritmetici e logici, il cervello
del microcontrollore - RAM (memoria volatile di lettura e scrittura)
memoria di lettura e scrittura necessaria per
lelaborazione dei dati da parte della ALU - FLASH (memoria non volatile in tecnologia FLASH)
e ROM (memoria non volatile) contiene tutto il
programma e tutti i dati - A (accumulatore) e X (index register) registri
dappoggio per depositare temporaneamente i dati
da elaborare - PC (program counter) contiene lindirizzo della
cella di memoria in cui è presente il codice
operativo dellistruzione da eseguire - UC (control unit) o CPU Control è il circuito
che invia le sequenze di comandi agli altri
dispositivi per eseguire le istruzioni richieste - DDR (data direction register) contengono una
sequenza di bit dalla quale decidono se un pin è
ingresso o uscita (8 bit corrispondono a 8 pin) - PT (port) registri contenenti una sequenza di
bit ognuno dei quali corrisponde al livello letto
sul pin (se è un ingresso) o al livello generato
sul pin (se è unuscita) - CCR (control code register) collegato alla ALU è
un registro 8 bit con 6 bit attivi, ognuno dei
quali indica un certo evento di calcolo
(Nrisultato negativo, Zrisultato zero,
Criporto, Iinterrupt, Hmezzo riporto, ecc)
14hc08
XDEF main, irq_isr Include 'HC08QT.inc'
DEFAULT_ROM SECTION init bset 0,
CONFIG1 Disables COP mov 00, DDRA PTA
tutte entrate mov FF, DDRB PTB tutte
uscite mov 00, PTB PTB forzato a zero mov
00001000,PTAPUE Pull-Up sul PTA
disattivato tranne sul pin di reset
(PTA3) mov 00000000,PTBPUE Pull-Up sul PTB
disattivato mov 49, CONFIG2 Enables external
oscillator and IRQ pin mov 02,
OSCSTAT Enables external clock
generator rts main cli Enables global
interrupts bsr init main_loop mov FF,
80 metti FF nella cella 80 mov 80,
81 metti 80 nella cella 81 brset
1,PTA,conta salta a conta se sul PTA1 c'è 1 bra
main_loop salta (salto corto) in ogni caso a
main_loop conta 1000 dbnz 80,conta decrement
a di 1 il contenuto della cella 80 e salta
se è a 0 dbnz 81,conta come sopra...in
totale passa circa 100ms mov FF, 80 metti
FF in 80 mov 80, 81 metti 80 in 81 mov
FF, 83 metti FF in 83 brset
1,PTA,ca salta a ca se sul PTA1 c'è 1 mov
83,PTB metti sul PTB il contenuto della cella
83 jmp fine salta (salto lungo) a
fine ca 500 dbnz 80,ca dbnz 81,ca mov
FF, 80 mov 80, 81 mov 7f, 83 brset
1,PTA,b mov 83,PTB jmp fine b 333 dbnz
80,b dbnz 81,b mov FF, 80 mov 20,
81 mov 54, 83 brset 1,PTA,b1 mov
83,PTB jmp fine
b1 313 dbnz 80,b1 dbnz 81,b1 mov FF,
80 mov 20, 81 mov 4f, 83 brset
1,PTA,b2 mov 83,PTB jmp fine b2 294 dbnz
80,b2 dbnz 81,b2 mov FF, 80 mov 20,
81 mov 4a, 83 brset 1,PTA,b3 mov
83,PTB jmp fine b3 278 dbnz 80,b3 dbnz
81,b3 mov FF, 80 mov 20, 81 mov 46,
83 brset 1,PTA,b4 mov 83,PTB jmp
fine b4 263 dbnz 80,b4 dbnz 81,b4 mov
FF, 80 mov 20, 81 mov 42, 83 brset
1,PTA,c mov 83,PTB jmp fine c 250 dbnz
80,c dbnz 81,c mov FF, 80 mov 20,
81 mov 3f, 83 brset 1,PTA,c1 mov
83,PTB jmp fine c1 238 dbnz 80,c1 dbnz
81,c1 mov FF, 80 mov 20, 81 mov 3b,
83 brset 1,PTA,c2 mov 83,PTB jmp
fine c2 227 dbnz 80,c2 dbnz 81,c2 mov
FF, 80 mov 20, 81 mov 39, 83 brset
1,PTA,c3 mov 83,PTB jmp fine
PROGRAMMA
15hc08
c3 217 dbnz 80,c3 dbnz 81,c3 mov FF,
80 mov 20, 81 mov 36, 83 brset
1,PTA,c4 mov 83,PTB jmp fine c4 208 dbnz
80,c4 dbnz 81,c4 mov FF, 80 mov 20,
81 mov 34, 83 brset 1,PTA,d mov
83,PTB jmp fine d 200 dbnz 80,d dbnz
81,d mov FF, 80 mov 20, 81 mov 32,
83 brset 1,PTA,dd1 mov 83,PTB jmp
fine dd1 192 dbnz 80,dd1 dbnz 81,dd1 mov
FF, 80 mov 20, 81 mov 30, 83 brset
1,PTA,dd2 mov 83,PTB jmp fine dd2 185 dbnz
80,dd2 dbnz 81,dd2 mov FF, 80 mov 20,
81 mov 2e, 83 brset 1,PTA,dd3 mov
83,PTB jmp fine dd3 179 dbnz 80,dd3 dbnz
81,dd3 mov FF, 80 mov 20, 81 mov 2c,
83 brset 1,PTA,dd4 mov 83,PTB jmp
fine dd4 172 dbnz 80,dd4 dbnz 81,dd4 mov
FF, 80 mov 20, 81 mov 2b, 83 brset
1,PTA,d1 mov 83,PTB jmp fine d1 167 dbnz
80,d1 dbnz 81,d1 mov FF, 80
mov 40, 81 mov 29, 83 brset
1,PTA,d1a mov 83,PTB jmp fine d1a 154 dbn
z 80,d1a dbnz 81,d1a mov FF, 80 mov 40,
81 mov 26, 83 brset 1,PTA,d2 mov
83,PTB jmp fine d2 143 dbnz 80,d2 dbnz
81,d2 mov FF, 80 mov 40, 81 mov 23,
83 brset 1,PTA,d2a mov 83,PTB jmp
fine d2a 133 dbnz 80,d2a dbnz 81,d2a mov
FF, 80 mov 40, 81 mov 21, 83 brset
1,PTA,d3 mov 83,PTB jmp fine d3 125 dbnz
80,d3 dbnz 81,d3 mov FF, 80 mov 40,
81 mov 1f, 83 brset 1,PTA,d3a mov
83,PTB jmp fine d3a 118 dbnz 80,d3a dbnz
81,d3a mov FF, 80 mov 40, 81 mov 1d,
83 brset 1,PTA,d4 mov 83,PTB jmp
fine d4 111 dbnz 80,d4 dbnz 81,d4 mov
FF, 80 mov 80, 81 mov 1b, 83 brset
1,PTA,e mov 83,PTB jmp fine e 100 dbnz
80,e dbnz 81,e mov FF, 80 mov 80,
81 mov 18, 83 brset 1,PTA,ea mov
83,PTB jmp fine
16hc08
ea 91 dbnz 80,ea dbnz 81,ea mov FF,
80 mov 80, 81 mov 16, 83 brset
1,PTA,e1 mov 83,PTB jmp fine e1 83 dbnz
80,e1 dbnz 81,e1 mov FF, 80 mov 80,
81 mov 02, 82 mov 14, 83 brset
1,PTA,e1a mov 83,PTB jmp fine e1a 77 dbnz
80,e1a dbnz 81,e1a mov FF, 80 mov 80,
81 mov 12, 83 brset 1,PTA,e2 mov
83,PTB jmp fine e2 71 dbnz 80,e2 dbnz
81,e2 mov FF, 80 mov 80, 81 mov 02,
82 mov 11, 83 brset 1,PTA,e3 mov
83,PTB jmp fine e3 63 dbnz 80,e3 dbnz
81,e3 mov FF, 80 mov 80, 81 mov 02,
82 mov f, 83 brset 1,PTA,e4 mov
83,PTB jmp fine e4 56 dbnz 80,e4 dbnz
81,e4 mov FF, 80 mov 80, 81 mov 02,
82 mov 0d, 83 brset 1,PTA,f mov
83,PTB jmp fine f 50 dbnz 80,f dbnz
81,f dbnz 82,f mov FF, 80 mov 80,
81 mov 02, 82 mov 0b, 83 brset
1,PTA,f1 mov 83,PTB jmp fine
f1 45 dbnz 80,f1 dbnz 81,f1 dbnz
82,f1 mov FF, 80 mov 80, 81 mov 02,
82 mov 0a, 83 brset 1,PTA,f2 mov
83,PTB jmp fine f2 42 dbnz 80,f2 dbnz
81,f2 dbnz 82,f2 mov FF, 80 mov 80,
81 mov 02, 82 mov 09, 83 brset
1,PTA,f3 mov 83,PTB jmp fine f3 38 dbnz
80,f3 dbnz 81,f3 dbnz 82,f3 mov FF,
80 mov 80, 81 mov 02, 82 mov 08,
83 brset 1,PTA,f4 mov 83,PTB jmp
fine f4 36 dbnz 80,f4 dbnz 81,f4 dbnz
82,f4 mov FF, 80 mov 80, 81 mov 05,
82 mov 08, 83 brset 1,PTA,g mov
83,PTB jmp fine g 33 dbnz 80,g dbnz
81,g dbnz 82,g mov FF, 80 mov 80,
81 mov 05, 82 mov 07, 83 brset
1,PTA,g1 mov 83,PTB jmp fine g1 29 dbnz
80,g1 dbnz 81,g1 dbnz 82,g1 mov FF,
80 mov 80, 81 mov 05, 82 mov 06,
83 brset 1,PTA,ha mov 83,PTB jmp fine
17hc08
ha 25 dbnz 80,ha dbnz 81,ha dbnz
82,ha mov FF, 80 mov 80, 81 mov 0a,
82 mov 05, 83 brset 1,PTA,i mov
83,PTB jmp fine i 20 dbnz 80,i dbnz
81,i dbnz 82,i mov FF, 80 mov 80,
81 mov 0a, 82 mov 04, 83 brset
1,PTA,l mov 83,PTB jmp fine l 17 dbnz
80,l dbnz 81,l dbnz 82,l mov FF, 80 mov
80, 81 mov 0a, 82 mov 03, 83 brset
1,PTA,m mov 83,PTB jmp fine m 14 dbnz
80,m dbnz 81,m dbnz 82,m mov FF, 80 mov
80, 81 mov 0a, 82 mov 03, 83 brset
1,PTA,p mov 83,PTB jmp fine p 13 dbnz
80,p dbnz 81,p dbnz 82,p mov FF, 80 mov
80, 81 mov 0a, 82 mov 02, 83 brset
1,PTA,q mov 83,PTB jmp fine q 11 dbnz
80,q dbnz 81,q dbnz 82,q mov FF, 80 mov
80, 81 mov 0a, 82 mov 02,
83 r 10 dbnz 80,r dbnz 81,r dbnz
82,r mov 02, 83
fine mov 83,PTBmetti numero contenuto in83
su PTB jmp main_loop irq_isr bil irq_isr
Waits for the IRQ signal to go
high jmp FE1A Jumps to monitor code END
NOTE Per calcolare il ritardo esatto tra gli
intervalli di tempo necessari nel programma ci si
basa sulla frequenza di clock del
microcontrollore che è di circa 2.4MHz. Ogni
istruzione per essere svolta necessita di più
cicli. Un ciclo corrisponde al tempo di clock,
calcolato come linverso della frequenza. Se la
frequenza è di 2.4MHz il tempo sarà
tck1/Fck500ns. Listruzione DBNZ occupa 5
cicli, quindi ogni decremento della cella
occuperà tdbnz5 tck2,5us. Di conseguenza se,
ad esempio, si necessità di un ritardo di 100ms,
il numero di decrementi sarà circa N
100ms/tdbnz40000. Visto che il numero massimo
che una cella di 8bit può contenere è 256, si
utilizzano 2 celle. Il numero di decrementi
corrisponderà così al prodotto tra i due numeri
nella cella 40000256156. Nella prima cella si
memorizzerà FF (256 in decimale) e nella seconda
9C (156 in decimale). Considerando lesistenza di
altre istruzioni che, anche se svolte in qualche
us, aumentano il tempo totale di svolgimento del
programma, dopo diverse prove pratiche il ritardo
è stato lievemente diminuito memorizzando nella
seconda cella il numero 80 (128 in decimale). Per
verificare il corretto funzionamento del
microcontrollore si è provato a cronometrare il
ciclo totale del micro ed effettivamente la
durata totale del ciclo è stata di 10s.
18hc082
TABELLA VALORI
GRAFICO ANDAMENTO VELOCITA
19hc083
ANALISI DEL PROGRAMMA
- Allaccensione del circuito il microcontrollore
svolge automaticamente le istruzioni necessarie
per poter funzionare correttamente (fase di
inizializzazione) e configura i registri (tra cui
i DataDirectionRegister e i registri per il
PULL-UP) a seconda della configurazione decisa
dallutente. - Dopo questa brevissima fase il micro passa al
programma vero e proprio scritto dallutente. - Il programma svolge queste funzioni in sequenza
- scrive sulluscita (PTB) tutti 0
- controlla il livello del PTA1 e, se alto, passa
al ciclo di conteggio mentre in caso contrario
ripete il controllo - inizia il conteggio
- dopo ogni intervallo di tempo, prestabiliti nel
programma, controlla che il PTA1 sia a livello
alto per continuare il conteggio mentre, se così
non fosse, il micro dà in uscita un valore
binario che corrisponderà, una volta
amplificato, alla velocità delloggetto - fatto ciò torna al controllo del PTA1 iniziale
- se il PTA1, dopo essere andato a livello alto,
non torna basso entro 10s (la durata del
conteggio) il micro dà in uscita 0 e torna al
controllo iniziale
20ao
- AMPLIF. OPERAZIONALE E DAC
- Come convertitore digitale/analogico è stato
scelto lAD558 perché il progetto vedeva la
necessità di un DAC con 5V di alimentazione e 8
bit paralleli in ingresso. Luscita di questo
varierà tra 0 e 2,55V. - Gli amplificatori operazionali sono stati invece
usati nel circuito per due diverse funzioni - nei sensori in configurazione di trigger non
invertenti per pilotare il transistor - alluscita del convertitore DAC per attenuare a
1V il segnale di 2,55V - Nel primo caso occorre un amplificatore
operazionale che funzioni bene anche in single
supply e in grado di dare in uscita una tensione
vicina a zero o vicina a 5V. Inoltre è
consigliabile, vista la necessità di usarne 2,
sceglierlo in circuito integrato che ne contenga
due o più ma allo stesso tempo che sia economico
e facilmente reperibile. La scelta è caduta
sullLM 324, circuito integrato contenente 4
operazionali in grado di funzionare in single
supply.
Per attenuare il segnale da 2.55V a 1V si è
scelto di utilizzare due amplificatori
operazionali in configurazione invertente (con la
configurazione non invertente ne sarebbe bastato
uno ma non è possibile praticamente avere un
guadagno minore di 1). Il primo invertente
attenua il segnale e lo rende negativo il
secondo ha il compito di riportare positivo il
segnale. Quindi occorre utilizzare amplificatori
dual supply (visto luscita negativa del primo
stadio) e pienamente operativi e lineari tra il
range da 2.55V a 2.55V. La soluzione più
economica è utilizzare due comunissimi uA741.
21a/d
CONVERTITORE A/D CA3162 E DRIVER 7 SEGMENTI
CA3161 Il circuito visualizzatore della velocità
è formato principalmente da due componenti
principali il CA3161 e il CA3162. Il CA3161 è un
decoder BCD/7 segmenti per display ad anodo
comune ed è generalmente accoppiato al
convertitore A/D con uscita BCD per tre bit
multiplexati, permettendo il pilotaggio di tre
display a 7 segmenti contemporaneamente. Il
convertitore legge lingresso (che devessere
compreso tra 0V e 1V) invia in sequenza al
decoder prima la cifra delle unità, poi quella
delle decine e infine quella delle centinaia,
ripetendo poi questo ciclo. Il decoder applica la
cifra decodificata ai 3 display, ma di essi si
accende solo quello abilitato dal multiplexer
interno al convertitore. Quindi, ad esempio,
quando il convertitore invia la cifra delle unità
il decoder la decodifica in codice 7 segmenti e
la applica ai 3 display. Nel frattempo il
convertitore pone basso il pin 5 provocando la
saturazione del transistor che abilita la cifra
delle unità. Durante questa fase i pin 4 e 3 sono
alti e quindi i transistor che abilitano le altre
due cifre sono interdetti e quindi gli altri due
display sono spenti. Dopo un breve intervallo di
tempo il convertitore invia la cifra delle decine
e si ripete il processo per il quale il display
delle decine si accende e si spengono gli altri
2, poi la stessa cosa con la cifra delle
centinaia dopo di che il ciclo si ripete. In
questo modo ogni cifra si accende e si spegne in
sequenza visualizzando la propria cifra. La
rapidità di accensione e spegnimento dei 3
display è tale da permettere allocchio umano di
vedere tutte e tre le cifre sempre accese.
PIEDINATURA CA3162
PIEDINATURA CA3161
22driver
SCHEMA CIRCUITALE
NOTE E OSSERVAZIONI
Il convertitore è del tipo a integrazione ed è
quindi necessaria la presenza del condensatore
poliestere da 220nF per tale scopo. Lintegratore
interno viene alimentato da un generatore di
corrente che va tarato agendo sul pot collegato
al pin 13 la taratura va fatta dando in ingresso
1V preciso i display dovranno visualizzare
999. Lingresso è di tipo differenziale e la
differenza di tensione massima tra gli ingressi
(pin 11 e pin 10) è di 1V collegato il pin 10 a
massa, la tensione differenziale corrisponderà a
quella del pin 11. Tra il pin 8 e il pin 9 va
collegato un potenziometro per tarare lo zero
(valore iniziale) la taratura va fatta mettendo
a massa il pin 11 e variando il pot fino a quando
sui display verrà visualizzato lo zero.
237segm
DISPLAY 7 SEGMENTI Un display 7 segmenti è un
semplice dispositivo formato da 7 piccoli led
disposti a 8, ognuno dei quali illumina un
segmento di questo 8, riuscendo a rappresentare
tutte le cifre esadecimali da 0 a F. Un ottavo
led rappresenta il punto (o virgola) separatore
delle cifre e si utilizza quindi nel caso di più
display per visualizzare altrettante cifre, se il
numero da rappresentare è con la
virgola. Esistono 2 diversi tipi di display a
catodo comune(G) e ad anodo comune(H-). Nei
primi i catodi di tutti i led sono uniti
internamente in un unico pin che va collegato a
massa, quindi per laccensione dei segmenti si da
tensione ai singoli anodi viceversa quelli ad
anodo comune hanno lanodo in comune collegato
alla tensione di alimentazione e laccensione
avviene nel mandare a massa i catodi. Nel
progetto sono stati scelti i secondi per essere
compatibili con le uscite del CA3161 attive basse.
STRUTTURA INTERNA DISPLAY ANODO COMUNE
PIEDINATURA
24semaf
- SEMAFORO
- Per completare il progetto si è deciso di creare
un piccolo semaforo a led da aggiungere alla
strada dove sono istallati i sensori. - Vi sono molte soluzioni per creare un semaforo
- con le porte logiche, utilizzando un contatore
con un clock molto basso - con il microcontrollore HC08 a 8pin
- Si è scelta la seconda soluzione per diversi
motivi la semplicità circuitale, il numero
davvero ridotto di componenti e la facilità
realizzativa. - Infatti utilizzando il micro basta collegare 3
led dei tre colori del semaforo (rosso, giallo,
verde) a tre pin a scelta tra quelli possibili da
utilizzare come uscite e, dal programma,
scegliere quale led accendere e per quanto tempo. - La logica del programma è basata sulla falsariga
del programma dellautovelox il micro fa
accendere un led e nel frattempo conta per un
certo tempo, poi quando arriva ad un certo numero
di secondi spegne il led e ne accende un altro, e
così via. - Il programma è il seguente
- XDEF main, irq_isr, inizio, rosso, verde,
inizio2, inizio3, aranc - Include 'HC08QT.inc'
- DEFAULT_ROM SECTION
- init
- bset 0, CONFIG1
- mov 00010011, DDRA pta0(giallo),pta1(rosso),pt
a4(verde) uscite - mov 00001000, PTAPUE pull-up su pta3(reset)
- mov 00000000, PTA pta tutto a zero
- mov 49, CONFIG2
SCHEMA A BLOCCHI
25alim
ALIMENTAZIONE Vista la necessità di utilizzare
operazionali con alimentazione duale 15V/-15V il
progetto si completa con un alimentatore duale
stabilizzato da 15V/-15V. Visto che la maggior
parte dei componenti circuitali sono però
alimentati a 5V, in ogni circuito è presente un
regolatore di tensione 7805 la cui uscita è
collegata a tutte le alimentazioni dei componenti
funzionanti a 5V allingresso arrivano i 15V
dellalimentatore stabilizzato. Lalimentatore
stabilizzato è in grado di generare una corrente
massima continua di 1.2A da ognuna delle due
uscite, con picchi massimi di 2.4A. Per il
semaforo è invece stata scelta una batteria
transistor 9V ricaricabile, vista la poca potenza
necessaria al suo funzionamento. Con una batteria
di 150mAh la durata del semaforo è di circa 8ore,
assorbendo circa 20mA totali. Anche sul semaforo,
per alimentare il micro a 5V, cè un regolatore
7805. Lalimentatore è suddivisibile in alcuni
blocchi principali
SCHEMA A BLOCCHI E FORME DONDA
16
16
15
18
220
-18
50Hz
-16
-16
-15
26altro
- PROBLEMI RISCONTRATI E OSSERVAZIONI
- Durante la costruzione non si sono riscontrati
particolari problemi. - Si è scelto di costruire su millefori la parte
inerente il microcontrollore, flip-flop e
operazionali per poter eventualmente fare
modifiche al circuito. Su basetta stampata è
stata invece realizzata la parte di
visualizzazione della velocità, dove non era
necessario apportare modifiche visto che la
configurazione dei componenti è obbligatoria. - Osservazioni importanti vanno fatte
sullaccensione - vista la presenza di microcontrollori, occorre
schiacciare i pulsanti di reset dellautovelox e
del semaforo per un corretto funzionamento - visto che il flip-flop allaccensione da
unuscita alta e non bassa come il progetto
necessita, il primo passaggio dellauto tra i due
sensori non verrà considerato e servirà solamente
a portare il flip-flop con uscita bassa. - Questultima osservazione è stata analizzata e
una possibile soluzione poteva essere un
condensatore in parallelo allingresso clear del
flip-flop che teoricamente ritarderebbe il
livello alto in ingresso per la durata della
carica la soluzione è stata però scartata visto
che durante il normale funzionamento
dellautovelox il condensatore rimaneva carico (a
livello basso arrivava comunque qualche millivolt
e non si scaricava mai) e quindi lingresso clear
non andava mai a livello basso. - Unaltra soluzione per il problema del flip-flop
poteva essere quella di far considerare al micro
solo fronti di salita e fronti di discesa in
ingresso per far partire o fermare il conteggio
ma anche in questo caso una misura sarebbe andata
persa. - Piccoli problemi sono sorti a causa di saldature
che si staccavano dalla basetta causando
malfunzionamenti, problema però risolto con
unaccurato controllo.
27IN ALLEGATO IL MASTER DEL CIRCUITO VISUALIZZATORE