センサの情報を入力
センサは物理的・化学的な何らかの量を電気信号に変換します.
センサはおおむね以下のいずれかに分類されます.
- 抵抗値に変換する
- 電圧に変換する
- 電流に変換する
明るさのセンシング
センサの例として,明るさをセンシングするCdSセルを使ってみます.入射する光が強くなると抵抗値が低下する素子です.
今回使うものはGL5516
電子部品を使うときにはデータシートに目を通して性質を確認するようにしましょう.CdSセルであれば,抵抗値はどのあたりで,光の強度に対する抵抗の変化はどれほどであるのかを確認します.
一般的に電子部品には極性があるものと無いものがあります.
CdSは極性は無いので,どちらの足を電圧高い方につないでも問題ありません.
Arduinoでは,ANALOG INと書かれたピンA0-A5から,電圧を読み取ることができます.5Vを1024段階,つまり0Vなら0,5Vなら1023の整数値が得られます.得られるのは当該ピンとGND(グランド,アース)との電位差です.
抵抗値を読み取るためには,抵抗値の変化を電圧の変化に変換する必要があります.どうするか?
値が固定の抵抗と直列に接続
全体に一定の電圧を印加
センサの抵抗値の変化によって,二つの抵抗の比が変化し,電圧降下の値が変わる.センサ側の電圧降下を読み取ってもよいし,固定抵抗側の電圧降下を読み取ってもよい.
固定抵抗の大きさをどうするかは,センサの出力の変化範囲に依存.
CdSセルの説明書には,暗所での抵抗(最大値)の10分の1程度と書かれているが,ちょっと大きいように思います.
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 件のコメント:
コメントを投稿