Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
Tesina - Premio maturità 2009
Titolo: Il progetto QWEWER, una porta tra il mondo fisico ed informatico.
Autore: Cardin Christian
Descrizione: Un piccolo robot che, muovendosi in una semisfera a 360, compie rilevazioni sulla quantit luminosa circostante e scrive i dati in un database per effettuare delle indagini statistiche.
L'idea per questo progetto mi venne casualmente, in un pomeriggio di ottobre, osservando come i lampioni si accendessero automaticamente al giungere del crepuscolo mentre la luce solare si attenuava. A quel punto un abbozzo già cominciava a comporsi nella mia mente, tratti grossolani di una struttura mobile con un sensore capace di percepire l'intensità solare circostante. Non sembrava nulla di estremamente complesso, e man mano che riflettevo il progetto cominciava sempre più a prendere forma. Quello che avevo in mente era un robot a tutti gli effetti, rudimentale, ma pur sempre dotato di parti mobili comandati da un software; capace inoltre di percepire stimoli esterni, quali la luce. Mi affascinava il fatto di realizzare con le mie mani l'idea che avevo pensato, e decisi di portare il progetto QWEWER come tesina del mio esame di Stato. Anche QWEWER deriva da un fatto del tutto casuale! Non sapendo che nome attribuire alla mia creatura, cominciai a digitare caratteri a caso nella tastiera, nella speranza che qualcosa saltasse fuori. Ebbi la fortuna di trovare quasi subito una combinazione che non sembrava insensata, ma nemmeno troppo banale nella sua semplicità . Potrebbe sembrare buffo il nome, come in parte il suo aspetto: infatti anche la forma di QWEWER è puramente casuale!
Materie trattate: informatica, sistemi, elettronica, calcolo
Area: tecnologica
- 1 fotoresistenza
- 1 interruttore
Il tutto opportunamente saldato su board millefori con stagno 1mm e
cavetti conduttori.
Passiamo ora alla spiegazione e alla visione dei datasheet degli
integrati.
Come da schema, ogni pin OUT della porta parallela è collegato ad un
transistor bipolare BJT.
Il transistor è un componente elettronico attivo, formato da
semiconduttori, che funziona come amplificatore o interruttore, e a
seconda di come viene polarizzato può comportarsi in modi differenti. In
questo contesto viene usato come un interruttore digitale.
La porta parallela, infatti, non è abilitata ad erogare una corrente
degna di tale nome, e non può quindi pilotare nessun tipo di integrato.
Ma collegando un pin di uscita alla base del
transistor, è possibile mandarlo in stato di
SATURAZIONE(ON) o INTERDIZIONE(OFF).
Il passaggio da uno stato all'altro è controllato dalla corrente di base
o dalla tensione di base-emettitore. Se si lascia aperto l'ingresso o si
applica all'ingresso il potenziale della massa, la corrente di base non
fluisce e praticamente neanche la corrente di collettore. La figura
l’esempio pratico del funzionamento. I valori in nero si riferiscono alle
grandezze durante la fase di interdizione, mentre quelli in rosso alla
fase di saturazione.
Così, quando il livello logico del pin è 1, l’emettitore andrà a massa,
dando quindi in uscita uno 0 logico; mentre con uno 0 in entrata,
l’uscita sarà 1.
L’utilizzo della porta NOT è spiegata perché i bit di output
all’accensione del computer, per default, sono settati a 0. Quando il
software non comanda la porta parallela tutti i transistor conducono, e
andrebbero ad attivare tutti i motori contemporaneamente, provocando
danni alla struttura. INTEGRATO 74LS04
Con l’aggiunta dell’integrato 74LS04 si scongiura questo problema, e la
gestione da parte del software diventa più intuitiva, visto che si evita
di ragionare in logica negativa dei transistor. Svolge un ruolo
fondamentale anche nella gestione dei motori, riducendo il numero di pin
OUT da utilizzare per il controllo.
Per capire meglio il perché, spieghiamo prima a cosa serve l’integrato
L293D, detto anche PONTE AD H.
COSÈ UN PONTE H?
È un circuito che pilota un motore in corrente continua, e permette di
farlo lavorare in quattro diversi stadi: avanti, indietro, stop, frenato.
Lo schema può essere così rappresentato:
Le varie fasi di funzionamento sono
determinate dalle combinazioni di questi
quattro interruttori. Lo scopo del
circuito è quello portare il motore in
uno di questi quattro stadi, incanalando
la corrente nel modo giusto.
La tabella sottostante spiega in modo
completo le varie configurazioni:
Il senso di rotazione del motore dipende dalla sua polarizzazione. Se
questo non è polarizzato, lo statore interno rimarrà immobile, ma non
trattenuto da nessun tipo di forza.
Se invece viene polarizzato positivamente in entrambi i capi, il motore
rimarrà fermo, ma anche provando a muoverlo con le dita, sentiremo una
resistenza. Quest’ultima configurazione però è molto rischiosa, perché se
la si adopera senza proteggere adeguatamente il motore, può portare alla
sua distruzione.
Gli interruttori possono essere sostituiti da transistor, in modo da
poter comandare il motore a proprio piacimento. È appunto quello che
permette di fare
l’L293D.
L’integrato è in grado
di pilotare motori a
partire da 4.5V fino ad
un massimo di 36V, con
un’erogazione di
corrente di 600mA per
ponte. Può guidare fino
a quattro motori
contemporaneamente, ad
un solo senso di
rotazione, oppure due
motori con la possibilità di invertire il movimento rotatorio. Ecco uno
schema che mostra come è possibile muovere più motori contemporaneamente:
Ogni ponte può dirigere fino a due motori, collegati in coppia e
attivabili attraverso il piedino di ENABLE(pin1 per gli apparati 1 e 2,
pin9 per gli apparati 2 e 3). Sono alimentati tutti alla stessa tensione,
applicata al piedino 8. È possibile controllarne lo stato attraverso i
piedini 2 e 7 per il ponte 1, 10 e 15 per il ponte B. nel caso di motori
ad una direzione (come nel lato destro), il motore comincerà a girare nel
momento in cui il piedino di input andrà a livello logico 1, mentre si
fermerà quando andrà a 0.
Nel caso di motore bidirezionale, lo stato assunto dipende da entrambi i
piedini di input (in questo
caso da pin2 e pin7).
Da questa tabella notiamo come
è possibile frenare il motore
polarizzando entrambe le
entrate nella stessa maniera,
o portando il piedino ENABLE a
0. In questo caso non si
rischia di produrre alcun
danno, il circuito interno
all’integrato possiede un
sistema di protezione adeguato. Per far girare il motore a destra o a
sinistra sono quindi necessari due bit: 01 ruota a destra, 10 ruota
a sinistra. Ma dalla porta parallela basta una sola uscita: basta
collegare il pin 2 all’uscita della parallela, e il 7 alla stessa uscita,
però negata! Ecco spiegato quindi l’utilità di avere l’integrato 74LS04.
Si può riassumere la funzione di ogni piedino su questa tabella:
Il chip L293D è veramente unico, è il preferito da tutti i roboamatori
per la sua semplicità ed efficienza nel funzionamento. Una caratteristica
fondamentale è la protezione contro eventuali correnti inverse
(provenienti dai motori) che andrebbero a danneggiare gli apparati
interni al circuito. Questo avviene grazie all’applicazione di diodi in
coppia ai transistor Darlington in entrata e in uscita, come da schema.
La seconda parte del circuito si occupa dell’acquisizione dell’intensità
solare attraverso una fotoresistenza, e la relativa acquisizione da parte
del software.
La fotoresistenza è un componente elettronico la cui
resistenza è inversamente proporzionale alla quantità di luce
che la colpisce.
I materiali più usati sono il solfuro di cadmio CdS e il
solfuro di piombo PbS. L'energia radiante fornita ad un
semiconduttore provoca la rottura di alcuni legami covalenti e
quindi la produzione di coppie elettrone lacuna in eccesso
rispetto a quelle generate termicamente che causa una
diminuzione della resistenza elettrica del materiale (effetto
fotoconduttivo). Quando la radiazione incidente viene
interrotta i portatori di carica in eccesso si ricombinano
riportando la conducibilità del semiconduttore al suo valore
iniziale in condizioni di oscurità.
Visto che esse cambiano il loro valore resistivo al cambiare
dell’intensità luminosa, si può fissare indicativamente:
valore di buio: qualche MΩ
valore di luce: intorno al KΩ.
Bisogna però tener presente che questi componenti sono “lenti”
(variazione di circa 200 Kohm/s) cioè se la luce varia rapidamente
bisogna attendere un lasso di tempo sufficientemente ampio per avere un
corretto responso.
Collegando la fotoresistenza nel modo indicato nel circuito, è possibile
avere un range di tensioni che va da 0 (luce massima) a +5V (oscurità
totale). Però sarà una grandezza analogica, mentre il computer accetta
solamente dati in forma digitale.
Il responsabile della conversione dei dati da analogici a digitali, è
appunto l’ADC0804.
CONVERTITORE ANALOGICO/DIGITALE ADC0804
Si tratta di un componente CMOS in grado di operare la conversione
Analogico-Digitale a 8 bit con la tecnica delle approssimazioni
successive.
Tra le sue caratteristiche principali ricordiamo la risoluzione pari a 8
bit, il tempo d'accesso di 135 ns, il tempo di conversione di 100 µs.
Nella figura di pagina precedente vediamo una tipica applicazione
circuitale. Questa di lato è la piedinatura. Ora
analizzeremo attentamente uno per uno
ogni singolo piedino.
CS sta per Chip Select, ed è attivo
basso per consentire ogni tipo di
operazione.
RD sta per Read, anch’esso attivo basso
per rendere disponibile il dato nelle
linee di uscita.
WR sta per Write. Per default attivo
basso, dove una commutazione da alto a
basso attiva il processo di conversione.
Questa commutazione è chiamata anche
segnale si START.
CLK IN e CLK R sono indispensabili per
il corretto funzionamento dell’integrato. L’ADC possiede un clock interno
generato da un trigger di Schmitt invertente, ma esternamente ha bisogno
dell’integrazione di una rete RC.
Il clock tipico è di 640kHz, ottenibile
applicando un resistore da 10kΩ e un
condensatore da 150pF nella maniera
illustrata a fianco.
INTR: quando il dato digitale viene trasferito sui pin d’uscita, la linea
viene portata da 1 a 0. Questo pin serve nel caso si abbia la necessità
di collegare il convertitore analogico/digitale ad un pic, e lo avvisa
dell’avvenuta conversione. Una volta che il dato è stato letto (RD=0) il
valore di INTR ritorna a 1.
VIN+ E VIN-: Sono rispettivamente la tensione e la massa della grandezza
analogica da convertire. L’ingresso è di tipo differenziale, e può
ricevere da -0,3V a +18V. Il dato digitale d’uscita risulta quindi
essere proporzionale alla differenza di tensione fra i 2 pin d'ingresso.
AGND e DGND: massa analogica e digitale. Nel mio circuito entrambe si
riferiscono alla stessa massa, quindi saranno collegate in pari.
VREF/2: tensione di riferimento. Stabilisce il range di conversione, e la
tensione che è messo su di esso è pari a: (VIN(+) -VIN(-))/2. In questo
max
modo si può decidere a priori i valori digitali di massimo e di minimo
ottenibili in uscita. Nel mio caso viene adottato il range completo,
ossia da 00000000 a 11111111, e quindi il valore di VREF/2 sarà: (5-0)/2
= 2,5V. Se VIN(+) = VREF/2, il dato in uscita sarà 10000000. Nel caso in
cui non venga applicata nessuna tensione esterna al pin, il valore della
tensione di riferimento viene assunto pari a Vcc/2.
DB0-DB7: Linee digitali di uscita, è il valore della nostra grandezza
analogica convertito in un numero binario a 8 bit. DB0 è il bit meno
significativo (LSB), mentre DB7 è il più significativo (MSB)
VCC: Piedino di alimentazione. Il massimo valore accettato è 6.5V, sono
consigliati i classici 5V.
CIRCUITO INTERNO DELL’ADC0804:
Per la conversione, il convertitore si avvale del registro SAR
(Successive Approximation Register): particolare circuito sequenziale,
contenente una rete di 256 resistori in serie: si avvale della logica
delle approssimazioni successive per inserire o togliere tali resistori
(con l'aiuto di deviatori elettronici) al fine di determinare
l'uguaglianza tra la tensione differenziale in ingresso (Vin(+) – Vin(-))
e la caduta di tensione provocata dai resistori effettivamente inseriti.
In questo modo è in grado di generare un codice binario ad 8 bit.
L’algoritmo di conversione è abbastanza semplice.
Accanto al SAR, è presente anche uno SHIFT REGISTER (registro a
scorrimento), che rende più agevoli le operazioni di lettura e scrittura.
È composto da una catena di celle di memoria ad un bit interconnesse tra
loro. Ad ogni impulso di clock essi consentono lo scorrimento dei bit da
una cella a quella immediatamente adiacente, lo scorrimento può avvenire
verso destra, verso sinistra o in alcuni tipi detti bidirezionali sia
verso destra che verso sinistra in base allo stato di una linea di
controllo, a seconda se questa linea è a un livello di 0 logico oppure di
1 logico i dati vanno in una direzione oppure nell'altra.
In sostanza, genera combinazioni di bit per permettere al SAR di eseguire
il suo compito.
ALGORITMO DI CONVERSIONE:
Per prima cosa, viene creato il codice 10000000 (che corrisponde a
VREF/2), e viene comparato con il valore di VIN(+). Se VIN(+)è minore il
MSB viene forzato a 0, altrimenti si lascia a 1; in ogni caso l'indagine
viene portata avanti impostando ora il bit6 a 1 e confrontando di nuovo
la tensione d'ingresso VIN(+) con la tensione generata dal numero così
aggiornato, 11000000 o 01000000. Risulta evidente che dopo otto confronti
(e rispettivi aggiustamenti) il numero binario finale è quello che
corrisponde al campione di tensione proposto in ingresso; per ottenerlo
sono comunque necessari in totale 64 periodi di clock.
COME AVVIENE LA CONVERSIONE?
Tutto si gioca sui pin di controllo CS,WR e RD, che determinano lo stato
dell’ADC a seconda di come sono settati.
La conversione comincia quando CS e WR sono posti a 0. Il registro SAR e