最近更新于 2023-10-06 02:34

前言

我用的是树莓派 cm4,配的底板是微雪的
file

底板上有 4 线调速风扇的插口,附带也提供了库 API,可以调用读取风扇速度,以及控制风扇速度。前段时间注意到风扇开始产生异常噪音,而且转速调不上去了,很慢。我就估摸着应该是机械耗损,准备换新,结果一看这种四线的调速风扇最便宜的也是十几块钱,甚至普遍的有四五十块钱一个的,这换着成本也太高了。
因此准备用普通的两线风扇替代,买一个这种 4010 尺寸的 5V 风扇也就两三块钱一个,但是不能调速,接上去用着很快就发现这玩意吹得呼呼的响,室温 24℃ 左右,能保持在三十几度,使用起来也不过 40 度左右,但就是太吵了。所以还是得搞成调速,但是树莓派的 GPIO 肯定没法直接驱动风扇,我测试了一下 5V 电源下电流有 200 mA 左右,而且 GPIO 的最高输出是 3.3V,电压太窄而且也承受不了风扇需要的电流。
那么就得使用三极管来放大电流,调速使用 PWM。

file

材料

  • S8050(NPN)
    file
    很便宜,两块多买了 10 个
  • 1kΩ 电阻
  • 4010 5V 风扇
    这个是以前买的,2块钱一个

线路

file

最开始测试我是没加电阻的,测试 PWM 平均电压 0.6V 时,风扇大概可以起转,风扇端电流大约 30mA,PWM 平均电压 3.3V 时(最大),风扇端电流大约 210mA。然后突然想着测了一下 PWM 端(b)走的电流多大,发现居然有 35mA,这属实有点高了,要是再高一些说不定都可能烧掉。所以测试了下,最终加 1kΩ 的电阻,在 PWM 平均电压 3.3V 的情况下,电流降到了 2.3mA。

树莓派的硬件 PWM 有(BCM)12、13、18 和 19
file

使用硬件 PWM 不会额外占用 CPU 资源,因此建议配置选其中一个。

驱动程序实现

https://github.com/IYATT-yx/pi-fan

另外也做一下补充说明,我之前用过一个 PWM 调速风扇扩展板,在非全速模式下会有高频刺耳的蜂鸣声,在做这个之前我也一直想着这个。然后这里测试的时候尝试了多个频率,发现当 PWM 频率越高,这个蜂鸣声就越尖锐(在几千赫兹的时候尤其明显),所以就把频率调小测试,蜂鸣声的问题就缓解了,最终项目里我采用的 20Hz,这个风扇调速也不需要多高的精度,不需要那么高的频率,而且蜂鸣声确实太难受。不过频率小了之后在设置电压较低,风扇转速比较慢的时候,停顿感会有所增强,有点“踏踏踏”的声音,但是相对于蜂鸣声不是那么明显了。当然有需要也可以在安装的时候自行修改,相关参数在单独一个头文件中定义的宏。

作者 IYATT-yx