Files
hulk 8900240c65 Heater: PID v0.1.14 - banded controller + sensor glitch guards
Rebuild PID as three-zone banded controller: far field P/D full power,
2026-10-15 20:55:02 +08:00

49 lines
1.2 KiB
C

#ifndef HEAT_H
#define HEAT_H
#include "gd32f4xx.h"
#include "board_config.h"
#include <stdbool.h>
/**
* @brief 初始化加热输出(PB12 推挽输出低 = 加热关)。
*/
void heat_init(void);
/**
* @brief 加热控制任务(在主循环中周期调用,主循环周期 10ms)。
* @details 内部包含:慢 PWM 载波(2s 周期、5% 步进,脉宽恒 >=100ms)、
* 目标斜坡 + 连续 PID(500ms 周期,全误差区间连续输出、微分基于
* 温度变化率、积分窄带吸收+钳位)、安全保护(传感器故障去抖确认后
* 强制关断 / 过温滞回保护 / 未使能强制关断)。
*/
void heat_task(void);
/**
* @brief 使能/关闭加热(对应 M3S1/M3S0)。
* @note 关闭时立即输出低并复位 PID 积分。
*/
void heat_set_enable(bool on);
/**
* @brief 查询加热使能状态。
*/
bool heat_get_enable(void);
/**
* @brief 设定目标温度(摄氏度,对应 M4S)。
*/
void heat_set_target(float temp_c);
/**
* @brief 查询目标温度(摄氏度)。
*/
float heat_get_target(void);
/**
* @brief 查询当前量化占空比档位(0~20,对应 0~100%,5% 步进)。
*/
uint8_t heat_get_duty(void);
#endif // HEAT_H