树莓派上的CPU风扇温控模块

发布时间:2020-05-11
技术:C语言、RaspberryPi、WringPi、PWM调速

概述

树莓派上的CPU风扇温控模块。可提供三种风扇管理模式:自定义模式、强力模式、自动模式(正在更新中)。【RaspberryPi、WringPi、PWM调速】 自定义模式:可设置风扇的启动的温度阈值和关闭的温度阈值、风扇的转速等参数,根据此类参数对风扇进行控制。 强力模式:风扇以最大状态运行。 自动模式:正在更新啦

详细

RaspberryPi Fan Control

树莓派上的CPU风扇温控模块。可提供三种风扇管理模式:自定义模式、强力模式、自动模式(正在更新中)。【RaspberryPi、WringPi、PWM调速】


自定义模式:可设置风扇的启动的温度阈值和关闭的温度阈值、风扇的转速等参数,根据此类参数对风扇进行控制。


强力模式:风扇以最大状态运行。


自动模式:正在更新啦


一、使用说明

1:准备前操作

(1)当前树莓派系统中包含GCC和wiringPI等开发工具。(官方的系统即可)

(2)需要的其他硬件设备:散热风扇(如图1所示),如果散热风扇不支持PWM调速,即风扇只有两个线,需要准备一个NPN型三极管,手动焊接出第三条信号线,具体见2小节风扇焊接部分;需要准备若干杜邦线等。

fan.jpg

图1:不带PWM调速的散热风扇



2:风扇连接

(1)如果购买的散热风扇为三根线,即支持PWM控制,则分别将正极线接5V、负极线接0V、信号线接GPIO-2针脚,如图2所示。针脚的定义在include文件夹中fan.h文件中,可自行修改。

GPIO_Show.jpg

图2:连接阵脚图



(2)如果购买的散热风扇为二根线,则不支持PWM控制,需要准备一个开关三极管,我这里从收音机中拆出的一个8050型号的三极管。用电烙铁依照图3、图4的说明进行焊接,最后可用热缩管对焊接的部分和三极管针脚进行保护一下,防止短路。焊接完成之后,此风扇则已经支持PWM调速,则可依照(1)的说明将风扇连接到树莓派上。关于三极管型号的科普,我这里推荐一个简单的基础视频([三极管的应用基础介绍](https://www.bilibili.com/video/av8960413 "三极管的应用基础介绍")),其他的三极管知识可从Google上进行搜索。

s8050.jpg

图3:NPN开关三极管s8050

connection.jpg

图4:焊接图示



 3:编译

运行以下命令:

cd  RaspberryPi_Fan_Control

make



 4:运行

sudo bin/fan


二、效果


连接好的树莓派如图5所示:

raspberryPi.jpg

图5:树莓派


程序运行效果如图6所示:

cmd_result2.jpg

图6:程序运行结果


5.具体实现过程

采用多线程,信号中断等技术实现,满足多模块化设计。

调用过程如下:


int main(int argc, char* argv[])
{
    if (signal(SIGCHLD, signal_handler) == SIG_ERR)
    {
        //show_sys_info("登记信号SIGCHLD出错\n");
        printf("登记信号SIGCHLD出错!\n");
        exit(1);
    }
    //登记Ctrl+C(第九个信号)
    if (signal(SIGINT, signal_handler) == SIG_ERR)
    {
        printf("登记信号SIGINT出错!\n");
        exit(1);
    }
    wiringPiSetup();         //wiringPi库初始化
    /*
     *功能:初始化风扇管理
     *参数:初始启动的模式、风扇的启动温度阈值(0-100)、风扇的关闭温度阈值(0-100),自定义模式下的风扇速度[25-100] */
    fan_init(CUSTOM,           45,                             39,                       52); 
    open_fan();    //开启风扇管理
    
    while(1)
    {
        //执行其他模块的操作
        sleep(18);
    }
    return 0;
}


三、源码结构如下: 

image.png


Contact me 

If you have any questions, please contact me.

QQ: 1348351139

e-mail: wwptrdudu@gmail.com


本实例支付的费用只是购买源码的费用,如有疑问欢迎在文末留言交流,如需作者在线代码指导、定制等,在作者开启付费服务后,可以点击“购买服务”进行实时联系,请知悉,谢谢
手机上随时阅读、收藏该文章 ?请扫下方二维码