Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

8
voti

Strumentazione e controllo virtuali - Parte seconda

Articolo n° 2 su 3 del corso "Strumentazione e controllo virtuali". Vai all'indice del corso.

Paragrafi dell'articolo:

  1. Oscilloscopio
  2. Livelli ed allarmi
  3. Generatore di tensione
  4. Generatore di funzioni
  5. Analisi dei segnali

Strumentazione e controllo virtuali

G. Schgör

Oscilloscopio 

Proseguendo nella esemplificazione dell'utilizzo del dispositivo NI USB-6008, si mostra come sia possibile realizzare un semplice oscilloscopio a  2  tracce, mediante il programma  LabVIEW.

Premesso che si vuole mantenere il programma relativo più semplice possibile, si  fa notare che  quanto qui mostrato non rappresenta un limite del dispositivo e men che meno di LabVIEW.

Degli 8 ingressi analogici (ai0...ai7) del dispositivo, si utilizzano solo i primi 2 (ai0  e  ai1) come canali  di un oscilloscopio con tempo di scansione di 10 ms e che visualizza 100 campionamenti (quindi viene visualizzato a ripetizione un intervallo di 1 s).

Per la  programmazione si ricorre a  DAQ Assistant, modulo che semplifica enormemente l'inizializzazione dei canali d'ingresso dell'USB-6008 e che può essere prelevato dalla Functions Palette  per essere inserito nel Block Diagram (per queste finestre di LabVIEW, vedi la prima parte  di questi articoli).

Il colloquio guidato di questo modulo, chiede di definire nell'ordine: i limiti dei segnali di ingresso (in questo caso max = 5 V  e min = 0 V) e la scelta tra riferimento al GND (ground, cioè a massa) oppure floating (fra 2 ingressi). Qui si è scelto RSE , cioè il primo caso (Single Ended).

Vanno poi  definiti il tipo di campionamento (N, con i rispettivi valori di 100 campioni e 100 Hz di frequenza di campionamento).

Si devono infine scegliere  gli ingressi fisici  (ai0  e  ai1) attribuendo il primo a Voltage_ai0 (traccia gialla) ed aggiungendo il secondo con Add Channel (Voltage_ai1, traccia rossa).

Dopo queste predisposizioni, il modulo DAQ Assistant viene quindi generato automaticamente e già in grado di funzionare.

Dobbiamo tuttavia completarlo con il display (Waveform Graph), che si trova nella Controls Palette e che genera uno schermo nella finestra  Front Panel ed un'icona nel Block Diagram.

Anche quest'ultima richiede una inizializzazione, essenzialmente per indicare che si richiedono 2 tracce, ed alla fine deve essere eseguito il collegamento fra le 2 icone (mediante comando nella Tools Palette), clickando col mouse fra l'uscita del DAQ e l'ingresso del Graph.

Il risultato finale del Block Diagram è il seguente:

Attivandone  l'esecuzione, si ottengono nel display del Front Panel  le tracce dei 2 segnali.

Supponiamo ad es. che in un circuito esterno al dispositivo ci sia  una costante di tempo RC (= 0.1 s), alimentabile da una pila attraverso un  commutatore, come in figura (i numeri si riferiscono ai morsetti del dispositivo):

Ecco quello che appare nel Front Panel all'atto della commutazione:

Naturalmente tutto ciò è elementare, ma viene mostrato per mettere in risalto la semplicità dell'applicazione  di   DAQmx  (di cui fa parte DAQ Assistant), nell'ambito di LabVIEW.

Livelli ed allarmi

L'acquisizione di misure serve soprattutto alla sorveglianza dei relativi valori e spesso si devono generare allarmi al superamento di determinati livelli.

Anche queste funzioni si risolvono elementarmente con LabVIEW, semplicemente utilizzando nel Block Diagram dei blocchi di confronto fra misure e soglie prestabilite, come rappresentato in figura

Si riconoscono il DAQ Assistant , configurato per leggere la tensione applicata all'ingresso ai0 (morsetto 2) del dispositivo USB-6008, un visualizzatore numerico del valore di misura, il blocco comparatore (>) che confronta il segnale d'ingresso con un valore di soglia prefissabile ed infine un segnalatore luminoso che deve accendersi al superamento della soglia.

Tutto questo ha riscontro nel  Front Panel che riporta l'interfaccia verso l'operatore  dei singoli blocchi di programmazione:

(si noti la possibilità da parte dell'operatore di variare a piacere la soglia di intervento, fissata per default a 3,0 V).

Ed ecco il risultato del funzionamento, con un valore del segnale d'ingresso di 3,1 V:

Probabilmente un impiantista non si accontenterebbe della semplice accensione della lampada al superamento della soglia, ma esigerebbe delle precise sequenze per far sì che l'operatore "prenda atto" dell'allarme stesso.

L'aggiunta di circuiti logici che svolgano questi compiti non è un problema, ed è quello che è stato visto nella prima parte di questa serie.

Ecco come potrebbe essere modificato il circuito precedente per svolgere una sequenza di "riconoscimento allarme":

Essenzialmente si e' aggiunta una memoria (S-R Flip-Flop) del segnale d'allarme per superamento limite e, nel Front Panel, un pulsante di riconoscimento (stop).

Si notino le frecce di retroazione, necessarie nei circuiti sequenziali, e le loro inizializzazioni (sul fronte sinistro del loop "while")

Con un temporizzatore (Elapsed Time) se è poi creato un oscillatore per far pulsare l'accensione della lampada di segnalazione. Anche questo temporizzatore è reazionato per farlo ripartire alla fine di ogni ciclo.

Il funzionamento è dunque questo: all'arrivo dell'allarme questo viene memorizzato e la lampada inizia a pulsare fino all'intervento dell'operatore sul pulsante di stop.

A seguito di questo intervento, se l'allarme è ancora in corso la lampada resta accesa di luce fissa, altrimenti si spegne.

Questa (anche se semplificata) è una delle sequenze di riconoscimento allarmi normalizzata ISA.

Generatore di  tensione

E' già stato detto che l'USB-6008 ha 2 uscite analogiche (0-5 V). Vediamo come possono essere utilizzate per generare tensioni a valori prefissati mediante manopola (ovviamente "virtuale").

Nel Function Panel  dobbiamo scegliere il DAQ Assistant e trascinarlo nel Block Diagram. Questo va poi inizializzato per scegliere l'uscita in tensione ed il canale da utilizzare (ao0 oppure ao1).

Supponiamo di scegliere ao1, e di predisporlo per valori singoli (On Demand). Quello che resta da fare è predisporre la variazione del valore d'uscita  e la sua visulizzazione.

Dalla  Controls Palette scegliamo quindi una manopola (Dial), trascinandola nel Front Panel e  specializzandola (Properties) per una scala fra 0 e 5V, con incrementi di 0,1V.

La Controls Palette dà in realtà molte possibilità di scelta, sia con altri tipi di manopole (Knob) o di  cursori  di vario genere. Il progettista ha così a disposizione un'intera serie di predispositori per qualsiasi esigenza.

Naturalmente, una volta definito il tipo di controllo, l'icona della manopola nel Block Diagram deve essere collegata al DAQ Assistant , per fornirgli il riferimento di tensione d'uscita.

Volendo anche una precisa visualizzazione di  questo valore, possiamo aggiungere nel Front Panel un indicatore numerico, e la sua icona  nel Block Diagram dovrà essere collegata a quella del predispositore. 

Attivando quindi il programma (non dimenticando il loop per la ripetizione continua), si ottiene sul canale d'uscita predisposto (ao1, morsetto 15) la tensione variabile desiderata.

Questa tensione variabile con la manopola, potrebbe essere resa impulsiva mediante un interruttore (per es. del tipo a levetta già visto) che commuti il riferimento dell'uscita fra questo valore e zero, generando così una sequenza di impulsi a piacere.

Generatore di funzioni

Ovviamente, dalla possibilità di generare tensioni di uscita variabili, può pensare di generare anche forme d'onda particolari, quindi usare il dispositivo come un generatore di funzioni.

Questo è vero solo in parte, poiché l'USB-6008 non ha possibilità di temporizzazione hardware, quindi non può ricevere direttamente le forme d'onda generate dal blocco software appositamente previsto nel DAQmx ("Simulate Sig"), ma deve essere pilotato istante per istante dal programma LabVIEW.

Dalla Functions Palette si trascina nel Block Diagram l'icona  "Simulate Signal" e si inizializza per la forma d'onda desiderata. Ci sono 4 possibilità: Sine/Square/Triangle/Sawthoot.

Supponiamo di scegliere  la forma d'onda sinusoidale, quindi "Sine", occorre poi definire Ampiezza, Frequenza ed Offset (ci sarebbe anche la possibilità di impostare la fase, che lasciamo a 0). Per questi 3 valori è opportuno lasciare opportunità di scelta all'operatore, quindi prevediamo dei predispositori numerici sul Font Panel.

La forma d'onda così generata, può essere visualizzata su un display sempre nel Front Panel.

Nella inizializzazione del "Simulate Signal", si è dovuto anche prefissare la frequenza di campionamento ed il numero di campioni da generare: volendo limitare il campo di frequenza generata fra 1 e 10 Hz, è sufficiente un campionamento di 100Hz ed un numero di campioni = 100 (il che corrisponde ad  1 s). La base dei tempi del display sarà così predisposta ad 1 s.

Rimane ora da passare queste informazioni al  DAQ Assistant predisposto per il canale d'uscita.

I singoli campionamenti dovranno quindi essere memorizzati in un buffer, per essere poi rilevati, punto per punto dal DAQ. Ecco allora il loop di controllo del canale d'uscita:

Ogni 10 ms il buffer dei campioni precedentemente generati viene letto (Index Array) ed il valore corrispondente a quell'istante (i)  viene passato al DAQ programmato per il canale di uscita (ao1).

Il ciclo si ripete così ogni secondo generando in uscita una tensione sinusoidale con le caratteristiche di frequenza, ampiezza ed offset, impostate in precedenza.

In questa applicazione, per le limitazioni dell'hardware segnalate, non è possibile cambiare tali impostazione in "tempo reale", cioè è necessario  impostare i nuovi valori, poi  arrestare il ciclo e farlo ripartire.

Ecco come si presenta il Front Panel di questa applicazione:

Si nota chiaramente la frequenza (2 Hz), l'ampiezza (1,5V) e l'off-set (2V). Si ricorda  che le uscite di questo componente possono variare solo da  0  a  5V.

Analisi  dei  segnali

La facilità di acquisizione segnali, ma soprattutto la facilità della loro elaborazione con LabVIEW, suggerisce di allargare le applicazioni ai più recenti campi tecnologici di analisi dei segnali.

La più semplice forma è l'analisi del contenuto armonico di una forma d'onda, preludio a qualsiasi trattamento "digitale" del segnale stesso.

Il campionamento e l'applicazione dell'analisi di Fourier ai campioni, permette infatti una elaborazione direttamente nel campo delle frequenze prima di riapplicare la trasformazione inversa che permette di ritornare all'andamento nel tempo.

In tal modo si possono realizzare filtri e regolatori digitali, con caratteristiche nettamente superiori ai classici metodi analogici.

Per mantenere semplice e comprensibile l'argomento, l'applicazione verrà qui limitata alla trasformazione di una forma d'onda sinusoidale, contenente una terza armonica. 

Ecco come appare su un display del front Panel un segnale sinusoidale (di ampiezza 1V e frequenza 10 Hz) a cui è aggiunta una terza armonica (quindi di frequenza 30Hz), di pari ampiezza. 

Sullo stesso Front Panel possiamo sistemare un altro display che mostri la trasformazione di Fourier, cioè rappresenti il grafico delle frequenze in gioco (diagramma di Bode delle ampiezze).

Com'è consuetudine tale diagramma riporta in ascisse i campi di frequenza (in scala logaritmica) ed

in ordinate i rapporti (qui rispetto all'unità) in dB (il decibel è uguale a 20 volte il logaritmo decimale dei rapporti).

Nel nostro caso, sia la  frequenza fondamentale (10 Hz), sia la terza armonica (30 Hz) hanno ampiezza 1, quindi vengono rappresentata sull'asse 0 dB (cioè rapporti entrambi ad 1).

I punti laterali a queste (a –6dB) derivano dal campionamento e dalla sua durata (finestra di osservazione) e non sono quindi da considerare.

Per ottenere questi risultati si predispongono nel Block Panel 2 generatori di segnali sinusoidali ("Simulate Signal") e si sommano. Si ha così la forma d'onda della prima figura.

Applicando poi questa forma d'onda al modulo di conversione ("Spectral Measurements", che fa appunto la trasformazione di Fourier), si ha  la seconda figura sul display di uscita. 

E' ovvio che potendo variare a piacere le forme d'onda d'ingresso, è possibile studiare la loro "composizione spettrale", cioè i loro contenuti di armoniche.

A titolo di esempio viene riportato l'andamento del grafico nel caso di forma d'onda d'ingresso rettangolare (10 Hz, fra +1V e –1V) 

 

2

Commenti e note

Inserisci un commento

di fabrizio,

finalmente un tutorial chiaro e completo in italiano,aspettiamo con ansia un libro

Rispondi

di angelo,

ottimo! finalmente un tutorial tutto italiano e ben fatto sulla scheda NI-USB6008...perchè non continuare con una parte terza? o anche un libro?sarei fra i primi ad acquistarlo. grazie

Rispondi

Inserisci un commento

Per inserire commenti è necessario iscriversi ad ElectroYou. Se sei già iscritto, effettua il login.