Arduino 圧力センサーをつかってみた

スポンサーリンク

はじめに

Arduinoセンサー使ってみようシリーズ

今回は圧力センサーを使ってみました

使ったもの

圧力センサーの仕組み

センサーに力が加わると圧力センサーの
抵抗値変化する。cds光センサーとか ntcサーミスタも光の強度や温度とセンサーの抵抗値が依存関係にある。

こうしたセンサーを扱う上で気をつける ことが二つある。

抵抗値の変化はリニアではないこと

Arduinoで読み取れるのは電圧だけ

分圧回路を組む

先ほど言ったとおりArduinoで読み取れるのは電圧だけなので、抵抗値の変化が 電圧値に変換してやる必要がある

分圧回路を組むことでこの問題は解決する。

f:id:shangtian:20190129055501p:plain
分圧回路

分圧回路のVoutの電圧は

$$ V{out} = \frac{R_2}{R_1+R_2}V_{cc} $$

となる。R2に圧力センサをつければR2の抵抗値に応じて
Voutの電圧値が変化する。 以下の様に回路をブレッドボード上に
組んだ。

   LEDに流せる電流はだいたい20mAぐらいなので5V電圧で
電流が20mA流れる様に抵抗値を考えると、オームの法則より

$$ \begin{align} 5V &= R\times20mA \\ R&= 150Ω \end{align} $$

f:id:shangtian:20190129060430p:plain

スケッチ

PWMを使って圧力センサーの値に応じてLEDの明るさを変化させる。
強い圧力がかかれば強く光って、弱い圧力がかかれば暗くなる様に
プログラムを書く。  

Arduino unoの場合はPWMが使えるピンが決まっていて
デジタルピンの5,6,9,10,11がPWM出力が可能。
PWMは

analogWrite(pin,value);

pinは使用するピン番号。valueはデューティー比。0~255を指定できる。

valueに0を指定すると、0Vが出力されて、255を指定すると5Vが出力される。

analogReadの戻り値は0~1023である。

スケッチは以下の様になる

void setup() {

}

void loop() {

  int val = analogRead(A4);  
  float pwmVal = (float)255*val/1023; 
  analogWrite(5,pwmVal);
  delay(100);
}

f:id:shangtian:20190129060430p:plain

ちゃんと明るさ変わってる f:id:shangtian:20190129060503g:plain

www.shangtian.tokyo