1、基于单片机控制的多模式智能冰箱设计---冷藏、速冷、省电与自动化霜功能实现
点击链接下载protues仿真设计资料:https://download.csdn.net/download/m0_51061483/91860294
2、系统总体概述
2.1 设计背景与目标
传统家用冰箱通常具备基础冷藏功能,但在用户体验与能效控制方面仍存在明显提升空间。例如,用户希望在短时间内快速降温以满足临时冷冻或快速保鲜需求;希望在日常低负载情况下自动进入省电模式降低耗电;同时希望冰箱具备更智能的化霜机制,避免结霜影响制冷效率并减少人工维护。本设计以单片机为控制核心,构建一套"多模式智能冰箱控制系统",可在冷藏、速冷、省电与化霜之间灵活切换,并兼顾可靠性、能效、可扩展性与安全性。
2.2 主要功能概览
本系统支持以下四种工作模式,并满足题目所要求的控制逻辑:
1)冷藏模式:系统正常运行时不出霜,系统指示灯为绿色,压缩机运行、冷风机运行,加湿丝断电,热风机断电。
2)速冷模式:压缩机、冷风机以2倍的速度运行,除霜系统不工作。
3)省电模式:压缩机、冷风机低速运行,除霜系统不工作,系统黄色指示灯亮。
4)化霜模式:支持手动化霜与自动化霜;自动化霜时电热丝加热,热风机运行,压缩机停止运行、冷风机停止运行。
2.3 系统工作流程概述
系统上电后由单片机初始化各硬件模块,并进入默认冷藏模式。用户可通过按键或旋钮选择工作模式,同时系统具备自动化霜触发条件。当满足自动化霜条件(如累计运行时间、蒸发器温度低且持续结霜、制冷效率下降等)时,系统将进入自动化霜过程。化霜完成后系统自动回到冷藏模式或回到用户指定的模式。
2.4 系统设计原则
1)安全优先:压缩机与加热丝不能同时工作,化霜过程中禁止压缩机运行,避免热冲击与安全风险。
2)可靠性:对温度传感器、电源电压、继电器输出进行异常检测,防止误动作。
3)能效优化:省电模式降低转速与占空比,减少压缩机启停频率。
4)易维护性:模块化电路与模块化软件结构,便于后续功能扩展,如增加WiFi远程监控、门磁检测、声音报警等。
3、系统功能设计详解
3.1 冷藏模式功能逻辑
冷藏模式是系统最常用的默认模式,目标是稳定维持冷藏室温度在设定区间(如2℃~8℃)。其控制策略如下:
1)绿色指示灯常亮,提示系统处于正常冷藏状态。
2)压缩机运行:由单片机通过继电器/固态继电器控制压缩机电源。可采用简单的温控阈值控制:温度高于上限启动,低于下限停止,同时加入压缩机保护延时(避免频繁启动)。
3)冷风机运行:冷风机用于冷量循环,将蒸发器产生的冷气均匀输送至冷藏室。冷藏模式下冷风机正常转速运行,可采用PWM进行无级调速或固定占空比运行。
4)加湿丝断电:防止额外耗电及避免影响结霜模型(题目要求冷藏模式加湿丝断电)。
5)热风机断电:化霜相关设备全部关闭,保证无出霜状态。
6)除霜系统不动作:冷藏模式不主动化霜,若检测到结霜严重则由系统自动策略触发自动化霜。
3.2 速冷模式功能逻辑
速冷模式用于短时间快速降温,例如用户刚放入大量食材或需要短时间快速降至目标温度。其控制策略如下:
1)压缩机以2倍速度运行:实际压缩机本身多为交流定频压缩机,传统意义无法"倍速",因此可用两种方案实现:
- 方案A:使用变频压缩机(PWM/模拟量控制变频驱动器),速冷模式提升频率至额定的2倍(受硬件与压缩机允许范围限制,工程上通常提升到1.2~1.5倍更合理,本设计按题目要求设定为2倍逻辑层描述)。
- 方案B:对定频压缩机无法倍速,但可采用占空比控制或更激进的启停控制策略(尽量连续运行),同时提升风机转速实现更快降温。
2)冷风机以2倍速度运行:通过PWM提高占空比,如从50%提升至100%。
3)除霜系统不工作:加热丝与热风机始终关闭。
4)速冷时间限制与保护:速冷不能持续过久,否则能耗大且可能导致温度过低结冰。常见策略:速冷模式运行30分钟~2小时后自动回到冷藏模式,并进行压缩机保护延时。
3.3 省电模式功能逻辑
省电模式主要用于夜间、环境温度较低、开门频率低、负载轻等场景。其控制策略如下:
1)黄色指示灯亮,提示系统处于省电状态。
2)压缩机低速运行:对变频压缩机降低频率;对定频压缩机可采用更宽松的温控区间以及周期性运行策略。例如冷藏温度控制区间由2℃8℃变为3℃9℃,降低压缩机启动频率。
3)冷风机低速运行:通过PWM降低占空比,如从70%降至30%~40%。
4)除霜系统不工作:加热丝与热风机关闭。
5)省电模式下的舒适性权衡:温度波动会略大,但在允许范围内可显著降低能耗。
3.4 化霜模式功能逻辑
化霜是冰箱系统中非常关键的功能,结霜会导致蒸发器换热效率下降,最终表现为制冷能力减弱、耗电上升、风道堵塞等问题。本设计支持手动化霜与自动化霜两种方式。
3.4.1 手动化霜
用户通过按键触发化霜,系统立即进入化霜流程:
1)压缩机停止运行、冷风机停止运行,避免冷气产生和吹冷风导致化霜效率降低。
2)电热丝开始加热:用于融化蒸发器霜层。
3)热风机开始运行:加速热空气循环,提高化霜速度并减少局部过热。
4)化霜结束条件:
- 达到化霜最长时间(如10~20分钟)
- 蒸发器温度超过阈值(如8℃~15℃)
- 霜层检测(若配备霜厚传感器或基于温度变化推断)
5)结束后进入滴水延时:关闭加热丝但保持风机低速运行,帮助排水与均匀温度,再回到冷藏模式。
3.4.2 自动化霜
自动化霜需要系统实时评估结霜状态。常见触发条件包括:
1)累计运行时间达到阈值:例如压缩机累计运行6小时触发一次化霜。
2)蒸发器温度长期低于某一阈值:结霜往往发生在蒸发器表面温度持续低于0℃且湿度较高时。
3)制冷效率下降:在压缩机持续运行情况下,冷藏室温度下降速度变慢,可推断换热效率下降。
自动化霜流程与手动化霜相同,区别在于触发源和策略更智能。例如自动化霜可在夜间低负载时执行,减少对用户体验的影响。
4、电路设计(模块化详细说明)
4.1 电源模块
4.1.1 功能说明
电源模块负责将市电或适配器输入转换为系统所需的直流电压,为单片机、传感器、驱动器和指示灯等供电。冰箱系统通常同时存在高压交流部分(压缩机、加热丝、风机等)与低压直流控制部分,因此电源模块必须满足隔离与抗干扰要求。
4.1.2 设计要点
1)输入侧保护:使用保险丝、压敏电阻(MOV)抑制浪涌,使用共模电感与X/Y电容抑制EMI。
2)AC-DC转换:可使用隔离型开关电源模块(如5V/12V输出),确保低压控制与高压负载之间安全隔离。
3)稳压与滤波:若单片机工作在3.3V,可使用LDO或DC-DC降压模块将5V降至3.3V,并在关键节点放置去耦电容(0.1uF+10uF)。
4)电源指示与监测:可加入电源指示灯;若需要更高可靠性,可用ADC检测5V/3.3V电压,做欠压保护与异常报警。
4.2 单片机控制核心模块
4.2.1 功能说明
单片机作为系统的大脑,负责采集传感器数据、响应按键输入、输出控制信号、执行模式逻辑与保护策略。可选用常见MCU,如STM32、AVR、PIC或8051系列。考虑PWM输出、ADC采样与资源丰富性,推荐使用STM32系列。
4.2.2 设计要点
1)时钟与复位:外部晶振(如8MHz/16MHz)提升定时精度;复位电路使用RC+复位芯片保证上电可靠。
2)下载调试接口:SWD/JTAG或串口下载接口,便于固件升级。
3)IO资源规划:
- PWM输出:冷风机、热风机调速
- 数字输出:压缩机、加热丝继电器控制
- ADC输入:温度传感器、供电检测
- 按键输入:模式切换、化霜触发
- LED输出:绿灯、黄灯、其他状态灯
4)抗干扰措施:MCU电源脚放置充分去耦;IO外接浪涌抑制与RC滤波;传感器线使用屏蔽线或双绞线。
4.3 温度检测模块
4.3.1 功能说明
温度检测用于控制冷藏效果、判断结霜状态、确定化霜结束等。系统至少需要:
1)冷藏室温度传感器
2)蒸发器温度传感器(用于化霜控制)
4.3.2 传感器选择与接口
1)NTC热敏电阻:成本低,适合大批量应用。通过分压电路接入ADC采样。
2)数字温度传感器:如DS18B20,抗干扰强、精度高,采用单总线接口。
4.3.3 电路要点
1)NTC分压电路:选择合适的参考电阻,使温度工作区间内ADC分辨率最高。
2)滤波:加RC滤波与软件平均滤波,避免压缩机启动、电热丝加热引起的电磁干扰导致采样抖动。
3)防水封装:传感器需具备防潮防水能力,尤其蒸发器处易结霜结水。
4.4 执行器驱动模块
执行器包含压缩机、冷风机、热风机、电热丝、加湿丝(虽要求冷藏模式断电,但仍属于系统可控负载)。
4.4.1 压缩机控制模块
1)硬件接口:压缩机通常为交流负载,通过继电器或固态继电器控制。
2)电路要点:
- 继电器驱动使用三极管/MOSFET + 续流二极管(直流继电器线圈)
- 继电器触点选型需满足压缩机启动电流(启动电流通常远高于额定电流)
- 压缩机必须加入最小停机时间保护(如3分钟)防止高压未平衡导致启动失败
4.4.2 冷风机控制模块
冷风机可采用DC风机或AC风机。
1)DC风机:使用MOSFET低边驱动,PWM调速。
2)AC风机:使用可控硅调速或继电器分档控制(复杂度更高)。
电路要点:
- PWM频率选择避免啸叫(如20kHz以上)
- 风机启动可用短时间高占空比"助启动"策略
4.4.3 热风机控制模块
热风机用于化霜辅助,控制方式同冷风机,通常在化霜模式开启。
电路要点:化霜温度较高时要考虑风机耐热等级与风道材料耐温。
4.4.4 电热丝控制模块
电热丝属于大功率负载,用于蒸发器化霜。
1)控制方式:继电器/固态继电器控制通断。
2)保护措施:
- 温度上限保护:蒸发器温度超过阈值立即断电
- 最长化霜时间限制
- 加热丝与压缩机互锁(软件与硬件双重互锁更安全)
4.4.5 加湿丝控制模块
题目要求冷藏模式加湿丝断电,本系统仍预留该负载控制,可用于未来扩展湿度控制功能。控制方式与电热丝类似,但功率通常较小。
4.5 人机交互模块
4.5.1 模式选择按键
提供冷藏、速冷、省电、化霜等模式切换按键。
电路设计要点:
1)按键上拉/下拉,加入硬件消抖(RC)或完全用软件消抖。
2)支持长按/短按区别:例如短按切换模式,长按进入手动化霜。
4.5.2 指示灯模块
绿色指示灯:冷藏模式
黄色指示灯:省电模式
可扩展红色指示灯:故障或异常提醒(如传感器失效、过温、门未关等)。
电路要点:LED串联限流电阻,若亮度要求高可使用三极管驱动。
4.6 安全与保护模块(建议必备)
1)压缩机与加热丝互锁:硬件上可采用互锁继电器或串联逻辑,软件上强制状态机限制。
2)温度异常保护:传感器开路/短路检测,温度超界时停止相关负载并报警。
3)掉电与重启保护:掉电后保存当前模式与关键计时信息(EEPROM/Flash),恢复时进行压缩机延时启动。
5、程序设计(模块化详细说明)
5.1 软件架构设计
系统软件采用"状态机+周期任务调度"的方式实现。主程序中维护一个全局运行状态(工作模式),定时器中断提供1ms/10ms/100ms节拍,分别用于按键扫描、温度采样、PWM控制刷新、模式逻辑执行、自动化霜计时等。
核心模块包括:
1)系统初始化模块
2)传感器采集与滤波模块
3)模式管理与状态机模块
4)执行器控制模块(压缩机、风机、加热丝等)
5)按键与指示灯模块
6)自动化霜策略模块
7)故障检测与保护模块
5.2 系统初始化模块
功能:配置时钟、GPIO、ADC、定时器PWM、外设接口(如1-Wire/I2C)、看门狗等。
关键点:
- 初始化后默认进入冷藏模式
- 若存在掉电保存,则读取上次模式并合理恢复
- 启动压缩机需延时(如3分钟)防止频繁重启
5.3 传感器采集与滤波模块
5.3.1 温度采集
若使用NTC:ADC采样 -> 电阻换算 -> 温度查表或Steinhart-Hart公式换算。
若使用数字温度:读取寄存器值 -> 换算。
5.3.2 软件滤波
采用滑动平均或指数滤波减少噪声。
同时对温度变化速度做限制,避免瞬时毛刺触发误动作。
5.4 按键扫描与模式切换模块
按键扫描建议每10ms执行一次,支持:
- 短按:在冷藏、速冷、省电之间切换
- 长按:进入手动化霜
- 化霜键:立即化霜
软件消抖:连续检测稳定状态超过20~50ms判定为有效按下。
5.5 模式管理与状态机模块
模式状态机是系统核心,负责把"功能需求"落地为具体控制动作,并确保互锁与安全逻辑。
状态包含:
- MODE_COOL(冷藏)
- MODE_FAST(速冷)
- MODE_ECO(省电)
- MODE_DEFROST(化霜)
- MODE_DEFROST_DRIP(滴水延时,可选)
状态机每100ms或1s执行一次,根据输入条件(温度、按键、计时器、自动化霜触发)进行转换。
5.6 执行器控制模块
执行器控制模块提供统一接口,避免在各模式中直接操作IO,保证代码可维护性。
例如:
- Compressor_Set(ON/OFF)
- FanCold_SetSpeed(percent)
- FanHot_SetSpeed(percent)
- Heater_Set(ON/OFF)
- Humidifier_Set(ON/OFF)
5.7 自动化霜策略模块
自动化霜模块负责判断是否进入化霜:
- 压缩机累计运行时间 >= T_defrost_interval
- 蒸发器温度长期低于阈值(如-10℃以下持续30分钟)
- 制冷效率下降判据(可选)
进入化霜后执行:
- 关闭压缩机、冷风机
- 开启加热丝、热风机
- 化霜结束条件满足 -> 关闭加热丝,进入滴水延时 -> 回到冷藏
5.8 故障检测与保护模块
1)温度传感器故障:
- 采样值超出合理范围(如<-50℃或>80℃)判断异常
- 故障时关闭压缩机与加热丝,进入安全模式并报警(可闪烁LED)
2)化霜超时: - 若化霜持续超过最大允许时间仍未达到结束条件,强制结束并记录故障。
3)压缩机保护: - 最小停机时间保护
- 最小运行时间(避免频繁启停)
4)互锁保护: - 加热丝开启时压缩机必须OFF
- 压缩机开启时加热丝必须OFF
6、参考程序示例(结构化代码,便于移植)
c
/*******************************************************
* 多模式智能冰箱控制系统(示例代码)
* 说明:
* 1) 代码为通用结构示例,适用于多数MCU
* 2) 硬件驱动细节(GPIO/ADC/PWM)需按具体芯片修改
*******************************************************/
#include <stdint.h>
#include <stdbool.h>
/*==================== 参数配置 ====================*/
#define TEMP_FRIDGE_ON 8.0f // 冷藏启动温度(℃)
#define TEMP_FRIDGE_OFF 3.0f // 冷藏停止温度(℃)
#define DEFROST_INTERVAL_S (6 * 3600) // 自动化霜间隔:6小时(压缩机累计运行秒)
#define DEFROST_MAX_TIME_S (15 * 60) // 最大化霜时间:15分钟
#define DEFROST_END_TEMP 10.0f // 化霜结束蒸发器温度阈值(℃)
#define DRIP_TIME_S (3 * 60) // 滴水延时:3分钟
#define COMPRESSOR_MIN_OFF_S (180) // 压缩机最小停机时间:3分钟
#define COMPRESSOR_MIN_ON_S (60) // 压缩机最小运行时间:1分钟
/* 风机转速占空比(0~100) */
#define FAN_NORMAL_SPEED 70
#define FAN_FAST_SPEED 100
#define FAN_ECO_SPEED 35
#define FAN_DEFROST_SPEED 80
/*==================== 类型定义 ====================*/
typedef enum {
MODE_COOL = 0,
MODE_FAST,
MODE_ECO,
MODE_DEFROST,
MODE_DEFROST_DRIP
} SystemMode;
typedef struct {
float temp_fridge; // 冷藏室温度
float temp_evap; // 蒸发器温度
bool sensor_ok; // 传感器状态
} SensorData;
typedef struct {
bool compressor_on;
uint8_t fan_cold_speed;
uint8_t fan_hot_speed;
bool heater_on;
bool humidifier_on;
} ActuatorState;
typedef struct {
SystemMode mode;
uint32_t compressor_run_s;
uint32_t compressor_off_s;
uint32_t compressor_on_s;
uint32_t defrost_time_s;
uint32_t drip_time_s;
bool manual_defrost_req;
} SystemState;
/*==================== 全局变量 ====================*/
static SensorData g_sensor;
static ActuatorState g_act;
static SystemState g_sys;
/*==================== 硬件抽象层(需移植实现) ====================*/
void HW_Compressor_Set(bool on);
void HW_FanCold_SetSpeed(uint8_t percent);
void HW_FanHot_SetSpeed(uint8_t percent);
void HW_Heater_Set(bool on);
void HW_Humidifier_Set(bool on);
void HW_LED_Green(bool on);
void HW_LED_Yellow(bool on);
void HW_LED_Red(bool on);
float HW_ReadTemp_Fridge(void);
float HW_ReadTemp_Evap(void);
bool HW_SensorSelfCheck(float t1, float t2);
bool HW_Button_ModeShortPressed(void);
bool HW_Button_DefrostLongPressed(void);
/*==================== 工具函数 ====================*/
static uint8_t clamp_u8(int v, int minv, int maxv) {
if (v < minv) return (uint8_t)minv;
if (v > maxv) return (uint8_t)maxv;
return (uint8_t)v;
}
/*==================== 执行器统一控制 ====================*/
static void Actuator_Apply(const ActuatorState *s) {
/* 互锁:加热丝与压缩机不能同时开 */
if (s->heater_on) {
HW_Compressor_Set(false);
} else {
HW_Compressor_Set(s->compressor_on);
}
HW_FanCold_SetSpeed(s->fan_cold_speed);
HW_FanHot_SetSpeed(s->fan_hot_speed);
HW_Heater_Set(s->heater_on);
HW_Humidifier_Set(s->humidifier_on);
}
/*==================== 传感器采集与滤波(示例:简单平均) ====================*/
static void Sensor_Update(void) {
float tf = HW_ReadTemp_Fridge();
float te = HW_ReadTemp_Evap();
bool ok = HW_SensorSelfCheck(tf, te);
g_sensor.temp_fridge = tf;
g_sensor.temp_evap = te;
g_sensor.sensor_ok = ok;
}
/*==================== 指示灯控制 ====================*/
static void LED_Update(SystemMode mode, bool fault) {
if (fault) {
HW_LED_Red(true);
HW_LED_Green(false);
HW_LED_Yellow(false);
return;
}
HW_LED_Red(false);
if (mode == MODE_COOL) {
HW_LED_Green(true);
HW_LED_Yellow(false);
} else if (mode == MODE_ECO) {
HW_LED_Green(false);
HW_LED_Yellow(true);
} else {
/* 速冷/化霜等模式可按需求扩展灯效 */
HW_LED_Green(false);
HW_LED_Yellow(false);
}
}
/*==================== 模式默认执行器配置 ====================*/
static void Mode_SetActuators_Cool(void) {
g_act.fan_cold_speed = FAN_NORMAL_SPEED;
g_act.fan_hot_speed = 0;
g_act.humidifier_on = false; // 冷藏模式加湿丝断电
g_act.heater_on = false; // 热风机断电/电热丝断电
}
static void Mode_SetActuators_Fast(void) {
g_act.fan_cold_speed = FAN_FAST_SPEED; // 冷风机2倍速度
g_act.fan_hot_speed = 0;
g_act.humidifier_on = false;
g_act.heater_on = false; // 除霜系统不工作
}
static void Mode_SetActuators_Eco(void) {
g_act.fan_cold_speed = FAN_ECO_SPEED;
g_act.fan_hot_speed = 0;
g_act.humidifier_on = false;
g_act.heater_on = false; // 除霜系统不工作
}
static void Mode_SetActuators_Defrost(void) {
g_act.compressor_on = false; // 压缩机停止
g_act.fan_cold_speed = 0; // 冷风机停止
g_act.fan_hot_speed = FAN_DEFROST_SPEED; // 热风机运行
g_act.heater_on = true; // 电热丝加热
g_act.humidifier_on = false;
}
/*==================== 压缩机温控策略(含保护) ====================*/
static void Control_CompressorByTemp(float temp, bool enable_fast, bool enable_eco) {
/* enable_fast/eco 主要用于扩展变频策略:
- 定频压缩机:这里仍按ON/OFF控制
- 变频压缩机:可在此处输出频率目标值
本示例按定频压缩机处理,只控制开关。 */
/* 最小停机时间保护 */
if (!g_act.compressor_on) {
if (g_sys.compressor_off_s < COMPRESSOR_MIN_OFF_S) {
return;
}
}
/* 最小运行时间保护 */
if (g_act.compressor_on) {
if (g_sys.compressor_on_s < COMPRESSOR_MIN_ON_S) {
return;
}
}
if (temp >= TEMP_FRIDGE_ON) {
g_act.compressor_on = true;
} else if (temp <= TEMP_FRIDGE_OFF) {
g_act.compressor_on = false;
}
(void)enable_fast;
(void)enable_eco;
}
/*==================== 自动化霜触发判断 ====================*/
static bool Defrost_ShouldStartAuto(void) {
if (g_sys.compressor_run_s >= DEFROST_INTERVAL_S) {
return true;
}
/* 可扩展:蒸发器温度过低持续时间判据、效率判据等 */
return false;
}
/*==================== 主状态机(1s调用一次) ====================*/
static void System_StateMachine_1s(void) {
/* 故障保护:传感器异常时进入安全状态 */
if (!g_sensor.sensor_ok) {
g_act.compressor_on = false;
g_act.fan_cold_speed = 0;
g_act.fan_hot_speed = 0;
g_act.heater_on = false;
g_act.humidifier_on = false;
Actuator_Apply(&g_act);
LED_Update(g_sys.mode, true);
return;
}
/* 手动化霜请求优先 */
if (g_sys.manual_defrost_req && g_sys.mode != MODE_DEFROST) {
g_sys.mode = MODE_DEFROST;
g_sys.defrost_time_s = 0;
g_sys.manual_defrost_req = false;
}
/* 自动化霜判断 */
if (g_sys.mode != MODE_DEFROST && g_sys.mode != MODE_DEFROST_DRIP) {
if (Defrost_ShouldStartAuto()) {
g_sys.mode = MODE_DEFROST;
g_sys.defrost_time_s = 0;
}
}
switch (g_sys.mode) {
case MODE_COOL:
Mode_SetActuators_Cool();
Control_CompressorByTemp(g_sensor.temp_fridge, false, false);
break;
case MODE_FAST:
Mode_SetActuators_Fast();
Control_CompressorByTemp(g_sensor.temp_fridge, true, false);
/* 对变频压缩机可在此提升频率目标;本示例仅保持更积极运行策略 */
break;
case MODE_ECO:
Mode_SetActuators_Eco();
/* 省电模式可采用更宽松温控,本示例简化处理 */
Control_CompressorByTemp(g_sensor.temp_fridge, false, true);
break;
case MODE_DEFROST:
Mode_SetActuators_Defrost();
g_sys.defrost_time_s++;
/* 化霜结束条件:蒸发器温度达到阈值或超时 */
if (g_sensor.temp_evap >= DEFROST_END_TEMP || g_sys.defrost_time_s >= DEFROST_MAX_TIME_S) {
g_act.heater_on = false;
g_act.fan_hot_speed = 0;
g_sys.mode = MODE_DEFROST_DRIP;
g_sys.drip_time_s = 0;
/* 化霜结束后,清零累计运行时间 */
g_sys.compressor_run_s = 0;
}
break;
case MODE_DEFROST_DRIP:
/* 滴水延时:防止融霜水进入风道结冰 */
g_sys.drip_time_s++;
g_act.compressor_on = false;
g_act.heater_on = false;
g_act.fan_cold_speed = 0;
g_act.fan_hot_speed = 0;
if (g_sys.drip_time_s >= DRIP_TIME_S) {
g_sys.mode = MODE_COOL;
}
break;
default:
g_sys.mode = MODE_COOL;
break;
}
/* 执行器互锁在 Actuator_Apply 内部保证 */
Actuator_Apply(&g_act);
LED_Update(g_sys.mode, false);
/* 计时统计:压缩机累计运行时间 */
if (g_act.compressor_on) {
g_sys.compressor_run_s++;
g_sys.compressor_on_s++;
g_sys.compressor_off_s = 0;
} else {
g_sys.compressor_off_s++;
g_sys.compressor_on_s = 0;
}
}
/*==================== 模式按键处理(10ms调用一次) ====================*/
static void Key_Process_10ms(void) {
if (HW_Button_ModeShortPressed()) {
if (g_sys.mode == MODE_COOL) g_sys.mode = MODE_FAST;
else if (g_sys.mode == MODE_FAST) g_sys.mode = MODE_ECO;
else if (g_sys.mode == MODE_ECO) g_sys.mode = MODE_COOL;
/* 化霜模式下可选择忽略或延迟切换 */
}
if (HW_Button_DefrostLongPressed()) {
g_sys.manual_defrost_req = true;
}
}
/*==================== 主循环示例 ====================*/
int main(void) {
/* 硬件初始化(略) */
g_sys.mode = MODE_COOL;
g_sys.compressor_run_s = 0;
g_sys.compressor_off_s = COMPRESSOR_MIN_OFF_S; // 上电后允许启动
g_sys.compressor_on_s = 0;
g_sys.defrost_time_s = 0;
g_sys.drip_time_s = 0;
g_sys.manual_defrost_req = false;
/* 主循环:由定时器节拍驱动任务(示例) */
while (1) {
/* 伪代码:根据系统节拍执行任务 */
// every 10ms: Key_Process_10ms();
// every 200ms: Sensor_Update();
// every 1s: System_StateMachine_1s();
/* 实际工程中可加入低功耗待机、看门狗喂狗等 */
}
return 0;
}
7、系统运行模式与输出控制对应关系总结
7.1 冷藏模式(MODE_COOL)
1)指示灯:绿色亮
2)压缩机:运行(按温控逻辑启停或变频控制)
3)冷风机:正常速度运行
4)加湿丝:断电
5)热风机:断电
6)电热丝:断电
7)除霜系统:不工作
7.2 速冷模式(MODE_FAST)
1)指示灯:可扩展为蓝灯或闪烁(题目未要求,可不显示或保持默认)
2)压缩机:2倍速度运行(逻辑层描述,实际可通过变频或更激进运行策略实现)
3)冷风机:2倍速度运行(PWM提高占空比)
4)加湿丝:断电
5)热风机:断电
6)电热丝:断电
7)除霜系统:不工作
7.3 省电模式(MODE_ECO)
1)指示灯:黄色亮
2)压缩机:低速/低频运行或更宽松启停策略
3)冷风机:低速运行
4)加湿丝:断电
5)热风机:断电
6)电热丝:断电
7)除霜系统:不工作
7.4 化霜模式(MODE_DEFROST / MODE_DEFROST_DRIP)
1)指示灯:可扩展为红灯或特定闪烁(题目未要求可不显示)
2)压缩机:停止运行
3)冷风机:停止运行
4)电热丝:开始加热
5)热风机:开始运行
6)化霜结束:满足温度或时间条件后停止加热,进入滴水延时,再回到冷藏模式
8、结语
本设计围绕"多模式智能冰箱"的核心目标,构建了完整的功能定义、模块化电路结构与可维护的软件架构。通过冷藏、速冷、省电与化霜模式的清晰控制策略,系统能在不同使用场景下兼顾用户体验与能效表现。电路设计层面采用低压控制与高压负载隔离的方式,提高安全性,并通过继电器/MOSFET驱动实现压缩机、风机与加热丝的可靠控制。程序设计层面采用状态机与分层驱动思想,使模式切换与自动化霜逻辑稳定可控,同时通过互锁保护与故障检测机制提升系统安全等级。该方案具备良好的扩展性,可进一步加入湿度控制、门磁检测、WiFi远程管理、智能算法预测化霜等功能,为智能家电控制系统提供可落地的参考实现。