さてファンコンですが。

ArduinoっていうかAVRはPWM出力端子が多くあるので、初代ファンコンではソフトウェアPWMだったところをハードウェアPWMでやろうか、と思ったりしたわけです。
ただしハードウェアPWMでファンの電源をOFF/ONしまくると、回転数センサーの出力もバシバシ変わってしまってマトモに回転数が検出できなくなるので、コイルとコンデンサで平滑化して、なんちゃってバックコンバータみたいにすればよくね?という考えです。

とりあえず手始めに…
ハードウェアPWMを使うとしたらスイッチング周波数はいくつになるのか。

Arduinoのクロックは16MHzですが、PICと違って1/4プリスケーラとか無いのでこれがそのまま16MHzで動くそうです。すごい。
8ビットのPWMにすると秒間16,000,000回カウンタがカウントアップして256で1回りしますから、単純に16M÷256=62.5KHzですね。

適当にPWMモジュールを設定してデューティ比50%でパルスを出してテスターで測ってみます。

Photo 2014-03-26 2 00 14
 
まー大体合っています。

PWMでパルスが出せたので、次はこれを使って12V電源を入・切する回路が必要です。

初代ファンコンではN型FETをファンの−端子にくっつけたローサイドスイッチでしたが、色々と変な事が起きたので今回はP型FETのハイサイドスイッチにします。
 
最初に何も考えずにこんな風に回路引きました。頭の中で。

 schematic1
Arduinoから0Vを出力すればFETのゲートが0Vになってソースから12Vがドレインに流れる。よっしゃ!
というわけでこの回路をブレッドボード上に組んでArduinoとつなげてみましたが…
Arduinoの出力に関わらずファンが全力で回りっぱなし。
 
改めて考えてみたら当たり前で、Arduinoから5Vを出力するとFETのゲートは5Vになります。
このときVGSは何V? 
はい、ソースは12Vですから、-7Vですね。余裕でFETオンですね。

要するにハイサイドスイッチを切るにはゲートに12Vを掛けなきゃいけないのです。あらー。

Arduinoから12Vを出力することはできませんから、トランジスタを使ってこんな感じにしてみてはどうか。

schematic2
Arduinoから5Vを出すとTR1にベース電流が流れてFETのゲートが0Vになる。
Arduinoから0Vを出すとTR1のベース電流が止まってコレクタ電流が流れなくなり、R1を通じてゲートに12Vが供給される。

というわけでこれで実験。したところ結果は…OK!!!!!!!ですよ!!!!
Arduinoからの出力をオン・オフするとファンが回ったり止まったり! 

あーやれやれ出来た出来た。

と思ったのですが。

この後ろにコイルとコンデンサを付けて、ArduinoからPWM出力して平滑化してみたところ、Arduinoからの出力デューティ比が最少(0.4%)でもファンが回る。
テスターで出力電圧を測ってみると、負荷にもよるけど3〜5Vくらい出てる。
はぁ…?

テスターじゃよく分からんので以前作ったなんちゃってオシロスコープこの際だからと買ったUSBオシロスコープで波形を色々見てみたところ…

osc1

FETのゲートの波形がむっちゃ鈍ってる。

これは…噂に聞くゲート容量のせいですか!

FETはその構造上、ゲート・ソース間に静電容量があります。(ほかの端子間にもありますが今回は省略)
等価回路で言うとこんな感じですか。

schematic3
 
C1はFET内部にあるように見えるコンデンサです。
トランジスタがONになるとC1には+12Vがモロに掛かるので速攻で充電されます。
そのためFETのゲートはすぐ0Vになりますね。(オシロの画像でいう波形が落ち込んでるとこ)

次にトランジスタがOFFになると、その瞬間、FETのゲートは0V、ソースは12VですのでR1に電流が流れます。
ゲート・ソース間はC1の両端ですから、C1の両端の電位差がなくなるまで(C1が放電しきるまで)R1に電流が流れます。
このC1が放電している期間が、オシロの画像でいう電圧がジワジワ上がってるところですね。

というわけで、FETを素早くオンオフするにはゲート容量を素早く充電・放電してやる必要があるのです。
FETは電圧駆動で電流はほとんど流れないとか言いますが、オン・オフを切り替える時には問題になる場合もあるという事です。
ずっとオンとかずっとオフにしてる分には電流はほとんど流れませんけど。

というわけでー。

どうしたら素早くオン・オフができるのか。

とりあえずすぐ思いつくのは、R1を小さくすること。
R1が小さければ、Cに溜まった電荷が速攻でR1に消費されて消えるので早いでしょう。
ただし、あまり小さくするとトランジスタがONになってる時にコレクタ電流が大量に流れてしまうので、効率が悪いです。

うーん。テストで、100Ωにしてみましょうか。
トランジスタには今は2SC1815を使ってテストしているので、150mAまでなら流せます。
100Ωなら120mAしか流れないので大丈夫でしょう。

抵抗差し替えて測定。

osc2

おい!
だいぶマシになったよ!ビンゴ!

と思いましたが抵抗触ったら激アツwwww
やばい燃えるwwwww

・・・・。

で、色々ググったらハイサイドスイッチの回路でトランジスタのコレクタとFETのゲート間にも抵抗が入っている回路が見つかりました。

schematic4

R3が追加になっています。
これなら、ゲート容量の放電には150Ωしか抵抗がないので放電は早いし、コレクタ電流は300+150=450Ωの抵抗を介して流れるので少な目にできます。
ただし、トランジスタをONにしてもゲート電圧が8Vまでしか下がらないという欠点もあります。
が、今回使うFDS4935AはVGSが-3VあればONになるので、9V以下まで下がれば十分です。(というかそうなるように150+300Ωにしました)
(実際にはFETのデータシートにVGS-ID特性が載っているので、ドレイン電流を流すのに十分なゲート電圧を加えるようにしてくださいね!)

というわけでブレッドボードの接続を変えて電源ON。

osc3
 
ゲートに8V−12Vの、鈍りの少ない矩形波が出るようになりました!

あとはFETのドレインから出てきた電流を平滑化します。


以前にもリンクを貼ったトレックス・セミコンダクターのアプリケーションノート。
この中の「DC/DCコンバータ回路設計ガイド」を参考にします!

ぶっちゃけ今回の回路はバックコンバータ(降圧型DC/DCコンバータ)と同じなので…
コイルとコンデンサの容量を、こちらの設計ガイドを元に見てみると。

発振周波数30KHz,50KHzならコイルは220μH、
出力電流が500mAまでならコンデンサはセラミック10μFまたはOSコン15μFまたはタンタル22μF。

だそうです!

コイルはたまたま千石で買った220μHがあるのでこれにしましょう。
こいつは980mAくらいしか流せないので、余裕をもって最大出力電流を500mAということにします。
コイルを変えれば出力電流容量を増やせますが、コイル自体がデカくなっちゃうのと、そもそもPC用ファンで500mAも流れるやつはそうそうないので500mAで充分だと思います。

コンデンサはセラミックで10μってなかなか無いし、タンタルは高いイメージなのでOSコンにしましょう。
と思って千石行きましたがOSコンでちょうどいいのがなかったので、代わりに日本ケミコンの導電性高分子アルミ固体電解コンデンサを買ってきました。1個140円でタンタルよりは安いけどアルミ電解よりはかなり高級w
OSコンではないけど同じようなもんでしょ…?ということで。
15uFってことになってますが、Cに関してはデカいほどリップル除去率は良くなるだろうから実装に支障のない程度に容量のでかいやつ…ということで56μF耐圧25Vを買ってきました。

というわけで、最終的に駆動回路は以下のようになりました!

schematic5

D1はできるだけ早くて漏れ電流が少なくて耐圧が十分で秋月で売っているショットキーダイオードということでRB160Mとかいうのを買ってきました。まあ1N4148でテストしても動いてるからなんでもいけるでしょw

この駆動回路を組み込んだ形で基板を作っていきます。暇を見て。ちまちまと。 

※ 2014/04/01更新
USBオシロスコープ買ったので測定波形画像を更新しました。