抵抗変化型センサのデータ読み込み

●何かを検知すると抵抗が変化するセンサのデータの読み込み方法

フォトレジスタ感圧センサは光や圧力を検出すると抵抗値が変わり、その抵抗の変化を見ることで状況を検知するセンサです。このような抵抗変化型のセンサのデータの読み込み方法について説明します。

ArduinoなどのマイコンはAD変換器を使って、アナログデータを読み込みますが、このアナログデータは電圧です。ですので抵抗値を直接読み込めるわけではなく、抵抗値を電圧に置き換えて読み込めるようにしないといけません。

左のフォトレジスタに5Vをかけると、光量に応じて抵抗が変わってもかかっている電圧5Vは変化しないので、抵抗の変化を読み取れません。そのため下の図に示すようにフォトレジスタに直列に固定抵抗を入れます。下右図のようにフォトレジスタを可変抵抗(矢印のついた抵抗。表記は古いのであしからず)として表し、これと固定抵抗を直列に繋いで、全体に5Vをかけます。

このようにすると図の電圧Vは次のように計算できます。aを可変抵抗(フォトレジスタの抵抗値)、bを固定抵抗の抵抗値とします。

(1)

よってフォトレジスタの抵抗値が変われば電圧Vが変化し、この電圧をArduinoで読み込むことで光量変化を読み取ることが出来ます。

さて固定抵抗はいくらにすればいいのでしょうか? 上の式からV[a,b]=5a/(a+b)という関数を作り、フォトレジスタの最小抵抗と最大抵抗(Tinkercadシミュレータのフォトレジスタは0.5kΩと180kΩ)での電圧の差をbに対してプロットします。(Mathematicaのコードでは

V[a_, b_] := 5 a/(a + b)

Plot[V[180, b] - V[0.5, b], {b, 0.5, 40}, PlotRange -> All]

となります。その結果、

図1 固定抵抗の変化に対する電圧差

のようになります。この頂点を微分により求めます。

dif = D[V[180, b] - V[0.5, b], b]

Reduce[dif == 0, b]

を解いて、b=9.5 kΩ を得ます。9.5 kΩの時、フォトレジスタの抵抗の最小最大での電圧差が最大になるということです。

次にフォトレジスタの抵抗値の変化による(1)式の電圧の変化を見てみます。固定抵抗値を1、3、9.5、20、40kΩとした場合のそれぞれについてフォトレジスタが0.5kΩから180kΩまで変化したときのグラフを次に示します。

図2 フォトレジスタの抵抗変化に対する電圧

このグラフより、電圧差最大となる9.5kΩを使った場合にはフォトレジスタの抵抗値aの値が小さいときに電圧が大きく動き、aが40kΩを超えた以降の変化は非常に緩やかになることが分かります。

ただ最終的に得たい特性としては光量に対して(1)式の電圧が読み取りやすいような特性です。そのためまずフォトレジスタの光量と抵抗の関係を考えます。下のグラフに示すように(右のグラフは両対数グラフになっています)光量・圧力と抵抗の関係は線形な関係ではないので、この関係を組み合わせて光量・圧力の変化が読み取り易いように変換するのがよいと思います。

光量(明るさ)と抵抗値の関係は左のグラフに示すような関係です。これを

R=n/l

とします。ここで抵抗R[kΩ]、光量l[ルクス]、nは定数とします。

1ルクスで200kΩ、500ルクスで0.4kΩとなるようにn=200とします。500ルクスはここによると居間での読書に必要な明るさだそうです。1ルクスはほぼ真っ暗です。よって、

  R=200/l

を得ます。グラフを描くと下のようになります。明るさに応じて急激に抵抗が小さくなることが分かります。

光量と抵抗の関係図

次にこの光量と抵抗の関係を用いて、光量と(1)式の電圧Vの関係を見ていきます。Mathematica で、

V[a_,b_]:=5a/(a+b)

R[l_]:=200/l

Manipulate[Plot[V[R[l],b],{l,1,500},PlotRange->{{0,500},{0,5}}],{b,0.1,100}]

とすると、固定抵抗値bの値をいろいろ動かして、光量-電圧の関係がどうなるかを可視化できます。

Manipulateで大体の様子を調査した後に、固定抵抗値を1、2、4、10kΩとした場合のそれぞれについて光量が1ルクスから500ルクスまで変化したときのグラフを次に示します。Mathematicaでは

V[a_,b_]:=5a/(a+b)

R[l_]:=200/l

Plot[{V[R[l],1],V[R[l],2],V[R[l],4],V[R[l],10]},{l,1,500},PlotRange->{{0,500},{0,5}},PlotLegends->{"1k","2k","4k","10k"},AxesLabel->{"lux","V"}]

となります。

このグラフより固定抵抗1kΩでは分解能(1ルクスに対する電圧の変化)が均一でよさそうですが、電圧変動幅が3V程度(グラフより5Vから2V程度までの変動)なのでもう少し変動幅が大きいものを選ぶ方が光量の全領域に渡る分解能が上がるので、2k~4k程度の抵抗を採用するとよいでしょう。

以上のように抵抗変化型のセンサを使う場合にはセンサに直列に固定抵抗を入れ、固定抵抗とのバランスでセンサ値を読みが明確になるように固定抵抗値を決めるようにします。