基于单片机控制的多模式智能冰箱设计—冷藏、速冷、省电与自动化霜功能实现

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远程管理、智能算法预测化霜等功能,为智能家电控制系统提供可落地的参考实现。

相关推荐
List<String> error_P1 天前
STM32窗口看门狗WWDG详解
stm32·单片机·嵌入式硬件·定时器
檐下翻书1731 天前
在线绘制水流量示意图
论文阅读·架构·毕业设计·流程图·论文笔记
鑫—萍1 天前
嵌入式开发学习——STM32单片机入门教程
c语言·驱动开发·stm32·单片机·嵌入式硬件·学习·硬件工程
来自晴朗的明天1 天前
高速画板-USB模块的PCB设计7-USB3.0 接口原理图详细解析
单片机·嵌入式硬件·硬件工程
boneStudent1 天前
STM32H750多通道数据采集系统
stm32·单片机·嵌入式硬件
S火星人S1 天前
LVGL[display]
单片机·学习
运维行者_1 天前
2026 技术升级,OpManager 新增 AI 网络拓扑与带宽预测功能
运维·网络·数据库·人工智能·安全·web安全·自动化
gfdhy1 天前
【C++实战】多态版商品库存管理系统:从设计到实现,吃透面向对象核心
开发语言·数据库·c++·microsoft·毕业设计·毕设
龙大大L1 天前
第七章、7.1 ESP32 触摸传感器超详细教程(Arduino 环境)实战指南
单片机·嵌入式硬件·esp32
小渔村的拉线工1 天前
18.SPI通信的原理及相关知识
单片机·嵌入式硬件·spi通信·全双工通信·主从机通信