PROGETTAZIONE OSCILLOSCOPIO SETTABILE CON LABVIEW 7.0
Con l’oscilloscopio oltre a doversi fidare della stima della grandezza, si ha anche un contatto più
diretto con l’andamento del segnale. Il cavetto di collegamento in funzione tra la sorgente e
l’oscilloscopio è molto importante, perché la sua struttura fisica parafrasa un filtro, un cavo bnc
dotato di una certa lunghezza. Esso sarà dotato di una determinata resistenza tra il punto sorgente e
il punto di misura, ed, essendo un cavo coassiale, avrà anche una capacità cilindrica tra il punto
sorgente e il punto di misura, e avendo chiuso il circuito ci sarà anche l’induttanza tra la sorgente dl
segnale e il punto di misura.
Ci si trova in una condizione dove si ha una sorgente supposta ideale in uscita al generatore di
segnale e la sorgente in ingresso dell’oscilloscopio supposta ideale. Questo oggetto reale fisico può
modificare il segnale. Ad esempio:
Se fosse un filtro passabasso, lavorando a frequenze maggiore a quella di soglia (frequenza limite),
il segnale sarebbe deformato o attenuato. Anche se fosse un segnale a più componenti sarebbe
distorto.
Dopo aver collegato il cavetto bnc tra generatore di segnale e oscilloscopio:
Si suppone di generare con il generatore di segnale un’onda rettangolare, e poi visualizzare lo stesso
segnale sull’oscilloscopio. Si imposta il valore massimo di frequenza di 20 MHz con impedenza
d’ingresso infinita.
L’oscilloscopio si configura in questo modo.
A differenza del voltmetro l’oscilloscopio ha due fondo-scala, uno per le ampiezze e l’altro per i
tempi. Quello delle ampiezze è gestito dall’asse verticale quello dei tempi è gestito dall’asse
orizzontale, l’asse verticale si regola con i V/div quello orizzontale si regola con i s/div.
Si ha ora un’onda rettangolare di 2 Vpp, frequenza 20 MHz e impedenza di ingresso infinita.
Per configurare correttamente l’oscilloscopio per vedere correttamente il segnale che si è generato,
per quanto riguarda il fondo-scala verticale, si sa che ci sono 10,24 divisioni, ma due di queste
divisioni sono nascoste, quindi quelle visualizzate sono 8 in verticale. Se voglio riempire tutto il
fondo-scala verticale si deve fare 2 / 8 (2 V / 8 div) il risultato è il numero di volt/div che si deve
scegliere sull’oscilloscopio. Questo numero potrebbe anche non esistere per l’oscilloscopio, perché
l’oscilloscopio rende possibili i valori 1, 2, 5 per multipli e sottomultipli di volt (esempio 1 mV 2
mV 5 mV e così via), in questo caso si ha 2/8 = 0.25 che non c’è sull’oscilloscopio, e si pone tra
200 mV e 500 mV e affinché si possa vedere l’onda rettangolare si deve scegliere 500 mV perché
con 200 mV si esce fuori scala. Lo stesso concetto lo si applica all’asse dell’ascisse. SE si vuole
visualizzare un’oscillazione del segnale, se ad esempio si ha un segnale di frequenza 1 kHz, il
periodo è 1 ms significa che su 10 div che rappresentano l’asse orizzontale si deve spalmare 1 ms, e
quindi bisogna fare 1 ms / 10 div, quindi 100 µs. Ora 100 µs è un numero che potrebbe essere
possibile come non potrebbe essere possibile da configurare. Detto ciò si va a visualizzare almeno
un periodo di segnale sul display.
Una volta eseguita l’operazione si nota che il segnale visualizzato sull’oscilloscopio è molto diverso
da quello che si poteva immaginare. La colpa è del cavo bnc, quindi si vede qualcosa che non è il
segnale della sorgente. Quindi si potrebbero fare delle misurazioni corrette sul segnale che si sta
visualizzando, però sarebbero sbagliate rispetto al segnale di partenza.
Noi abbiamo i campioni e le misurazioni che possiamo fare sono i valori picco-picco, frequenza o
valore efficace e valore medio.
Calcolare il valore medio significa saper creare un algoritmo che sappia fare la media tra i
campioni. 18
Fare una misurazione di valore efficace significa fare un algoritmo che sia in grado di misurare il
valore efficace.
Quello che non risulta agevole è realizzare un algoritmo per la misura id frequenza, ed è quello che
si introduce ora.
Ora usiamo il Labview per introdurre questo algoritmo
Il nostro algoritmo avrà in ingresso un array di dati che saranno i dati in uscita del driver realizzato
per acquisire i campioni.
Sul pannello frontale si genera un array.
Creiamo un array vuoto che conterrà un numerico, quindi andiamo ad inserire nell’array una
variabile di tipo numerica (numeric control).
Ora per misurare la frequenza si misura il periodo. Per definire il periodo si deve definire un evento
ossia il passaggio per lo 0 con pendenza positiva, oppure passaggio per lo 0 con pendenza negativa.
Si suppone di aver fissato l’evento per il passaggio per lo 0 con pendenza positiva, il periodo è la
distanza tra due eventi consecutivi. Sempre se si immagina che nell’array sia disegnata una
sinusoide, per capire quando c’è il passaggio per lo 0, si potrebbero interrogare campione per
campione e vedere quando è uguale a 0, quando è uguale a 0 si memorizza la sua posizione
nell’array, se si ha una sinusoide. Ogni punto della sinusoide avrà una locazione nella memoria, fino
ad arrivare ad n-1 campioni, con un array lungo n. Quando si trova il passaggio per lo 0, si va a
vedere in che posizione sta il campione, quindi sta nella posizione i-esima, e quindi l’altro
passaggio per lo 0 con pendenza positiva lo troveremo in un’altra posizione che chiameremo m2.
Quindi si vede che il primo passaggio per lo 0 si ha in una posizione che chiameremo m1, e il
secondo in una posizione che cambiano m2. Il periodo vale [m2 – m1 * (passo di campionamento)]
quindi conteggiare le posizioni, significa conteggiare quanti campioni ci sono tra il primo evento e
il secondo evento. La posizione m2 e 0 significa che ci sono m2 + 1 campioni nella posizione m1 ci
sarà m1 + 1 campione.
In M2 – M1 ci sono i campioni che chiudono il periodo.
Però non è possibile prendere il campione a cui è associato 0, potrebbe capitare, ma normalmente
non capita. Il passaggio per lo 0 è dato quando il campione precedente è negativo e il campione
successivo è positivo.
Vi-1 <0
Vi ≥ 0
Così inseriamo anche l’esistenza dello 0.
Queste due condizioni definiscono l’evento, passaggio per lo 0 con pendenza positiva, ora non si
deve analizzare un campione, ma si deve analizzare un campione con il successivo.
Se il primo è ≥ 0 e se il secondo è < 0. Se questa condizione è verificata, si parla di una AND, si ha
il passaggio per lo 0, si deve catturare la posizione di quel campione, va bene qualsiasi delle due
condizioni perché poi quando si chiude il periodo si recupera. Questo è l’algoritmo.
Ora bisogna realizzarlo.
L’array c’è, ora bisogna interrogare due campioni alla volta, e si potrebbe usare un ciclo ripetitivo,
quindi un ciclo for, e lo si realizza dopo l’array, che colleghiamo con il bordo sinistro del ciclo for.
All’interno del ciclo for si deve ripetere ciclicamente questa operazione, e farla N – 1 volte, perché
l’ultimo campione non può essere confrontato con nessun campione.
Quindi bisogna usare 2 index array
ALL FUNCTION → ARRAY →INDEX ARRAY
Che si inseriscono all’interno del ciclo for. 19
Come condizioni ora si può usare, visto che non cambia niente, solo un fatto pratico sul labview:
V i < 0
V i + 1 ≥ 0
I sarà l’elemento corrente i+1 sarà l’elemento successivo.
La i del ciclo for che sta in basso a sinistra conteggia il ciclo corrente, quindi quella i va da 0 a n - 1
dove quella n è il numero di volte che viene eseguito il programma all’interno del ciclo for.
L’index array prende l’array nella posizione index e lo porta fuori. Quindi se si hanno due index
array il primo deve essere collegato direttamente con la i nel contatto di index, l’altro index array
deve essere portato a i + 1, quindi si dovrà sommare 1 a d i e metterlo in ingresso all’index del
secondo index array. Così si sa chi è V i e V i+1. Nel menù numeric c’è l’operatore +1.
Ora si deve solo collegare l’array all’ingresso dell’index array. Se si cercasse di collegare
normalmente non va bene, perché il ciclo for si aspetta di caricare un valore alla volta, questo di
default, ora se si vede tra l’array e l’ingresso dell’index array c’è un rettangolino, se si clicca con il
tasto destro su quel rettangolino e si clicca “disable indexing“, l’array può essere collegato ai due
index array, perché in ingresso i due index devono vedere lo stesso array.
Ora si deve costruire una struttura dove si deve interrogare il valore i-esimo e il valore di i-esimo
+1, per sapere se il valore di i-esimo + 1 è ≥ 0 e se i-esimo è < di 0. Le due funzioni le troviamo in
ALL FUNCTION → COMPARISON
Ora le si collegano alle uscite, cioè < 0 sull’index i-esimo e ≥ sull’index i-esimo +1.
Le uscite di queste due funzioni assumono dei valori logici che possono essere vero o falso, queste
due condizioni si devono verificare contemporaneamente, e per poterlo fare si utilizza una porta
logica AND che si trova nel menù booleano.
ALL FUNCTION → BOOLEAN → AND
Quando l’uscita di quella AND è vera si è verificato un passaggio per lo 0, e quando si verifica
quella condizione si deve conoscere la posizione del campione. Questa posizione ce la dice l’indice
i, perché man mano che i cresce, e si ferma ad un certo numero ad esempio 6, si sa che quella è la
posizione dove si verificano quelle condizioni e si ha il passaggio per lo 0, e quindi in quel
momento si deve leggere la i.
Si suppone che la forma d’onda contenga M passaggi per lo 0, quindi se si suppone di avere M
passaggi per lo 0 si pensa di dover costruire un array, di grandezza M, ed in questo array di volta in
volta si va a mettere la posizione del campione che passa per lo 0, ossia il calore catturato dalla i,
dal ciclo corrente. Quindi si deve prevedere un array, e per prevedere un array c’è una funzione che
si chiama “inizializza array”
ALL FUNCTION → ARRAY → INITIALIZE ARRAY 20
La si porta fuori dal ciclo for a sinistra del ciclo for, e questa funzione ha bisogno di due valori:
1) La lunghezza dell’array, che ci sarà dato dall’indice quindi collegando su index
2) Quanti valori deve contenere inizialmente, questo andrà collegato sul morsetto “element”
Non si sa quanto sia M a priori ma si sa che non potrà essere più grande di N,
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
-
Relazione Laboratorio di Zoologia
-
Relazione finale di laboratorio
-
Relazione strutture
-
Relazione solaio