宿舍夏日神器!不如自己动手DIY一台?THC1-12706a+Arduino制作mini小冷箱
宿舍夏日神器!不如自己动手DIY一台?THC1-12706a+Arduino制作mini小冷箱
NianSir's BLOG

宿舍夏日神器!不如自己动手DIY一台?THC1-12706a+Arduino制作mini小冷箱

NianSir
2024-09-24 / 0 评论 / 67 阅读

近段时间持续的高温天气对于身处学校宿舍的大学牲们来说简直带来了诸多不便,众所周知许多学生宿舍因安全问题不允许使用大功率设备,冰箱这样的大型用电器更是如此,前段时间刷B站时偶然发现仙人指路(B站UP主:垃圾研究社)出了一期全站热门TOP100的视频——一个关于自制小冰箱的升级版视频,看着动人的数据NianSir也是自然跃跃欲试了,初步了解基础组件后也是火速下单了,至于原版的“小冰箱”具体数据和参数大伙可以去B站UP主那看看他的视频或者笔记,由于学生宿舍不让用冰箱,那咱们只好做做功率100W不到的mini“小冷箱”玩玩了~ 😜

在开始操作之前,还是要再重申一遍: 安全第一,本文章仅做参考,请在确保安全的前提下进行实验!!! 😇
首先贴一张完整成品图(泡沫箱除外):
DIY小冷箱成品图1

开始DIY!

本实验采用半导体制冷片THC1-12706a作为制冷源(12V 6A优质款),电脑电源+转接板进行供电,相对于B站UP主“垃圾研究社”提供的方案根据实际情况进行了一个升级优化,主要体现在:

  1. 冷端风扇改用更大转速的 防水 风扇(9000r 防水IP68),可以根据实际情况选择稍微低一些的转速和防水等级(我是为了省事哈哈哈哈 😂 )
  2. 使用单片机(开发板)+温湿度传感器进行智能控制,明显优化了冷端结冰问题

序号名称参数
1电源长城网星600 400w
2PC电源转接板选择带12v接出的转接板即可
3制冷片THC1-12706A 12V 6A
4热端散热6铜管散热架+风扇
5冷端冷风40x40mm散热板+小风扇
6T2紫铜板4~5cm宽 0.1mm
7继电器3.3v单路直流电(3.3VDC)
8开发板合宙Air001
9传感器AHT20+BMP280温湿度模块
10导热硅脂GD900 2-3小包即可
11泡沫箱推荐小、中型泡沫箱,最好带一些保温内壁啥的

📌 各个组件中的注意事项:

  1. 电源 :极不推荐使用手机快充/笔记本快充电源,这些快充电源不适合长时间提供大功率,存在极大的安全隐患!慎用,推荐使用电脑/服务器电源,至于选择多大功率我的建议是整套设备的工作功率不超过电源额定功率的60%,这样电源工作也不会有很大压力(讲人话就是电源不怎么发热 😋 )
  2. 电源转接板 :不会从PC电源接12V电的同学必备,或者为了省事推荐直接买一个,PC电源一般都是输出12V电,所以转接板只要买带12V的接出就行,当然为了日后深入学习也可以选用和我一样的3.3V~24V转接板,或者也可以去咸鱼或者其他平台找服务器电源,也有不少已经帮你接好取电板的电源卖,贴一张我的取电板,大概13元左右:多电压输出电源取电板
  3. 制冷片 :12V方案推荐选用优质款也就是127006A,这款制冷片是目前12V供电里效果最好的制冷片,价格也不高,大概11元左右:制冷片
  4. 热端散热 :根据“垃圾研究社”提供的数据使用6铜管散热器达到的制冷效果最好,但是在12V方案实际情况中似乎有点顶配了用不上这么多哈哈哈,不过为了深度学习改进还是推荐用6铜管散热塔吧,推荐买那种送风扇的,价格40元左右
  5. 冷端冷风 :原版“垃圾研究社”方案采用的是4010小风扇,但是实际情况下这款风扇的转速太低,导致中性泡沫箱的制冷效果明显降低(风小,另外也是加剧冷端结冰的情况的原因之一)冷端冷风
  6. T2紫铜板 :进一步优化热端散热,置于热端散热架和制冷片热端之间,中间要有导热硅脂,略贵,大概2块1片:T2紫铜片
  7. 继电器 :选择3.3VDC的单路继电器即可(开发板控制电路是3.3V,如果你的开发板带其他电压也可以用其他电压的继电器)单路继电器
  8. 开发板 :由于使用Arduino开发,因此选用较低成本方案的国产合宙品牌的Air001单片机,其开发板大约10元。
  9. 传感器 :考虑成本和品质问题,不选择DH11模块(这个模块真的心累,精度低,库还大)而选择更具性价比的AHT20+BMP280模块(直接可高精度测温湿度+大气压强,超爽的好吧 😚 ),仅仅只需大概4元温湿度+大气压模块
  10. 导热硅脂 :这个其实没什么很特别的要求,普通的硅脂就可以上但是为了追求更极致的性能还是选择了GD900这款导热系数较高的硅脂,单价大概0.4元一小包
  11. 泡沫箱 :泡沫箱就没什么好说的了,省钱可以跟水果店啥的要一个小的,不过还是推荐买个10来块的高密度泡沫箱,再买点保温内壁材料啥的

具体用料可以根据实际情况酌情调整(前提是你明白这样做的后果 😎 )

接线与组装

这一部分其实感觉没什么必要单独拿出来介绍,但是为了记录完整性咱还是再多啰嗦几句吧~ 😉

先说说电源这边接线,怼上插口即可,接电板连接PC电源的PIN24(插主板的那个最长的排线)即可,具体可以翻到上面瞅一眼成品图就知道了。
再说说制冷端这边,将热端散热架倒置在桌面上,撕掉塑料保护膜,按照以下步骤组装(注意电线一端最好都放在同一边,方便整理):

  1. 涂抹导热硅脂
  2. 放置T2紫铜板
  3. 涂抹导热硅脂
  4. 放置制冷片(注意热端和冷端,不要搞反了,有字的那面是冷端)
  5. 涂抹导热硅脂
  6. 放置冷端散热架(注意方向,有凹槽的一侧要用于固定)散热架放置方向
  7. 穿线固定(可以选择用尼龙扎带或者其他方案固定)

最后就是智能控制电路这边了,单片机除了接控制继电器不需要加入工作电路所以就不介绍单片机接线了,在下一部分的控制程序设计部分会介绍如何接引脚;智能控制就是为了优化原版制冷工作一段时间后会结冰导致冷端风扇异响甚至损坏问题,通过继电器控制一定条件下暂停制冷片工作(但风扇不会停止工作),所以其实原理也很简单,就是给制冷片的工作电路接入继电器控制即可,在原版接线情况下在制冷片工作电路负极线上接入继电器,也就是剪断制冷片电路负极线,然后将两端连接在继电器的COM口和NO口上即可,建议在断口镀锡以保障线路更安全稳定:继电器接线方法

智能控制程序设计

接下来就是最关键也是改进版最核心的特色了——智能控制
好吧其实也没有说的那么高大上,就是通过单片机对制冷片的一个开关罢了哈哈哈 😂
上面也已经提到了我们采用的是合宙Air001开发板(真的不是广告QAQ 合宙快给我打¥ 😭 )当然有条件的同学也可以选择arduino r3之类的开发板,甚至是根据这个思路选择STM32开发等等,如果仅仅只是想跟着做一下这个小冷箱那就按部就班吧 😉

Arduino IDE怎么下载安装配置这里就不讲了,网上一堆教程,至于如果用合宙Air001开发板怎么配置IDE,请移步官方文档:https://wiki.luatos.com/chips/air001/Air001-Arduino.html
这里就不赘述了,直接放代码(引入的两个库不是自带的,但是可以直接在IDE下载,编译方式要选择 Smallest -Os with LTO 因为同时监测温湿度和大气压的库写进开发板真的已经很极限了):

#include <AHT20.h> 
#include <Adafruit_BMP280.h>  
  
AHT20 aht;  
Adafruit_BMP280 bmp;  

const byte relayPin = PA13;
const short MaxRunTime = 600;

const char hi_message[] PROGMEM = "Hi, IcyBox A1 use Air001 MUC.";

short runC=0;
  
void setup() {
  pinMode(PB_0, OUTPUT);  
  pinMode(relayPin, OUTPUT);
  Serial.begin(9600);  
  
  aht.begin();
  bmp.begin();
  Serial.println(hi_message);  
}  
  
void loop() {
  runC++;
  digitalWrite(PB_0, HIGH);  
  
  // 读AHT20数据
  byte temperature_aht = aht.getTemperature();
  byte humidity_aht = aht.getHumidity();

  if (!isnan(temperature_aht) && !isnan(humidity_aht)) {  
    Serial.print("T: ");  
    Serial.print(temperature_aht);  
    Serial.println(" °C");  
  
    Serial.print("H: ");  
    Serial.print(humidity_aht);  
    Serial.println(" %");  
  } else {
  }  
  if(runC > MaxRunTime || temperature_aht <= 5){
    //关闭制冷片
    Serial.println("LOW"); 
    digitalWrite(relayPin, LOW);
    delay(80000);//延时80s
    runC=0;
  }else if(temperature_aht>6){
    //启动制冷片
    Serial.println("HIGH"); 
    digitalWrite(relayPin, HIGH);
  }
  
  // 读BMP280数据  
  short pressure_bmp = bmp.readPressure() / 100; 
  short altitude_bmp = bmp.readAltitude(1013.25);
  
  Serial.print("P: ");  
  Serial.print(pressure_bmp);  
  Serial.println(" hPa");  
  
  Serial.print("A: ");  
  Serial.print(altitude_bmp);  
  Serial.println(" meters");  
  
  digitalWrite(PB_0, LOW);  
  delay(2000);   
}

如果还是写不进去提示溢出那就把大气压的部分删了吧 😥 毕竟大气压的部分确实没用上,这个代码主要作用就是在运行600次后(大概3s一次)或者箱内温度小于等于5摄氏度时,让制冷片歇80s,这样可以有效解决冷端结冰现象,代码中的 relayPin 就是接到继电器控制线的引脚,我是接了PA13,可根据实际情况设定,传感器就使用默认的I2C引脚即可(在Air001上是PF00和PF01,分别接SDA和SCL,供电的VCC\VDD就接开发板的3.3V口即可GND接GND)

当然如果对于这样的控制逻辑不满意/想实现更多高级功能就慢慢摸索吧 😀 比如说使用ESP8266作为开发板,再加入一些小OLED屏啥的还能做成可以远程监控和控制的Pro小冷箱 😍

好了,关于DIY mini小冷箱的制作就先写这么多了,如果有更有趣的方案/疑问欢迎博客/公众号私信留言 😋 感谢支持!

11

评论 (0)

取消