Akwizycja danych i próbkowanie: zadania z rozwiązaniami krok po kroku

Darmowe zadania z tematu Akwizycja danych i próbkowanie z rysunkami, podpowiedziami i pełnymi rozwiązaniami. Za każdym razem nowe wartości, na trzech poziomach: Nyquist, LSB i szybkości danych, aliasing, bity i ramki UART, harmoniczne, SQNR i projektowanie systemu.

Darmowe zadanieŁatwy
SD0​D1​D2​D3​D4​D5​D6​D7​Tb​ = ?115200 Bd

Łącze UART pracuje z prędkością 115200 bodów. Wyznacz czas trwania Tb jednego bitu w µs.

baud = 115200 Bd
µs
Następne zadanie →

Co ćwiczysz

  1. ŁatwyNyquist, LSB i szybkości danych
  2. Średnialiasing, bity i ramki UART
  3. Trudnyharmoniczne, SQNR i projektowanie systemu

Jak rozwiązywać zadania: Akwizycja danych i próbkowanie

  1. Zapisz, co jest dane: częstotliwość próbkowania, częstotliwości sygnałów, liczbę bitów, zakres wejściowy, szybkość transmisji w bodach.
  2. W zadaniach o próbkowaniu porównaj każdą częstotliwość z fs/2; wyższa częstotliwość pojawia się jako fa = |f − k·fs| dla najbliższej wielokrotności fs.
  3. W zadaniach o rozdzielczości wyznacz 1 LSB = VFSR/2ᴺ albo najmniejsze N, dla którego 2ᴺ ≥ zakres/rozdzielczość.
  4. W zadaniach o szybkości danych i łączach UART policz wszystko, co jest wysyłane: kanały, próbki na sekundę, bity lub całe bajty na próbkę oraz bity startu, parzystości i stopu każdej ramki.

Typowe błędy

  • Myślenie, że częstotliwość powyżej fs/2 znika: pojawia się jako alias wewnątrz pasma.
  • Dzielenie zakresu przez N zamiast przez 2ᴺ.
  • Zaokrąglanie liczby bitów w dół zamiast w górę.
  • Zapominanie o bitach startu i stopu: 8N1 wysyła 10 bitów na każdy bajt.

Najważniejsze wzory

Kryterium Nyquista
fs > 2·fmax, fN = fs/2
Częstotliwość aliasu
fa = |f − k·fs|, k = round(f/fs)
Wielkość kroku
1 LSB = VFSR/2ᴺ
Błąd kwantyzacji (zaokrąglanie)
±½ LSB
Kod ADC przy obcinaniu
D = ⌊Vin/LSB⌋
Liczba bitów dla rozdzielczości r
2ᴺ ≥ span/r
Idealny SQNR, sinusoida o pełnej skali
SQNR = 6,02·N + 1,76 dB
Szybkość transmisji danych
kanały × fs × N bit/s
Multipleksowany przetwornik ADC
fs = 1/(n·(tc + tset))
UART
Tb = 1/baud; 8N1 = 10 bitów na bajt; bajty/s = baud/bity w ramce
Dzielnik szybkości transmisji
baud = fclk/(16·D)

Naucz się tematu Akwizycja danych i próbkowanie od zera

Wcześniej: Systemy liczbowe

1Czym jest akwizycja danych

Komputer nie potrafi bezpośrednio odczytać napięcia. System akwizycji danych zamienia wielkość fizyczną na liczby: czujnik wytwarza małe napięcie, wzmacniacz je skaluje, a przetwornik analogowo-cyfrowy (ADC) mierzy je w regularnych chwilach i podaje liczbę binarną.

TG∿01N, fs​0101

O jakości liczb decydują dwa wybory. Częstotliwość próbkowania fs mówi, jak często ADC mierzy, a liczba bitów N – jak drobno dzieli swój zakres napięć. Razem decydują też o tym, ile danych trzeba zapisać lub wysłać.

Samosprawdzenie ADC próbkuje z częstotliwością 2 kHz. Ile próbek pobierze w ciągu 0,5 s?
  1. 1000
  2. 2000
  3. 250
  4. 4000

Odpowiedź: 1000. Liczba próbek = fs·t = 2000·0,5 = 1000. Mnożenie przez 2 zamiast przez 0,5 daje 4000, a pominięcie czasu daje 2000.

2Próbkowanie i aliasing

Aby zarejestrować sinusoidę, potrzebujesz więcej niż dwóch próbek na okres. Częstotliwość próbkowania musi więc być większa niż dwukrotność najwyższej częstotliwości w sygnale. Połowa częstotliwości próbkowania to częstotliwość Nyquista:

fs > 2·fmax fN = fs/2

Częstotliwość powyżej fs/2 nie znika. Jej próbki wyglądają dokładnie tak samo jak próbki niższej częstotliwości, czyli aliasu. Na rysunku sinusoida 7 Hz (linia ciągła) jest próbkowana z częstotliwością 10 Hz, a punkty równie dobrze pasują do sinusoidy 3 Hz (linia przerywana).

tf = 7 Hzfs​ = 10 Hz
fa = |f − k·fs|, k = liczba całkowita najbliższa f/fs

Po spróbkowaniu nic już nie odróżni aliasu od prawdziwego sygnału. Dlatego analogowy filtr antyaliasingowy usuwa wszystko powyżej fs/2 przed przetwornikiem ADC.

Samosprawdzenie Ton 7 kHz jest próbkowany z częstotliwością 10 kHz bez filtra. Przy jakiej częstotliwości się pojawi?
  1. 17 kHz
  2. 3 kHz
  3. 5 kHz
  4. 7 kHz

Odpowiedź: 3 kHz. 7 kHz jest powyżej fs/2 = 5 kHz, więc „zawija się”: |7 − 1·10| = 3 kHz. Nie może pozostać przy 7 kHz, 17 kHz powstaje przez dodawanie zamiast odejmowania, a 5 kHz to tylko częstotliwość zawijania.

3Rozdzielczość i kwantyzacja

N-bitowy ADC ma 2ᴺ kodów wyjściowych, od 0 do 2ᴺ − 1. Dzieli swój zakres pełnej skali VFSR na 2ᴺ równych kroków. Jeden krok nazywa się 1 LSB (najmniej znaczący bit):

1 LSB = VFSR/2ᴺ

ADC z obcinaniem podaje kod ⌊Vin/LSB⌋, czyli liczbę całkowitą poniżej wartości. ADC z zaokrąglaniem nigdy nie odbiega od prawdziwej wartości o więcej niż ½ LSB: to jego błąd kwantyzacji.

Aby rozróżniać kroki o wielkości r na pewnym zakresie, potrzebujesz najmniejszego N, dla którego 2ᴺ ≥ zakres/r. Każdy dodatkowy bit zmniejsza LSB o połowę i dodaje około 6 dB do idealnego stosunku sygnału do szumu kwantyzacji:

SQNR = 6,02·N + 1,76 dB
Samosprawdzenie 10-bitowy ADC ma zakres od 0 do 5,12 V. Ile wynosi 1 LSB?
  1. 10 mV
  2. 2,5 mV
  3. 5 mV
  4. 512 mV

Odpowiedź: 5 mV. 210 = 1024, więc 1 LSB = 5,12/1024 = 0,005 V = 5 mV. Dzielenie przez N = 10 daje 512 mV, użycie 2⁹ daje 10 mV, a 2,5 mV to największy błąd ADC z zaokrąglaniem, czyli pół LSB.

4Szybkość danych i łącza szeregowe

Każdy kanał dostarcza fs próbek na sekundę po N bitów. Surowa szybkość danych to kanały × fs × N. W pamięci próbka zajmuje całe bajty, więc próbka 12-bitowa zajmuje 2 bajty.

UART wysyła każdy bajt w ramce: bit startu, 8 bitów danych, opcjonalny bit parzystości i jeden lub dwa bity stopu. W popularnym formacie 8N1 daje to 10 bitów na bajt. Szybkość transmisji w bodach to liczba bitów na sekundę, więc jeden bit trwa 1/baud.

bajty na sekundę = baud/(bity na ramkę)

Multiplekser pozwala jednemu ADC obsługiwać kolejno kilka kanałów. Jeśli jedna konwersja (z ustalaniem) trwa t, każdy z n kanałów jest próbkowany z częstotliwością 1/(n·t).

5Przykład krok po kroku

W większości zadań trzymaj się tej kolejności:

  1. Sprawdź częstotliwość próbkowania względem najwyższej częstotliwości sygnału.
  2. Wyznacz wielkość kroku z zakresu i liczby bitów.
  3. Policz dane: kanały, próbki na sekundę, bajty na próbkę.
  4. Porównaj z tym, co mogą przenieść łącze lub pamięć, licząc bity startu, parzystości i stopu.
Przykład krok po kroku

Rejestrator mierzy 4 kanały temperatury 12-bitowym ADC w zakresie od 0 do 4,096 V. Sygnały zawierają częstotliwości do 20 Hz, a każdy kanał jest próbkowany z częstotliwością 100 Hz. Każda próbka jest wysyłana jako 2 bajty przez UART z prędkością 9600 bodów, 8N1. Czy częstotliwość próbkowania jest wystarczająca, ile wynosi 1 LSB i czy łącze nadąży?

1

Sprawdzenie Nyquista

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

Częstotliwość próbkowania jest wystarczająca.

2

Wielkość kroku

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

Dane do wysłania

4 kanały · 100 próbek/s · 2 bajty = 800 bajtów/s
4

Przepustowość łącza

8N1 wysyła 10 bitów na bajt.

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

Sprawdź wynik

Na linii daje to 800·10 = 8000 bit/s, poniżej 9600 bodów. Łącze jest obciążone w 83 %.

Odpowiedź

Tak: 100 Hz to więcej niż dwukrotność 20 Hz, 1 LSB = 1 mV, a łącze potrzebuje 800 z dostępnych 960 bajtów/s.

6Typowe błędy

  • Myślenie, że częstotliwość powyżej fs/2 po prostu przepada: pojawia się jako alias wewnątrz pasma.
  • Dzielenie zakresu przez N zamiast przez 2ᴺ.
  • Zaokrąglanie liczby bitów w dół: 2ᴺ musi być co najmniej równe zakres/rozdzielczość.
  • Liczenie 8 bitów na bajt w UART: 8N1 potrzebuje 10.
  • Zapominanie, że próbka 10-bitowa lub 12-bitowa jest zapisywana w 2 pełnych bajtach.
Samosprawdzenie Ile bajtów na sekundę może wysłać UART o prędkości 9600 bodów w formacie 8N1?
  1. 1067
  2. 1200
  3. 9600
  4. 960

Odpowiedź: 960. Każdy bajt potrzebuje 10 bitów (start, 8 danych, stop): 9600/10 = 960. Dzielenie przez 8 pomija bity startu i stopu, a dzielenie przez 9 pomija jeden z nich.

7Jak wyglądają zadania egzaminacyjne

  • Łatwe: Nyquist, LSB i szybkości danych. Wyznaczasz minimalną częstotliwość próbkowania, częstotliwość Nyquista, wielkość LSB lub błąd kwantyzacji, czas trwania bitu w UART albo surową szybkość danych.
  • Średnie: aliasing, bity i ramki UART. Wyznaczasz częstotliwość aliasu, liczbę bitów dla danej rozdzielczości, kod wyjściowy dla napięcia, pamięć potrzebną na zapis, liczbę bajtów na sekundę dla formatu UART lub idealny SQNR.
  • Trudne: harmoniczne, SQNR i projektowanie systemu. Wyznaczasz, gdzie aliasuje się harmoniczna, liczbę bitów dla wymaganego SQNR, najwyższą częstotliwość, jaką może zarejestrować ADC przesyłający dane przez UART, szybkość multipleksowanego ADC, błąd szybkości transmisji dzielnika albo rozdzielczość temperaturową toru pomiarowego z czujnikiem.

Ucz się krok po kroku w aplikacjiUcz się krok po kroku w aplikacji

Przykłady z rozwiązaniami

Przykład 1Łatwy
SD0​D1​D2​D3​D4​D5​D6​D7​Tb​ = ?2400 Bd

Łącze UART pracuje z prędkością 2400 bodów. Wyznacz czas trwania Tb jednego bitu w µs.

baud = 2400 Bd

Oblicz Tb (µs)

Pokaż podpowiedzi
  1. Szybkość transmisji w bodach to liczba bitów wysyłanych na sekundę.
  2. Tb = 1/baud.
  3. 1 s = 10⁶ µs.
Pokaż odpowiedź i rozwiązanie krok po kroku

UART: asynchroniczne łącze szeregowe wysyła każdy bajt w ramce: jeden bit startu (niski), bity danych, opcjonalny bit parzystości i jeden lub dwa bity stopu (wysokie). Szybkość transmisji w bodach to liczba bitów na sekundę, więc jeden bit trwa Tb = 1/baud, a ramka n bitów trwa n/baud. Popularny format 8N1 ma 10 bitów na bajt. Generator szybkości transmisji dzieli zegar: baud = fclk/(16·D) dla liczby całkowitej D, więc rzeczywista szybkość nieco różni się od zamierzonej; błąd poniżej około 2 % zwykle jest akceptowalny.

Czas bitu

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

Odpowiedź

Tb = 416,7 µs
Przykład 2Średni
Vin​N = 85 V2ᴺ − 101 LSB2,125 V?

8-bitowy ADC o zakresie wejściowym od 0 do 5 V obcina: jego kod wyjściowy to ⌊Vin/LSB⌋, gdzie 1 LSB = VFSR/2ᴺ. Wyznacz dziesiętny kod wyjściowy D dla napięcia wejściowego 2,125 V.

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

Oblicz D

Pokaż podpowiedzi
  1. Najpierw wyznacz wielkość jednego LSB.
  2. 1 LSB = 5/256 = 19,53 mV.
  3. Podziel napięcie wejściowe przez LSB i zachowaj część całkowitą.
Pokaż odpowiedź i rozwiązanie krok po kroku

Rozdzielczość ADC: N-bitowy przetwornik dzieli swój zakres pełnej skali VFSR na 2ᴺ kodów, od 0 do 2ᴺ − 1. Jeden krok to 1 LSB = VFSR/2ᴺ: najmniejsza zmiana, jaką przetwornik potrafi pokazać. ADC z obcinaniem podaje kod ⌊Vin/LSB⌋; ADC z zaokrąglaniem nigdy nie odbiega od prawdziwej wartości o więcej niż ½ LSB, co jest jego błędem kwantyzacji. Każdy dodatkowy bit zmniejsza LSB o połowę i dodaje około 6 dB do idealnego stosunku sygnału do szumu kwantyzacji SQNR = 6,02·N + 1,76 dB dla sinusoidy o pełnej skali. Aby osiągnąć rozdzielczość r na danym zakresie, wybierz najmniejsze N, dla którego 2ᴺ ≥ zakres/r.

Wielkość kroku

1 LSB = 5/28 = 19,53 mV

Kod

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

Odpowiedź

D = 108

Zapisany dwójkowo to 01101100.

Przykład 3Trudny
f0fs​/2fs​1,92 kHz7f₁?

Fala prostokątna 1,92 kHz jest próbkowana z częstotliwością 8 kHz bez filtra antyaliasingowego. Fala prostokątna zawiera nieparzyste harmoniczne 3f₁, 5f₁, 7f₁, … Przy jakiej częstotliwości fa pojawia się w danych jej harmoniczna 7f₁? Podaj ją w Hz.

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

Oblicz fa (Hz)

Pokaż podpowiedzi
  1. Harmoniczna leży przy 7·1,92 kHz = 13,44 kHz, powyżej fs/2 = 4 kHz.
  2. Pojawia się przy fa = |f − k·fs| dla najbliższej wielokrotności fs.
  3. 13440/8000 = 1,68.
Pokaż odpowiedź i rozwiązanie krok po kroku

Próbkowanie: ADC mierzy sygnał fs razy na sekundę. Zgodnie z twierdzeniem Nyquista–Shannona częstotliwość f jest rejestrowana poprawnie tylko wtedy, gdy f < fs/2, czyli poniżej częstotliwości Nyquista (zawijania), więc częstotliwość próbkowania musi przekraczać dwukrotność najwyższej częstotliwości sygnału. Wyższa częstotliwość nie przepada: pojawia się jako alias przy fa = |f − k·fs|, gdzie liczba całkowita k daje wynik między 0 a fs/2. Próbki nie pozwalają odróżnić tych dwóch sygnałów, dlatego analogowy filtr antyaliasingowy musi usunąć wszystko powyżej fs/2 przed przetwornikiem ADC.

Częstotliwość harmonicznej

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

Najbliższa wielokrotność częstotliwości próbkowania

m = round(1,68) = 2

Częstotliwość aliasu

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

Odpowiedź

fa = 2560 Hz

Alias ląduje wewnątrz pasma sygnału, gdzie żaden filtr cyfrowy go nie usunie. Pomaga tylko filtr analogowy przed ADC.

Pytania i odpowiedzi

Akwizycja danych i próbkowanie: co to jest?

Komputer nie potrafi bezpośrednio odczytać napięcia. System akwizycji danych zamienia wielkość fizyczną na liczby: czujnik wytwarza małe napięcie, wzmacniacz je skaluje, a przetwornik analogowo-cyfrowy (ADC) mierzy je w regularnych chwilach i podaje liczbę binarną.

O jakości liczb decydują dwa wybory. Częstotliwość próbkowania fs mówi, jak często ADC mierzy, a liczba bitów N – jak drobno dzieli swój zakres napięć. Razem decydują też o tym, ile danych trzeba zapisać lub wysłać.

Akwizycja danych i próbkowanie: jak rozwiązywać zadania krok po kroku?
  1. Zapisz, co jest dane: częstotliwość próbkowania, częstotliwości sygnałów, liczbę bitów, zakres wejściowy, szybkość transmisji w bodach.
  2. W zadaniach o próbkowaniu porównaj każdą częstotliwość z fs/2; wyższa częstotliwość pojawia się jako fa = |f − k·fs| dla najbliższej wielokrotności fs.
  3. W zadaniach o rozdzielczości wyznacz 1 LSB = VFSR/2ᴺ albo najmniejsze N, dla którego 2ᴺ ≥ zakres/rozdzielczość.
  4. W zadaniach o szybkości danych i łączach UART policz wszystko, co jest wysyłane: kanały, próbki na sekundę, bity lub całe bajty na próbkę oraz bity startu, parzystości i stopu każdej ramki.
Akwizycja danych i próbkowanie: jakie błędy są najczęstsze?
  • Myślenie, że częstotliwość powyżej fs/2 znika: pojawia się jako alias wewnątrz pasma.
  • Dzielenie zakresu przez N zamiast przez 2ᴺ.
  • Zaokrąglanie liczby bitów w dół zamiast w górę.
  • Zapominanie o bitach startu i stopu: 8N1 wysyła 10 bitów na każdy bajt.
Akwizycja danych i próbkowanie: co ćwiczysz?
  • Łatwy: Nyquist, LSB i szybkości danych
  • Średni: aliasing, bity i ramki UART
  • Trudny: harmoniczne, SQNR i projektowanie systemu

Każde zadanie ma nowe wartości, więc uczysz się metody, a nie odpowiedzi. Utknąłeś? Najpierw otwórz małą podpowiedź, a pełne wyjaśnienie dopiero wtedy, gdy go potrzebujesz.

Jak wygląda ćwiczenie

  • Każde zadanie ma nowe wartości, więc uczysz się metody, a nie odpowiedzi.
  • Utknąłeś? Najpierw otwórz małą podpowiedź, a pełne wyjaśnienie dopiero wtedy, gdy go potrzebujesz.
  • Twoje postępy, błędy i zapisane zadania są zachowywane, więc możesz je powtórzyć przed egzaminem.

Tematy przed tym i po nim

Najpierw naucz się

Przedmioty z tym tematem

Więcej tematów: Elektrotechnika

Karta pracy do druku