簡単なパソコン用ファンコントローラーを作る

PCの放熱が足りない感じがして、PCファンをたくさん増設しようとしたところ、マザボのファン端子に空きがないことが分かったので、簡単なファンコンを作るに至った。 今回は2pin/3pin用なので、4pinのを作りたいなら他所のサイトを見てもらったほうが良い。

簡単な設計

なんかないかなと思って部品箱を漁ったところ、PIC12F675・シンクドライバ・MCP9700・定電圧レギュレータが手元にあった。 これで温度制御のかんたんなファンコンは作れる。買い足すもん無いやん。 ……と言いつつPCに繋ぐもんだし一応ポリスイッチだけは買った。

f:id:asi_a:20211110163046j:plain
設計というよりはメモ書き

今思ったが品薄だしPIC12F675をメルカリで売ったら出来合いのファンコン買えるくらいになったりしないか?さすがにないか。 今回は簡単に使えるシンクドライバを使ったが、これをNchFETにしてもいいし、マイコンだって好きなのを使えば良い。

試作とプログラム

PCファンのPWMの仕様は「PCファン PWM 周波数」で検索すると25kHzと出るが、これは4pinタイプの話。 2pin/3pinは電圧変化による制御である。つまりPWMの結果がだいたい定電圧だったら良いので周波数はそれなりで良い(と思う)。 確実なことはPCにオシロでも当ててみたら良いが、自分はちょっと勇気でなかった。

gist.github.com

プログラムはこれだけ。ここをだいぶ参考にさせてもらった。 あまり深く考えたくなかったので、MCP9700の出力を10bitAD変換して上8bitだけ読んで長さ256の配列からPWMのパルス幅を引っ張ってきている。PWM周波数も400Hzくらいしか無い。 ただパルス幅は温度に比例じゃなくて対数的に変化するようには配列の中身を工夫してある(あまりパルス幅(=結果として得られる電圧)が少ないと安定して回転しなさそうというのと、空気が温かいほど冷却効率が悪くなりやすいので)

f:id:asi_a:20211110024119j:plain
試作の様子。3台位はヨユー。

TMRとPR両方ともあるPIC(TMRがPRまで溜まったら割り込むされるタイプ)しか使ってこなかったので、TMRだけで(TMRのオーバーフローで)割り込みが入るのはちょっと混乱した。

完成品

電源はペリフェラル4pin(まあモレックスのコネクタ)から取るので、やっすいPCファンから出ていたやつをぶった切って使った。

f:id:asi_a:20211110024237j:plain
……無理がある

で、こんな感じに実用している。

f:id:asi_a:20211110163144j:plain
雑に放り込まれている

反省点など

とりあえず動くのでヨシ! ……とはいえ反省点は結構ある。

温度センサーは独立してつけるべきだった。

温度センサーは独立してつけるべきだった。 PCのどこの温度でファン回転数を制御すべきかと言うのはだいぶ重要だし、計りたい場所にこの基板を常に置けるわけではない。 だからといってアナログ信号線をビロ~ンと取り回したくもない。 ちゃんとした形で仕上げるなら1-wireの温度センサとかを取り回したほうが良さそうだ。

ピンが思ったより幅が必要だった。

雑に工作したので、ピンヘッダの間隔が微妙に足りてないことに気づかずに作り上げてしまった。 一応使えているが、次作ることがあればもう少し間隔を開けたい。 というかPCファン用のピンソケットとかどこかで売ってそうだし、それも使うべきだろうなぁ。 ついでに基板上のレイアウトの甘さという点でいうとコンデンサも若干無理がある。 ……作り直したほうが良さそうだな?