树莓派风扇控制 pwm intel

时间:2021-07-13 06:11:03

标签: python raspberry-pi intel

我真的希望你能帮助我,我现在有点绝望:D 我目前正在尝试在 Linux ubuntu 5.4.0-1038-raspi 上使用 rpi 4 控制股票英特尔风扇 (intel e97379-001)。 (https://www.intel.com/content/www/us/en/support/articles/000055841/processors.html 的富士康粉丝)

问题是,风扇似乎只能在 2400-2700 rpm 之间控制。至少改变占空比只会改变该范围内的转速。但是,intel 声明 pwm 可以控制在 1000-3700 之间。 我正在使用外部 12v 电源为风扇供电。风扇的接地引脚连接到引脚 6,pwm 连接到 gpio 18,以及 到 gpio 24 的转速表。 我的问题是在 pyhton/c 中控制风扇(我都试过)。 pwm 的频率为 25khz(转速计的脉冲为 2)。 我基本上从 https://blog.driftking.tw/en/2019/11/Using-Raspberry-Pi-to-Control-a-PWM-Fan-and-Monitor-its-Speed/

获得了脚本基础

我使用提供的脚本测量了风扇速度,但到目前为止我找不到错误:

import RPi.GPIO as GPIO
import time

# Pin configuration
TACH = 24       # Fan's tachometer output pin
PULSE = 2       # Noctua fans puts out two pluses per revolution
WAIT_TIME = 1   # [s] Time to wait between each refresh

# Setup GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(TACH, GPIO.IN, pull_up_down=GPIO.PUD_UP) # Pull up to 3.3V

# Setup variables
t = time.time()
rpm = 0

# Caculate pulse frequency and RPM
def fell(n):
    global t
    global rpm

    dt = time.time() - t
    if dt < 0.005: return # Reject spuriously short pulses

    freq = 1 / dt
    rpm = (freq / PULSE) * 60
    t = time.time()

# Add event to detect
GPIO.add_event_detect(TACH, GPIO.FALLING, fell)

try:
    while True:
        print "%.f RPM" % rpm
        rpm = 0
        time.sleep(1)   # Detect every second

except KeyboardInterrupt: # trap a CTRL+C keyboard interrupt
    GPIO.cleanup() # resets all GPIO ports used by this function

重现我的问题的基本 python 脚本是:

import time
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.OUT)

p = GPIO.PWM(18, 25) 
p.start(0)
try:
    while 1:
        pass

这应该将风扇设置为尽可能低的转速。就我而言,rpm 输出在 2370-2400 之间。我还尝试将 PWM 从 25 更改为 25000(如果以赫兹为单位),但它产生相同的输出。

尝试相反的方法(即,将占空比设置为尽可能高,更改 p.start(0) -> p.start(100))时,rpm 输出在 2800-2830 之间。

我不太明白问题出在哪里,我认为 rpm 测量是正确的,因为在执行脚本后进行比较时,我只能听到/看到转速略有下降。

我希望有人能帮助我,因为经过数小时的研究我找不到解决方案:(

0 个答案:

没有答案