[ITG] パッドにFSRセンサを使うときになぜ抵抗を挟むのかという話
所持しているL-Tek PadのセンサをFSRに換装しようと思い、その一環としてFSRセンサ換装について調べてみた。
ありがたいことに解説記事がいくつか出てきたのでそれらを読み進めてみると、FSRの他に固定抵抗が必要ということがわかった。固定抵抗の抵抗値は皆口を揃えたように330Ωを使っているとのこと。
「なんで固定抵抗が必要なのか?」「なんで330Ωなのか?」というところが理解できなかったので、自分なりに調べた結果をここに書く。
固定抵抗を使う理由
A.FSRセンサだけだと圧力をかけたときに大きな電流が流れるから
まずは以下の図のように、回路にFSRだけを使用する場合で考える。
FSRは圧力をかけると抵抗値が下がる抵抗である。
- 電源5V
- 圧力をかけていないときは最大20MΩ
- 圧力をかけているときは最小1Ω
と仮定する。 オームの法則から圧力をかけていないときと圧力をかけているときの電流は
- 圧力をかけていない
- I = 5 / 20,000,000 = 0.00000025A = 0.00025mA
- 圧力をかけている
- I = 5 / 1 = 5A = 5000mA
となる。 圧力をかけていないときは非常に小さな電流で、圧力をかけているときは非常に大きな電流となる。
電子回路の勉強でよく出てくるLEDは絶対最大定格(これ以上流したら壊れる値)がだいたい20mAとか30mAとかだったりするので、抵抗値が変動する抵抗を単品で使用するのはあぶないということになる。 じゃあどうすればいいかというと、以下の図のように固定抵抗を直列で組み込む。
この状態だとFSRに圧力をかけてFSRの抵抗値が1Ωになったとしても、固定抵抗があるのでその分電流が小さくなる。 上の図のように固定抵抗が330Ωである場合にFSRに圧力をかけてるときに流れる電流は
I = 5 / (1 + 330) = 0.015A = 15mA
となり、流れる電流がわりかし安全な範囲になる。
以上の理由から、FSRを使うときに固定抵抗を使うのは「回路に流れる電流の大きさを、電子部品が壊れない程度にするため」ということになる。
固定抵抗の抵抗値が330Ωである理由
A.Arduino Leonardoが壊れない程度の電流を流すのに都合がいいから
今回FSRセンサに換装するにあたりワンボードマイコンであるArduinoを使用する。
今回使う予定のArduino LeonardoはATmega32U4というマイクロコントローラが使われており、このATmega32U4のデータシートの絶対最大定格(Absolute Maximul Ratings)を見るとI/Oピン(DC Current per I/O Pin)は40mA、回路全体(DC Current V CC and GND Pins)は200mAとなっている。 今回使用するArduino Leonardoのアナログ入力ピンの絶対最大定格は40mAなので、回路に流れる電流は絶対最大定格の半分である20mAくらいになるようにするとする。 FSRに圧力をかけたときの抵抗値を1Ωと仮定する場合にどれぐらいの抵抗値の固定抵抗を用意すればいいかというと
(1+R) = 5V / 0.02A -> 1+R = 250 -> R = 249
となり、250Ωくらいの抵抗であれば問題ないということになる。 市販されている固定抵抗で入手しやすいものだと220Ω、330Ω、470Ωとなる。 これらの抵抗を使用する場合に流れる電流はそれぞれ以下の通り。
- 220Ω: 5V / 220Ω = 22.72mA
- 330Ω: 5V / 330Ω = 15.15mA
- 470Ω: 5V / 470Ω = 10.63mA
なのでFSRとArduino Leonardoだけを使うのであれば固定抵抗は220Ω、330Ω、470Ωのどれかを使えばよいということになる。
これは推測だけれども、FSR換装記事の中で220Ωではなく330Ωが使われるのは「電子回路の世界では330Ωの抵抗がよく使われるから」という慣例的な理由から来ているのかなと思う。
参考文献
- DDR筐体の感度を無限に調整できるようにした話
- Building a dance pad with FSR and Arduino
- Force Sensitive Resistors w/ Arduino Leonardo
- 感圧センサ(四角形)
- ATmega16U4/ATmega32U4 Datasheet
コメント
コメントを投稿