使用Arduino构建的智能CPU降温系统

  1. PWM调速信号的计算与输出

查阅资料可知,PWM调速风扇的四根线分别是:电源正负、PWM控制输入、FG转速反馈。经过测试,PWM脚悬空即可获得最大转速,施加电压调整为0-5V,风扇转速平稳地上升或下降。至此可以确认,风扇内部有对PWM脚的低通滤波、弱上拉电路,在这里我们使用Arduino控制转速时,只要简单产生0%-100%的PWM调速信号,就可以实现风扇油门调节。

  1. 风扇测速信号的获取、计算、转换、显示

风扇的测速信号比起PWM调速控制更加费工夫,已知风扇的黄色线为测速线,因此我将其连接到了Arduino UNO开发板的A0引脚上,但是从模拟引脚读出的数值波动性大,很显然这并非风扇的转速,因此我通过查阅资料得知测速线输出的是FG方波信号,我现在需要读取到方波的频率p,因此我使用了pulseIn()函数,其中方波波长λ满足下式:

得出了方波的波长λ,已知λ的单位是μs,已知1s=1000000μs通过简单的单位换算可以得出方波的频率p:

由已知知识可知,转子每圈旋转,FG信号输出两个方波周期,因此可得转速与方波频率的关系如下:

  1. 电路设计图

  1. 项目的源代码

#include "DHT.h"
//调用温湿度传感器的库文件
#include <LiquidCrystal.h>
//调用1602显示屏的库文件
#define D 9
//定义传感器引脚位

DHT dht(D,DHT11);
//设置读取结果变量dht

const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
//通过关联任何需要的LCD接口引脚初始化库
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
//它所连接的开发板引脚号
const int analogWritePin = 6;
int sensorValue = 0;
int outputValue = 0;

int sensorInput = 13;
unsigned long duration;
unsigned long rpm;

byte degree[8] = {
  B00111,
  B00101,
  B00111,
  B00000,
  B00000,
  B00000,
  B00000,
  B00000,
};

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  pinMode(sensorInput,INPUT_PULLUP);
  pinMode(analogWritePin,OUTPUT);
  dht.begin();
  //开始读取温度和湿度
  lcd.begin(16,2);
  //初始化LCD显示屏,显示方式为双行每行16个字符
  lcd.createChar(0,degree);
  //创建用户字符,字符数据为degree,字符编号为0
}

void loop() {
  // put your main code here, to run repeatedly:
  float t = dht.readTemperature();
  //读取dht温度(摄氏度)
  outputValue = map(t,10,30,0,255);
  //通过实时温度匹配风扇转速
  analogWrite(analogWritePin,outputValue);
  //驱动风扇旋转
  duration = pulseIn(sensorInput,HIGH);
  //得出方波的半波长
  rpm = 1000000/duration/2*30;
  //通过算法计算实时转速
  lcd.setCursor(0,0);
  //设置光标到第一行第一列
  lcd.print("TEMP:");
  //打印“T:(temperature温度)”
  lcd.print(t);
  //打印实时湿度
  lcd.write(byte(0));
  //打印自定义字符degree
  lcd.print("C");
  //打印“C”,与自定义字符组成完整的摄氏温度单位
  lcd.setCursor(0,1);
  //设置光标到第二行第一列
  lcd.print("RPM:");
  lcd.print(rpm);
  //打印实时转速
  lcd.print("r/min");
  delay(200);
}
  1. 示波器信号输出

5.1 测速信号输出

5.2 调速信号输出

物联沃分享整理
物联沃-IOTWORD物联网 » 使用Arduino构建的智能CPU降温系统

发表评论