夏のあいだWiFiルーターが止まること数回。筐体を触ると熱くてどうやら熱暴走している。そこで、5Vのファンを付けてみたけど温度は下がらなかった。このファンの仕組みは凝った作りにしたので次に役立てるためにまとめときます。
”何もしてないのに壊れる”WiFiルーターを救うため
8月に入ったあたりから、WiFiルーターにはつながるがインターネット接続がなくなる症状が起きはじめる。再起動することで復活するが、数日のうちに再発してしまう。このルーターは熱の籠るテレビの裏から都合により動かせずにいたもので、不調の原因は熱暴走が疑わしい。
これをなんとかすべく電子工作しました。ルーターの開口部にファンをくっつけて風を送ろうというわけですが、それにしてはすぎた代物であるaruduinoがついてます。これは電子工作の勉強のために温度センサー(配線が飛び出てる部分)を使った凝ったつくりにしてるからであります。
温度センサーと半固定抵抗とMAP関数
基盤にはArduinoと温度センサーと半固定抵抗そして5Vのファンがついています。これらを使って、センサの計測値が半固定抵抗で決める設定値を超えたときファンを回すという動きをするようにしました。温度が落ち着いてる間はファンを回さないようにするというわけです。
スケッチ本文
const int PIN_TRIMPOT = 10; // A1 "TRIMPOT"は「半固定抵抗」
const int PIN_TEMP = 9; // A2
const int PIN_LED = 13; //D13 built in LED
const int PIN_FAN = 2; // D2
void setup() {
pinMode(PIN_LED,OUTPUT);
pinMode(PIN_FAN,OUTPUT);
}
void loop() {
if (temperature() > minTemp()) {
digitalWrite(PIN_LED,HIGH);
digitalWrite(PIN_FAN,HIGH);
} else {
digitalWrite(PIN_LED,LOW);
digitalWrite(PIN_FAN,LOW);
}
}
int temperature() {
int value = analogRead(PIN_TEMP);
int volt = map(value, 0, 1023, 0, 5000);
int temp = map(volt, 300, 1600, -30, 100);
return temp;
}
int minTemp() {
int value = analogRead(PIN_TRIMPOT);
int volt = map(value, 0, 1023, 0, 5000);
int temp = map(volt, 0, 3300, 0, 60);
return temp;
}
MAP関数でanalogReadの値をいい感じにする
23行目あたりからMAP()というのを繰り返してます。ここではセンサーと半固定抵抗の電圧を扱いやすいように温度の整数と設定用の0~60(℃)の整数にしてます。
Map関数はある数値がLowからHighまでの範囲にあるものとしてこれをもう一つの数値の範囲へ割り振るというもの。5つの引数はそれぞれ、map(value, fromLow, fromHigh, toLow, toHigh)
という感じ。スケッチではintにしまってるけど素の返り値はlongです。
5Vまで測れるアナログピンをanalogRead()して帰ってくる値は0から1023まで(10ビット)。これを0から5000mVの電圧にマップmap(value, 0, 1023, 0, 5000)
することで電圧がわかります。また、-30℃から100℃まで測れる温度センサーのデータシートによると-30℃のとき300mV、100℃で1600mVまで10mvずつ電圧が変わるとのことなので電圧をmap(volt, 300, 1600, -30, 100)
とすれば温度の数値が得られます。ここはデータシートにある式VO = (10 mV/°C × T°C) + 600 mV
をもとに計算するほうがよいかもしれない。
ボディ
基盤とファンをおさめてルーターに引っ掛けるボディ。ギザギザのところに引っ掛けるのはなかなかうまく働いた。温度センサーの配線を熱収縮チューブで綺麗にまとめてるのが見どころ。
3Dプリント用設計のポイント
サポート不要にするためにオーバーハングになるところを機能に影響無ければ傾斜にして処理した。
ファンをとめるネジ穴は、ネジの外径の円に内接する六角形の穴を奥を少しすぼめて開ける。これはインターフェイス2021年10月号3Dプリント特集で見たやり方。2,3回の止め直しくらいならバカにならずよく機能するのでおすすめ。
でも温度は下がらなかった
完成してからしばらく運転してみましたがルーターのボディに貼った温度計に冷却の効果は見られませんでした。不調が出るほど熱くなったときに、無いよりマシだといいのですが。
ルーターの方を改造してヒートシンクを取り付けたり開口部を設けたりすると改善しそうではあります。などなど、何が不足していたかはたくさん思いつきますがこれ以上の深入りは、季節が変わり熱暴走の心配がなくなったのもあり見送りします。