技術コラム(第13回) A/D変換について

よくアナログデータとかディジタルデータと言う言葉を聞くと思いますが、今回はこのアナログデータをディジタルデータに変換(以下A/D変換とします)するしくみについて記述したいと思います。
私達が使っているスマートフォンやパソコンは、内部ではディジタルデータが使われています。
一方自然界、たとえば音、振動、温度、湿度、重さ、速度、光の強さなどほとんどのものがアナログデータになります。

したがって、これらのアナログデータをスマートフォンなどのディジタル機器に取り込んで処理するためにはA/D変換する必要があります。

A/D変換の手順

アナログデータをディジタルデータに変換する場合、一定の周期で値を取り込む標本化、取り込んだアナログ値をディジタル値に変換する量子化と言う処理を行います。

標本化

標本化は分かりやすいようにアナログデータのモデルを作成して説明いたします。

モデルとして、1~10までの時間と三角関数のsinで演算した表を作成しました。
ここでは、0.5時間単位でデータを標本化しています。sinは音をイメージしていただけるとわかりやすいかと思いますが、規則正しい電子音のようなものになりますが、今回は音声のモデルになります。
(そのほかのアナログデータも基本的にはsin波形を合成したものになりますので、同様な考え方になります)

データを再現する場合を考えると、標本化する時間の周期は短い方が細かくデータを取れるので、再現性は高くなるのですが、取り込む機器のメモリには限りがあります。
つまり機器側から見た場合は周期が長い方がメモリの領域が少なくて済むので長い方がコストを低くすることができます。

ここで悩むことが多いのですが、この周期は一般的にはシャノンの定理で決めることが多いです。
これは、取り込む元のデータの周波数の2倍の周期で標本化すれば元の波形を再現することができると言う定理です。

サンプリング周期を0.5とした場合のA/D変換モデルデータ
サンプリング周期を0.5とした場合のA/D変換モデルデータ
サンプリング周期を0.5とした場合のグラフ
サンプリング周期を0.5とした場合のグラフ

次にサンプリング周期を0.5から2倍の1としてみます。

サンプリング周期を1とした場合のA/D変換モデルデータ
サンプリング周期を1とした場合のA/D変換モデルデータ
サンプリング周期を1とした場合のグラフ
サンプリング周期を1とした場合のグラフ

サンプリング周期を変えると元のデータと形が変わったことがわかると思います。

このようにサンプリング周期はA/D変換する元のデータを考えて、適切に設定する必要があります。

量子化

標本化したデータは、まだアナログ値なので、これをディジタル値に変換する処理が必要になります。これを量子化といいます。

ここで、アナログデータとは連続量と定義され、デジタルデータのように1Vの次が2Vとはならず、1.00・・・01V、1.00・・・002Vなどと言うように小数点以下は無限に続いています。

一方ディジタルデータは連続していない、とびとびのデータとなっています。
ディジタル機器では、この数値を格納しておく部分(メモリなど)に限りがあります。
ここでデータの小数点以下、たとえば0.012345Vとなるような値は0.01Vのように丸める処理をします。この辺りもA/D変換を行って完全に元のデータを再現できない理由の一つになります。
この量子化を行う際に切り捨てられたデータは量子化雑音と呼ばれています。
どこまでのデータが必要で、どこまで捨てていいのかは使用する用途によって適切に検討する必要があります。

おわりに

今回ご説明したA/D変換はディジタル機器のユーザインターフェイス部、センサの入力部には必須の技術と言っていいくらい広く使われているものです。開発実績の中にもA/D変換を用いた製品がございます。

このA/D変換はデバイスが変われば、ソフトもハードも新しく設計する必要が生じるような割と手のかかる部分でもあります。
このような面倒なことでも、数々の実績のある組込開発.comにご依頼いただければ設計から製造までお力になれると思います。ぜひ、お気軽にお問い合わせください。

投稿者プロフィール

ソフト担当T
ソフト担当T
メインはソフト担当ですが、筐体設計も担当します。プログラミング言語はPythonやC言語の経験が多いです。また、たいチャレ(詳細は右バーナー参照)にも参加しており、日々、様々なことを学びながら業務に取り組んでいます。