python控制树莓派风扇_gpio控制风扇转速 pwm方案

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

#最新的保持温度恒定的代码,把——改成空格或者\t

#

#!/usr/bin/env python

# encoding: utf-8

import RPi.GPIO

import time

import sys

import math

RPi.GPIO.setwarnings(False)

RPi.GPIO.setmode(RPi.GPIO.BCM)

#这里根据自己接法修改

gpio=4

RPi.GPIO.setup(gpio, RPi.GPIO.OUT)

pwm = RPi.GPIO.PWM(gpio, 440)

RPi.GPIO.setwarnings(False)

#风扇能保持旋转的最低速度,需要自己尝试

min_speed=20.0

#希望cpu温度稳定在多少

temperature=39400

##########以下都可以不用修改####################

prv_speed = 0.0

speed_fin=50.0

max_step=3.0

def sigmoid(x):

——x=x/4000.0

——result= 2.0*max_step/(1+math.exp(-x))-max_step

——return result

try:

——pwm.start(0)

——while True:

————tmpFile = open( '/sys/devices/platform/sunxi-i2c.0/i2c-0/0-0034/temp1_input' )

————cpu_temp = int(tmpFile.read())

————tmpFile.close()

————speed_fin=speed_fin+sigmoid(cpu_temp-temperature)

————speed_fin = min( speed_fin, 100.0 )

————speed_fin = max( speed_fin, min_speed-0.5 )

————if speed_fin < min_speed:

——————speed=0

————else:

——————speed=speed_fin

————if prv_speed == 0.0 :

——————if speed!=0.0 :

————————pwm.ChangeDutyCycle(100)

————————time.sleep(0.3)

————————print "start"

————prv_speed = speed

#如果不需要记录当前转速,去掉下面两行

————with open('/tmp/fan.info', 'w') as file:

——————file.write(str(speed))

————#print speed,speed_fin,cpu_temp

————pwm.ChangeDutyCycle(speed)

————time.sleep(2)

except KeyboardInterrupt:

——pass

pwm.stop()


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部