RaspberryPIとPythonによるLED制御(下のリンクの記事です)で自信をつけましたので、いよいよCPUファンの制御に挑戦したいと思います。Pythonの知識のほか、電子回路の知識を独学で習得しなければならなかったので、準備に時間がかかってしまいました。
なお、使用しているのはRaspberryPI_4Bです。
今回の目標
外部電源を使用する強力なCPUクーラーを動かすのではありません。
普通にラズパイからの給電で使用できる5.0VのCPUファンを使用して、ラズベリーパイの5.0V電源に直結した場合は常に全開で回転し、ノイズが大きく不快です。
目標としましては、「せめてCPU温度が低いときは回転を弱めたい」という考えです。
回路図 -CPUファン制御-
今回考えた回路図はこちらです。電子回路を考えたのも今回が初めてで、書籍などを見ながら作成しました。もしかしたら、なにか間違いがあるかもしれませんが、回路図通りに製作した回路はちゃんと動作しています。
回路図の説明
今回私が考えた回路図について説明していきます。
トランジスタ
トランジスタは通販で入手可能でさらに梱包数が少なく安く手に入るものを選定しました。みつみつ見つけたのはNPN型トランジスタ「2SC-1815-GR」という品で、10個入り送料込みで290円でした。TOSHIBAのデータシートがついていましたので、東芝製と思われます。
増幅倍率は温度その他条件により変わると思いますが標準値の「hEF=200」(200倍)として計算します。
B(ベース)に流した電流の200倍の電流がC(コレクタ)・E(エミッタ)間に流れるとして、計算を進めます。
ベース電流
ベース電流はRaspberryPI_4Bの3.3V電源を使用することとします。また、使用したいCPUファンの定格電流は5.0v、200mAでトランジスタの倍率はhEF=200のため必要なベース電流は1.0mAとします。
ベース電流は3.3vでコレクタ電流が5.0vの場合の計算方法が不明で迷ってしまいましたが、書籍などで調べたところ、電流(A)の開放値のみが関係していて特に電圧(v)は関係ないようです。(トランジスタの性能の範疇であれば、vは関係なしに計算できる)
抵抗(RB)の計算
ベース電流を3.3V、1.0mAとするために抵抗が必要です。抵抗の計算にはオームの法則を使用しますが、トランジスタの場合は少し工夫が必要のようです。
VBEは一般に0.7Vとすれば良さそうですので、この計算から抵抗RB=2,600Ω(2.6kΩ)とすることがわかります。
コレクタ電流
コレクタ電流はベース電流によって制御されますが、誤って流れすぎてしまわないよう抵抗を設置して、CPUファンの定格電流の値200mA以上の電流が流れないように調節します。
抵抗(RC)の計算
普通にオームの法則を使い算出し、抵抗(RC)は25Ωとしました。
ベース・エミッタ間の抵抗
ベースエミッタ間抵抗については正直理解度が足りていませんが、コレクタ遮断電流による誤作動を防ぐためとされているようです。
抵抗(RBE)の計算
必要な抵抗(R)は、トランジスタについていたデータシートから、コレクタ遮断電流は0.1μAとわかります。また、トランジスタが動作する最低の電圧は不明のため、VBEの0.7vとして計算しました。
7kΩより小さい数字でよいので、5kΩの抵抗としました。
完成した回路
完成した回路(ブレッドボード使用)がこちらです。抵抗については、ちょうど良いものはありませんでした。並列つなぎで丁度良い数値にしても良かったのですが、複雑になるので少し低めの抵抗をつけることにしました。
- RB = 2.2kΩ (計算値は2.6kΩ)
- RC = 22Ω (計算値は25Ω)
- RBE = 4.7kΩ (計算値は5kΩ)
次のページで、CPU温度によりCPUファンの回転を制御するPythonプログラムについて、紹介していきます。