p92では同じ抵抗値の抵抗を2つ用いてVを測っています。ここ最初に読んだときは「ははー」ということで素通りしましたが、なんとなく気になっていました。様々な回路を組んでいくときに、単純な疑問がいつもあります。「どうしてここでこの部品を使うの?」ということで今日はここを深掘りします。数値の異なる抵抗を2つ用意して、テスターでVとAを計測しました。
510Ωの片方は触らずに、もう片方を変えてるということです。またシリアルモニーターに表示された値をVにも変換しました。その結果分かったことが、いつでも両方の抵抗に流れる電流は一緒であること、抵抗値の高い方に高い電圧が掛かること、双方の電圧を足すといつも一定の数値になること(ここでは5VでArduinoの定圧値と同じ)でした。これは大きな発見でした(大げさかな)。
A
|
B
|
シリアル表示
|
510Ω
0.2V
0.5mA
|
10kΩ
4.7V
0.5mA
|
4.7V
|
510Ω
1.7V
3.3mA
|
1kΩ
3.3V
3.3mA
|
3.3V
|
510Ω
2.5V
4.8mA
|
510Ω
2.5V
4.8mA
|
2.5V
|
510Ω
3V
5.9mA
|
330Ω
2V
5.9mA
|
2V
|
ではこのままCdsセルを利用してp95の「明るさを調べてみる」をしてみましょう。ここではセンサーから読み取った数値(アナログ値)を読み、その結果あるアクションを起こすという流れになります。まずはp95にある回路を作って見て、早速スケッチを書き出して見ましょう。ちなみにCdsセルをアマゾンで探すと、10個で600円と出ています。キットについてきたCdsの抵抗値は1.7kオームでした。この章は簡単で、内容は簡単ですのでどんどん行きましょう。スケッチは教科書通りですが、色付きの部分を変えました。Serial.printliにすると改行をしてくるので”\n”を省くことができます。それとiの標準はDECらしいので、それを省きました。結果は、先生のスケッチと全く一緒です。唯一気になるのがなぜここでは10kオームを利用するのでしょうか?それも調べてみます。
void setup() {
Serial.begin(9600);
}
void loop() {
int i;
i = analogRead(0);
Serial.println(i);
delay(1000);
// put your main code here, to run repeatedly:
}
気になる抵抗値を10K、1k、510そして330オームにしてシリアルモニーター値をみると、それぞれ150、680、800そして870でした。抵抗値を変えることで、反応値を変えることができるようです。今はこのままで、p102のスケッチまでやってしまいましょう。
最後は半固定抵抗 10kΩをつけ、しきい値の設定方法を学びます。このしきい値の設定が出来たスケッチを見せると「お主やるなー」という声が聞こえそうな気がします。下記の図のようにすると分かりやすいですね。教科書のLEDの部分は簡単なので省いています。
10KΩですと、LED点灯のタイミングが半固定抵抗器の左ほぼ一杯でした。そこで抵抗を先ほどの実験結果を踏まえて、10Kから1Kに変更すると、半固定抵抗器のつまみのほぼ中央部でした。これなら調整範囲が広がりましたので、実験環境では対応が十分に可能です。先生のコードを順番を変え、さらにシリアルモニーターで数値が見れるように、スケッチを変更しました。またスケッチ内コメントは省いています。
#define LED 11
#define CDS_IN 0
#define SET_POT 1
void setup() {
pinMode(LED, OUTPUT);
Serial.begin(9600);
}
void loop() {
int brightness, set_val;
int upper,lower;
brightness = analogRead(0);
set_val = analogRead(1);
upper = set_val + 10;
lower = set_val - 10;
if (upper>1023) upper = 1023;
if (lower<0) lower = 0;
Serial.print("Brightness: ");
Serial.print(brightness);
Serial.print(" Set Value: ");
Serial.println(set_val);
if (brightness<lower){
digitalWrite(LED,HIGH);
delay(1000);
}
if (brightness<upper){
digitalWrite(LED,LOW);
delay(1000);
}
}
それとここがとても参考になりました。Arduinoを使っていませんが、計算を丁寧に教えてくれています。
- 参考にしている本ははこちら: arudinoで電子工作を始めよう
- 高橋隆雄先生のブログはこちら: 高橋隆雄の何やかんや
コメント