一、功能说明
采用PT100精密测温电阻作为温度传感器,将其采集到的温度数据传输至单片机进行转换,再由单片机进行PID控制,生成相应的PWM信号,该信号被SSR接收并转换为对发热片的输出。该系统通过PID输出的PWM信号来精确控制发热片的温度,同时通过控制加热频率来实现与发热片环境的热平衡,确保系统温度的稳定性。此外,还配备了一个环境温度传感器,以便在PT100温度受环境影响而发生变化时进行相应的补偿。
二、硬件设计
2.1 原理框图

2.2 各功能框图说明
2.2.1 MCU最小系统
该MCU采用了宏晶科技的STC8A8K64D4 LQFP64封装,以下是其主要特点:

STC8A8K64D4具备内置的高精度时钟单元和硬件复位电路,因此在使用时无需外部时钟电路和复位电路,有助于降低成本。
在单片机电源输入部分增加一个100nF的旁路电容,其主要功能包括:
1、滤除电源上的高频噪声。
2、储能,当负载需要瞬时电流时,电容率先为其提供电流,减小电源产生的波动。
3、给高频信号提供最近的低阻抗回流路径,减少对其他芯片电源的干扰。

2.2.2 电源电路
电源电路采用220V交流电转5V直流电的电源模块,或者可以通过外部适配器直接提供5V直流电。该电源模块具有低纹波噪声、过载保护、短路保护以及过热保护等功能,以确保系统的稳定性和可靠性。电路图描述如下:

R8 - 压敏电阻,主要用在电路承受过压时进行电压钳位,吸收多余的电流以保护后级敏感元件。
P2 - 220V交流输入。
P1 - 保险丝的作用是过载保护,当电流异常升高到一定程度时,保险丝会熔断切断电流,从而保护电路中的电线或防止短路引起火灾。
U8 - 220V交流电转5V直流电的电源模块。
TV1 - 通过利用该器件的非线性特性,将过电压钳制到一个较低的电压值,实现对后级电路的保护。
C5/C6 - 主要用于滤除由电源输出的直流电压中所含的杂波和噪声,并将其平滑处理为一个稳定的直流电压输出。
F1 - 可以使用0欧姆电阻进行短接,或者采用自恢复保险丝,这是一种具有自恢复特性、可反复使用的非线性过流保护器件。
2.2.3 按键电路
按键电路采用点触按键,当用户按下按键时,电路会检测到按键的接触,并产生低电平信号,从而触发相应的操作。电路图描述如下:

KEY1/KEY2/KEY3 - 点触按键,点触按键的工作原理:按钮与触点机械作用,按下按钮,弹簧收缩,触点接触导电条,电路接通;松开按钮,弹簧恢复原状,触点离开导电条,电路断开。
C7/C8/C9 - 在点触按键上连接一个下拉电容,其主要作用是消除按键抖动。当按键被按下时,电容会首先充电,从而抑制了按键的机械性抖动,这样就能够确保单片机程序正确地识别和分辨当前的电平状态。
2.2.4 PT100采集电路
PT100铂电阻温度传感器,其阻值随着温度的变化而呈现相应的变化。为了准确测量PT100的阻值,电桥采集电路是必不可少的工具。该电路由四个电阻组成,其中一个是PT100,其他三个电阻则为已知固定电阻。当PT100的温度发生改变时,其阻值也会随之改变,从而打破了电桥的平衡状态,导致电桥输出一个微小的电压信号。这个电压信号经过放大电路的放大后,将被转换成数字信号并传递给单片机进行处理。电路图描述如下:


2.2.5 DS18B20电路
DS18B20电路主要采集环境温度,在PT100温度控制中,环境温度的变化会对温度测量产生影响,因此需要进行温度补偿。有效地消除环境温度对温度测量的影响,提高温度测量的精度。DS18B20是一种数字温度传感器,它可以通过1-Wire协议与单片机通信,实现温度的测量。在电路设计中,需要将DS18B20连接到单片机的IO口,并使用电桥采集电路来测量温度电路图描述如下:

R3 - DS18B20是一款单总线温度传感器,其数据线采用漏极开路方式,因此它只能输出低电平而无法输出高电平。为了保持信号的稳定性,需要借助外部强上拉电阻来拉高电平。
C4 - 滤波电容
2.2.6 继电器控制电路
单片机智能调控PWM信号,精细控制发热片温度,同时自动调节加热频率,与环境温度完美匹配,实现智能热平衡。

R1 - 串联电阻的作用是限制电流,使得电路中的元器件不会因为电流过大而被损坏。
R5 - 三极管下拉电阻的作用是为了保证三极管在初始状态下处于稳定关断的状态。
Q1 - 单片机GPIO驱动能力有限,继电器和电磁阀等大功率负载超出其IO驱动能力。继电器控制端为电磁线圈(电感),关断时产生自感电压易烧坏单片机,因此需通过三极管控制继电器。
D1 - 二极管的作用是吸收继电器线圈断电时产生的自感电压,防止三极管被高电压损坏。
C2 -电容在电路中的作用是缓解继电器线圈电流的突变,避免产生过高的感应电动势,从而保护电路中的其他元器件免受电压冲击。
2.2.7 蜂鸣器电路
蜂鸣器是一种可以发出声音的电子元件,通过PWM(脉冲宽度调制)控制技术来调节声音的大小。为了实现对蜂鸣器的控制,我们需要使用三极管。三极管是一种半导体器件,具有电流放大作用,可以将微弱的信号放大成较大的电流,从而实现对蜂鸣器的有效控制。

R2 - 串联电阻的作用是限制电流,使得电路中的元器件不会因为电流过大而被损坏。
R7 - 三极管下拉电阻的作用是为了保证三极管在初始状态下处于稳定关断的状态。
Q2 - 蜂鸣器的工作电流通常较大,单片机的I/O口无法直接驱动,但AVR可以驱动小功率蜂鸣器。因此,需要使用三极管来控制蜂鸣器的通断。
D1 - 二极管的作用是吸收蜂鸣器断电时产生的自感电压,防止三极管被高电压损坏。
C2 -蜂鸣器回路上并联电容的作用是为了保护蜂鸣器,让其两端的电压不能突变,吸收浪涌电压。
2.2.8 LED电路

R9/R12/R14 - 限流电阻的作用是限制电流,保护LED不被过电流损坏。
2.2.9 数码管显示电路
TM1640是一种专门用于驱动控制LED(发光二极管显示器)的电路,其内部集成了MCU数字接口、数据锁存器以及LED驱动等电路。该电路主要应用于电子产品LED显示屏的驱动。从硬件角度来看,单片机的GPIO驱动能力相对有限,而数码管需要的驱动电流较大,基本达到了单片机驱动电流的极限。在软件方面,数码管的驱动需要实时扫描,如果直接使用单片机进行驱动,需要编写较为复杂的程序,如果程序任务较多,其他任务占用时间较长,数码管不能实时扫描,数码管容易闪烁。因此,使用TM1640电路可以有效地解决这些问题,使得LED显示屏的驱动更加简单、稳定和可靠。


R10/R11 - 使用TM1640芯片时,需要连接CLK和DIN引脚到单片机的GPIO口,并加上上拉电阻,以确保数据传输稳定。
C10/C11 - 在TM1640芯片的电源处加上滤波电容,是为了让电路中的元器件不会受到电源噪音的影响,这样可以让电路更加稳定。
三、软件设计
3.1 程序框图

3.2 各功能模块说明
3.2.1 主函数
主函数采用单片机时间片轮询法的程序架构,用于在不使用操作系统的情况下实现多任务的并发执行。它的基本原理是利用定时器中断来划分时间片,每个时间片对应一个任务,通过任务标志和任务函数来控制任务的运行和切换。
单片机时间片轮询法的主要步骤有:
定义任务结构体,包含任务函数、任务运行标志、任务计时器和任务计时器初值等成员。
定义任务数组,初始化各个任务的结构体,并指定任务的运行间隔时间。
编写定时器中断服务函数,用于实现时间轮片的功能。在每个时钟节拍中,逐个检查任务的计时器是否为零,如果为零,则置任务运行标志为1,同时恢复计时器初值;如果不为零,则计时器减一。
编写任务处理函数,用于在主循环中执行各个任务。在每个循环中,逐个检查任务的运行标志是否为1,如果为1,则调用任务函数,并清除运行标志。
编写主函数,进行系统的初始化和任务的处理。
时间片轮询法流程图

定时中断服务函数每间隔1ms中断一次,在中断中判断各个任务的时间是否到0,如果定时值不为0,定时器减一,直到为零。为0后定时器重新赋值间隔时间,并置任务执行标志。

在main函数里面判断任务执行标志,并执行响应函数。

3.2.2 按键模块
机械式按键在按下或释放时,会因机械弹性作用产生抖动,持续时间约为5-10ms。在此期间检测按键的通与断可能导致判断出错,需要采取消抖措施。如下图,消抖方法分为硬件消抖和软件消抖,硬件消抖就是在按键上并联一个电容,利用电容的充放电特性对抖动过程中产生的电压毛刺进行平滑处理,从而实现消抖。软件消抖可以采用延时或者循环检测的方式去掉后沿抖动。

该程序采用状态机方式处理点触按键,根据不同按键状态执行不同操作,实现更灵活高效的控制方式。状态机设计可精确处理每个按键动作,确保操作准确可靠。
状态机的四要素
现态:状态机当前状态。
触发条件:改变当前状态的发生条件。
动作:状态改变产生相应的动作。
次态:状态机激活触发条件后跳转到的下一状态。


3.2.3 PT100采集模块
PT100采集模块使用了一种高效且可靠的方法来获取温度值。该模块通过查表的方式得到实际温度值,将采集到的电压信号转换成电阻值,然后根据这个电阻值查询预先设定的表格,从而得到准确的温度读数。这种方法不仅简化了处理过程,而且提高了测温的精度和响应速度。

3.2.4 PID算法
该程序采用了增量式PID算法进行控制。增量式PID算法是一种常用的控制算法,其显著特点在于将积分环节的累积作用进行了替换,从而避免了积分环节对计算性能和存储空间的过多占用。该算法根据当前误差和上一次误差的差值来计算控制量的增量。该算法由三个组成部分:比例环节、积分环节和微分环节。比例环节根据当前误差计算出比例输出,积分环节根据当前误差和历史误差的累加值计算出积分输出,微分环节根据当前误差和历史误差的差值计算出微分输出。虽然增量式PID算法具有响应速度快的优点,但需要保存上一次的误差值,因此容易受到累计误差的影响。


在工业控制领域,PID参数的调试是非常重要的。PID控制器是一种常用的控制算法,它根据误差信号和过去的状态来调整控制输出,以实现对于特定过程的精确控制。
通过串口调试PID参数,可以实现对控制系统的精细调整,以达到更好的控制效果。在进行串口调试时,需要使用特定的工具或软件,以便向控制系统发送命令并接收反馈信息。

四、资料获取
具体源代码和原理图可以前往嘉立创-硬创社搜索“智能温控器”。
-
单片机
+关注
关注
6044文章
44634浏览量
639573 -
PID算法
+关注
关注
2文章
172浏览量
24426 -
PID
+关注
关注
36文章
1473浏览量
85959 -
温度控制器
+关注
关注
1文章
178浏览量
33904 -
Pt100
+关注
关注
9文章
172浏览量
69322
发布评论请先 登录
相关推荐
如何使用DSP进行数字PID控制器的设计

评论