2016/08/25

Raspberry Piのことはじめ - 08 回路設計

今回は実際の設計例をこれまで組んだ簡易回路で説明する。
一通り回路入門的なことは書いたので、「ことはじめ」シリーズはこの回で最終回とする。



前提


設計方針としては、
  1. 短絡が起きないように、電源からGNDまでの全ての経路で抵抗が入るようにする。
  2. 各部位に流れる電流や、かかる電圧を予想して、抵抗値などを構成する。
  3. 電位がはっきりしている部分に接続されていない部分がないようにする。
などが挙げられる。

1は、スイッチの状態が変わった時など、いろいろな状況を想定する必要がある。
2は様々な面から考慮しながら決める必要があるが、基本的な流れとしては
「電源電圧を決める」→「電流を決める」→「抵抗値を決める」
といった順番で進めるといい。
3は少しわかりづらいが、例えば電源-スイッチ1-スイッチ2-抵抗-GNDという経路を考えると、スイッチをどちらもOFFにした場合、スイッチ間の電線は電源にもGNDにもつながっていないため、電位が不定になる。
電位が不定になった部分は思わない動作を起こす可能性があるため、このような部分がないよう設計する必要がある。


また、Raspberry Pi特有の知識を説明しておく。

出力モードのGPIOは、ONの場合3.3V、OFFの場合GNDとなる。
OFFの場合も考慮しないと、ショートを起こしたりするので気をつけて。

入力モードのGPIOは1.3V以上の電圧がかかるとON、0.8V以下の電圧ならOFFと判断する。その間の電圧は動作不定となる。

入力モードのGPIOは0Vではないので、そこにつながる経路には抵抗は入れなくてもいいが、GPIOを刺し間違えた時にGNDのピンだったりするとショートするので、安全のために入力モードにつながる回路にも抵抗を入れたりする。


設計例1


まずは、LEDを光らせた回路から復習する。


こいつですな。

GPIOがONの時を回路図にするとこれ。



電圧が3.3Vのピンから出ていて、抵抗を挟み、LEDを挟み、GNDに落ちる。
この回路は電源-GND経路が抵抗が入っている1本だけなので、ショートは起こらない。

今回はGPIOをOFFにしても問題ないが、スイッチの状態を変えた回路図も考えてショートが起きないかなどを考えた方がいい。

電源電圧値を決める。


今回は電源電圧値は3.3Vに決まっているが、本来だったらここから決定する。
方針としては、使用しているパーツに必要なもっとも高い電圧を選択するといい。
今回電圧を気にするのはLEDだけだが、例えばモータなどが入っている場合、それの動作電圧を確認して電圧を決めたりする。
また、使用できる電源の電圧からパーツを選定する考え方もある。

電流値を決める。


抵抗に流れる電流は、オームの法則により、電圧と比例して増える。
抵抗の電流値に関しては今回は特に気にする必要はない。多く流れるほど発熱が多少増えるくらい。

LEDに流れる電流値は、明るさを決定する要素となる。
流すとどんな光量特性があるかは、商品の仕様を調べるといいが、一般的には20mAほど流すと強く光り、2mAほど流すとLEDは淡く光る。
今回、電流は2mA流す。

LEDに流すべき電流が決定した。この電流を流すために、LEDにはどのくらい電圧をかけるといいだろうか?

LEDでは抵抗と違い、電流は電圧と比例しない。
ある電圧まではほとんど電流が流れない特性をもっており、その電圧を超えると、流れる電流値が加速度に上がっていく。

こういうのはメーカーの資料を漁るか、電圧を調整できる電源を使い、どんな電圧でどんな電流が流れるかを調査する必要がある。
確認したところ、2mA流すためには、2.5Vから2.7Vの間で近い電流が流れるらしい。
ここでは間をとって2.6Vとする。
\[
\ V_{LED} = 2.6V,
\ I_{LED} = 2mA
\]

抵抗値を決める。


抵抗に流れる電流は$I_R = I_{LED} = 2mA$で、電圧降下を考えると$V_R + V_{LED}=3.3V$なので、$V_R = 3.3V - V_{LED} = 0.7V$となる。つまり
\[
\ V_{R} = 0.7V,
\ R_{R} = 0.7V ÷ 0.002A = 350Ω
\]
となり、近い330Ωを用意した。


こんな流れを書いているが、「2mA流すためには、2.5Vから2.7Vの間で近い電流が流れるらしい。」というところがかなり怪しいことに気づくかと思う。
メーカーは詳細な電流-電圧グラフを出しているわけではないので、実はこの電圧が正確にわからないことが多い。

こんな時は、上に書いたように実際に電圧を変更しながら電流を流して調査したりするが、まぁ桁が間違ってたりしない限り回路がぶっ飛んだりすることはないので、割と大雑把に計算してプロトタイプを作り、調整していく方が早いと思う。

慣れてきたら、そのあたりの探り方の種類が増えて行くので、気にしすぎないよう。
テスターとかを使いながら調査して行けばいい。
「一般的に…」とか書いたところは、ネットで囁かれてたり、あるいは他の回路例からかかっている電圧・電流などを計算して使用していたりする。そういう手もある。


閑話休題


前提で出した設計方針に「電源からGNDまでの全ての経路で抵抗を入れる」といったものがあった。
鋭い方なら「あれ?じゃあ電源の次にまず抵抗を入れてから回路を構成するといいんじゃない?」と気付くんじゃないだろうか。
その考えは正しく、一般的にも使用される手法となっている。
この抵抗は「プルアップ抵抗」と呼ばれる。

また「全てのGNDの前に抵抗を入れた方が安全だよね」という考え方を持つ人もいるかと思う。
これも正しく「プルダウン抵抗」と呼ばれる。

プルアップ抵抗は、一つ入れれば安全だが、電源からつながる全ての経路の電圧・電流に影響を与えるので注意が必要。
プルダウン抵抗は、経路によって抵抗値を変えられるので柔軟だが、経路全てに抵抗を入れる手間が必要。

設計例1ではプルアップ抵抗と言えなくもない。
これから説明する設計例2ではプルダウン抵抗的なものが入る。

ちなみに、Raspberry PiはGPIO2とGPIO3には1.8kΩのプルアップ抵抗が入っている。
安全だが使用には注意が必要。


設計例2


今度はGPIOの入力モードを確認した回路の設計を考える。



こいつ。
回路図にするとこれ



GPIO INは素子では表しづらいのでこう書いたが、GND(0V)ではない。

これをみてまず気づくのは、「$R_2$の方の経路、いらなくない?」といったことかと思う。
スイッチ、GPIO INだけでもいいが、スイッチを切った時にスイッチ-GPIO間の電線が、電位がはっきり決まったところにつながっていないのがわかるかと思う。
そのためGNDに落として電位をはっきりさせるのが$R_2$の経路となる。

抵抗$R_1$はなぜ付いているのか?ぶっちゃけこれは必要がない。
ただ、このGPIOが出力モードになっていたり、あるいはGNDに刺し間違えたりするとショートして壊れるため、安全対策のためにこの抵抗が入っている。
操作エラーでGNDになる可能性がある場合は、安全設計のための抵抗を入れることを考慮すべし、ということ。

抵抗$R_2$はプルダウン抵抗になっている。もちろん必要。


抵抗を2つ入れずに、プルアップ抵抗にしたらどうだろうか?

$R_1, R_2$をなくしてプルアップにした場合、通常使用では問題ないが、例えばGPIOが出力モードになっていてかつON状態になっていると、GNDとの間でショートが起こる。
これは安全対策としては機能しないため、今回はプルダウン構成にした。

電源電圧値を決める。


今回は、電圧を気にするところはGPIOのみ。
GPIOは1.7から3.3VでON判定が行われるため、3.3Vで問題ない。

電流値を決める。


電流を気にしなければいけない素子は特にない。

抵抗値を決める。


GPIOはGNDではないため、$R_1$では電圧降下はほぼおこらない。スイッチがONになっている場合、GPIOには3.3Vの電圧がかかる。
よって、$R_1$は操作ミスの際のプルダウン抵抗としての意味合いしかない。$R_2$も純粋なプルダウン抵抗。

プルアップ抵抗、プルダウン抵抗は抵抗値の多いほど消費電力が抑えられる、という傾向がある。
もちろん電圧降下を気にしなければいけない場合はちゃんと抵抗値を計算するべきなのだが、今回は上記のように特に気にする必要がない。
一般的には1kΩ〜が選択される。結構いい加減。



今回はGPIOに接続された回路の設計の考え方を簡単に説明した。
このシリーズは最終回だけど、単発での記事は今後も書くつもり。

0 件のコメント:

コメントを投稿