这是一个用于 3D 打印干燥箱的除湿器,无需干燥剂即可保持灯丝干燥。
概述
构建此项目后,你就可以给你的 3D 打印机干燥箱配备一个功能齐全的除湿机,以保持您的灯丝干燥并随时以备使用了。除湿机使用 Peltier 设备工作,该设备将热量从设备的一侧传递到另一侧,从而产生冷热侧。设备的冷侧会产生冷凝水,从而去除干燥箱内空气中的水分。Peltier 夹在两个散热器之间,风扇在其中吹过。风扇为 Peltier 的热侧提供冷却,同时还吹走冷散热器翅片上积聚的冷凝水。
除湿机由两个 Particle Photon 控制。一个 Photon 控制 Peltier 设备,而另一个读取干燥箱内的湿度和温度。两个 Photon 相互通信以确定 Peltier 是否应该打开或关闭以及功率级别是否应该设置为一或二(低或高)。当湿度水平达到大约 30% 时,高功率模式启动。在这一点上,只有通过低于冰点才能从空气中去除更多的水分。可以使用预定义的变量在代码顶部设置所需的目标湿度和其他参数。
构建
首先,将原来的筒形插头从电源上断开,并焊接在新的大电流筒形插头上。
使用导热膏和夹具支架组装两个散热器和 Peltier 模块。使用大型散热器随附的紧固件连接夹具支架。如图所示,确保将大型散热器的散热片定位在夹具的长方向上。否则散热器将无法正确装入外壳。
注意:散热器随附的弹簧将不用于此项目。
参考电路原理图来组装电子设备。如果需要,连接器可用于电路的低电流部分。
注意:在将这两个组件连接到电路的其余部分之前,将摇臂开关和大电流筒形插孔插入电子外壳盒。还要确保将 12V 电压传输到灯丝盒中的光子的电线足够长,以便通过出口空气管进入灯丝盒。
将 Peltier 组件放入其外壳内,并用四个 M3x16 螺钉固定。
注意:只拧紧螺丝,直到它们紧贴为止。
使用适合您选择的风扇的紧固件将 90 毫米风扇固定到顶部管道连接器上。
注意:调整风扇方向,使空气通过顶部管道连接器的小端吸入。
将顶部管道连接器和电子外壳连接到 Peltier 组件外壳,同时引导电线穿过外壳的切口。将四个 M3x12 螺钉用于顶部管道连接器,四个 M3x6 螺钉用于电子外壳(警告:一旦感觉到任何阻力,请停止拧紧电子外壳的螺钉,否则您会剥去螺纹。这很容易做到,因为螺钉与塑料的接合只有 3 毫米。)
注意:对于某些电线尺寸,可能需要扩大切口。
使用四个 M3x10 螺钉将侧管连接器连接到 Peltier 组件外壳。(警告:只有在第一次感觉到阻力后才稍微拧紧螺丝,否则你会剥掉螺纹。这里只有 6 毫米的啮合。)
使用 2-1/2“ PVC 管或等效外径的管子将空气进出除湿机。可以使用 M3 螺钉和螺母将夹子拧紧到管子上。
将软管倒钩拧入靠近 Pelter 外壳组件底部的排水口。将聚氨酯软管连接到所需位置。注意:可能需要强力胶或适当的密封剂来防止软管倒钩螺纹周围的泄漏。如果软管倒钩不能成功地拧入印刷部件,则可以鼓励聚乙烯软管在没有倒钩的情况下装入孔中,并用强力胶或其他方法固定到位。
peltier 控制代码:
/* Program description*/
// User Configuration
const float Power_Level_1 = 90; //Low power level in percent supplied to the Peltier module that will not cause the dehumidifier to ice up
const float Power_Level_2 = 100; //Supplies maximum power to the Peltier module but may cause the dehumidifier to ice up
const float Fan_Speed_1 = 40; //Fan speed in percent for power level 1 above
const float Fan_Speed_2 = 60; //Fan speed in percent for power level 2 avove
const char Peltier_MOSFET_Pin = D0; //Pin that will control the Peltier MOSFET (Must be digital PWM)
const char Fan_MOSFET_Pin = D2; //Pin that will control the fan MOSFET (Must be digital PWM if anything other than 100 is used for the fan speeds)
const int Fan_PWM_Frequency = 20; //Frequency of the PWM signal that will be sent to the Fan
const int Peltier_PWM_Frequency = 500; //Frequency of the PWM signal that will be sent to the Peltier module
// Program Variables
bool request_Peltier_on = false;
float Peltier_power_level = (Power_Level_1/100)*255;
int Peltier_current_state = 0;
float Peltier_current_power_level = Peltier_power_level;
float fan_speed = (Fan_Speed_1/100)*255;
unsigned long last_millis = 0;
int update_interval = 60000;
// Recieved Data Handlers
void on_off_request_handler(String event, String data) {
request_Peltier_on = data.toInt();
Particle.publish("Gunner_P/MEGR_3171/Dehumidifier_Filament_Box/Peltier_state", String(request_Peltier_on), 10);
}
void Peltier_power_handler(String event, String data) {
if (data.toInt() == 1) {
Peltier_power_level = (Power_Level_1/100)*255;
fan_speed = (Fan_Speed_1/100)*255;
Particle.publish("Gunner_P/MEGR_3171/Dehumidifier_Filament_Box/Peltier_power", String(1), 10);
}
if (data.toInt() == 2) {
Peltier_power_level = (Power_Level_2/100)*255;
fan_speed = (Fan_Speed_2/100)*255;
Particle.publish("Gunner_P/MEGR_3171/Dehumidifier_Filament_Box/Peltier_power", String(2), 10);
}
}
// Dehumidifier Manager
void dehumidifier_manager() {
if (request_Peltier_on && Peltier_current_state == 0) {
analogWrite(Peltier_MOSFET_Pin, Peltier_power_level, Peltier_PWM_Frequency);
Peltier_current_power_level = Peltier_power_level;
analogWrite(Fan_MOSFET_Pin, 255, Fan_PWM_Frequency);
delay(200);
analogWrite(Fan_MOSFET_Pin, fan_speed, Fan_PWM_Frequency);
Peltier_current_state = 1;
}
if (!request_Peltier_on && Peltier_current_state == 1) {
analogWrite(Peltier_MOSFET_Pin, 0);
analogWrite(Fan_MOSFET_Pin, 0);
Peltier_current_state = 0;
}
if (Peltier_current_state == 1 && Peltier_current_power_level != Peltier_power_level) {
analogWrite(Peltier_MOSFET_Pin, Peltier_power_level, Peltier_PWM_Frequency);
Peltier_current_power_level = Peltier_power_level;
analogWrite(Fan_MOSFET_Pin, 255, Fan_PWM_Frequency);
delay(200);
analogWrite(Fan_MOSFET_Pin, fan_speed, Fan_PWM_Frequency);
}
}
// Setup
void setup() {
pinMode(Peltier_MOSFET_Pin, OUTPUT);
pinMode(Fan_MOSFET_Pin, OUTPUT);
Particle.subscribe("Elijah_C_MEGR_3171_Dehumidifier_Filament_Box_Project", on_off_request_handler);
Particle.subscribe("Elijah_C_MEGR_3171_Peltier_Power_Level_Dehumidifier_Box", Peltier_power_handler);
Particle.publish("Gunner_P/MEGR_3171/Dehumidifier_Filament_Box/Peltier_state", String(request_Peltier_on), 10);
}
// Loop
void loop() {
if (millis() - last_millis >= update_interval); {
dehumidifier_manager();
last_millis = millis();
}
}
ThingSpeak 记录干燥箱的实时湿度和温度以及除湿机的电源状态。可随时随地查看除湿机状态,确保系统正常运行。注意:上面显示的图表包含每 30 秒报告一次的数据,而不是代码中设置的 5 分钟默认值。
全部0条评论
快来发表一下你的评论吧 !