皆さんこんにちは!メカ旦那です。
アナログ信号をデジタル信号に変換する「AD変換」とそれを実現するIC「ADコンバータ」はあらゆる電子回路で用いられています。そんな両者についてわかりやすく解説します!
有名なADコンバータ「MCP3008/3004/3208/3204」の使い方は別記事で解説していますので、気になる方はこちらもぜひご覧ください。
アナログ、デジタルとは?
まずは、アナログとデジタルの違いについてです。アナログは「連続的な値を取る信号」の事で、デジタルは「0と1の2値で表される信号」の事です。
アナログの例として、電圧、電流、可変抵抗が挙げられます。一方、デジタルの例はPC間・マイコン間の通信が挙げられます。
AD変換とは?
変換プロセス
AD変換(A/D変換、アナログ・デジタル変換)とは、アナログ信号をデジタル信号に変換する事です。AD変換は様々ありますが、典型的な「PCM変換」を例に解説します。変換は標本化→量子化→符号化→(代表値変換)の順で実施します。
AD変換のプロセス
- 標本化(サンプリング)
- センサ等から一定周期で読み取ったアナログ信号の振幅を抽出(サンプリング)します。この周期はサンプリングレート(サンプリング周波数、サンプリング周期など)と呼ばれており、単位はHz、sps、s/s、sa/sなど様々あります。
- 例えば5 Hz の場合、1秒間に5回サンプリングを行います。
- 一般的にはCD向けの44.1 kHz (=44,100 Hz) や 映像制作向けの48 kHz (48,000 Hz)が有名です。
- 量子化
- サンプリングした振幅を予め設定した段階に区切って数値化します。この段階は量子化ビット数と言い、このビット数から計算される最小検出範囲を分解能(=1LSB)と呼びます。
- 例えば量子化ビット数が3bitの場合、23 = 8段階で振幅を数値化します。振幅がアナログ電圧0~12Vの場合、分解能は 1LSB = (12-0) / 8 = 1.5V になります。0~1.5Vなら0に、4.5~6.0Vなら3になります。
- 一般的には8, 10, 12, 16, 24 bit が有名です。
- 符号化
- 量子化した数値を2進数に変換します。変換する回路はエンコーダと言います。
- 変換する事でPCやマイコンが扱えるデータになります。
- 先ほどの例で、0なら000、3なら011になります。
- 代表値変換
- 今までの処理はADコンバータ内で実施され、2進数はマイコン(CPU、PC)に送信されます。ここでこの2進数のままでは電圧範囲しかわかりません。例えば011は4.5~6.0Vの範囲ですが、4.7Vなのか5.9Vなのかはわかりません。これをモニター等に表示する場合、「代表値」で記載する事が多いです。
- 代表値を範囲の下端、中央、上端どれにするかによって数式が異なり、マイコン側のプログラムに記載します。ただし代表値なので、どうしても最初のアナログ入力値との誤差が生じます。これは量子化誤差と呼ばれています。
- 量子化誤差について、代表値が下端の場合 0~+1LSB、上端は -1~0LSB、中央は±0.5LSBになります。誤差範囲が小さい事から中央値が使われる事が多いです。
エイリアシングとナイキスト定理
変換プロセスの「標本化」について、どんなアナログ信号でも変換できるわけではありません。
例えばサンプリング周波数よりアナログ信号周波数が大きい場合、1周期当たりのサンプリング数が少なくなるため、AD変換しても十分な数のデータが取得出来ません。その為オシロスコープ等の測定機でDA変換して、波形を表示すると元の形とは全く異なります。この現象はエイリアシング(折り返し雑音)と呼ばれています。下図のように21Hzのアナログ信号を20Hzでサンプリングすると、約1Hzの波形になってしまいます。
一般的に「サンプリング周波数は、測定したいアナログ信号の最大周波数の2倍以上が必要」と言われています。これはナイキスト定理(標本化定理、サンプリング定理)と言います。
言い換えると「サンプリング周波数の半分に相当するアナログ周波数までAD変換できる」事になります。この「半分のアナログ周波数」をナイキスト周波数と言います。
文字だけだとわかりにくいので、一定のサンプリング周波数(20 Hz)で様々な周波数のアナログ信号(1~20 Hz)を標本化した場合をイラストにしてみました。
アナログ信号の周波数が〇〇Hzの時
- 1 Hz
- 1周期の中で振幅を 20 Hz / 1 Hz = 20回分サンプリングできます。
- AD変換した後測定機で表示しても、ほぼ元の波形になります。つまり20Hzのサンプリング周波数で1Hzのアナログ信号は十分サンプリングできます。
- 5 Hz
- 1周期の中で振幅を 20 Hz / 5 Hz = 4回分サンプリングできます。
- 振幅の最大、中央、最小値がサンプリングできれば、AD変換した後測定機で表示しても、ある程度近い波形に復元できます。
- 10 Hz
- 1周期の中で振幅を 20 Hz / 10 Hz = 2回分サンプリングできます。
- 振幅の最大、最小値がサンプリングできれば、AD変換した後測定機で表示しても、ある程度近い波形に復元できます。
- 10Hzはサンプリング周波数20Hzの半分になる為、ナイキスト周波数に当たります。つまりサンプリングできるアナログ周波数の上限値になります。
- 20 Hz
- 1周期の中で振幅を 20 Hz / 20 Hz = 1回分のみサンプリングできます。
- AD変換した後測定機で表示しても、真っすぐな波形となり、元の波形とは全く異なった形になります。つまりエイリアシングが生じています。
用途
AD変換は身の回りのあらゆる所で使われています。
AD変換の例
- スマホ通話でのマイクを通じた音声入力
- 入力された音声をアナログ電圧に変換した後、AD変換でデジタルデータにします。その後パケットという細切れのデータに変換する事で、無線送信できるようになり相手のスマホへ届きます。
- カメラの撮像素子
- レンズ・カラーフィルタを通って集光された光は、各画素のフォトダイオードに当たる事で電気に変わります。その後、読み出し回路でアナログ電圧に変わり、AD変換した後にデジタルとなります。デジタルになることでメモリ上に保存でき、写真として残せるようになります。
- ゲームコントローラのアナログスティック
- 指でスティックの角度を変える事で、接続された可変抵抗の抵抗値とアナログ電圧が変わります。それをAD変換してデジタル化しパケットにします。こうしてゲーム機本体へ無線送信する事ができます。
DA変換との違い
ちなみにAD変換と似たような言葉に「DA変換」があります。こちらはAD変換とは逆でデジタル信号をアナログ信号に変換します。詳しくはこちらの記事をご覧ください。
ADコンバータとは?
AD変換を利用したIC
ADコンバータ(A/Dコンバータ、ADCなど)とは、前述のAD変換を実現するIC部品になります。
アナログ入力のチャンネル数(端子数)、分解能、出力時のシリアル通信方式、電源電圧等で様々な製品があります。
形も色々ありますが、IC単体や基板実装されたものでしたら秋月電子やAmazonで安く入手できます。また筐体付きのモジュールとしてUSBと接続できるタイプも売られています。
リンク
リンク

メカ旦那
実際に手を動かした方がより理解できます。ベストセラーのADコンバータ「MCP3208」を使った電子工作についても解説していますので、ぜひご覧ください!
各マイコンのアナログ入力
一般的にマイコンやPCがアナログ入力する際、ADコンバータが必要になります。しかしArduinoやラズパイピコなど一部のマイコンではAD変換機能を組み込んでいます。そちらについて解説します。
Arduino Uno
電子工作では有名なArduino Unoはアナログ入力ピン(A0~5)があり、センサ等のアナログ出力を直接接続する事ができます。入力電圧範囲は0~5V、分解能は10bit(0~1023の整数値に変換)になります。
リンク
Arduino Leonard
Arduino Leonardは、Unoよりアナログ入力ピンがさらに増えます(A0~A11、入力電圧範囲と分解能はUnoと同じ)。更にUnoより安価な為、アナログ入力をたくさん使いたい方にはオススメです。
リンク
Raspberry Pi Pico
ラズパイピコはアナログ入力ピンが3つあり(ADC0,1,2)、入力電圧範囲は0~3.3V、分解能は12bit(0~4095の整数値に変換)になります。
リンク
ラズパイにはアナログ入力がない!
ちなみにPicoではない一般的な「Raspberry Pi」はADコンバータが無いため、アナログ入力ピンがありません。なぜかと言うと、今まで上げたのは全て「マイコン」なのに対し、一般的なラズパイは「コンピュータ」であり、周辺機器からの入力はデジタルを想定して設計されているためです。
コンピュータとマイコンの違い
- コンピュータ
- 高度な処理(画像認識、AIなど)やマルチタスクの実行を目的としており、その処理を行うソフト「OS」が搭載されている(Windows、Linuxなど)。
- 外部入力はまずOSで受けるが、デジタルな世界であるため、周辺機器もデジタル出力の想定になる(キーボード、マウスなど)。その為アナログ入力機能が無く、ADコンバータの外付け接続が必要なデバイスが多い。
- 例:ノートPC、一般的なラズパイなど
- マイコン
- 外部入力されたデータを瞬時に処理する「リアルタイム制御」を目的としており、マルチタスク目的ではないためOSはない。外部入力はファームウェアやリアルタイムOSに入り、ハードウェアを直接操作する事で素早い処理を行う。
- 多様な周辺機器に対応する為、デジタルだけではなくアナログ入力機能を元々持つデバイスが多い。
- 例:Arduino Uno、ラズパイピコ、ESP32など
そのためピコ以外のラズパイは一応データシートを確認の上、アナログ入力ピンが無い場合は別途ADコンバータを外付け接続してくださいね。
DAコンバータとの違い
ADコンバータと名前が似ている「DAコンバータ」は、前述のDA変換を実現する部品になります。
入力時のシリアル通信方式、分解能、アナログ出力チャンネル数(端子数)によって様々な製品があります。詳しくはこちらの記事をご覧ください。
まとめ
AD変換のまとめです!
- AD変換(A/D変換、アナログ・デジタル変換)とは、アナログ信号をデジタル信号に変換する事
- 標本化→量子化→符号化→(代表値変換)の順で変換
- ADコンバータ(A/Dコンバータ、ADCなど)とは、AD変換を実現するIC部品の事
マイコンや電子工作では頻繁に利用するので、ぜひ覚えてくださいね!
コメント