kozyonikkiのブログ

どこか知の旅に出たときのことを書いていきます。

カラーコードの色で分かりづらいのない?

  目が悪くても見える?

こんにちは!工女日記です。最近、目が悪くなってきたせいなのかわかりませんが「抵抗に使われている色の判断が難しい。」と感じます。皆さんはどうですか?

例えば、赤と茶色、黒なのか灰色なのか... そんなとき、Arduinoを使って抵抗値をシリアルモニターに出力できればなぁ~と思った工女は作ってみることにしたのでした。

では、やっていこう~!

f:id:kozyonikki:20190106192750p:plain:w450
※訂正 一番上の抵抗は今回は10kΩを使います。その下の抵抗は自分が知りたい抵抗を使います。

Fritzingで上の写真を作ったのですが、カラーコードの色の替え方がわかっていなかったので次くらいにできるようにします。

(↓コード↓)

int vr = A0;
int r = 0;
int a = 0;  // A0で取得したデータが入る
float propotion = 0.0;
float volto = 0.0;

void setup() {
Serial.begin(9600);
pinMode(vr, INPUT);
}

void loop(){
a = analogRead(vr);
propotion = (a+a*0.001) /1023.0; // 割合を求める  ※0.001は抵抗の誤差を減らすやつ
volto = 5*propotion; // vr の電圧を求める
Serial.println("vr = ");
Serial.println(volto);

r =10000*volto/(5-volto); //抵抗を求める
Serial.println("r =");
Serial.println(r);
}

どうやって抵抗値を出すのか

① Vr の値をArduinoで取得する

② 取得した値を1023の何%を占めるのか求める

※1023 の値のときは5Vで、0のときは0Vです。

③E = 5v に②で求めた割合を掛ける

オームの法則を使って抵抗を求める

I = E / R = 5 / 10k + R

そこから R = Vr / I に I = E / R = 5 / 10k + R を代入すると...

R =  Vr / 5 / 10k + R となり式変形すると...

R = Vr * 10k / 5 - R となりました。    ※Vr の部分は③の値を代入します。

⑤シリアルモニターに出力

という感じで完成しました! 

今回作ったものは、30k ~100Ωくらいがいい感じに測れます。
f:id:kozyonikki:20190106200454p:plain:w150

作ってみた結果として

上の写真を見てもらうと、精度がちょいとよくないです。

0.001という誤差を入れなくも良さそうなのかなという感じもしますが...

Arduinoの個体差というのもあるのか... と考えてみたり、いろんな誤差原因があるのでなかなか精度を上げるのは難しそうだなという感じがしました。

いつか試したいこと

Arduinoで読み取った何十データの平均を出していくなど...

その他に計測できる範囲を広くするなど... 

探せばいろいろと出てきそうなのでもう少し考えてみたいと思います。
また、何か思いついたらいろいろ遊んでみようと思います。

 ここまで見てくださってありがとうございました。