我真的希望你能帮助我,我现在有点绝望:D 我目前正试图用Linux ubuntu 5.4.0-1038-raspi上的rpi 4控制一个库存intel风扇(intel e97379-001)。(富士康的粉丝)
问题是,风扇似乎只能在2400-2700 rpm之间控制。至少改变占空比只会改变该范围内的转速。然而,英特尔表示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(如果以hz为单位),但它产生相同的输出
尝试相反操作时(即,将占空比设置为可能的最高值,更改p.start(0)->;p.start(100)),转速输出在2800-2830之间
我真的不明白问题出在哪里,我认为rpm度量是正确的,因为在执行脚本后进行比较时,我只能听到/看到转速略有下降
我希望有人能帮助我,因为我在数小时的研究后找不到解决办法:(
目前没有回答
相关问题 更多 >
编程相关推荐