RaspberryPiファンコントロール
概要
CPU温度によりファンの回転数を制御します。
「RaspberryPi3は速度向上の代償として、発熱量が多くなった。」
と言われています。
一応、熱対策としてファンを導入したのですが
ファンがフル回転した状態だと、気になる程の音を出していたのと
貧弱なケースのおかげで
「振動と共振して音量が倍増してしまう。」
という最悪な状態で、CPUは、涼しそうでは無かったです。
サンプル
CPUFan.py
# -*- coding: utf-8 -*-import RPi.GPIO as IOimport commandsimport time
#ピン番号指定
IO.setmode(IO.BOARD)
#10番ピンを出力として利用
PinPut = 10IO.cleanup(PinPut)IO.setup(PinPut, IO.OUT )#PWM設定(1秒間の間に5個のパルスを作成)
PWM = IO.PWM(PinPut, 5)PWM.start(0)
while True:#CPU温度の取得temp = commands.getoutput("vcgencmd measure_temp").split('=')ftemp = float(temp[1].replace('\'C', ''))#温度により出力を算出(40~50℃の間を70~100%で)pw = (ftemp - 40) / 10if pw < 0: pw = 0if pw > 1: pw = 1
Duty = pw * 30if pw > 0: Duty += 70#PWM変更PWM .ChangeDutyCycle(Duty)#CPU温度とファンパワーを表示print 'temp:' + str(ftemp) + ' FANPW:' + str(pw)
time.sleep(1)
回路図
解説
PinPutの値を変えることにより
ファンコントロール出力のIOピン位置を変更できます。
IOの利用状況に応じて変更してください。
IO.BOARD指定ですので、ピンの並び順に数えた位置となります。
ちなみにGPIOの番号に対応させたい場合は
#ピン番号指定を
IO.setmode(IO.BCM)
とします。
ファンの電圧は、このサンプルの場合5Vとしてください。
ファンの種類によっては
低パワー時に回転出来ない可能性があります。
#温度により出力を算出
辺りを適正値に修正しましょう。
回路図作成はfritzingを利用しました。
ダウンロードサイトよりNo Donationを選択で
無料ダウンロードできます。
PWM・Dutyについては、PWM・Duty参考図を参照してください。
PWM・Duty参考図