树莓派PWM控制降温风扇,基于ubuntu系统

news/2025/2/12 20:13:14/

本文章是基于ubuntu的树莓派控制降温风扇,采用python编写,具有开机自启的功能,有很好的降低噪音的功能。其思路是获取cpu温度,并依据不同温度产生不同的pwm来进行控制风扇。具体代码如下:

安装树莓派端口支持库 sudo apt-get install python3-rpi.gpio

import RPi.GPIO as GPIO
import time
FAN=18 #BCM引脚编号
TEMP_MIN=30
TEMP_MAX=50
GPIO.setmode(GPIO.BCM)
GPIO.setup(FAN,GPIO.OUT)
#GPIO.output(FAN,GPIO.HIGH)
GPIO.setwarnings(False)
pwm = GPIO.PWM(FAN, 50)
pwm.start(100)
time.sleep(5)
pwm.stop()
print("风扇防止卡死程序运行结束")
# 设置风扇while True:file = open("/sys/class/thermal/thermal_zone0/temp")# 读取结果,并转换为浮点数temp = float(file.read()) # 关闭文件file.close()print("温度: %.1f" %(temp/1000))if temp<TEMP_MIN*1000:pwm.stop()print("温度低于设定值,风扇关闭")#set_fan(0)#低电平,为开启风扇elif temp>TEMP_MAX*1000:pwm.start(100);print("温度高于最高设定值,风扇全速运行")#set_fan(1)#高电平,为关闭风扇else:dc = (temp - TEMP_MIN * 1000) * 100 / ((TEMP_MAX - TEMP_MIN) * 1000)pwm.start(dc)print("PWM duty cycle:%.1f" %dc)time.sleep(10)#每隔十秒检测一下温度
GPIO.cleanup()

硬件电路图如下:
在这里插入图片描述
这里点解电容的作用是为了防止噪音产生的。

最后为了防止树莓派每一次开机都要自己去启动脚本,所以我们设置一下开机自启动。
我这里使用的是supervisor来操作,操作流程如下

  1. 安装supervisor sudo apt install supervisor
  2. 打开配置文件目录cd /etc/supervisor/conf.d
  3. 新建配置文件touch pwmfs.conf
  4. 编写配置文件内容 vim /etc/supervisor/conf.d/pwmfs.conf
  5. 配置文件内容如下:
[program:pwmfs]
command = python3 /home/ubuntu/pwmfs.py
autostart = true

注:其中/home/ubuntu/pwmfs.py就是你存放脚本的位置。

  1. 重启服务sudo systemctl restart supervisor
  2. 其他命令
    查看supervisor运行状态:sudo supervisorctl status
    查看后台进程号:ps -aux|grep pwmfs| grep -v grep

http://www.ppmy.cn/news/496723.html

相关文章

树莓派——PWM温控风扇程序(C++、python)、开机自启动

原理 读取/sys/class/thermal/thermal_zone0/temp文件&#xff0c;返回树莓派温度&#xff0c;控制GPIO产生PWM&#xff0c;从而实现温控风扇的控制。 C/C代码 命令行操作 cd /home/pi/code/basic/fan nano fan.c #复制代码 gcc fan.c -o fan -lwiringPi ./fan#include <…

基于STM32的pwm温度风扇(带人体检测)

一.硬件方案 本次设计采用STM32单片机做主控芯片&#xff0c;通过DS18B20采集温度&#xff0c;将温度显示在 LCD1602上。通过人体传感器检测周围是否有人存在&#xff0c;并根据温度的不同&#xff0c;利用STM32对风扇进行调速。 主要由STM32单片机LCD1602液晶显示DS18B20温度…

GPIO模拟PWM驱动风扇Linux设备驱动

前言 内核版本 linux5_10&#xff1b;GPIO产生PWM方波&#xff0c;控制风扇转速&#xff1b;本驱动可在应用层 /sys/class/pwm/下生成文件接口&#xff0c;通过脚本进行配置&#xff1b;本驱动可将该 PWM 设备树节点用于 thermal 节点中&#xff0c;通过与传感器关联&#xff…

基于STM32单片机智能蓝牙PWM温控风扇带定时APP控制

实践制作DIY- GC0009-智能蓝牙PWM温控风扇 一、功能说明&#xff1a; 基于STM32单片机设计-智能蓝牙PWM温控风扇 功能介绍&#xff1a; 1.基于STM32F103C系列&#xff0c;OLED&#xff0c;DHT11温度湿度传感器&#xff0c;HC-05蓝牙模块&#xff0c;HSR04超声波测距。 2.P…

树莓派4b:PWM调速风扇+DIY亚克力板外壳的定制降温方案

宿舍里的校园网只能连接两台设备&#xff0c;于是我就给树莓派4B装上了openwrt&#xff0c;加上淘宝上买的1200M无限网卡&#xff08;&#xff01;买的时候注意型号和宽度大小&#xff09;作为路由器。但在官方外壳里&#xff0c;树莓派温度稳定在60~70度&#xff0c;所以就考虑…

51单片机 Proteus仿真 PID 电机转速调节 PWM 风扇转速调节

/* PID的参数设置可以参照以下来进行:   参数整定找最佳&#xff0c;从小到大顺序查;   先是比例后积分&#xff0c;最后再把微分加;   曲线振荡很频繁&#xff0c;比例度盘要放大;   曲线漂浮绕大湾&#xff0c;比例度盘往小扳;   曲线偏离回复慢&#xff0c;积分时…

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

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #最新的保持温度恒定的代码&#xff0c;把——改成空格或者\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) #这…

STM32PWM控制智能风扇

设计思路&#xff1a; 这个是一个STM32通过定时器产生PWM波控制小风扇的设计&#xff0c;首先STM32驱动ds18b20温度传感器采集环境温度&#xff0c;然后通过按键设置温度的阈值&#xff0c;不同的温度范围定时器产生的PWM波不同&#xff0c;相应的小风扇的转速也会不一样&…