适用于台式电脑和 Arduino 的智能冷却系统!
您的台式电脑过热有问题吗?您的 CPU 是否过热并导致系统崩溃?好吧,如果是这样的话,你很幸运!该项目将为您提供有关如何制作使用Arduino板作为PC智能冷却系统的电路的分步说明!
![](https://www.geediy.net/wp-content/uploads/2024/07/image-14-1024x647.png)
![](https://www.geediy.net/wp-content/uploads/2024/07/image-15.png)
工具和机器
一台笔记本电脑或一台电脑进行测试
![](https://www.geediy.net/wp-content/uploads/2024/07/image-17.png)
![](https://www.geediy.net/wp-content/uploads/2024/07/image-16.png)
项目介绍
您的台式电脑过热有问题吗?您的 CPU 是否过热并导致系统崩溃?
好吧,如果是这样的话,那么你很幸运,因为这个项目将给你一个关于如何使用Arduino制作智能冷却系统的分步说明!
上面列出了此项目所需的所有组件。⬆️
3D 参考、电路和代码来源:$ Tinkercad $
现在让我们开始吧!
开始
从获取Arduino板开始,只要具有I2C通信和模拟引脚(大多数都有),您就可以使用几乎任何板。然后根据电路图开始接线。
该图可以在下面下载。⬇️
确保温度传感器连接到模拟引脚 0,继电器连接到 PWM 引脚 3,并且指示灯 LED 连接到 PWM 引脚 5。不要向后移动 SDA 和 SCL,否则显示器将无法正常工作!这是一个有用的图表,以便您可以更好地识别引脚。请注意,这是一个Arduino UNO板,您可能需要查找电路板的图表,以找出哪些引脚是哪些引脚。
Arduino UNO的引脚排列
您可能会感到困惑,原理图显示了一个继电器本身,效果很好,但您也可以使用继电器模块,这也将起作用。完成电路接线后,插入Arduino板并上传代码,可能会收到错误:“Adafruit_LiquidCrystal.h:没有这样的文件或目录”。 没关系,这只是意味着Arduino IDE找不到Adafruit_LiquidCrystal库,所以它给了你这个错误。要修复错误,您可能需要下载Adafruit_LiquidCrystal库,您可以从 $ 这里 $ 下载,我建议下载最新版本,即以蓝色突出显示的顶部文本。
现在您已经下载了库,再次编译并上传代码,这次它应该可以工作了。如果仍然不起作用,您可以尝试重新布线整个电路,检查明显的错误,或从Arduino IDE内部下载库。请随时在下面对这个项目发表评论以获得更多帮助,我很乐意回复。
现在它正在工作,你会看到LCD亮起,给你温度,这个温度当然是从传感器读取的。您可以尝试将手指放在传感器上几分钟,然后看到温度升高。但是,只有当传感器读取的温度为 175°F (79.4°C) 或高于该温度时,风扇才会打开。
预测试(可选)
温度必须非常高,但您可以尝试将传感器放在非常热的地方附近,您可能会听到继电器发出咔嗒声,然后风扇打开。但更简单的方法是通过更改风扇打开的温度(通常为 175°F (79.4°C))来稍微修改代码,在第 33 行,您将看到以下代码行:“ if ((-40 + 0.878679 * (analogRead(A0) – 20)) >= 175) { ”“175”将该数字更改为…… 90(或 32 摄氏度)并记住,这是风扇打开的温度,因此您可以将手指放在传感器上几分钟,然后看到温度攀升至 90,然后继电器应该发出咔嗒声,风扇将打开。取消这个数字并放回我们取出的“175”是个好主意。然后,一旦温度达到 175°F,风扇就会打开,如果您将其放入 PC,建议这样做。
测试
现在是进行真正测试的时候了。您可以先将传感器放在 PC 的 CPU 散热器上,或者放在 PC 中任何非常热的位置。现在,你问的风扇放在哪里?好吧,你当然可以把它放在你放置温度传感器的地方附近!当您基本完成测试时,您的设置应该看起来像这样。(插图来源列在上面)
![](https://www.geediy.net/wp-content/uploads/2024/07/image-18-1024x647.png)
到现在为止,您可能想知道如何安装传感器和风扇。这很简单,您可以使用胶带或胶水来安装传感器和风扇,这样它就不会太永久。但是我可能会为这个项目建模一些 3D 文件,您可以下载这些文件并在将来进行 3D 打印,但目前没有太多可以安装的内容。如果您想要轻松安装传感器或风扇的 3D 文件,请随时在下面发表评论,我很乐意这样做。
请注意,您可以复制或下载两种不同的代码。一个是华氏度,另一个是摄氏度。继续下载您想要的!
享受这个项目!
主代码 (°F)
/*
C++ code
By Miles Peterson
Date: 1/23/24
Note that this is in degrees Fahrenheit!
*/
#include <Adafruit_LiquidCrystal.h>
Adafruit_LiquidCrystal lcd_1(0);
void setup()
{
lcd_1.begin(16, 2);
pinMode(A0, INPUT);
Serial.begin(9600);
pinMode(3, OUTPUT);
pinMode(5, OUTPUT);
lcd_1.print("LOADING.");
delay(1000); // Wait for 1000 millisecond(s)
lcd_1.print(".");
delay(1000); // Wait for 1000 millisecond(s)
lcd_1.print(".");
delay(1000); // Wait for 1000 millisecond(s)
lcd_1.print(".");
delay(1000); // Wait for 1000 millisecond(s)
}
void loop()
{
lcd_1.clear();
if ((-40 + 0.878679 * (analogRead(A0) - 20)) >= 175) {
lcd_1.clear();
Serial.println((-40 + 0.878679 * (analogRead(A0) - 20)));
lcd_1.print((-40 + 0.878679 * (analogRead(A0) - 20)));
Serial.println("Fan: ON");
lcd_1.setCursor(0, 1);
lcd_1.print("Fan: ON");
lcd_1.setCursor(6, 0);
lcd_1.print("*F");
digitalWrite(3, HIGH);
digitalWrite(5, HIGH);
if ((-40 + 0.878679 * (analogRead(A0) - 20)) >= 200) {
lcd_1.setCursor(10, 0);
lcd_1.print("HIGH");
lcd_1.setCursor(10, 1);
lcd_1.print("TEMP!");
}
delay(2000); // Wait for 2000 millisecond(s)
} else {
lcd_1.clear();
Serial.println((-40 + 0.878679 * (analogRead(A0) - 20)));
lcd_1.print((-40 + 0.878679 * (analogRead(A0) - 20)));
Serial.println("Fan: OFF");
lcd_1.setCursor(0, 1);
lcd_1.print("Fan: OFF");
lcd_1.setCursor(6, 0);
lcd_1.print("*F");
digitalWrite(3, LOW);
digitalWrite(5, LOW);
delay(2000); // Wait for 2000 millisecond(s)
}
}
主代码 (°C)
/*
C++ code
By Miles Peterson
Date: 1/24/24
Note that this is in degrees Celsius!
*/
#include <Adafruit_LiquidCrystal.h>
Adafruit_LiquidCrystal lcd_1(0);
void setup()
{
lcd_1.begin(16, 2);
pinMode(A0, INPUT);
Serial.begin(9600);
pinMode(3, OUTPUT);
pinMode(5, OUTPUT);
lcd_1.print("LOADING.");
delay(1000); // Wait for 1000 millisecond(s)
lcd_1.print(".");
delay(1000); // Wait for 1000 millisecond(s)
lcd_1.print(".");
delay(1000); // Wait for 1000 millisecond(s)
lcd_1.print(".");
delay(1000); // Wait for 1000 millisecond(s)
}
void loop()
{
lcd_1.clear();
if ((-40 + 0.488155 * (analogRead(A0) - 20)) >= 79) {
lcd_1.clear();
Serial.println((-40 + 0.488155 * (analogRead(A0) - 20)));
lcd_1.print((-40 + 0.488155 * (analogRead(A0) - 20)));
Serial.println("Fan: ON");
lcd_1.setCursor(0, 1);
lcd_1.print("Fan: ON");
lcd_1.setCursor(6, 0);
lcd_1.print("*C");
digitalWrite(3, HIGH);
digitalWrite(5, HIGH);
if ((-40 + 0.488155 * (analogRead(A0) - 20)) >= 93) {
lcd_1.setCursor(10, 0);
lcd_1.print("HIGH");
lcd_1.setCursor(10, 1);
lcd_1.print("TEMP!");
}
delay(2000); // Wait for 2000 millisecond(s)
} else {
lcd_1.clear();
Serial.println((-40 + 0.488155 * (analogRead(A0) - 20)));
lcd_1.print((-40 + 0.488155 * (analogRead(A0) - 20)));
Serial.println("Fan: OFF");
lcd_1.setCursor(0, 1);
lcd_1.print("Fan: OFF");
lcd_1.setCursor(6, 0);
lcd_1.print("*C");
digitalWrite(3, LOW);
digitalWrite(5, LOW);
delay(2000); // Wait for 2000 millisecond(s)
}
}
![](https://www.geediy.net/wp-content/uploads/2024/07/image-19-1024x718.png)