Acquisizione dati e campionamento: esercizi con soluzioni passo passo

Esercizi gratuiti su Acquisizione dati e campionamento con schemi, suggerimenti e soluzioni svolte complete. Valori nuovi ogni volta, su tre livelli: Nyquist, LSB e velocità dei dati, aliasing, bit e frame UART, armoniche, SQNR e progetto del sistema.

Esercizio gratuitoFacile
SD0​D1​D2​D3​D4​D5​D6​D7​Tb​ = ?115200 Bd

Un collegamento UART funziona a 115200 baud. Trova la durata Tb di un bit, in µs.

baud = 115200 Bd
µs
Esercizio successivo →

Su cosa ti eserciti

  1. FacileNyquist, LSB e velocità dei dati
  2. Mediaaliasing, bit e frame UART
  3. Difficilearmoniche, SQNR e progetto del sistema

Come risolvere gli esercizi di Acquisizione dati e campionamento

  1. Scrivi i dati: frequenza di campionamento, frequenze del segnale, numero di bit, campo d’ingresso, baud rate.
  2. Nei problemi di campionamento confronta ogni frequenza con fs/2; una frequenza più alta compare a fa = |f − k·fs|, con il multiplo di fs più vicino.
  3. Nei problemi di risoluzione trova 1 LSB = VFSR/2ᴺ, oppure il più piccolo N con 2ᴺ ≥ campo/risoluzione.
  4. Per velocità dei dati e collegamenti UART conta tutto ciò che viene inviato: canali, campioni al secondo, bit o byte interi per campione, e i bit di start, parità e stop di ogni frame.

Errori comuni

  • Pensare che una frequenza sopra fs/2 sparisca: compare come alias dentro la banda.
  • Dividere il campo per N invece che per 2ᴺ.
  • Arrotondare il numero di bit per difetto invece che per eccesso.
  • Dimenticare i bit di start e di stop: l’8N1 invia 10 bit per ogni byte.

Formule chiave

Criterio di Nyquist
fs > 2·fmax, fN = fs/2
Frequenza di alias
fa = |f − k·fs|, k = round(f/fs)
Passo di quantizzazione
1 LSB = VFSR/2ᴺ
Errore di quantizzazione (arrotondamento)
±½ LSB
Codice di un ADC a troncamento
D = ⌊Vin/LSB⌋
Bit per una risoluzione r
2ᴺ ≥ span/r
SQNR ideale, sinusoide a fondo scala
SQNR = 6,02·N + 1,76 dB
Velocità dei dati
canali × fs × N bit/s
ADC multiplexato
fs = 1/(n·(tc + tset))
UART
Tb = 1/baud; 8N1 = 10 bit per byte; byte/s = baud/bit per frame
Divisore del baud rate
baud = fclk/(16·D)

Impara Acquisizione dati e campionamento da zero

Prima di questo: Sistemi di numerazione

1Che cos’è l’acquisizione dati

Un computer non può leggere direttamente una tensione. Un sistema di acquisizione dati trasforma una grandezza fisica in numeri: un sensore produce una piccola tensione, un amplificatore la scala e un convertitore analogico-digitale (ADC) la misura a istanti regolari e restituisce un numero binario.

TG∿01N, fs​0101

Due scelte decidono la qualità dei numeri. La frequenza di campionamento fs dice quanto spesso l’ADC misura, e il numero di bit N dice con quale finezza divide il suo campo di tensione. Insieme decidono anche quanti dati devi memorizzare o inviare.

Autoverifica Un ADC campiona a 2 kHz. Quanti campioni acquisisce in 0,5 s?
  1. 1000
  2. 2000
  3. 250
  4. 4000

Risposta: 1000. Campioni = fs·t = 2000·0,5 = 1000. Moltiplicare per 2 invece che per 0,5 dà 4000, e ignorare il tempo dà 2000.

2Campionamento e aliasing

Per acquisire una sinusoide servono più di due campioni per periodo. Quindi la frequenza di campionamento deve essere maggiore del doppio della frequenza più alta del segnale. La metà della frequenza di campionamento è la frequenza di Nyquist:

fs > 2·fmax fN = fs/2

Una frequenza sopra fs/2 non svanisce. I suoi campioni sono identici a quelli di una frequenza più bassa, l’alias. Nella figura una sinusoide a 7 Hz (linea continua) è campionata a 10 Hz, e i punti stanno altrettanto bene su una sinusoide a 3 Hz (tratteggiata).

tf = 7 Hzfs​ = 10 Hz
fa = |f − k·fs|, k = il numero intero più vicino a f/fs

Dopo il campionamento nulla può distinguere l’alias da un segnale reale. Per questo un filtro anti-aliasing analogico elimina tutto ciò che sta sopra fs/2 prima dell’ADC.

Autoverifica Un tono a 7 kHz è campionato a 10 kHz senza filtro. A quale frequenza compare?
  1. 17 kHz
  2. 3 kHz
  3. 5 kHz
  4. 7 kHz

Risposta: 3 kHz. 7 kHz è sopra fs/2 = 5 kHz, quindi si ripiega: |7 − 1·10| = 3 kHz. Non può restare a 7 kHz, 17 kHz somma invece di sottrarre, e 5 kHz è solo la frequenza di ripiegamento.

3Risoluzione e quantizzazione

Un ADC a N bit ha 2ᴺ codici di uscita, da 0 a 2ᴺ − 1. Divide il suo campo di fondo scala VFSR in 2ᴺ passi uguali. Un passo si chiama 1 LSB (bit meno significativo):

1 LSB = VFSR/2ᴺ

Un ADC a troncamento restituisce il codice ⌊Vin/LSB⌋, il numero intero inferiore. Un ADC ad arrotondamento non si discosta mai più di ½ LSB dal valore vero: è il suo errore di quantizzazione.

Per risolvere passi di ampiezza r su un campo, serve il più piccolo N con 2ᴺ ≥ campo/r. Ogni bit in più dimezza l’LSB e aggiunge circa 6 dB al rapporto segnale/rumore di quantizzazione ideale:

SQNR = 6,02·N + 1,76 dB
Autoverifica Un ADC a 10 bit ha un campo da 0 a 5,12 V. Quanto vale 1 LSB?
  1. 10 mV
  2. 2,5 mV
  3. 5 mV
  4. 512 mV

Risposta: 5 mV. 210 = 1024, quindi 1 LSB = 5,12/1024 = 0,005 V = 5 mV. Dividere per N = 10 dà 512 mV, usare 2⁹ dà 10 mV, e 2,5 mV è il massimo errore di un ADC ad arrotondamento, mezzo LSB.

4Velocità dei dati e collegamenti seriali

Ogni canale fornisce fs campioni al secondo da N bit. La velocità grezza dei dati è canali × fs × N. In memoria un campione occupa byte interi, quindi un campione a 12 bit usa 2 byte.

Una UART invia ogni byte come un frame: un bit di start, 8 bit di dati, un bit di parità facoltativo e uno o due bit di stop. Nel formato comune 8N1 sono 10 bit per byte. Il baud rate conta i bit al secondo, quindi un bit dura 1/baud.

byte al secondo = baud/(bit per frame)

Un multiplexer permette a un solo ADC di servire più canali a turno. Se una conversione (con assestamento) richiede t, ciascuno degli n canali è campionato a 1/(n·t).

5Un esempio svolto

Usa quest’ordine per la maggior parte dei problemi:

  1. Confronta la frequenza di campionamento con la frequenza più alta del segnale.
  2. Trova il passo dal campo e dal numero di bit.
  3. Conta i dati: canali, campioni al secondo, byte per campione.
  4. Confronta con ciò che il collegamento o la memoria possono gestire, contando i bit di start, parità e stop.
Esempio svolto

Un data logger misura 4 canali di temperatura con un ADC a 12 bit su 0–4,096 V. I segnali contengono frequenze fino a 20 Hz e ogni canale è campionato a 100 Hz. Ogni campione è inviato come 2 byte tramite UART a 9600 baud, 8N1. La frequenza di campionamento è sufficiente, quanto vale 1 LSB e il collegamento regge?

1

Verifica di Nyquist

2·fmax = 2·20 = 40 Hz < 100 Hz

La frequenza di campionamento è sufficiente.

2

Passo di quantizzazione

1 LSB = 4,096/212 = 4,096/4096 = 0,001 V = 1 mV
3

Dati da inviare

4 canali · 100 campioni/s · 2 byte = 800 byte/s
4

Capacità del collegamento

L’8N1 invia 10 bit per byte.

9600/10 = 960 bytes/s ≥ 800 bytes/s
5

Controlla il risultato

Sulla linea sono 800·10 = 8000 bit/s, sotto i 9600 baud. Il collegamento è occupato all’83 %.

Risposta

Sì: 100 Hz è più del doppio di 20 Hz, 1 LSB = 1 mV, e il collegamento richiede 800 dei suoi 960 byte/s.

6Errori comuni

  • Pensare che una frequenza sopra fs/2 vada semplicemente persa: compare come alias dentro la banda.
  • Dividere il campo per N invece che per 2ᴺ.
  • Arrotondare il numero di bit per difetto: 2ᴺ deve essere almeno campo/risoluzione.
  • Contare 8 bit per byte su una UART: l’8N1 ne richiede 10.
  • Dimenticare che un campione a 10 o 12 bit è memorizzato in 2 byte interi.
Autoverifica Quanti byte al secondo può inviare una UART a 9600 baud nel formato 8N1?
  1. 1067
  2. 1200
  3. 9600
  4. 960

Risposta: 960. Ogni byte richiede 10 bit (start, 8 dati, stop): 9600/10 = 960. Dividere per 8 dimentica i bit di start e di stop, e dividere per 9 ne dimentica uno.

7Come sono fatte le domande d’esame

  • Facile: Nyquist, LSB e velocità dei dati. Trovi la frequenza di campionamento minima, la frequenza di Nyquist, la dimensione dell’LSB o l’errore di quantizzazione, il tempo di bit di una UART o la velocità grezza dei dati.
  • Medio: aliasing, bit e frame UART. Trovi una frequenza di alias, il numero di bit per una risoluzione, il codice di uscita per una tensione, la memoria per una registrazione, la velocità in byte di un formato UART o l’SQNR ideale.
  • Difficile: armoniche, SQNR e progetto del sistema. Trovi dove va in alias un’armonica, i bit per un SQNR richiesto, la frequenza più alta che un ADC trasmesso via UART può acquisire, la velocità di un ADC multiplexato, l’errore di baud rate di un divisore o la risoluzione in temperatura di una catena di misura.

Impara passo dopo passo nell’appImpara passo dopo passo nell’app

Esempi svolti

Esempio 1Facile
SD0​D1​D2​D3​D4​D5​D6​D7​Tb​ = ?2400 Bd

Un collegamento UART funziona a 2400 baud. Trova la durata Tb di un bit, in µs.

baud = 2400 Bd

Calcola Tb (µs)

Mostra i suggerimenti
  1. Il baud rate è il numero di bit inviati al secondo.
  2. Tb = 1/baud.
  3. 1 s = 10⁶ µs.
Mostra la risposta e la soluzione passo passo

UART: un collegamento seriale asincrono invia ogni byte come un frame: un bit di start (basso), i bit di dati, un bit di parità facoltativo e uno o due bit di stop (alti). Il baud rate è il numero di bit al secondo, quindi un bit dura Tb = 1/baud e un frame di n bit dura n/baud. Il comune formato 8N1 ha 10 bit per byte. Il generatore di baud divide il clock: baud = fclk/(16·D) con un numero intero D, quindi il baud rate reale differisce leggermente da quello desiderato; un errore sotto circa il 2 % di solito è accettabile.

Tempo di bit

Tb = 1/2400 s = 416,7 µs

Risposta

Tb = 416,7 µs
Esempio 2Media
Vin​N = 85 V2ᴺ − 101 LSB2,125 V?

Un ADC a 8 bit con campo d’ingresso da 0 a 5 V tronca: il suo codice di uscita è ⌊Vin/LSB⌋ con 1 LSB = VFSR/2ᴺ. Trova il codice di uscita decimale D per un ingresso di 2,125 V.

N = 8VFSR = 5 VVin = 2,125 V

Calcola D

Mostra i suggerimenti
  1. Trova prima la dimensione di un LSB.
  2. 1 LSB = 5/256 = 19,53 mV.
  3. Dividi l’ingresso per l’LSB e tieni la parte intera.
Mostra la risposta e la soluzione passo passo

Risoluzione dell’ADC: un convertitore a N bit divide il suo campo di fondo scala VFSR in 2ᴺ codici, da 0 a 2ᴺ − 1. Un passo è 1 LSB = VFSR/2ᴺ: la più piccola variazione che il convertitore può mostrare. Un ADC a troncamento dà il codice ⌊Vin/LSB⌋; un ADC ad arrotondamento non si discosta mai più di ½ LSB dal valore vero, il suo errore di quantizzazione. Ogni bit in più dimezza l’LSB e aggiunge circa 6 dB al rapporto segnale/rumore di quantizzazione ideale SQNR = 6,02·N + 1,76 dB per una sinusoide a fondo scala. Per ottenere una risoluzione r su un campo, scegli il più piccolo N con 2ᴺ ≥ campo/r.

Passo di quantizzazione

1 LSB = 5/28 = 19,53 mV

Codice

Vin/LSB = 2125/19,53 = 108,8
codice = ⌊108,8⌋ = 108

Risposta

D = 108

In binario è 01101100.

Esempio 3Difficile
f0fs​/2fs​1,92 kHz7f₁?

Un’onda quadra a 1,92 kHz è campionata a 8 kHz senza filtro anti-aliasing. Un’onda quadra contiene le armoniche dispari 3f₁, 5f₁, 7f₁, … A quale frequenza fa compare nei dati campionati la sua armonica 7f₁? Esprimila in Hz.

f₁ = 1,92 kHzfs = 8 kHzarmonica: 7f₁

Calcola fa (Hz)

Mostra i suggerimenti
  1. L’armonica è a 7·1,92 kHz = 13,44 kHz, sopra fs/2 = 4 kHz.
  2. Compare a fa = |f − k·fs| con il multiplo di fs più vicino.
  3. 13440/8000 = 1,68.
Mostra la risposta e la soluzione passo passo

Campionamento: un ADC misura il segnale fs volte al secondo. Secondo il teorema di Nyquist–Shannon una frequenza f è acquisita correttamente solo finché f < fs/2, la frequenza di Nyquist (di ripiegamento), quindi la frequenza di campionamento deve superare il doppio della frequenza più alta del segnale. Una frequenza più alta non va persa: compare come alias a fa = |f − k·fs|, con il numero intero k che porta il risultato tra 0 e fs/2. I campioni non permettono di distinguere le due, quindi un filtro anti-aliasing analogico deve eliminare tutto ciò che sta sopra fs/2 prima dell’ADC.

Frequenza dell’armonica

7f₁ = 7·1,92 kHz = 13,44 kHz

Multiplo più vicino della frequenza di campionamento

m = round(1,68) = 2

Frequenza di alias

fa = |13440 − 2·8000| = 2560 Hz

Risposta

fa = 2560 Hz

L’alias cade dentro la banda del segnale, dove nessun filtro digitale può rimuoverlo. Aiuta solo un filtro analogico prima dell’ADC.

Domande e risposte

Acquisizione dati e campionamento: di cosa si tratta?

Un computer non può leggere direttamente una tensione. Un sistema di acquisizione dati trasforma una grandezza fisica in numeri: un sensore produce una piccola tensione, un amplificatore la scala e un convertitore analogico-digitale (ADC) la misura a istanti regolari e restituisce un numero binario.

Due scelte decidono la qualità dei numeri. La frequenza di campionamento fs dice quanto spesso l’ADC misura, e il numero di bit N dice con quale finezza divide il suo campo di tensione. Insieme decidono anche quanti dati devi memorizzare o inviare.

Acquisizione dati e campionamento: come si risolvono gli esercizi passo per passo?
  1. Scrivi i dati: frequenza di campionamento, frequenze del segnale, numero di bit, campo d’ingresso, baud rate.
  2. Nei problemi di campionamento confronta ogni frequenza con fs/2; una frequenza più alta compare a fa = |f − k·fs|, con il multiplo di fs più vicino.
  3. Nei problemi di risoluzione trova 1 LSB = VFSR/2ᴺ, oppure il più piccolo N con 2ᴺ ≥ campo/risoluzione.
  4. Per velocità dei dati e collegamenti UART conta tutto ciò che viene inviato: canali, campioni al secondo, bit o byte interi per campione, e i bit di start, parità e stop di ogni frame.
Acquisizione dati e campionamento: quali sono gli errori più comuni?
  • Pensare che una frequenza sopra fs/2 sparisca: compare come alias dentro la banda.
  • Dividere il campo per N invece che per 2ᴺ.
  • Arrotondare il numero di bit per difetto invece che per eccesso.
  • Dimenticare i bit di start e di stop: l’8N1 invia 10 bit per ogni byte.
Acquisizione dati e campionamento: che cosa si esercita?
  • Facile: Nyquist, LSB e velocità dei dati
  • Media: aliasing, bit e frame UART
  • Difficile: armoniche, SQNR e progetto del sistema

Ogni esercizio ha valori nuovi, così impari il metodo invece di una risposta. Bloccato? Apri prima un piccolo suggerimento e la spiegazione completa solo quando ti serve.

Come funziona l’esercitazione

  • Ogni esercizio ha valori nuovi, così impari il metodo invece di una risposta.
  • Bloccato? Apri prima un piccolo suggerimento e la spiegazione completa solo quando ti serve.
  • I tuoi progressi, i tuoi errori e gli esercizi salvati restano memorizzati, così puoi ripassare prima dell’esame.

Argomenti prima e dopo questo

Da studiare prima

Corsi con questo argomento

Altri argomenti di Elettrica

Scheda di esercizi stampabile