一、任务
设计并制作一个水温自动控制系统,控制对象为 1 升净水,容器为搪瓷器皿。水温可以在一定范围内由人工设定,并能在环境温度降低时实现自动控制,以保持设定的温度基本不变。
二、要求
1.基本要求
(1)温度设定范围为 40~90℃,最小区分度为 1℃,标定温度≤1℃。
(2)环境温度降低时(例如用电风扇降温)温度控制的静态误差≤1℃。
(3)用十进制数码管显示水的实际温度。
2.发挥部分
(1)采用适当的控制方法,当设定温度突变(由 40℃提高到 60℃)时,减小系统的调节时间和超调量。
(2)温度控制的静态误差≤0.2℃。
(3)在设定温度发生突变(由 40℃提高到 60℃)时,自动打印水温随时间变化的曲线。
GPT-4o给出的设计方案:
为了设计一个水温自动控制系统,我们需要以下几个关键模块:
#include "stm32f10x.h"
#include "ds18b20.h"
#include "lcd.h"
float temp_setpoint = 60.0;
float measured_temp;
PID_TypeDef pid;
void setup_pid() {
pid.Kp = 1.0;
pid.Ki = 0.1;
pid.Kd = 0.05;
}
void setup_timer() {
// 配置定时器周期以定期采样温度和更新PID控制
}
void setup_adc() {
// 配置ADC以读取温度传感器数据
}
void TIM2_IRQHandler(void) {
if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET) {
TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
// 读取温度传感器数据
measured_temp = DS18B20_ReadTemperature();
// 进行PID计算并控制加热器
float control_signal = PID_Compute(&pid, temp_setpoint, measured_temp);
set_heater_output(control_signal);
// 更新显示
LCD_DisplayFloat(measured_temp);
}
}
int main(void) {
setup_pid();
setup_timer();
setup_adc();
DS18B20_Init();
LCD_Init();
while (1) {
// 主循环
}
}
该设计方案结合了温度传感器的使用、MCU控制、加热和降温装置控制以及数据显示和记录,实现了水温控制系统的全方位设计。
本题目考察的主要知识点: