
「温度センサの電圧をマイコンで読みたい」と考えたとき、最初にぶつかるのがA/D変換です。
センサは温度、圧力、明るさ、電流、位置などを電圧や電流の変化として出力します。
しかし、マイコンやPLCの内部で扱えるのは、0と1で表されるデジタル値です。
このアナログの連続量を、コンピュータが処理できる数値へ置き換える仕組みがA/D変換です。
本記事では、A/D変換の基本、A/D変換器の役割、分解能、サンプリング、回路上の注意点、センサ信号を読み取るときの実務ポイントまでをわかりやすく解説します。
- 1. A/D変換とは何か
- 2. A/D変換の基本的な流れ
- 3. A/D変換器の役割
- 4. 分解能とは何か
- 5. センサ信号を読み取る仕組み
- 6. A/D変換回路の基本構成
- 7. サンプリング周波数とエイリアシング
- 8. 基準電圧と測定精度
- 9. ノイズ対策で押さえるポイント
- 10. A/D変換の計算例
- 11. A/D変換とD/A変換の違い
- 12. マイコンでA/D変換を使うときの注意点
- 13. PLC・制御盤でのA/D変換
- 14. A/D変換で起きやすいトラブル
- 15. A/D変換を設計するときのチェックリスト
- 16. よくある質問
- 17. まとめ
1. A/D変換とは何か
A/D変換とは、アナログ信号をデジタル信号に変換する処理です。
A/DはAnalog to Digitalの略で、日本語では「アナログ・デジタル変換」と呼ばれます。
たとえば、0〜5Vの電圧をマイコンに入力し、その値を0〜1023や0〜4095のような数値として扱えるようにします。
この変換を行う部品や回路がA/D変換器、またはADCです。
マイコンの内蔵機能として入っていることもあれば、高精度測定用に外付けICとして使うこともあります。
マイコンのCPU・メモリ・I/Oの基本を先に理解しておくと、A/D変換が「外部の現実世界をマイコンへ取り込む入口」であることが見えやすくなります。
アナログ信号とデジタル信号の違い
アナログ信号は、時間とともに連続的に変化する信号です。
温度が少しずつ上がる、圧力がゆっくり変わる、照度が滑らかに変化する、といった現象が該当します。
一方、デジタル信号は、離散的な値として扱われる信号です。
マイコン内部では、電圧そのものではなく、2進数で表された数値として処理されます。
| 項目 | アナログ信号 | デジタル信号 |
|---|---|---|
| 値の性質 | 連続的に変化する | 段階的な数値で表す |
| 例 | 0.731V、1.248V、2.006V | 149、255、410など |
| 扱う対象 | センサ電圧、音声、温度信号 | CPU、メモリ、通信データ |
| 弱点 | ノイズの影響を受けやすい | 細かさは分解能に制限される |
A/D変換が必要になる場面
A/D変換は、センサを使うほぼすべての制御システムで登場します。
温度制御、圧力監視、電流検出、バッテリ電圧監視、モータ電流監視、重量測定などが代表例です。
入力と出力の考え方を整理したい場合は、I/Oにおける入力と出力の違いもあわせて確認すると理解しやすくなります。
2. A/D変換の基本的な流れ
A/D変換は、単に電圧を数値に置き換えるだけではありません。
実際には、入力、サンプリング、量子化、符号化という段階を経て、アナログ信号がデジタル値になります。
入力信号を受け取る
まず、センサや回路からA/D変換器へアナログ電圧が入力されます。
多くのマイコンでは、0〜3.3Vや0〜5Vの範囲に入る電圧だけを読み取れます。
入力範囲を超える電圧を加えると、正しい値が読めないだけでなく、マイコンを破損する可能性があります。
サンプリングする
連続的に変化する信号を、一定のタイミングで切り取る処理がサンプリングです。
たとえば1秒間に1000回測定する場合、サンプリング周波数は1kHzです。
温度のようにゆっくり変化する信号では低いサンプリング周波数で十分です。
一方、振動、音、電流波形のように速く変化する信号では、十分に高いサンプリング周波数が必要です。
量子化して数値にする
サンプリングした電圧を、決められた段階数のどこに当てはまるかで数値化します。
これが量子化です。
10bitのA/D変換器であれば 段階、12bitであれば
段階に分けて表現します。
| bit数 | 段階数 | 0〜5V時の1段階 | 用途イメージ |
|---|---|---|---|
| 8bit | 256段階 | 約19.5mV | 粗いレベル検出 |
| 10bit | 1024段階 | 約4.88mV | 一般的なマイコン入力 |
| 12bit | 4096段階 | 約1.22mV | 制御・監視用途 |
| 16bit | 65536段階 | 約0.076mV | 計測・高精度用途 |
3. A/D変換器の役割
A/D変換器は、センサ信号とCPUの間に入る翻訳機のような存在です。
現実世界の電圧変化を、プログラムで扱える数値へ変換します。
マイコン内蔵ADC
多くのマイコンには、A/D変換器が内蔵されています。
温度センサ、可変抵抗、電池電圧、簡単なアナログ入力を読む程度であれば、内蔵ADCで十分な場合が多いです。
内蔵ADCのメリットは、部品点数が少なく、コストを抑えやすいことです。
一方で、分解能、ノイズ耐性、変換速度、入力チャネル数には限界があります。
外付けADC
高精度な計測や、微小電圧の読み取りが必要な場合は、外付けADCを使います。
ロードセル、熱電対、微小電流検出、医療機器、計測器などでは、16bit、24bit級のADCが使われることもあります。
外付けADCは高精度ですが、基板設計、基準電圧、通信、ノイズ対策まで含めて設計する必要があります。
A/D変換器だけでは測れないもの
A/D変換器は電圧を読む部品です。
温度そのもの、圧力そのもの、重量そのものを直接読んでいるわけではありません。
実際には、センサが物理量を電圧や電流へ変換し、必要に応じて増幅・フィルタ処理を行い、その結果をADCが読み取ります。
4. 分解能とは何か
A/D変換の検索意図で特に重要なのが分解能です。
分解能とは、入力電圧をどれだけ細かい段階で読み分けられるかを示す指標です。
分解能の基本式
A/D変換器の最小読み取り単位は、基準電圧とbit数で決まります。
基本式は次の通りです。
:基準電圧
:A/D変換器のbit数
- 1LSB:最小の1段階に相当する電圧
たとえば、基準電圧5V、10bitのA/D変換器では、1段階あたりの電圧は次のようになります。
分解能が高ければ必ず高精度とは限らない
分解能が高いほど細かく数値化できますが、それだけで測定精度が上がるとは限りません。
ノイズ、基準電圧の揺れ、センサ誤差、アンプ誤差、温度ドリフトが大きければ、下位bitは意味のない揺れになります。
たとえば12bitで読んでいても、ノイズで値が±10カウント揺れるなら、実効的な分解能はかなり低くなります。
分解能と必要精度の考え方
設計では、読みたい変化量に対して十分に細かい分解能を選ぶ必要があります。
たとえば0〜100℃を0〜5Vで出力する温度センサを10bitで読む場合、1LSBは約0.0977℃に相当します。
この場合、0.1℃単位の表示は可能に見えますが、センサ誤差やノイズを含めると、実際に0.1℃精度が得られるとは限りません。
5. センサ信号を読み取る仕組み
A/D変換を実務で使う場合、重要なのはセンサ信号の前処理です。
センサの出力がそのままADCに入れられるとは限りません。
電圧出力センサ
0〜5V、0〜10V、1〜5Vのように、測定値に応じて電圧を出すセンサです。
マイコンで読みやすいのは0〜3.3Vや0〜5Vですが、工業用センサでは0〜10Vもよく使われます。
0〜10Vを3.3V系マイコンで読む場合は、抵抗分圧や信号変換回路が必要です。
電流出力センサ
工場では4〜20mA出力のセンサも多く使われます。
電流信号はノイズに強く、長距離配線に向いているためです。
マイコンのADCは電流を直接読めないため、シャント抵抗で電圧に変換してから読み取ります。
| センサ出力 | ADCへ入れる前の処理 | 注意点 |
|---|---|---|
| 0〜5V | そのまま入力できる場合が多い | 入力範囲と保護回路を確認する |
| 0〜10V | 抵抗分圧・絶縁変換 | 過電圧でマイコンを壊さない |
| 1〜5V | そのまま、またはオフセット補正 | 断線検出に使いやすい |
| 4〜20mA | シャント抵抗で電圧化 | 抵抗精度と発熱に注意する |
| 微小電圧 | 計装アンプで増幅 | ノイズとオフセットが支配的になる |
デジタルセンサとの違い
最近は、I2CやSPIで直接データを出すデジタルセンサも増えています。
この場合、センサ内部でA/D変換が行われており、マイコンは変換済みのデジタル値を受け取ります。
UART、SPI、I2Cなどの違いは、シリアル通信の記事で整理しています。
6. A/D変換回路の基本構成
A/D変換回路は、センサ、信号調整回路、A/D変換器、CPUで構成されます。
どれか一つだけを見ても、正しい測定はできません。
入力保護回路
現場配線では、静電気、誤配線、サージ、ノイズが入ることがあります。
そのため、ADC入力の前には抵抗、ダイオード、ツェナーダイオード、TVSダイオードなどで保護回路を入れることがあります。
特に外部端子へつながるアナログ入力では、マイコンの絶対最大定格を超えない設計が重要です。
ローパスフィルタ
センサ信号に高周波ノイズが重畳している場合、ADCの前にRCローパスフィルタを入れます。
抵抗とコンデンサだけの簡単な回路でも、不要な高周波成分を抑えられます。
ただし、フィルタを強くしすぎると応答が遅くなります。
温度のようにゆっくり変わる信号なら問題ありませんが、圧力変動や振動を読む場合は、応答速度とのバランスが必要です。
バッファアンプと入力インピーダンス
ADC入力には、サンプリング用の内部コンデンサが接続されることがあります。
センサ出力のインピーダンスが高すぎると、このコンデンサを十分に充電できず、読み取り値がずれることがあります。
その場合は、オペアンプを使ったバッファ回路を入れます。
マイコンのデータシートには、推奨信号源インピーダンスやサンプリング時間が記載されているため、必ず確認します。
7. サンプリング周波数とエイリアシング
A/D変換では、どのくらいの頻度で測るかも重要です。
サンプリングが遅すぎると、元の波形を正しく再現できません。
サンプリング周波数とは
サンプリング周波数とは、1秒間に何回A/D変換を行うかを表す値です。
単位はHzで、1kHzなら1秒間に1000回測定します。
温度監視なら1Hz程度で十分な場合もあります。
一方、モータ電流や振動波形を見る場合は、数kHzから数十kHz以上が必要になることがあります。
エイリアシングとは
エイリアシングとは、サンプリング周波数が不足したときに、本来とは違う低い周波数の信号として見えてしまう現象です。
高速で回転する車輪が映像では逆回転して見える現象に近いイメージです。
信号に含まれる最高周波数の2倍以上でサンプリングする必要がありますが、実務では余裕を持たせます。
アンチエイリアシングフィルタ
ADCの前にローパスフィルタを入れ、サンプリング周波数で扱えない高周波成分を落とします。
これがアンチエイリアシングフィルタです。
ソフトウェアで平均化するだけでは、サンプリング前に折り返した成分は消せません。
必要な周波数帯を決め、ハードウェア側で不要成分を抑えることが重要です。
8. 基準電圧と測定精度
A/D変換の結果は、基準電圧に強く依存します。
基準電圧が揺れれば、入力信号が同じでも変換値が変わります。
基準電圧の役割
ADCは、入力電圧を基準電圧に対する割合として変換します。
たとえば基準電圧5V、10bit ADCで入力が2.5Vなら、理想的にはおよそ512付近の値になります。
基準電圧が4.9Vに下がると、同じ2.5Vでも変換値は変わります。
つまり、測定精度を求める場合、基準電圧の精度と安定性が非常に重要です。
電源電圧を基準にする場合
簡易的なマイコン回路では、電源電圧をそのまま基準電圧にすることがあります。
この方法は簡単ですが、電源の変動が測定値にそのまま影響します。
電池電圧が下がる機器や、モータ駆動で電源が揺れる装置では注意が必要です。
外部基準電圧ICを使う場合
高精度な測定では、専用の基準電圧ICを使うことがあります。
温度変化に対する安定性、初期精度、ノイズ特性を見て選定します。
ただし、基準電圧だけを高精度にしても、センサ、アンプ、配線、基板レイアウトが悪ければ測定精度は上がりません。
9. ノイズ対策で押さえるポイント
A/D変換で実務上よく問題になるのは、分解能よりもノイズです。
カタログ上は12bitや16bitでも、実機では値が大きく揺れることがあります。
アナログ配線を短くする
アナログ信号線は、できるだけ短く、ノイズ源から離して配線します。
モータ線、インバータ線、リレー駆動線、PWM出力線の近くを長く並走させると、ノイズを拾いやすくなります。
マイコンのピン入出力や外部端子との関係は、GPIOの記事でも扱っています。
GND設計に注意する
アナログ回路ではGNDの取り回しが重要です。
大電流が流れるGNDと、微小信号を扱うGNDを無計画に共用すると、電位差が測定値に乗ります。
センサGND、ADC GND、電源GND、モータGNDの関係を意識して設計します。
平均化と移動平均
ランダムノイズを抑えるには、複数回測定して平均化する方法が有効です。
ただし、平均化すると応答は遅くなります。
温度表示では有効ですが、異常検出や高速制御では、平均化による遅れが問題になることがあります。
10. A/D変換の計算例
ここでは、A/D変換値から実際の電圧や温度を求める手順を確認します。
式を理解しておくと、マイコンのプログラムやPLCのスケーリング処理で迷いにくくなります。
変換値から入力電圧を求める
10bit ADC、基準電圧5V、A/D変換値が614だったとします。
入力電圧は次の式で求められます。
数値を代入します。
このように、ADC値は直接の物理量ではなく、基準電圧に対する比率です。
温度へ変換する
0〜5Vが0〜100℃に対応する温度センサを想定します。
入力電圧が3.00Vであれば、温度は次のように換算できます。
実務では、センサのオフセット、ゲイン誤差、直線性、校正値も考慮します。
4〜20mA信号の例
4〜20mAを250Ωのシャント抵抗で受けると、1〜5Vの電圧になります。
この場合、4mAが0%、20mAが100%に対応します。
1V未満や5V超の値が出た場合は、断線、短絡、センサ異常、入力回路異常を疑います。
11. A/D変換とD/A変換の違い
A/D変換とセットで理解したいのがD/A変換です。
両者は信号の向きが逆です。
A/D変換は入力側
A/D変換は、センサや外部回路から入ってくるアナログ信号をデジタル値へ変換します。
制御システムでいえば、現場の状態を読み取る入力側の処理です。
D/A変換は出力側
D/A変換は、デジタル値をアナログ電圧や電流に変換します。
たとえば、0〜10V指令でインバータの速度を指定したり、アナログメータを動かしたりする用途があります。
PWMをローパスフィルタで平滑化し、簡易的なアナログ出力として使うこともあります。
| 項目 | A/D変換 | D/A変換 |
|---|---|---|
| 信号の向き | アナログ → デジタル | デジタル → アナログ |
| 主な用途 | センサ値の読み取り | アナログ指令の出力 |
| 例 | 温度、圧力、電流、電圧 | 0〜10V指令、音声出力 |
| 設計の要点 | ノイズ、分解能、基準電圧 | 出力範囲、負荷、応答性 |
12. マイコンでA/D変換を使うときの注意点
マイコンでA/D変換を使うときは、プログラムだけでなく、回路と設定の両方を確認します。
読み取り値が不安定な場合、原因はソフトウェアだけとは限りません。
ピン設定を確認する
マイコンでは、同じ端子がGPIO、A/D入力、通信端子など複数の機能を兼ねていることがあります。
A/D入力として使う場合は、該当ピンをアナログ入力モードに設定します。
デジタル入力バッファを無効化する設定が必要なマイコンもあります。
変換時間を確保する
ADCには変換に必要な時間があります。
サンプリング時間が短すぎると、入力コンデンサが十分に充電されず、値がずれることがあります。
高速に読みたい場合でも、データシートの推奨条件を無視しないことが重要です。
メモリマップ上のレジスタを理解する
組込み開発では、ADCの設定や変換結果はレジスタとして扱われることがあります。
どのアドレスのどのbitを設定すればA/D変換が始まるのか、どのレジスタに結果が入るのかを理解する必要があります。
レジスタや周辺機能のアドレス配置は、メモリマップの記事とつながる内容です。
13. PLC・制御盤でのA/D変換
A/D変換はマイコンだけでなく、PLCや制御盤でも使われます。
アナログ入力ユニットは、内部的にはA/D変換を行っています。
アナログ入力ユニット
PLCのアナログ入力ユニットは、0〜10V、1〜5V、4〜20mAなどの信号を取り込みます。
取り込んだ値は、PLC内部で0〜4000、0〜10000、0〜32767のようなデジタル値として扱われます。
その後、プログラム側で温度、圧力、流量などの実単位へスケーリングします。
スケーリング処理
スケーリングとは、A/D変換値を実際の物理量へ換算する処理です。
たとえば4〜20mAが0〜1.0MPaに対応する圧力センサなら、4mA相当を0MPa、20mA相当を1.0MPaとして換算します。
このとき、ゼロ点、スパン、上下限、異常値処理を明確にしておく必要があります。
シーケンス制御との関係
シーケンス制御ではON/OFF信号だけでなく、アナログ値を使って判定する場面もあります。
温度が設定値を超えたらヒータをOFFする、圧力が低ければアラームを出す、といった処理です。
PLC制御との関係を整理したい場合は、シーケンス制御の記事も関連します。
14. A/D変換で起きやすいトラブル
A/D変換のトラブルは、症状だけを見るとソフトのバグに見えることがあります。
しかし実際には、配線、GND、センサ、電源、基準電圧、フィルタ設定が原因であることも多いです。
| 症状 | 主な原因 | 確認ポイント |
|---|---|---|
| 値が大きく揺れる | ノイズ、GND不良、基準電圧の揺れ | 平均化前の生データ、配線、電源 |
| 値が最大値に張り付く | 入力範囲超過、断線、プルアップ | 入力電圧をテスターで確認 |
| 値が0に張り付く | 短絡、センサ未接続、設定ミス | ピン設定、センサ電源、GND |
| ゆっくりずれる | 温度ドリフト、基準電圧変動 | 周囲温度、電源、基準電圧IC |
| チャンネル間で影響する | 入力インピーダンス過大、サンプリング時間不足 | 前段バッファ、サンプリング設定 |
テスターで電圧を確認する
まず、ADC入力端子に実際に何Vが入っているかを確認します。
プログラム上の値だけを見ていると、回路側の異常を見落とします。
センサ出力、ADC入力、基準電圧、GND間電圧を順番に確認します。
生データを見る
平均化後の値だけでなく、ADCの生データを見ることが重要です。
生データが大きく揺れているのか、スケーリング後の処理で揺れているのかを切り分けます。
異常値処理を設計する
センサ断線や短絡が起きたときに、制御が危険側へ動かないようにします。
たとえば4〜20mA入力で3.5mA以下なら断線、21mA以上なら短絡や異常として扱う、といった判定を入れます。
15. A/D変換を設計するときのチェックリスト
A/D変換は、部品を選ぶだけでなく、信号の入口からプログラム処理までを一体で設計します。
以下の観点を押さえると、後からの手戻りを減らせます。
| 確認項目 | 見るべき内容 | 不足時のリスク |
|---|---|---|
| 入力範囲 | センサ出力がADC範囲内に入るか | 飽和、破損、誤判定 |
| 分解能 | 必要な変化量を読み分けられるか | 表示が粗い、制御が不安定 |
| 基準電圧 | 精度と温度安定性は十分か | 全体の測定値がずれる |
| サンプリング | 信号変化に対して十分な頻度か | 波形を取り逃がす |
| ノイズ対策 | 配線、GND、フィルタは適切か | 値が揺れる、誤作動する |
| 異常検出 | 断線・短絡・範囲外を検出するか | 異常時に危険側へ動く |
最初に物理量の範囲を決める
まず、測りたい物理量の範囲を決めます。
温度なら何℃から何℃まで、圧力なら何MPaまで、電流なら何Aまでを測るのかを明確にします。
その範囲をセンサ出力、入力回路、ADC値、表示値へ順番に変換していきます。
精度要求を分解する
「高精度に測りたい」だけでは設計できません。
必要なのは、表示分解能、制御判定のしきい値、許容誤差、応答時間を具体的に決めることです。
その上で、センサ精度、ADC分解能、回路誤差、ノイズを割り当てます。
16. よくある質問
Q1. A/D変換とは何をする処理ですか?
アナログ電圧を、CPUやプログラムで扱えるデジタル値に変換する処理です。
センサ信号をマイコンやPLCで読むときに使われます。
Q2. A/D変換器とADCは同じ意味ですか?
基本的には同じ意味です。
ADCはAnalog to Digital Converterの略で、A/D変換器を指します。
Q3. 分解能が高いほど測定精度も高いですか?
必ずしもそうではありません。
分解能は細かく数値化できる能力ですが、測定精度はセンサ誤差、ノイズ、基準電圧、回路誤差にも左右されます。
Q4. 10bitと12bitの違いは何ですか?
10bitは1024段階、12bitは4096段階で入力範囲を分けます。
同じ基準電圧なら、12bitの方が1段階あたりの電圧が小さく、より細かく読み取れます。
Q5. センサ信号をそのままマイコンに入れてよいですか?
入力電圧範囲、出力インピーダンス、ノイズ、保護回路を確認する必要があります。
0〜10Vや4〜20mAの工業用信号は、そのまま3.3V系マイコンへ入れられないことが多いです。
17. まとめ
A/D変換とは、アナログ信号をデジタル値へ変換する処理です。
センサで得た温度、圧力、電流、電圧などを、マイコンやPLCで扱うために欠かせません。
重要なのは、A/D変換器のbit数だけを見るのではなく、入力範囲、分解能、基準電圧、サンプリング、ノイズ、信号調整回路をセットで考えることです。
特に実務では、分解能が高いのに値が揺れる、センサの出力範囲が合っていない、4〜20mAを電圧化せずに読もうとする、といったミスが起きがちです。
A/D変換は「電圧を数字にするだけ」の機能ではなく、現場の状態を制御システムへ正しく取り込むための入口です。
センサ、回路、ADC、プログラム、異常検出まで一体で設計することで、安定した測定と安全な制御につながります。