このページに書かれていることをまねて、損害が生じても私は一切責任を負いません。マザーの改造等はあくまでも
自己責任
でお願いします。また、もし間違いなどに気づかれたら、お手数でも私宛にメールを下さい。
IntelのPentiumIIには内部に温度センサを持っています。しかも、シリコンチップ上に置かれているので、正確なCPUの内部温度を知ることが出来ます。この温度センサ、実はただのダイオードです。データシートでは、「Thermal Diode」を表現しています。なぜ、ダイオードが温度センサになるかと言うと、ダイオードに順方向に電流を流したときの電流ー電圧特性はこの図のようになります。
このように0.6V当たりで急に電流が増加することがわかります。この急に増加し始める電圧は温度によって変化し、シリコンダイオードの場合、およそ−2mV/℃になることが知られています。この値を理論的に求めようと思うと結構大変です。普通、ダイオードの順方向電流 I と電圧Vとの間には、I=I0{exp(qV/nkT)−1}という関係が成り立ちます(近似式だけど)。ここで、I0:逆方向飽和電流[A]、 q:電気素量1.602x10-19[C]nはn値と呼ばれ、大体1前後の値をとります。この値はPentiumIIのデータシートに
k:ボルツマン定数1.380x10-23[J/K]、 T:温度[K]
載っており、1.0000<n<1.0173、typ.値=1.0065です。
この式を温度Tで微分すれば良いはずですが、I0も温度によって変化するため、この式をそのまま微分するわけにはいきません。ちゃっんと計算するためにはかなり面倒な計算になり、このページの趣旨から外れてしまいますので、これ以上は述べません(と言ってごまかす。実は計算を途中で挫折しました)
理論はこの辺にしておいて、
何らかの方法で、この電圧変化をADコンバーターで読み取り、表示させてやれば温度計の出来あがりです。
では、どうやって、温度変化を読み取るかと言うと、こんな感じで回路を作ってみました。
ダイオードのアノードとカソードはそれぞれスロット1のB14とB15ピンに繋がっています。私はマザーボードにジャンパー線を飛ばして、温度計に接続しました。Asus P2Bの場合のB14とB15ピンの見つけ方はこちらを参照してください。このとき、ADコンバータに入力電圧Vは
この図の曲線と直線の交点の電圧になります。
抵抗にはなるべく温度による抵抗値変化の少ないものを使ったほうが良いと思います。私は金属皮膜抵抗(50ppm/℃)を使いました。また、電源の安定した電圧が必要なので
電池を直接接続するとまずいと思います。私はADコンバーターICが出す一定電圧(約3V)を利用しました。
さて、肝心のADコンバーターの製作方法ですが、秋葉原の秋月電子で売られている温度計キットをほとんどそのまま利用させていただきました。電子工作に自信のあるかたでしたら回路図を書かなくても、どんな回路か想像がつくと思います。
さて、温度を表示するためには、温度と電圧の関係を知る必要があります。既に説明?したように、一般のシリコンダイオードでは−2mV/℃となることが知られていますが、この値は有効数字が一桁しかなく、正しい温度を表示させるためにはちょっと精度がたりません。そこで、CPUを室温で放置したときと、沸騰するお湯に入れたときの電圧を測定しました。その結果はこうなりました。(電源電圧=3.05V、抵抗値=100.5KΩ)
これらの値からダイオードの温度係数を計算すると-1.97mV/℃となります。もっとも、室温の測定に使った温度計は少々あやしいディジタル温度計(精度不明)なのと、室温から100℃までの間で電圧が線形に変化するとは言いきれないので、あまりこの値を信用しないで下さい。
CPU温度 電圧 22℃(室温) 650mV 98℃(沸騰水 推定) 500mV