じーろぐ

日々の記録。コンピュータやプログラミングの話題が多め。

土壌水分センサーの仕組みを詳しく知る

電子工作で気軽に使えるタイプの土壌水分を測定するセンサーとして売られているものには、土の抵抗値の変化を利用したものと静電容量の変化を利用したものの大きく2タイプあります。

ここでは、安価な土の抵抗値の変化を電圧変化として読み取るタイプのセンサーについて、その仕組や特性を調べたのでまとめてみます。

外観と回路図

このタイプのセンサーは複数の会社が販売していますが、外観と仕組みはどれもほとんど同じで、土に刺しやすいような形状をした金属の端子が二本伸びており、土の上に出ている上部から3本(Vcc, GND, SIG)ケーブルが出ているというものです。以下は、DFRobot社のセンサーを鉢に設置した時の様子。

f:id:z_logger:20191014010925j:plain

回路は至って単純で、トランジスター1個と抵抗が2個だけです。 以下の回路図は、DFRobot社のAnalog Soil Moisture Sensor (SEN0114)をもとに作成したもの。(ちなみにDFRobot社のサイトで公開されている回路図ではR1とR2の抵抗値が100Ωになってますが、測定したところ、実際に付いていた抵抗の値はR1、R2ともに460Ωでした。)

f:id:z_logger:20191019224237p:plain
土壌水分センサーの回路図

上の回路図では、土を便宜的に可変抵抗で表しています。

これは、エミッタフォロアの回路そのままですね。

startelc.com

エミッタフォロアでは、電圧、電流、抵抗値およびトランジスタ増幅率hfeには以下の関係があります(詳しくは上記のサイトを参照)。

f:id:z_logger:20191019223929p:plain
エミッタフォロア回路の電圧、抵抗、増幅率の関係

$$ \left\{ \begin{align} V_B + V_E + 0.7 &= Vcc \\ I_B + \mathrm{hfe} &= I_E \\ I_B &= V_B / R_B \\ I_E &= V_E / R_E \end{align}\right. $$

今知りたい土の抵抗値(RB)と信号の電圧(VE)の関係は、

$$ V_E = R_E \frac{ Vcc - 0.7 }{ R_B + R_E / \mathrm{hfe} } $$

となります。エミッタの抵抗値を変えて土の抵抗と電圧の関係を見てみると、

f:id:z_logger:20191019232011p:plain
土の抵抗と信号電圧の関係(Vcc=3.3V, hfe=300で計算)

上のグラフから

  • 最大電圧はVcc-0.7なのでADCのレンジに合わせて、(3.3~5Vの間から)電源電圧を選ぶべき
  • 土の抵抗値が変化する範囲で電圧が大きく変化するエミッタ抵抗値を選ぶべき
  • エミッタ抵抗値が大きいと土の抵抗の変化に対して電圧変化が小さい(その代わり土の抵抗値の測定可能範囲は広い)
  • エミッタ抵抗値が小さいと土の抵抗の変化に対して電圧変化が大きい(その代わり土の抵抗値の測定可能範囲は抵抗が小さい範囲のみ)

ということがわかります。 問題は、実際の土の抵抗値がどのくらいかということになりますが…これは、土次第です。また、同じ鉢でも場所によって変化するようです。 うちでの測定結果だと数kΩ~数十kΩぐらいみたいでした。

なので、私はエミッタの抵抗値が変えられるように回路は以下のようにしました。

f:id:z_logger:20191019234659p:plain
エミッタ抵抗の値を変えられるようにする

水やり直後に、電圧が測定上限付近になるように抵抗値をセットすると良さそう。

関連記事

このセンサーを使って測定した値を、サーバに定期的に送信。土が乾いたら携帯に通知するシステムを作ったときの記事。

zlog.hateblo.jp