今さら聞けない電子回路入門 A-Dコンバータでセンサ計測


可変抵抗/光センサ/ジョイスティックのArduinoプログラミング

A-Dコンバータによるセンサ計測とArduinoプログラミング

図1 可変抵抗器とセンサが出力するアナログ値をマイコンで読み取る“analogRead()”関数の使い方を解説する.分解能のデフォルト設定は10ビット(1024)だが,“analogReadResolution()”関数を使うことで12ビット(4096)に向上させることができる.画像クリックで動画を見る.または記事を読む.詳しくは,DigiKeyチャンネル

ソースコード公開中!可変抵抗,光センサ,ジョイスティックを使った実践

A-DコンバータとArduinoのanalogRead関数

Arduinoをはじめとするマイコンはディジタル信号しか扱えませんが,センサの多くはアナログ信号を出力するため,内蔵のA-Dコンバータを使ってアナログ電圧をディジタル値に変換する必要があります.`analogRead()`関数を使うと,例えば$V_{in}$が5Vの場合,10ビットの分解能では0~1023の範囲で整数値が取得できます.

Arduinoではデフォルトで10ビット(1024段階)の分解能が設定されていますが,`analogReadResolution(12);`を使うと12ビット(4096段階)に向上させることができます.これにより,より精密な計測が可能です.

ポテンショメータと分圧回路を使った角度計測

ポテンショメータ(可変抵抗器の一種)は,印加電圧の一部を分圧し,その電圧をA-Dコンバータで読み取ることで,角度や位置の計測ができます.ポテンショメータのしくみは,つまみを回すことで抵抗値が変わり,その結果として出力電圧も変化する分圧回路です.

Arduinoでは以下のようにポテンショメータの出力を取得します: ``` const int PotentiometerPin = A1; void loop() { int sensorValue = analogRead(PotentiometerPin); float voltage = sensorValue * 5.0 / 1023.0; } ``` このように,ポテンショメータから取得したアナログ電圧を適切にディジタル値に変換することで,回転角度の計測が可能です.

光センサとジョイスティックの応用例

光センサであるフォトレジスタ(CdS)は,光の強さに応じて電気抵抗が変化します.この特性を利用し,Arduinoに接続して周囲の明るさを測定できます.抵抗値が変わるため,結果として出力される電圧も変化し,これをArduinoが読み取ることで光の強さを計測します.

一方,ジョイスティックにはX軸とY軸の位置を検出できる2つの可変抵抗が内蔵されています.Arduinoを使ってジョイスティックの傾きを計測し,マトリクスLEDに文字や絵を表示するようなインタラクティブな応用が可能です.

A-Dコンバータのしくみと精度向上の重要性

A-Dコンバータは,アナログ信号をディジタルに変換する際に,いくつかの重要な要素が関わります.その中でも特に重要なキーワードが「分解能」です.

10ビットの分解能の場合,$2^{10} = 1024$段階で信号を表現しますが,12ビットに向上させると$2^{12} = 4096$段階になります.このように,ビット数が増えるほど細かな変化を捉えることができ,センサの計測精度も向上します.

たとえば,光センサを使って日光の強さを測る場合,10ビットでは微小な変化が1024段階に分けられますが,12ビットであればその4倍の精度で光の強弱を記録できます.これにより,曇りや晴れといった小さな光量の差異まで正確に計測できるのです.

ジョイスティックのような複合的なセンサにもA-Dコンバータが必須です.ジョイスティックのX軸・Y軸の傾きを高精度に読み取ることで,ドローンのコントロールやゲーム開発といった用途にも対応できます.

Arduinoを用いたセンサの測定では,このように分解能と精度の管理が重要なポイントになります.センサや回路構成に応じた適切な設定を行い,計測値の誤差を最小限に抑えることが,正確な結果を得るための鍵です.〈著:ZEPマガジン〉

動画を見る,または記事を読む

チャプタ・リスト

  • 1:10 ポテンショメータとは
  • 2:31 analogRead関数
  • 4:32 A-D変換の解像度
  • 5:31 光センサ
  • 7:11 ジョイスティックとマトリクスLED

著者紹介

  • 2009年3月 京都大学大学院情報学研究科博士後期課程修了.日本学術振興会特別研究員(DC2),舞鶴工業高等専門学校助教,京都大学特定助教,奈良先端科学技術大学院大学助教,大阪大学講師
  • 2019年3月 大阪大学大学院工学研究科機械工学専攻准教授.ノイズシェーピング理論に基づく量子化器設計およびその応用に関する研究に従事.博士(情報学).

著書

  1. [VOD]Pythonで一緒に!ロボット制御のモデルベース設計【ロバスト制御編】,ZEPエンジニアリング株式会社.
  2. [VOD]Pythonで一緒に!ロボット制御のモデルベース設計【PID制御編】,ZEPエンジニアリング株式会社.
  3. [VOD]Pythonで一緒に!ロボット制御のモデルベース設計【状態フィードバック制御編】,ZEPエンジニアリング株式会社.
  4. [VOD/Pi2W KIT]ラズパイ×Pythonで動かして学ぶモータ制御入門,ZEPエンジニアリング株式会社.
  5. [VOD/KIT]ラズパイ×Pythonで動かして学ぶモータ制御入門,ZEPエンジニアリング株式会社.
  6. Pythonによる制御工学入門(改訂2版),オーム社(2024).
  7. 制御系設計論,コロナ社(2021).
  8. やさしくわかるシーケンス制御,オーム社(2020).
  9. Pythonによる制御工学入門,オーム社(2019).
  10. 倒立振子で学ぶ 制御工学,森北出版(2017).
  11. Arduino×Pythonで動かしながら学ぶモータ制御入門,トランジスタ技術 2020年9月号,CQ出版社.

参考文献

  1. [VOD/Pi KIT]MATLAB/Simulink×ラズパイで学ぶロボット制御入門,ZEPエンジニアリング株式会社.
  2. [VOD/KIT]MATLAB/Simulink×ラズパイで学ぶロボット制御入門,ZEPエンジニアリング株式会社.
  3. [VOD/Pi400 KIT]SLAMロボット&ラズパイ付き!ROSプログラミング超入門,ZEPエンジニアリング株式会社.
  4. [VOD/KIT]確率・統計処理&真値推定!自動運転時代のカルマン・フィルタ入門,ZEPエンジニアリング株式会社.