Perolehan data & pensampelan: soalan latihan dengan penyelesaian langkah demi langkah
Soalan latihan Perolehan data & pensampelan percuma dengan rajah, petunjuk dan penyelesaian lengkap. Nilai baharu setiap kali, pada tiga tahap: Nyquist, LSB dan kadar data, alias, bit dan bingkai UART, harmonik, SQNR dan reka bentuk sistem.
Pelajari Perolehan data & pensampelan dari awal
Sebelum ini: Sistem nombor
1Apa itu perolehan data
Komputer tidak dapat membaca voltan secara langsung. Sistem perolehan data menukarkan kuantiti fizikal kepada nombor: penderia menghasilkan voltan kecil, penguat menskalakannya, dan penukar analog-ke-digital (ADC) mengukurnya pada saat-saat tetap dan mengeluarkan nombor perduaan.
Dua pilihan menentukan betapa baiknya nombor itu. Kadar pensampelan fs menyatakan kekerapan ADC mengukur, dan bilangan bit N menyatakan betapa halusnya ia membahagikan julat voltannya. Bersama-sama, keduanya juga menentukan berapa banyak data yang perlu anda simpan atau hantar.
Semakan kendiri ADC mengambil sampel pada 2 kHz. Berapa banyak sampel yang diambilnya dalam 0.5 s?
- 1000
- 2000
- 250
- 4000
Jawapan: 1000. Sampel = fs·t = 2000·0.5 = 1000. Mendarab dengan 2 dan bukannya 0.5 memberikan 4000, dan mengabaikan masa memberikan 2000.
2Pensampelan dan alias
Untuk menangkap gelombang sinus anda memerlukan lebih daripada dua sampel setiap tempoh. Jadi kadar pensampelan mestilah lebih daripada dua kali ganda frekuensi tertinggi dalam isyarat. Separuh kadar pensampelan ialah frekuensi Nyquist:
fs > 2·fmax fN = fs/2
Frekuensi di atas fs/2 tidak lenyap. Sampelnya kelihatan sama seperti sampel frekuensi yang lebih rendah, iaitu alias. Dalam rajah, sinus 7 Hz (garis penuh) disampel pada 10 Hz, dan titik-titik itu sepadan dengan sinus 3 Hz (garis putus-putus) sama baiknya.
fa = |f − k·fs|, k = nombor bulat yang paling hampir dengan f/fs
Selepas pensampelan tiada apa yang dapat memisahkan alias daripada isyarat sebenar. Itulah sebabnya penapis anti-alias analog membuang semua yang di atas fs/2 sebelum ADC.
Semakan kendiri Nada 7 kHz disampel pada 10 kHz tanpa penapis. Pada frekuensi manakah ia muncul?
- 17 kHz
- 3 kHz
- 5 kHz
- 7 kHz
Jawapan: 3 kHz. 7 kHz berada di atas fs/2 = 5 kHz, jadi ia berlipat balik: |7 − 1·10| = 3 kHz. Ia tidak boleh kekal pada 7 kHz, 17 kHz menambah dan bukannya menolak, dan 5 kHz hanyalah frekuensi lipatan.
3Resolusi dan pengkuantuman
ADC N-bit mempunyai 2ᴺ kod output, dari 0 hingga 2ᴺ − 1. Ia membahagikan julat skala penuh VFSR kepada 2ᴺ langkah yang sama. Satu langkah dipanggil 1 LSB (bit paling tidak bererti):
1 LSB = VFSR/2ᴺ
ADC pemangkasan mengeluarkan kod ⌊Vin/LSB⌋, nombor bulat di bawahnya. ADC pembundaran tidak pernah lebih daripada ½ LSB daripada nilai sebenar: itulah ralat pengkuantumannya.
Untuk meleraikan langkah bersaiz r pada suatu julat, anda memerlukan N terkecil dengan 2ᴺ ≥ span/r. Setiap bit tambahan mengurangkan LSB separuh dan menambah kira-kira 6 dB pada nisbah isyarat-ke-hingar-pengkuantuman unggul:
SQNR = 6.02·N + 1.76 dB
Semakan kendiri ADC 10-bit mempunyai julat 0 hingga 5.12 V. Apakah 1 LSB?
- 10 mV
- 2.5 mV
- 5 mV
- 512 mV
Jawapan: 5 mV. 210 = 1024, jadi 1 LSB = 5.12/1024 = 0.005 V = 5 mV. Membahagi dengan N = 10 memberikan 512 mV, menggunakan 2⁹ memberikan 10 mV, dan 2.5 mV ialah ralat terbesar ADC pembundaran, setengah LSB.
4Kadar data dan pautan bersiri
Setiap saluran menyampaikan fs sampel sesaat bagi N bit. Kadar data mentah ialah saluran × fs × N. Dalam ingatan, satu sampel mengambil bait penuh, jadi sampel 12-bit menggunakan 2 bait.
UART menghantar setiap bait sebagai bingkai: satu bit mula, 8 bit data, satu bit pariti pilihan dan satu atau dua bit henti. Dalam format 8N1 yang biasa itu ialah 10 bit setiap bait. Kadar baud mengira bit sesaat, jadi satu bit berlangsung 1/baud.
bait sesaat = baud/(bit setiap bingkai)
Pemultipleks membolehkan satu ADC melayan beberapa saluran secara bergilir. Jika satu penukaran (dengan pemenapan) mengambil t, setiap n saluran disampel pada 1/(n·t).
5Contoh terselesai
Gunakan tertib ini untuk kebanyakan soalan:
- Semak kadar pensampelan terhadap frekuensi isyarat tertinggi.
- Cari saiz langkah daripada julat dan bilangan bit.
- Kira data: saluran, sampel sesaat, bait setiap sampel.
- Bandingkan dengan apa yang boleh ditampung oleh pautan atau ingatan, dengan mengira bit mula, pariti dan henti.
Contoh terselesaiPencatat data mengukur 4 saluran suhu dengan ADC 12-bit pada julat 0 hingga 4.096 V. Isyarat mengandungi frekuensi sehingga 20 Hz, dan setiap saluran disampel pada 100 Hz. Setiap sampel dihantar sebagai 2 bait melalui UART pada 9600 baud, 8N1. Adakah kadar pensampelan cukup tinggi, berapakah 1 LSB, dan dapatkah pautan itu menampungnya?
12·fmax = 2·20 = 40 Hz < 100 Hz
Kadar pensampelan cukup tinggi.
21 LSB = 4.096/212 = 4.096/4096 = 0.001 V = 1 mV
34 saluran · 100 sampel/s · 2 bait = 800 bait/s
48N1 menghantar 10 bit setiap bait.
9600/10 = 960 bytes/s ≥ 800 bytes/s
5Pada talian itu ialah 800·10 = 8000 bit/s, di bawah 9600 baud. Pautan itu sibuk 83 %.
Jawapan Ya: 100 Hz lebih daripada dua kali ganda 20 Hz, 1 LSB = 1 mV, dan pautan memerlukan 800 daripada 960 bait/s.
6Kesilapan lazim
- Menyangka frekuensi di atas fs/2 sekadar hilang: ia muncul sebagai alias di dalam jalur.
- Membahagi julat dengan N dan bukannya 2ᴺ.
- Membundarkan bilangan bit ke bawah: 2ᴺ mestilah sekurang-kurangnya span/resolusi.
- Mengira 8 bit setiap bait pada UART: 8N1 memerlukan 10.
- Terlupa bahawa sampel 10-bit atau 12-bit disimpan dalam 2 bait penuh.
Semakan kendiri Berapa banyak bait sesaat yang boleh dihantar UART 9600 baud dalam format 8N1?
- 1067
- 1200
- 9600
- 960
Jawapan: 960. Setiap bait memerlukan 10 bit (mula, 8 data, henti): 9600/10 = 960. Membahagi dengan 8 melupakan bit mula dan henti, dan membahagi dengan 9 melupakan salah satunya.
7Rupa soalan peperiksaan
- Mudah: Nyquist, LSB dan kadar data. Anda mencari kadar pensampelan minimum, frekuensi Nyquist, saiz LSB atau ralat pengkuantuman, masa bit UART atau kadar data mentah.
- Sederhana: alias, bit dan bingkai UART. Anda mencari frekuensi alias, bilangan bit untuk resolusi, kod output untuk voltan, ingatan untuk rakaman, kadar bait format UART atau SQNR unggul.
- Sukar: harmonik, SQNR dan reka bentuk sistem. Anda mencari di mana harmonik beralias, bit untuk SQNR yang diperlukan, frekuensi tertinggi yang dapat ditangkap ADC yang disiarkan melalui UART, kadar ADC termultipleks, ralat kadar baud bagi pembahagi atau resolusi suhu rantaian penderia.
Belajar langkah demi langkah dalam aplikasiBelajar langkah demi langkah dalam aplikasi