4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

静電容量式レインセンサを自作した

Posted at

静電容量式のレインセンサを自作しました。
以前に使っていた電極式のレインセンサは、電極が腐食するデメリットがありました。1年も経たないうちに電極が導通してしまい、常に検出状態になっていました。
どうしても水に電気を流すと電極が腐食されるのは避けられないため、電極が露出していない静電容量方式のレインセンサを作りました。

以下のスイッチサイエンスのページで購入できます。
スイッチサイエンス - 静電容量式レインセンサ基板

雨センサー表.jpg

基板を設計

基板はKiCadで設計しました。
回路構成としては、2端子あるためこの様にしました。
2022-06-19 (4).png

PCBのデザインはこんな感じです。
2022-06-19 (1).png

KiCadでガーバーデータを出力し、Fusion PCBに発注しました。
基板は発注から2週間程度で送られてきました。
DSC_0201 (2).JPG
プリント基板の発注方法は、以下のサイトが参考になります。
KiCADからガーバーファイルを出力する方法
プリント基板の自作!簡単にできる格安オーダーメイド法

静電容量検出回路の設計

センサの静電容量値を測定するための検出回路は以下になります。センサーをSensor Inに接続し、Pulse Outをマイコンなどの入力に接続します。LOWパルスの長さを測定することで、現在の静電容量値を読み取ることができます。
image.png

静電容量パルス測定用プログラム

Arduino UNO 用のサンプルスケッチです。
2番ピンにパルス出力を接続します。雨を検出すると13番のLEDが光ります。
RAIN_THRの値がしきい値になっています。この値を変更することで、感度を調節できます。範囲は0~255で、0に近づけるほど感度が良くなり、255に近づけるほど感度が悪くなります。このプログラムは雨が落ちたかどうかを検出します。雨が降るとセンサが反応しますが、雨粒が落ちないと反応しないようになっています。雨粒が落ちると再度反応します。

rain.ino
#define RAIN_IN_PIN 2
#define RAIN_OUT_PIN 13

#define TIMEOUT_US 100000
#define R_K_OHM 100.0
#define SAMPLES 100

#define LOWPASS_CAP 0.995
#define LOWPASS_RAIN 0.9
#define LOWPASS_MAX 1.0
#define CAP_AMP 0.2
#define CAP_MAX 255.0
#define RAIN_AMP 100.0
#define RAIN_MAX 255.0
#define RAIN_THR 20.0

float rain;
float cap;
float cap_before;

void setup(){
  rain = 0;
  cap = 0;
  cap_before = 0;
  pinMode(RAIN_OUT_PIN, OUTPUT);
}

float get_cap(){
  return (float)pulseIn(RAIN_IN_PIN, LOW, TIMEOUT_US) * (1000.0 / R_K_OHM) / log(2);
}

void loop(){
  cap_before = cap;
  cap = 0;
  for(int i = 0; i < SAMPLES; i++){
    cap += get_cap();
    delayMicroseconds(100);
  }
  cap = constrain(cap_before * LOWPASS_CAP + cap * CAP_AMP * (LOWPASS_MAX - LOWPASS_CAP) / SAMPLES, 0, CAP_MAX);
  rain = constrain(rain * LOWPASS_RAIN + max(cap - cap_before, 0) * RAIN_AMP * (LOWPASS_MAX - LOWPASS_RAIN), 0, RAIN_MAX);
  if(rain > RAIN_THR){
    digitalWrite(RAIN_OUT_PIN, HIGH);
  }
  else{
    digitalWrite(RAIN_OUT_PIN, LOW);
  }
}
4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?