データ収録とサンプリング:ステップごとの解答つき練習問題

図、ヒント、詳しい解答つきの無料のデータ収録とサンプリング練習問題。毎回新しい数値で、3 つのレベル:ナイキスト、LSB、データレート, エイリアシング、ビット数、UART フレーム, 高調波、SQNR、システム設計。

無料の練習問題やさしい
SD0​D1​D2​D3​D4​D5​D6​D7​Tb​ = ?115200 Bd

UART 通信が 115200 baud で動いています。1 ビットの長さ Tb を µs で求めなさい。

baud = 115200 Bd
µs
次の問題 →

練習する内容

  1. やさしいナイキスト、LSB、データレート
  2. ふつうエイリアシング、ビット数、UART フレーム
  3. むずかしい高調波、SQNR、システム設計

データ収録とサンプリングの問題の解き方

  1. まず与えられた値を書き出します:サンプリング周波数、信号の周波数、ビット数、入力レンジ、ボーレート。
  2. サンプリングの問題では、各周波数を fs/2 と比べます。それより高い周波数は、fs の最も近い整数倍を使って fa = |f − k·fs| の位置に現れます。
  3. 分解能の問題では、1 LSB = VFSR/2ᴺ を求めるか、2ᴺ ≥ 範囲/分解能 を満たす最小の N を求めます。
  4. データレートと UART 通信では、送られるものをすべて数えます:チャネル数、毎秒のサンプル数、1 サンプルあたりのビット数またはバイト数、そして各フレームのスタートビット、パリティビット、ストップビット。

よくある間違い

  • fs/2 より高い周波数は消えると考える。実際には帯域内のエイリアスとして現れる。
  • 範囲を 2ᴺ ではなく N で割る。
  • ビット数を切り上げずに切り捨てる。
  • スタートビットとストップビットを忘れる:8N1 では 1 バイトあたり 10 ビットを送る。

重要な公式

ナイキスト条件
fs > 2·fmax, fN = fs/2
エイリアス周波数
fa = |f − k·fs|, k = round(f/fs)
ステップ幅
1 LSB = VFSR/2ᴺ
量子化誤差(四捨五入)
±½ LSB
切り捨て ADC のコード
D = ⌊Vin/LSB⌋
分解能 r に必要なビット数
2ᴺ ≥ span/r
理想 SQNR(フルスケールの正弦波)
SQNR = 6.02·N + 1.76 dB
データレート
チャネル数 × fs × N bit/s
マルチプレクス ADC
fs = 1/(n·(tc + tset))
UART
Tb = 1/ボーレート;8N1 = 1 バイトあたり 10 ビット;バイト/s = ボーレート/1 フレームのビット数
ボーレート分周比
baud = fclk/(16·D)

データ収録とサンプリングをゼロから学ぶ

事前に学ぶこと: 記数法

1データ収録とは

コンピュータは電圧を直接読み取れません。データ収録システムは物理量を数値に変えます:センサが小さな電圧をつくり、増幅器がそれを適切な大きさにし、アナログ-デジタル変換器(ADC)が一定の間隔でそれを測定して 2 進数を出力します。

TG∿01N, fs​0101

数値の質は 2 つの選択で決まります。サンプリング周波数 fs は ADC が測定する頻度を表し、ビット数 N は電圧の範囲をどれだけ細かく分けるかを表します。この 2 つは、保存または送信すべきデータの量も決めます。

セルフチェック ADC が 2 kHz でサンプリングしています。0.5 s では何個のサンプルが得られますか。
  1. 1000
  2. 2000
  3. 250
  4. 4000

答え: 1000. サンプル数 = fs·t = 2000·0.5 = 1000。0.5 ではなく 2 を掛けると 4000 になり、時間を無視すると 2000 になってしまいます。

2サンプリングとエイリアシング

正弦波を捉えるには、1 周期あたり 2 個より多くのサンプルが必要です。したがってサンプリング周波数は、信号に含まれる最高周波数の 2 倍より大きくなければなりません。サンプリング周波数の半分をナイキスト周波数といいます:

fs > 2·fmax fN = fs/2

fs/2 より高い周波数は消えません。そのサンプルは、より低い周波数、つまりエイリアスのサンプルとまったく同じに見えます。図では 7 Hz の正弦波(実線)を 10 Hz でサンプリングしており、点は 3 Hz の正弦波(破線)にも同じように乗ります。

tf = 7 Hzfs​ = 10 Hz
fa = |f − k·fs|, k = f/fs に最も近い整数

サンプリングした後では、エイリアスと本物の信号を区別する方法はありません。だから ADC の前に、fs/2 より上をすべて除去するアナログのアンチエイリアシングフィルタを置くのです。

セルフチェック 7 kHz の音をフィルタなしで 10 kHz でサンプリングします。どの周波数に現れますか。
  1. 17 kHz
  2. 3 kHz
  3. 5 kHz
  4. 7 kHz

答え: 3 kHz. 7 kHz は fs/2 = 5 kHz より高いので折り返され、|7 − 1·10| = 3 kHz になります。7 kHz のままではいられず、17 kHz は引くのではなく足した値で、5 kHz は折り返し周波数にすぎません。

3分解能と量子化

N ビットの ADC は、0 から 2ᴺ − 1 までの 2ᴺ 個の出力コードをもちます。フルスケール範囲 VFSR を 2ᴺ 個の等しいステップに分けます。1 ステップを 1 LSB(最下位ビット)といいます:

1 LSB = VFSR/2ᴺ

切り捨て ADC は、整数部分であるコード ⌊Vin/LSB⌋ を出力します。四捨五入する ADC は、真の値から ½ LSB より離れることがありません。これが量子化誤差です。

ある範囲でステップ r を分解するには、2ᴺ ≥ 範囲/r を満たす最小の N が必要です。ビットが 1 つ増えるごとに LSB は半分になり、理想的な信号対量子化雑音比はおよそ 6 dB 向上します:

SQNR = 6.02·N + 1.76 dB
セルフチェック 10 ビットの ADC の範囲が 0〜5.12 V のとき、1 LSB はいくらですか。
  1. 10 mV
  2. 2.5 mV
  3. 5 mV
  4. 512 mV

答え: 5 mV. 210 = 1024 なので、1 LSB = 5.12/1024 = 0.005 V = 5 mV です。N = 10 で割ると 512 mV に、2⁹ を使うと 10 mV になってしまいます。2.5 mV は四捨五入する ADC の最大誤差、つまり LSB の半分です。

4データレートとシリアル通信

各チャネルは、毎秒 fs 個の N ビットのサンプルを出力します。生のデータレートは チャネル数 × fs × N です。メモリ上では 1 サンプルが整数バイトを占めるので、12 ビットのサンプルは 2 バイトを使います。

UART は各バイトをフレームとして送ります:スタートビット 1 つ、データビット 8 つ、任意のパリティビット、1 つまたは 2 つのストップビット。よく使われる 8N1 形式では 1 バイトが 10 ビットになります。ボーレートは毎秒のビット数を数えるので、1 ビットの長さは 1/ボーレートです。

1 秒あたりのバイト数 = ボーレート/(1 フレームあたりのビット数)

マルチプレクサを使うと、1 つの ADC が複数のチャネルを順番に受け持てます。1 回の変換(整定時間を含む)に t かかるなら、n 個のチャネルはそれぞれ 1/(n·t) でサンプリングされます。

5例題

ほとんどの問題は次の順で解きます:

  1. サンプリング周波数を信号の最高周波数と比べる。
  2. 範囲とビット数からステップ幅を求める。
  3. データを数える:チャネル数、毎秒のサンプル数、1 サンプルのバイト数。
  4. スタートビット、パリティビット、ストップビットを数えたうえで、通信路やメモリが扱える量と比べる。
例題

ロガーが 4 チャネルの温度を、0〜4.096 V の 12 ビット ADC で測定します。信号には最大 20 Hz の周波数が含まれ、各チャネルは 100 Hz でサンプリングされます。各サンプルは 2 バイトで、9600 baud、8N1 の UART で送られます。サンプリング周波数は十分ですか。1 LSB はいくらですか。通信は間に合いますか。

1

ナイキストの確認

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

サンプリング周波数は十分です。

2

ステップ幅

1 LSB = 4.096/212 = 4.096/4096 = 0.001 V = 1 mV
3

送るデータ

4 チャネル · 100 サンプル/s · 2 バイト = 800 バイト/s
4

通信路の容量

8N1 は 1 バイトあたり 10 ビットを送ります。

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

答えを確認する

回線上では 800·10 = 8000 bit/s で、9600 baud を下回ります。通信路の使用率は 83 % です。

答え

はい:100 Hz は 20 Hz の 2 倍より大きく、1 LSB = 1 mV で、通信路に必要なのは 960 バイト/s のうち 800 バイト/s です。

6よくある間違い

  • fs/2 より高い周波数が単に失われると考える:実際は帯域内にエイリアスとして現れる。
  • 範囲を 2ᴺ ではなく N で割る。
  • ビット数を切り捨てる:2ᴺ は範囲/分解能以上でなければならない。
  • UART で 1 バイトを 8 ビットと数える:8N1 では 10 ビット必要である。
  • 10 ビットや 12 ビットのサンプルが、整数の 2 バイトで保存されることを忘れる。
セルフチェック 8N1 形式の 9600 baud の UART は、毎秒何バイト送れますか。
  1. 1067
  2. 1200
  3. 9600
  4. 960

答え: 960. 1 バイトに 10 ビット(スタート 1、データ 8、ストップ 1)が必要なので、9600/10 = 960 です。8 で割るとスタートビットとストップビットを忘れており、9 で割るとどちらか一方を忘れています。

7試験問題の例

  • やさしい:ナイキスト、LSB、データレート。最小サンプリング周波数、ナイキスト周波数、LSB の大きさや量子化誤差、UART のビット時間、生のデータレートを求めます。
  • ふつう:エイリアシング、ビット数、UART フレーム。エイリアス周波数、ある分解能に必要なビット数、ある電圧に対する出力コード、記録に必要なメモリ、UART 形式のバイトレート、理想 SQNR を求めます。
  • むずかしい:高調波、SQNR、システム設計。高調波がどこにエイリアスするか、必要な SQNR に対するビット数、UART でストリーミングする ADC が捉えられる最高周波数、マルチプレクス ADC のレート、分周器のボーレート誤差、センサ系の温度分解能を求めます。

アプリでステップごとに学ぶアプリでステップごとに学ぶ

解答例

例題 1やさしい
SD0​D1​D2​D3​D4​D5​D6​D7​Tb​ = ?2400 Bd

UART 通信が 2400 baud で動いています。1 ビットの長さ Tb を µs で求めなさい。

baud = 2400 Bd

求めるもの: Tb (µs)

ヒントを表示
  1. ボーレートは毎秒送られるビット数です。
  2. Tb = 1/baud.
  3. 1 s = 10⁶ µs.
答えとステップごとの解答を表示

UART:調歩同期式のシリアル通信は、各バイトをフレームとして送ります:スタートビット(Low)1 つ、データビット、任意のパリティビット、ストップビット(High)1 つまたは 2 つ。ボーレートは毎秒のビット数なので、1 ビットの長さは Tb = 1/ボーレート、n ビットのフレームの長さは n/ボーレートです。よく使われる 8N1 形式は 1 バイトが 10 ビットです。ボーレート発生器はクロックを分周します:ボーレート = fclk/(16·D)、D は整数なので、実際のボーレートは目標値とわずかに異なります。誤差がおよそ 2 % 未満なら、たいてい許容されます。

ビット時間

Tb = 1/2400 s = 416.7 µs

答え

Tb = 416.7 µs
例題 2ふつう
Vin​N = 85 V2ᴺ − 101 LSB2.125 V?

入力範囲 0〜5 V の 8 ビット ADC が切り捨てを行い、その出力コードは ⌊Vin/LSB⌋、1 LSB = VFSR/2ᴺ です。入力 2.125 V に対する 10 進の出力コード D を求めなさい。

N = 8VFSR = 5 VVin = 2.125 V

求めるもの: D

ヒントを表示
  1. まず 1 LSB の大きさを求めます。
  2. 1 LSB = 5/256 = 19.53 mV.
  3. 入力を LSB で割り、整数部分を残します。
答えとステップごとの解答を表示

ADC の分解能:N ビットの変換器は、フルスケール範囲 VFSR を 0 から 2ᴺ − 1 までの 2ᴺ 個のコードに分けます。1 ステップは 1 LSB = VFSR/2ᴺ で、変換器が表示できる最小の変化です。切り捨て ADC はコード ⌊Vin/LSB⌋ を出力します。四捨五入する ADC は真の値から ½ LSB より離れることがなく、これが量子化誤差です。ビットが 1 つ増えるごとに LSB は半分になり、フルスケールの正弦波に対する理想的な信号対量子化雑音比 SQNR = 6.02·N + 1.76 dB はおよそ 6 dB 向上します。ある範囲で分解能 r を得るには、2ᴺ ≥ 範囲/r を満たす最小の N を選びます。

ステップ幅

1 LSB = 5/28 = 19.53 mV

コード

Vin/LSB = 2125/19.53 = 108.8
コード = ⌊108.8⌋ = 108

答え

D = 108

2 進数では 01101100 です。

例題 3むずかしい
f0fs​/2fs​1.92 kHz7f₁?

1.92 kHz の方形波を、アンチエイリアシングフィルタなしで 8 kHz でサンプリングします。方形波には奇数次の高調波 3f₁、5f₁、7f₁、… が含まれます。サンプリングされたデータでは、高調波 7f₁ はどの周波数 fa に現れますか。Hz で答えなさい。

f₁ = 1.92 kHzfs = 8 kHz高調波: 7f₁

求めるもの: fa (Hz)

ヒントを表示
  1. 高調波は 7·1.92 kHz = 13.44 kHz にあり、fs/2 = 4 kHz より高い位置です。
  2. fs の最も近い整数倍を使って、fa = |f − k·fs| の位置に現れます。
  3. 13440/8000 = 1.68.
答えとステップごとの解答を表示

サンプリング:ADC は信号を毎秒 fs 回測定します。ナイキスト–シャノンの標本化定理により、周波数 f が正しく捉えられるのは f < fs/2 の間だけです。これはナイキスト(折り返し)周波数なので、サンプリング周波数は信号の最高周波数の 2 倍を超えなければなりません。それより高い周波数は失われるのではなく、fa = |f − k·fs| の位置にエイリアスとして現れます。ここで整数 k は、結果が 0 から fs/2 の間に入るように選びます。サンプルからは両者を区別できないので、ADC の前に、fs/2 より上をすべて除去するアナログのアンチエイリアシングフィルタが必要です。

高調波の周波数

7f₁ = 7·1.92 kHz = 13.44 kHz

サンプリング周波数の最も近い整数倍

m = round(1.68) = 2

エイリアス周波数

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

答え

fa = 2560 Hz

エイリアスは信号帯域の内側に落ち、どんなデジタルフィルタでも除去できません。ADC の前に置くアナログフィルタだけが有効です。

質問と回答

データ収録とサンプリングとは?

コンピュータは電圧を直接読み取れません。データ収録システムは物理量を数値に変えます:センサが小さな電圧をつくり、増幅器がそれを適切な大きさにし、アナログ-デジタル変換器(ADC)が一定の間隔でそれを測定して 2 進数を出力します。

数値の質は 2 つの選択で決まります。サンプリング周波数 fs は ADC が測定する頻度を表し、ビット数 N は電圧の範囲をどれだけ細かく分けるかを表します。この 2 つは、保存または送信すべきデータの量も決めます。

データ収録とサンプリングの問題の解き方は?(手順)
  1. まず与えられた値を書き出します:サンプリング周波数、信号の周波数、ビット数、入力レンジ、ボーレート。
  2. サンプリングの問題では、各周波数を fs/2 と比べます。それより高い周波数は、fs の最も近い整数倍を使って fa = |f − k·fs| の位置に現れます。
  3. 分解能の問題では、1 LSB = VFSR/2ᴺ を求めるか、2ᴺ ≥ 範囲/分解能 を満たす最小の N を求めます。
  4. データレートと UART 通信では、送られるものをすべて数えます:チャネル数、毎秒のサンプル数、1 サンプルあたりのビット数またはバイト数、そして各フレームのスタートビット、パリティビット、ストップビット。
データ収録とサンプリングでよくある間違いは?
  • fs/2 より高い周波数は消えると考える。実際には帯域内のエイリアスとして現れる。
  • 範囲を 2ᴺ ではなく N で割る。
  • ビット数を切り上げずに切り捨てる。
  • スタートビットとストップビットを忘れる:8N1 では 1 バイトあたり 10 ビットを送る。
データ収録とサンプリングの練習では何を学ぶ?
  • やさしい: ナイキスト、LSB、データレート
  • ふつう: エイリアシング、ビット数、UART フレーム
  • むずかしい: 高調波、SQNR、システム設計

問題ごとに数値が変わるので、答えではなく解き方が身につきます。 行き詰まったら、まず小さなヒントを開き、必要なときだけ詳しい解説を見ましょう。

練習のしかた

  • 問題ごとに数値が変わるので、答えではなく解き方が身につきます。
  • 行き詰まったら、まず小さなヒントを開き、必要なときだけ詳しい解説を見ましょう。
  • 進捗、間違えた問題、保存した問題は記録されるので、試験前に復習できます。

このトピックの前後のトピック

先に学ぶ

このトピックを含む科目

電気のほかのトピック

印刷用ワークシート