皆さんこんにちは!メカ旦那です。
アナログ信号をデジタル信号に変換する「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になります。誤差範囲が小さい事から中央値が使われる事が多いです。
用途
AD変換は身の回りのあらゆる所で使われています。
AD変換の例
- スマホ通話でのマイクを通じた音声入力
- 入力された音声をアナログ電圧に変換した後、AD変換でデジタルデータにします。その後パケットという細切れのデータに変換する事で、無線送信できるようになり相手のスマホへ届きます。
- カメラの撮像素子
- レンズ・カラーフィルタを通って集光された光は、各画素のフォトダイオードに当たる事で電気に変わります。その後、読み出し回路でアナログ電圧に変わり、AD変換した後にデジタルとなります。デジタルになることでメモリ上に保存でき、写真として残せるようになります。
- ゲームコントローラのアナログスティック
- 指でスティックの角度を変える事で、接続された可変抵抗の抵抗値とアナログ電圧が変わります。それをAD変換してデジタル化しパケットにします。こうしてゲーム機本体へ無線送信する事ができます。
DA変換との違い
ちなみにAD変換と似たような言葉に「DA変換」があります。こちらはAD変換とは逆でデジタル信号をアナログ信号に変換します。以下はDA変換のプロセスですが、先ほどのAD変換の例を逆にして元のアナログ信号に近い波形を作り出す事を考えてみます。
DA変換のプロセス
- 復号
- 他デバイスから入力された2進数を10進数に変換します。
- 例えば001なら1に、011なら3になります。
- アナログ値へ変換
- アナログ値に変換します。この時の「アナログ値」とは「AD変換で設定した代表値」を指します。
- 先ほどのAD変換の場合、代表値は中央値にしていますので、1は2.25V、4は6.75Vに変換されます。
- スムージング
- 2の時点ではステップ波形でデジタル感があります。そこでローパスフィルタを用いて低周波の信号のみを通過させることでスムージングを行い、アナログのような連続的な波形にします。
- 2の時点で代表値に変換しているため、元のアナログ波形をそのまま再現できたわけではありません。
DA変換の用途としては以下があります。
DA変換の例
- 無線送信
- 先ほどのAD変換の例で出てきたパケットは、変調を通じて別のデータへ加工されます。その後DAコンバータに入力され、高周波のアナログ信号として出力されます。その後アンプで増幅されアンテナから無線として空間へ放射されます。
- スピーカーを使っての音楽再生
- 動画や音楽などストリーミング配信では、海外のサーバーから無線を通じてデジタルデータが届きますが、再生時はスマホ内部でDA変換し音というアナログ信号の形で発信しています。
ADコンバータとは?
AD変換を利用したIC
ADコンバータ(A/Dコンバータ、ADCなど)とは、前述のAD変換を実現するIC部品になります。
アナログ入力のチャンネル数(端子数)、分解能、出力時のシリアル通信方式、電源電圧等で様々な製品があります。
形も色々ありますが、IC単体や基板実装されたものでしたら秋月電子やAmazonで安く入手できます。また筐体付きのモジュールとしてUSBと接続できるタイプも売られています。
リンク
リンク

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