トップページ> 書庫> ハード系レポート> PC用自動ファンコントローラ

PC用自動ファンコントローラ
新しく自作PCを組みました。
まあ普通に満足して使っていたわけですが…

微妙にファンがうるさい。

今回買ったケースはAntecのP180なので、ケースファンの速度が3段階で変更できます。
しかし各部の温度すらわからない状態で速度だけ変えられても…ねぇ。
それにCore2Duoは昔のCPUと違って発熱がそんなにひどくなく、さらにCPU用ヒートシンクもヒートパイプ等の採用で放熱性能が上がっています。今回買ったヒートシンクも、実際ファンレスでCPUを駆動できることを売りにしていたりします。

じゃあ熱くなったときだけファンが回ればいいんじゃないの。

と思って市販のファンコンを色々と見てみましたが、大抵はファンの速度調整機能しかなくて温度がわからなかったり、温度計が付いていても手動でファン出力を調整しないといけなかったりでした。
また、ファンを停止できるファンコンというともうそれだけで特異な存在みたいな雰囲気です。
温度に応じてファン速度を自動で可変できる製品もありましたが、一定の温度を下回った場合にファンを停止できるものはありませんでした。

というわけで。
ないものは作る。
以前に面白そうだなと思ってPICライタを買ってきてありましたが全然さわってなかったので、今回これを使ってなんとかすることにしました。
P180のケースファンが3個なので3か所の温度を測定して3系統のファンを制御できるようにしました。
また、液晶ディスプレイで状況を表示したりボタン入力で設定値を変更できるようにしたいので、そのためにポートを確保…。
で、内蔵されている機能やポート数から、PIC16F873Aを使って製作することにしました。
(PIC16F877Aにすれば4系統いけたかもしれません…が、基板サイズ的にEAGLEフリー版の制限に収まらなかったと思うのでこれはこれでよかったかもしれません)

ユニバーサル基板でプロトタイプ作ったり使うセンサを途中で変えたり、色々とありましたが…それはまあblogの方を参照してくださいw
回路図
回路図と基板パターンはEAGLEで作成しました。以下のようになってます。



電源はPCのペリフェラル用4ピンコネクタから取ります。5Vでロジックを動かし、12Vでファンを駆動します。
回路図にあるGND-BRIDGEは12V系と5V系で電源系統を分けてノイズの影響を抑える目的で設けていますが(GNDが5V系、GNDAが12V系)、効果があるかどうかはよくわかりませんw
5V系に過電圧や逆電圧が掛った時の保護のためにツェナーダイオードを、電源の安定化のためにコンデンサを入れています。
PICには普通に電源を供給してパスコンつけてるだけです。
PICのクロックは8MHzのセラロックを使用します。最初から20MHzを使っておけばよかったかなと少し後悔…。

センサ端子には薄型サーミスタを接続します。25℃で10KΩとなるタイプです。これと10Kの抵抗で電源電圧を分圧し、PICのA/D入力へ電圧を入力します。
VREFにはVRで作った基準電圧を入力します。

ブザーは普通にトランジスタで駆動します。圧電素子は両端に抵抗を入れないと鳴らないらしいので抵抗を入れましたが、無くても鳴るかもしれません。

スイッチ入力はPICのPORTBに直結です。PICの設定で内部プルアップを有効にするので、スイッチを押すとLレベルになります。

液晶ユニットは秋月電子で売っているSD1602HUOBです。こちらもPICに直結です。
バックライトはFETドライバで点灯するようにしてあり、このFETをPICからON/OFFできるのでPICからPWM制御でバックライトの明るさを変えることができます。

ファン駆動回路に関しては…これが一番苦労した部分ですが。
基本的にはFETの2SK2961を使って駆動します。ゲートへはPICから100Ωの抵抗を介して接続します。ノイズによる誤動作防止のためですが、液晶を買うと付いてくる抵抗がもったいなかったのでこれを流用していますw
ファンの端子の両端にはノイズ対策のためダイオードとコンデンサを入れています。
ファンからのセンサ信号は、ファン側がオープンコレクタになっているのでファンからの電流の逆流を防ぐためにPICからファンに向けてダイオードを入れてあります。また、ノイズ対策のために1KΩの抵抗を入れてあります。
ファン1だけはPICのRA4ポートで駆動しているのでプルアップ抵抗を付けてあります。
基板パターン

クリックすると1200dpiの画像に。印刷してそのまま使えます。

あまり変ったところはないと思います。はんだ付け箇所の周りには極力配線やベタアースが来ないよう配慮しています。
12V系と5V系でGNDの配線が分かれているのが分かると思います。
PICのソフトウェア
MPLAB IDE を使用して全てアセンブラで書きました。
TMR0割り込みを利用してファンとLEDバックライトのソフトウェアPWM制御を行っています。
ファンのPWM周期は20Hzとしました。周期が可聴域に入ってしまうとファンから音がしてしまうので避けることは必須でしたが、20KHz超のPWM周期を8MHzクロック動作のPICでソフトウェアで実現するのは困難と判断し、このようにしました。
ファンによってはカタカタという音がしてしまうのが欠点ですが、PWM周期の音が聞こえてくる事もないのでまあ良いのではないかと思います。
そのほかTMR1で10ms、1秒おきの制御(スイッチのチャタリング除去やファン回転数の計算など)、TMR2でブザー音の発生を行っています。

プログラムソースのダウンロード
MPLab用のソースです。参考にして頂く分にはかまいませんが、丸々そのまま使って作った製品を人に売ったりしないでくださいね。
完成写真など
入れ物としては、スモークアクリル板で作った5インチベイサイズのケースに組み込むようにしました。見た目は微妙にアレですが、なんといっても制作が楽です。アルミ板の曲げ加工なども必要なく、Pカッターとアクリル接着剤とドライバーだけで組み立てができます。(M3タップも必要でした…)
写真は11号機のものです。





動画。
使用感
自分でメインで使っているPCと、自宅サーバにそれぞれ取り付けて使っています。
完成したのが2008年の12月〜09年1月くらいだったのですが、部屋が冷えているときはファンが停止するので非常に静かになります。(当たり前)
自宅サーバで動画エンコード等の処理が走り出すと温度に応じてファンが回転しますが、温度に応じてだんだん早くなるためかなり静かです。むしろHDDのうなり音のほうが気になりだしました。
説明書
ファンコンの取扱説明書を作りました。こちらから参照してください。(PDFファイル)

DBWebSystem ver-1.00
このページの内容は… (・∀・)[良い] / (-ω-;)[悪い]
ContentID : Hard_EC_FC1P_3, Total Page Views : 935, Page Score : 0
Last Update : 2009/04/11 22:08:59 (LIRS.txt)
System Designed & Coded by ヨシヲ
[このコンテンツを編集] [このコンテンツにリンクしているページ]