熊おふし五郎が行く

主にマイコンボードを動かした記録を書いています

抵抗分圧回路

抵抗分圧回路とは

直列した複数の抵抗によって、電源電圧を分割する回路です。

f:id:bear_9973:20200823131334p:plain:w400
抵抗分圧の回路図

物理現象の変化に対して抵抗値が変化するセンサをマイコンに接続するとき、抵抗分圧回路がよく使用されます。主な理由は以下の通りです。

  • マイコンに過度な電圧を抑制するため、電圧を許容されている範囲にする
  • マイコンに変化する電圧の信号を入力(アナログ入力)するため、抵抗値を電圧の大きさに変換する

回路による抵抗値から電圧に変換

抵抗変化するセンサが検出した値を電圧に変換するための回路を以下に示します。可変抵抗はセンサと同等の機能があるので、センサを可変抵抗に置き換えて考えます。

f:id:bear_9973:20200823131557p:plain:w400
抵抗分圧(可変抵抗付き)の回路図

直列に接続した抵抗(R1とR2)は、電圧降下が発生します。この電圧降下は、抵抗の大きさに比例します。その結果、直流電源の電圧(Vcc)は、抵抗(R1)と可変抵抗(R2)の大きさにしたがって分割されます。マイコンに入力する電圧(Vout)は、可変抵抗(R2)による電圧降下と同等で、可変抵抗の大きさに比例します。また、R1が10 KΩから100 kΩを使うのが一般的のようです。

f:id:bear_9973:20200823131735p:plain:w250
Voutを求める公式

ソフトウェアによる電圧から抵抗値に変換

マイコンが計測した電圧(Vout)から、可変抵抗(R2)を以下の公式で求めます。

f:id:bear_9973:20200823131928p:plain:w250
抵抗値を求める公式

マイコンを使った実験

抵抗値をマイコンに入力する実験を説明します。 可変抵抗に直接に計測した抵抗値が、Micro:bitが計測した抵抗値と等しいとき、サンプルコードは正しいと確認できます。

Micro:bitとMicropython

実験回路とサンプルコードを以下に示します。

実験回路

実験回路を以下に示します。 Win PCのモニターにMicro:bitが計測した抵抗値を表示します。

f:id:bear_9973:20200823133947p:plain:w450
実験回路

サンプルコード

可変抵抗の抵抗値を計測するサンプルコードを以下に示します。 float型で計算できるように、データ型を明確に定義しています。

from microbit import *

# Micro:bitを初期化
display.clear()  # LEDディスプレイを初期化

# 抵抗値の計測に必要な値
Vcc_value = 3.3
R1_value = 10 * 1000  # 10kΩ

while True:
    pin2_value = pin2.read_analog()
    Volt_value = (float(pin2_value) / 1024.0) * 3.3
    R_value = (Volt_value / (Vcc_value - Volt_value)) * R1_value
    print('D:%d V:%.05f R:%f'
          % (pin2_value, Volt_value, R_value))
    sleep(100)

実験結果

実験結果の一部を以下に示します。 誤差が大きい過ぎるような気もしますが、それについては今後の課題にしたいと思います。

アナログ入力電圧可変抵抗値
10.003229.775169
50.0161149.067688
100.0322398.619261
150.04834148.661985
200.06445199.203119
310.09990312.185287
350.11279353.892683
400.12891406.503915
460.14824470.347404
500.16113513.346910
550.17725567.595195
590.19014611.398935
640.20625666.666507
700.22559733.752441
760.24492801.687526
800.25781847.457218
850.27393905.218029
910.29326975.347900
960.309371034.482359
1010.325491094.257831

Arduino

【未調査】

Raspberry Pi

【未調査】

STM32 Nucleo

【未調査】