2018年7月4日水曜日

Arduino実習2 - アナログ入力

センサの情報を入力

センサは物理的・化学的な何らかの量を電気信号に変換します.

センサはおおむね以下のいずれかに分類されます.
  • 抵抗値に変換する
  • 電圧に変換する
  • 電流に変換する
計算機に取り込む場合,アナログの電圧値をデジタルに変換する(A/D変換)が必要です.本実習ではArduinoを用いて行います.センサによっては,センサ内部でAD変換が行われ,SPIやI2Cといった通信規格に則って値を取り出す場合もあります.

明るさのセンシング

センサの例として,明るさをセンシングするCdSセルを使ってみます.入射する光が強くなると抵抗値が低下する素子です.

今回使うものはGL5516
電子部品を使うときにはデータシートに目を通して性質を確認するようにしましょう.CdSセルであれば,抵抗値はどのあたりで,光の強度に対する抵抗の変化はどれほどであるのかを確認します.

一般的に電子部品には極性があるものと無いものがあります.
CdSは極性は無いので,どちらの足を電圧高い方につないでも問題ありません.

Arduinoでは,ANALOG INと書かれたピンA0-A5から,電圧を読み取ることができます.5Vを1024段階,つまり0Vなら0,5Vなら1023の整数値が得られます.得られるのは当該ピンとGND(グランド,アース)との電位差です.

抵抗値を読み取るためには,抵抗値の変化を電圧の変化に変換する必要があります.どうするか?

値が固定の抵抗と直列に接続
全体に一定の電圧を印加
センサの抵抗値の変化によって,二つの抵抗の比が変化し,電圧降下の値が変わる.センサ側の電圧降下を読み取ってもよいし,固定抵抗側の電圧降下を読み取ってもよい.
固定抵抗の大きさをどうするかは,センサの出力の変化範囲に依存.
CdSセルの説明書には,暗所での抵抗(最大値)の10分の1程度と書かれているが,ちょっと大きいように思います.

実習

部品リスト

Arduino Uno R3(互換品)
CdSセル GL5516
抵抗 10k
ブレッドボード
USBケーブル
ワイヤ適宜

回路図

抵抗10kは茶黒橙金.抵抗の読み方は各自検索してください.

ワイヤで配線するとき,色は何を使ってもよいのですが,電子工作の場合,
電源+: 赤
GND: 黒
は守るべきかと.製作者自身が混乱しないように.

プログラム

int sensorPin = A0;
int sensorValue = 0;
int wait = 10;

void setup() {
  Serial.begin(9600);
}

void loop() {
  sensorValue = analogRead(sensorPin);
  Serial.println(sensorValue);
  delay(wait);
}
analogRead()で,GNDと当該ピンの間の電位差をA/D変換した値が得られます.
Serial.println()で値を文字列に変換してシリアル通信でPC側に送ります.
シリアル通信を使う場合には,setup()でSerial.begin(通信速度)が必要です.
PC側ではシリアル通信で送られてきた結果を見ることができます.Arduino IDEでツール > シリアルモニタもしくはツール > シリアルプロッタを使います.

シリアルモニタの出力例: 生のデータを文字列とみなして表示

シリアルプロッタの出力例: 数値データを時系列グラフ化して表示

応用

抵抗値が変化するセンサ(曲げセンサ,圧力センサ,一部の加速度センサなど)にはこのまま応用できます.電圧が変化するタイプならば,電圧の範囲が0から5Vであれば直接analogRead()すればよいです.変化が微小な場合,オペアンプを使って信号を増幅する必要があります.

続く→ http://masa-memo.blogspot.com/2018/07/arduino3-mosfet.html

0 件のコメント:

コメントを投稿