|
Appunti tecniche |
|
Visite: 1942 | Gradito: | [ Medio appunti ] |
Leggi anche appunti:Wankel vs. benzWANKEL Vs. BENZ Storie Ford T (1916) NSU Spider Analisi del processo accelerativo e teorie di onset nei propulsori mpdANALISI DEL PROCESSO ACCELERATIVO E TEORIE DI ONSET NEI PROPULSORI MPD 1 La Coefficente di riempimento della cameraCoefficente di riempimento della camera Un parametro importante è il coefficiente |
L'assemblaggio
Il corpo di QWEWER e ogni sua giunzione sono composti interamente da mattoncini Lego Technic. Ho optato per questa scelta per la facilità del montaggio, avendo già a disposizione tutti i pezzi necessari; inoltre la variegata forma dei singoli mattoncini permetteva una certa flessibilità nella costruzione, consentendomi di progettare una forma semplice ma allo stesso tempo compatta e resistente.
Tutta la struttura poggia in una solida base, rinforzata opportunamente con dei perni per evitare che i pezzi si stacchino accidentalmente.
È presente il motore principale, che fa ruotare degli ingranaggi per permettere alla torretta di girare in senso orario o antiorario di 360°.
Tutto ciò è permesso da un pezzo speciale, composto da due ingranaggi posti uno di fronte all'altro e uno alla sommità di questi due, che serve per trasferire il moto circolare dettato dal motore da orizzontale a verticale.
La torretta è sorretta da un'asse saldamente fissata alla parte superiore tramite un connettore a T, il quale è legato a dei sostegni alla base della struttura.
L'albero motore è fissato alla base in maniera che faccia buona presa sugli ingranaggi motrici e soprattutto non si pieghi.
La "testa" è l'alloggiamento per il
secondo motore, che ha il compito di
inclinare in alto o in basso la
fotoresistenza per un angolo complessivo di 90°. Questa è formata da due parti: la calotta inferiore, che è fissata all'asse, e la calotta superiore che tiene fisso il motore in modo che non si sposti durante i movimenti. Entrambe le parti sono tenute assieme da altri connettori a T e dei perni simili a quelli usati nella base.
Il braccio sinistro è composto da un'asse leggermente più corta di quella che sorregge la testa, la quale è collegata al motore tramite un incastro appositamente costruito su misura utilizzando dei vecchi tubi di plastica. Alla sua estremità troviamo il sostegno per la fotoresistenza.
Purtroppo l'incastro improvvisato e autocostruito era instabile, e ho dovuto provvedere a fissare il braccio ad un supporto più robusto, per evitare che si inclinasse troppo falsando quindi le rilevazioni effettuate.
Dall'altra parte si trova il braccio destro di QWEWER. Quest'arto ha l'unica funzionalità di servire da contrappeso per un miglior bilanciamento, e naturalmente svolge una funzione centrale nel renderne più divertente l'aspetto, insieme ad occhi malvagi e orecchie drizzate!
I MOTORI
La scelta dei motori non è stata facile.
Inizialmente pensai di utilizzare motori passo-passo per la loro precisione e stabilità, data dalla lenta velocità di coppia e dalla possibilità di regolare alla perfezione la posizione angolare dell'albero. C'era solo un piccolo, grande problema:
questo tipo di motori avevano bisogno di una scheda di pilotaggio per poter funzionare. Senza di questa, non si muovevano nemmeno di un millimetro. Purtroppo me ne accorsi troppo tardi e, con grande delusione, decisi di mettere da parte i passo-passo.
La seconda opzione erano i cosiddetti motorini elettrici in corrente continua, di facile reperibilità (ho dovuto smontare un'intera macchinina radiocomandata) e grande versatilità.
Infatti i motorini elettrici hanno bisogno di poca tensione per funzionare, rispetto ai motori passo-passo, e un assorbimento di corrente medio di 150mA.
Presentano però il problema della velocità di rotazione: mentre con i passo-passo si aveva una rotazione lenta e precisa, questi hanno una coppia estremamente più elevata, e quindi imprecisa. Limitare la tensione di alimentazione dei motori sarebbe stata la soluzione migliore al problema, ma di impossibile realizzazione visto che sono pilotati dall'integrato L293D, che non accetta tensioni minori di 4,5 volt.
Ho risolto questa complicazione da software, creando una funzione delay(int msec); produceva un ritardo di n millisecondi, determinando così una sorta di clock per il motore, che rimane attivo solo per un brevissimo lasso di tempo e poi si spegne. Preciso che nell'ambiente di sviluppo Borland C++ non è presente una funzione già predefinita che produce un ritardo in millisecondi, ma solo nell'ordine dei secondi.
//produce un ritardo di msec millisecondi
#include <time.h>
void delay(int msec)while(end-start < msec);
La
funzione clock() restituisce il
valore del clock interno del microprocessore. La funzione delay è molto
semplice: resta bloccata nel ciclo finché la differenza tra il momento attuale
e quello del segnale di start è minore del valore indicato. Ma anche questo
sistema è soggetto ad alcuni problemi di precisione: si ha un ritardo minimo di
50-60 millisecondi, perché
Ma 60 millisecondi bastano per far muovere di uno scatto il motore. Compie un movimento un po' brusco, ma la struttura è solida e capace di resistere a strattonamenti.
Ma diamo uno sguardo a cosa c'è dentro a quelle scatoline misteriose!
Questo a sinistra è il motore di base, che fa girare l'asse principale. Fisicamente è più grosso del secondo perché deve muovere tutto il peso della torretta. Si notino come gli ingranaggi formino una sorta di limitatore di coppia, rallentando di molto la rotazione finale.
Il motore secondario (a destra)
invece è più piccolo in termini di potenza, ma nonostante questo, presenta una coppia più elevata del primo. Infatti possiede ben due ingranaggi intermedi per rallentare ulteriormente la velocità di rotazione finale.
IL CIRCUITO
Il robot QWEWER è dotato di una serie di integrati che gli permettono di interagire con il mondo esterno, e di trasferire i dati al programma elaboratore attraverso la porta parallela. La seguente figura rappresenta lo schema a blocchi dei componenti e la dinamica con cui comunicano tra loro.
Senza entrare subito nei dettagli, notiamo che ogni integrato è comandato direttamente dal software attraverso un'interfaccia, creata appositamente per comunicare con la porta parallela e trasferire i segnali di controllo dal computer al circuito.
Analizziamo ora lo schema circuitale completo:
LEGENDA:
Nella prima parte, dedicata al controllo dei motori, i collegamenti in blu si riferiscono a quei segnali destinati al comando del primo motore, mentre quelli verdi si riferiscono al secondo.
Nella parte inferiore, troviamo i componenti riguardanti l'acquisizione e la conversione dei segnali luminosi analogici provenienti dall'esterno.
Qui, i collegamenti blu si riferiscono ai bit più significativi (MSB) mentre i verdi ai bit meno significativi (LSB). In uscita all'integrato 74LS157 si avrà uno dei due nibble (collegamenti rossi), selezionato tramite il comando di STROBE.
Per semplificare la rappresentazione dello schema, ho riassunto in un simbolo (SWITCH) il sistema di pilotaggio degli integrati, composti da un transistor e due resistenze. Vedremo successivamente in dettaglio il suo significato, insieme alla spiegazione di ogni singolo componente presente nel circuito e la sua funzione.
ELENCO COMPONENTI:
7 resistori 560 Ω
7 resistori 22k Ω
1 resistore 10k Ω
2 resistori 330 Ω
1 resistore 100 Ω
7 transistor BJT NPN BC109B
1 integrato 74LS04
1 integrato L293D
1 integrato 74LS157
1 convertitore analogico/digitale ADC0804L
2 Motorini elettrici in corrente continua
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(+)max-VIN(-))/2. In questo 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 lo SHIFT REGISTER vengono resettati, e rimangono in questo stato di reset fintantoché il segnale di START persiste.
Quando CS o WR sono riportati a 1, inizia la conversione vera e propria:
il SAR comincia a ricercare le combinazioni, e una volta terminato lo SHIFT REGISTER pone un 1 nel registro DFF2, che attraverso la porta AND G2 abilita il trasferimento del byte nel buffer tri-state, e INTR viene settato. Nel caso in cui il dato in uscita viene reso sempre disponibile (RD=0) INTR sarà sempre settato a 1, indipendentemente dallo stato del convertitore.
Esiste un'altra modalità di funzionamento, detta FREE-RUNNING, nella quale si ha una continua conversione del segnale analogico d'ingresso.
Le linee INTR e WR vengono collegate assieme fra loro e CS viene posto a 0; in modo che ad ogni fine di conversione, INTR abilita automaticamente l'inizio di una nuova conversione e così via, fino a che non si riporti il valore di CS a 1.
Come detto precedentemente, le linee di ingresso alla porta parallela sono solo quattro, mentre l'ADC rende disponibili ben 8 valori nello stesso istante. Per estendere le capacità della porta parallela ho usato uno speciale multiplexer, l'integrato 74LS157.
I Multiplexer o Selettori di dato, sono in sostanza dei commutatori rotativi digitali con più ingressi ed una sola uscita.
Questo componente si comporta come un commutatore a 4 vie - 2 posizioni, cioè ogni via ha 2 ingressi e un'uscita.
Nelle coppie 2-3, 5-6, 10-11, 13-14, sono poste le relative entrate da multiplexare.
È possibile selezionare , attraverso il piedino SELECT, le linee di output desiderate. in sostanza, stabilisce quale dei 2 ingressi verrà copiato in uscita, quando strobe è a 0: il disegno sottostante sottoline che con select a 0 passano gli ingressi A e, viceversa, con con select a 1 passano gli ingressi B.
Una visione più dettagliata del circuito interno è qui posta:
Il piedino (pin 15) di STROBE (o ENABLE) controlla tutte e 4 le uscite e, se non è attivo (cioè è a 1 o scollegato), tutte le uscite sono a 0. Il componente funziona solo se il pin 15 è messo a massa, in questo caso ciascuna delle 4 uscite assume lo stesso valore logico di uno dei rispettivi 2 ingressi, A o B, dipendenti dal pin SELECT. Qui in basso vengono mostrati i valori critici e il comportamento dell'integrato in particolari condizioni
Appunti su: adc0804l, |
|
Appunti Automobile | |
Tesine Silvicoltura | |
Lezioni Aeronautica | |