先日、とある海外製の電子工作キットを作っていた時にArduinoを使うと簡易的な抵抗値の測定器を作れるなとふと思い付いたのですが・・・
電子工作を趣味で楽しむようになり定期的に電子工作DIYキットを作るようになりました。
国内で販売されているキットより海外製の電子工作キットは安価で面白いものが多いので好んで作っています。
しかし海外製の電子工作キットでは組立説明書等が一切付属していないものも多くあり、電子パーツの容量など事前に調べて製作に挑まないといけません。
コンデンサやトランジスタなどの電子パーツはその容量がパーツに記載されているので見れば分かるのですが、抵抗だけはカラーコードが読めないとどうにもなりません。
黒い礼服(黒0)・茶碗(茶1)・赤い人参(赤2)・・・語呂合わせで覚えたアレですね!
学生時代は電子工学科にいたので当時は普通に読めていたんですが、今ではサッパリ忘れてしまっています。
抵抗値だけはカラーコードが読めないと数値が分からず・・・もちろんネットで調べればすぐ出てきますし色を指定すれば抵抗値に変換してくれるようなサイトもあり、またデジタルマルチメーター(テスター)を使えば測定は出来るのですが、電子工作キットで使う抵抗の本数って物によっては何十本とあるので、テスターにプローブを取り付けて何本も測定するとなると結構面倒となります。
電子工作キットを作ることが多いことから、このようなトランジスタテスター(多機能テスター)というものを使うようになりました。
抵抗以外にもよく使われる電子パーツの値や容量、電気的特性(トランジスタのBCEやダイオードのAKなど)も簡単に計測できる便利な測定器となります。
電子工作キットを作る時の必須アイテムとなっていますが(それ以外でも便利に使えます!)、抵抗値の測定だけなら普段よく使っているArduinoのボードを使えば測定が出来るなと思い付き・・・Arduinoを使った簡易抵抗値測定器を試しに作ってみました。
とは言っても、Arduinoに2本の抵抗を繋げるだけなので非常に簡単なものなんですが!
簡単に抵抗のおおよその値が分かるので、電子工作キットを作る時以外にも便利に使える場面があるのではないでしょうか?
Arduinoを使い簡易的な抵抗値の測定器を作ってみる!
たいそうなものではなく非常に簡単です!
抵抗値の正確な値が欲しい場合はもちろんテスターなどの測定器を使った方がいいのですが、おおよその値が分かればいい時にはArduinoのアナログ入力のAD変換を使えば簡単に出来ます。
Arduinoのアナログ入力端子のAD変換(アナログ-デジタル変換)は10ビットの分解能を持っています。
アナログ端子に入力された電圧(0~5V)を10ビット(2の10乗)の分解能なので1024段階(0~1023)の数値として取り扱うということです。
つまり測定したい抵抗値を求める場合、その抵抗にかかっている電圧をArduinoで読み取ってあとはオームの法則により抵抗値の計算が出来ます!
以前こちらの記事でアナログ端子に繋いだ可変抵抗にかかる電圧を読み取る方法をご紹介しました。
アナログ入力によるAD変換はArduinoの基本なので、こちらの記事も参考にして下さい。
測定したい抵抗にかかっている電圧をArduinoのアナログ端子に読み取らせるわけですが、一番簡単な方法として抵抗の分圧を使いやってみたいと思います。
基準となる抵抗を1本用意してそれに測定したい抵抗を繋ぎ電圧を分圧させ、測定したい抵抗にかかっている電圧をArduinoのアナログ端子から読み取らせるというものです。
接続はこんな感じ。
基準抵抗(Rtとしておきます)と測定したい抵抗RxをVcc・GND間に直列で繋ぎ、測定したい抵抗にかかる電圧VxをArduinoのアナログ端子(今回A4を使用)に入力し測定します。
昔習った抵抗による分圧ってやつですね!
ここで基準抵抗Rtは今回手元にあった1kΩのものを使いました。
またArduinoの5V端子を使っているのでVcc=5Vとして計算しています。
接続を簡単&小型にするためArduino Nanoを使いました。
もちろんUnoなどのボードでも接続は同じです。
まずArduinoのアナログ端子(A4)にかかっている電圧(Vx)の計算です。
先述のようにArduinoのアナログ端子の分解能は10ビット(1024段階)でした。
アナログ端子で読み取った値を仮にAnalogとすると
Vx=Vcc/1024 × Analog
となります。
ここでVccは5Vなので、ArduinoのAD変換により入力された電圧(0~5V)を0.0049V(5/1024)刻みの1024段階(0~1023)に表すことが出来るということですね。
ここまでは上記記事でご紹介した内容と同じです。
今回その電圧から抵抗値を知りたいわけですから、あとはオームの法則を使えば簡単です。
オームの法則:I=V/R
ここで両抵抗に流れる電流は同じなので、I=(Vcc-Vx)/Rtとなります。
求めたい抵抗Rx=Vx/Iとなるので上記式を入れると
Rx = Vx/((Vcc-Vx)/Rt) = Vx×Rt/(Vcc-Vx)
ということになりますね。
式で表すと難しそうですが単純なオームの法則です。
あとはこの計算をスケッチにするだけです。
先程の計算式を入れシリアルモニタに表示させる簡単なものとなります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | // [Arduino]抵抗値を測定してみる! // https://burariweb.info const int INPUT_PIN = A4; // 入力ピンをA4に固定 int Vcc = 5; // 入力電圧5V int Rt = 1000; // 基準抵抗(今回1kΩの抵抗を使用) float Vx; // 求めたい抵抗Rxにかかる電圧 float Rx; // 求めたい抵抗 int Analog; void setup(){ Serial.begin(9600); // シリアル通信の開始 } void loop(){ Analog = analogRead(INPUT_PIN); // アナログ値の読み取り Vx = Analog * Vcc/1024.0; // 読み取ったアナログ値を電圧に変換(Rxにかかる電圧) Rx = Vx * Rt / (Vcc-Vx); // 抵抗値の計算 Serial.print(" アナログ値: "); // シリアルモニタに出力 Serial.print(Analog); Serial.print(" 電圧(Vx): "); Serial.print(Vx); Serial.print(" V"); Serial.print(" ===>> "); Serial.print(" 抵抗値:"); Serial.print(Rx,0); Serial.println(" Ω"); delay(500); } |
10kΩの抵抗を計測してみたのがこちらとなります。
許容差5%の抵抗で下限には収まっていますね。
テスターでの実測値は9860Ωでした。
手持ちの抵抗をいくつか計測してみましたが、おおよその抵抗値が知りたい場合には便利に使えそうです。
シリアルモニタにリアルタイムで表示させることが出来るので、何本もの抵抗を連続して測りたい場合に良さそうです!
最後に!
抵抗は電子工作用途で一番使われるパーツだと思います。
ArduinoではLEDの電流制限抵抗として300Ω前後のものやプルアップ用に10kΩとかでしょうか、使用用途にもよりますがある程度使う値は限られてきます。
はじめはこのようなセット物を1つ持っておくと便利だと思います!
そして未使用の抵抗には帯に抵抗値が表記されていますが、テストで使用してバラ状態になったものを整理したい時にも便利に使えますね。
抵抗値はE系列という等比間隔になっています。
ある程度の値が分かれば、例えば測定値が146Ωと表示されれば150Ωの抵抗、9986Ωとか表示されれば1kΩということが分かるので、実際の実測値がほしいわけではなくバラになった抵抗を整理したい場合ではサクサク測れるのでいいのではないでしょうか!
冒頭にご紹介したトランジスタテスターでは、いろんな電子パーツの計測が出来ますが1パーツの計測に約4~5秒程かかります。
簡易的な抵抗値の測定だけなら今回の方法では、ほぼリアルタイムにシリアルモニタに表示することが出来るので便利かと思います。
できるなら低抵抗は4端子法で測るのがいいですね。電流を流しておいて電圧で測って、それを割り算して表示する。
そうですね、低抵抗の場合測定誤差が大きくなってしまうので4端子法での計測がいいですね!
学生時代(高専)に習ったことを少し思い出しました。
アドバイスありがとうございます(^o^)