Raspberry Pi でPWM信号を使って5Vファンを制御する
Raspberry Pi でPWM信号を使って5Vファンを制御する
※ 自作PCで使うような4pinファンを動かすのではなく、2pin(VDDとGND) ファンを制御するという内容です。
Raspberry Pi でPWM信号使ってLEDの明るさを変更する でPWM信号を使ってLEDを点灯させた。 Raspberry Pi のPWM出力電圧(3.3V) では5Vファンの入力電圧(5V) には届かないため、GPIOの5V電源をトランジスタで制御し、PWM信号として使用した。
部品類
- 5V DC-FAN (D02X-05TS1 02)
- トランジスタ (2SC1815GR)
- 抵抗 (1kΩ)
回路図と配線
PWMを出力するコードを書く
ほとんどLEDの時と同じ
差分としては、LEDの時は10%の出力と100%を繰り返した ( for i in [10, 100, 10, 100]:
) が、
今回使用したファンは10%の出力では始動電力に届かなかったようで動き始めなかったため、20%に変更した ( for i in [20, 100, 20, 100]:
) 。
import RPi.GPIO as GPIO import time def main(): frequency = 200 repeat_count = 600 gpio_pin = 18 GPIO.setmode(GPIO.BCM) GPIO.setup(gpio_pin, GPIO.OUT) for i in [20, 100, 20, 100]: if 0 == i: on_time = 0 off_time = (1 / frequency) else: on_time = (1 / frequency) * (i / 100) off_time = (1 / frequency) * (1 - (i / 100)) for rc in range(repeat_count): GPIO.output(gpio_pin, True) time.sleep(on_time) GPIO.output(gpio_pin, False) time.sleep(off_time) GPIO.cleanup() if __name__ == '__main__': main()
Raspberry Pi では "vcgencmd" というコマンドでCPU温度などの情報を取得することが可能なようなので、 ○○°Cを超えたらファンの出力を××%に などできそう。