はじめに
Arduinoセンサー使ってみようシリーズ
今回は圧力センサーを使ってみました
使ったもの
圧力センサーの仕組み
センサーに力が加わると圧力センサーの
抵抗値変化する。cds光センサーとか
ntcサーミスタも光の強度や温度とセンサーの抵抗値が依存関係にある。
こうしたセンサーを扱う上で気をつける ことが二つある。
抵抗値の変化はリニアではないこと
Arduinoで読み取れるのは電圧だけ
分圧回路を組む
先ほど言ったとおりArduinoで読み取れるのは電圧だけなので、抵抗値の変化が 電圧値に変換してやる必要がある
分圧回路を組むことでこの問題は解決する。
分圧回路の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} $$
スケッチ
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); }
ちゃんと明るさ変わってる