让工业温控更智能——GD32 +模糊PID+ MODBUS全栈解决方案
实验题目:让工业温控更智能——GD32 +模糊PID+ MODBUS全栈解决方案
课程简要信息
课程名称:单片机系统综合设计与实践
课程学时:40学时
项目学时:40(线下)
适用专业:自动化、电气工程及其自动化、物联网工程
学生年级:本科三年级,下学期
实验内容与任务(限500字,可与“实验过程及要求”合并)
本课程是“单片机系统综合设计与实践”,其前续课程是“单片机原理与应用技术”。以创新应用人才为培养目标,以提升工程设计能力为核心,建立了“阶梯式”单片机学习体系,分级递进式开设实践课程。在前续课程中学生已经在开发板上系统学习过32单片机的基本编程,本课程以工程上常用的温控系统为切入点,增加工程性、探究性和综合性。
项目以GD32单片机、K型热电偶、CS1237模数转换芯片、加热块构成温控装置,设计一个能够控制加热块的温度达到设定温度(20-200℃)、测量精度不低于±0.5℃的温度控制系统。系统包括上位机和下位机两部分,下位机为基于单片机的温控器,上位机为PC机,可显示当前温度,也可给下位机发送温度的设定值。上位机和下位机之间经由 RS485 接口传输数据,通过MODBUS-RTU协议进行通信,包括如下任务:
(1)编写CS1237模数转换芯片的驱动程序,掌握基于K型热电偶的温度采集流程;
(2)理解PID算法中P、I、D三个参数的作用和调试方法;
(3)编写PID参数自整定程序;
(4)理解模糊PID的原理,编程实现模糊PID算法;
(5)编程实现MODUBS通信协议;
(6)进行上位机和下位机的MODBUS通信联调。
实验过程及要求(限300字)
-
学习电路原理图,完成接线,搭建硬件平台。
-
学习和掌握测温芯片的编程方法。
-
启动加热块,将被控对象的波形显示在上位机上。
-
加入比例作用,研究比例系数对温度控制的影响和超调的产生。
-
增加积分作用,研究积分系数对温度控制的影响。
-
再增加微分作用,研究微分系数对温度控制的影响与超调的抑制。
-
学习和掌握位置式PID和参数自整定方法,利用整定出来的参数开展位置式PID实验。
-
模糊PID的实验过程及其分析,包括模糊子集的构建、建立模糊规则、由模糊规则建立模糊规则表、模糊推理和清晰化以及将模糊控制得到的PID参数运用于实际对象时的实验结果分析。
-
编程实现MODBUS通信,完成上位机和下位机的联合调试。
相关知识及背景(限150字)
项目背景:
基于热电偶的温控器广泛用于工业现场,PID算法高效实用,但PID参数整定是一个难题。由于工业互联网的发展,MODBUS广泛应用于上下位机的通信、多设备组网等场合。把这些技术融入一个从上位机到下位机的综合温控项目,能提升学生全链开发和系统集成能力。
相关知识:
- GD32 原理与编程
2)温度测量与控制
3)PID控制算法(参数自整定、模糊控制算法)
4)MODBUS通信协议
实验环境条件
(1)硬件资源:
1)GD32F103C8T6单片机开发板(集成电源转换模块、热电偶数字转换器CS1237、485接口、传感器接口、加热棒接口)
2)热电偶
3)加热棒
4)铜块
5)USB转485模块
6)一对多USB转接头
7)ST-Link调试和编程工具
8)220V电源线
系统硬件资源实物图如图1所示。

图1 硬件资源
(2)软件资源:
1)STM32CubeMx,生成工程
2)MDK5,编译程序
3)ST-Link驱动,程序下载
4)Vofa+,串口调试助手
5) MODUBS POLL,主站调试工具,配合实际硬件进行通信实验。
教学目标与目的(限150字)
通过工业级温度控制实例,在完整的工程项目中系统讲授和实践PID控制原理及实施方法,划分功能边界,上位机执行非实时任务,下位机执行实时任务,帮助学生理解分层控制系统架构,结合自动控制原理(PID调参)、通信协议(MODBUS)、嵌入式开发、软件工程等多领域知识,积累全链路调试经验,培养工程系统化思维和软硬件协同开发能力。
教学设计与实施进程
(1)教学设计
依据课程标准、岗位需求及学情分析结果,在完整的工程项目实现过程中,从知识、技能、素养三方面确定了“智能温控器”实验项目的教学目标,依据教学目标进行教学具体设计。
知识层面:引导学生掌握单片机内部资源的使用方法、传感器技术、数据显示方法以及PID控制方法实现的多样性,并能根据工程需求比较和选择技术方案。通信方面,让学生在理解硬件接口,通信参数配置和报文格式的基础上,通过编程实现完整的协议栈,并且通过上下位机联动,直观感受到通信的实现。
技能层面:引导学生根据需要选择元器件、设计电路、编写程序,对元器件进行模块化编程并能完成从分步调试到软硬件综合联合调试,通过上位机图形界面实时查看控制进程,及时排故调试,最终经过分析得出项目的功能评价。
素养层面:提升学生规范化编程、接口设计与协作能力,自主探究和故障排除的能力以及严谨求实、精益求精的工匠精神。
(2)实施进程
教学形式为线下教学,但由于课程知识内容多、可拓展、易思辨,故实际采用混合式教学,课前将预习视频放在学校SPOC教学平台,进行线上提前引导,学时自主安排学习时间,采用延迟互动,无实时反馈。正式上课时则采用线下同步的方式,师生在同一时间地点集中授课。有实时反馈,采用课堂实战、小组竞赛教学形式,课后线下异步教学,学生需要在固定实验室,自主复习并完成实验任务。最后线下同步进行成果展示和答辩总结。按照布鲁姆教育目标,以学生为中心,通过分层目标设计,系统化提升学生的认知和实践能力,完成从低阶思维到高阶创新性思维的递进。教学实施过程如图2所示。

图2 教学实施过程
课前线上引导:
教师提前录制的在线资源建设实现了大学课堂里的因材施教,传统的教学讲解以上内容至少需要60 个学时,而通过线上线下相结合的方式使在线资源“活起来、用起来”,给学生提供脚手架,满足学生的实践过程中的知识需求和技术支持,采用线上理论讲解,线下课堂实战,小组竞赛编程等方式实现了高效率的翻转教学,学生普遍反映收获大,效率高。
课堂实施递进式教学:
教学贴近生活,能实际感知温度的变化,形象思维和抽象思维相互穿插,从基本PID到参数自整定的PID,再到模糊PID实现参数在线自调整,分层递进式教学,在上位机中通过观察响应曲线,直观学习到PID参数对系统性能的影响,上位机从通信协议理论到系统集成,教学设计具有很强的层次递进性,落实了布鲁姆的教学目标,完成了从理解记忆、应用分析,甚至综合创新的完整流程,实现了高阶的教学目标。
课后复习延展,开展思辨探究:
课后通过阶段性汇报,每组展示进度,提出卡点问题,教师与其他组共同提出改进建议,让学生在博览众长,不断迭代提高中体会异常追踪、团队合作、精益求精的重要性。
实验原理及方案
(1)实验原理
单片机完成温度的采集和控制,上位机完成数据的远程监控,温控器控制结构如图 3 所示。单片机通过串口1(usart1)跟PC之间通过485接口,基于MODBUS协议进行通信,实现温度数据的上传和命令的下发。单片机通过串口3(usart3)跟PC之间进行普通的串口通信,可在PC上显示输出波形,调试PID参数。由于MODBUS通信和PID调参使用不同的串口,所以两个动作可以同时进行。通过ST-Link进行程序的烧录和调试。
图3 系统结构框图
系统电路连接如图4所示:


图4 硬件连接电路图
(2)实现方案
温度控制系统采用K型热电偶作为温度传感器,CS1237作为热电偶的数字转换器,单片机读取传感器电路输出的数字量,判断当前的温度值,与设定值进行比较,获得偏差,输入到MCU中,通过PID 控制,输出PWM 信号,控制加热棒的工作时间,对温度进行调控。通过串口usart3在伏特加软件上读取当前的控制参数、PID各参量的输出以及温度数据和波形,分析并改善系统的控制性能。通过MODBUS协议,经由串口usart1,在上位机显示温度的当前值,并下发温度的目标值。
温度数据的采集和读出:
热电偶的数据经过滤波后,进入CS1237数字转换器,CS1237集成ADC进行温度数据采集,通过SPI接口与GD32单片机通信。CS1237板载可编程增益放大器,可提供放大功能,且内部自带一个温度传感器,可用于测量冷端温度进行冷端补偿。补偿方法为:将冷端温度转换为对应的电压,将冷端电压与测量到的热电偶电压相加,最后将冷端电压与热电偶电压之和通过查表法转换为热电偶的工作端结温。根据CS1237的数据手册,阅读CS1237的各寄存器,根据寄存器各位的含意和工作时序来编写程序进行温度转换。完成数字转换器CS1237的底层驱动文件的编写后,计算出工作端的温度,供主函数调用。
温度的控制:
通过加热棒来加热,冷却为自然冷却。加热棒本质上是一个电阻,上述的电路原理图4中的P6部分接入220V电源,P4部分接入加热棒,由单片机的PA1来控制加热棒电源回路的通断。当PA1为低电平时,加热回路导通;当PA1为高电平的时候,加热回路断开。当采用PID控制算法时,PID算法输出的PWM信号接入到PA1,实现占空比的动态调整。
将定时器2的通道2配置为PWM方式,预分频系数为36000-1,则计数频率为2000Hz,计数周期设为2000-1,则PWM信号的周期为1秒,选择PWM mode 2,将 PID运算的输出赋值给定时器的CCR捕获比较寄存器,则PID的输出就是一秒钟内加热棒的加热时间。
PID控制算法:
基于Ziegler-Nichols 阶跃响应法,单独使用比例调节使得PID的输出发生震荡,记录此时震荡的临界周期,然后利用公式计算出PID参数。
模糊PID控制:
传统的PID控制在面对不同工况时的适应性较差,如当误差较大时,需要较大的Kp进行修正,以便提高响应速度;而当误差较小时,较大的Kp又将造成超调和过冲现象。为解决传统PID参数适应性差的问题,可以对PID参数进行动态调整。
模糊PID的实现步骤为:
步骤1--模糊化,将输入的误差E、误差变化Ec,输出的Kp、Ki、Kd进行模糊化,即为这些物理量构建模糊子集。如图5所示,为E的模糊化过程。
步骤2--模糊推理,模糊推理的核心是计算出E和Ec的隶属度。将E和Ec子集分为7个子集,分别为负大NB、负中NM、负小NS、零ZO、正小PS、正中PM、正大PB。然后根据重心法等方法来计算E和Ec对于子集中的这些值的隶属度。
步骤3--清晰化,根据输入E和Ec的隶属度和输出值的模糊规则表,对输出值通过加权平均的方法进行清晰化。如图6所示,根据此规则表对Kp进行清晰化。
模糊PID的本质是通过输入E和Ec,从给定的Kp、Ki、Kd的范围中选择一个比较合适的值代入PID的计算公式来计算出下一次的控制信号。
图5 误差E的模糊化

图6 比例系数Kp的模糊控制规则表
MODBUS通信:
下位机软件在MDK5 开发环境中使用 C语言编写,系统上电后进行GPIO 端口、串口、定时器的初始化,之后进行 CS1237、PID结构体、NVIC中断相关参数初始化,并使得 SP3485 芯片为接收数据状态,系统采用中断方式对传感器数据进行采集,微控制器与PC之间严格遵循 MODBUS RTU 报文协议进行数据传输。在主函数循环中,微控制器用CS1237测出并计算温度数据,执行MODBUS任务,上传当前温度数据或者设定温度的目标值。定时器TIM1 用于断帧处理,在串口1的非空中断的回调函数中使能TIM1的中断,设置3.5个字符的时间为溢出时间,在TIM1中断的回调函数里置位标志位,标志已经接收到一帧数据。然后再对接收到的一帧数据进行报文解析,检查字节数、从站地址、校验和是否正确,然后根据功能码的类型,执行相应的任务。如果是03功能码,则是上位机向下位机索取温度数据,如果是06功能码,则是上位机下发温度控制数据给下位机。下位机接收报文后解析数据,再次封装数据向上位机返回应答报文。实现流程如图7所示。
图7 MODBUS通信协议实现流程
在Modbus Poll主站调试软件中,发送报文功能码为03和06的报文,完成温度的监控。
实验报告要求
实验报告需要重点反映以下内容:
1)实验需求分析及任务要点实现方案论证;
2)硬件电路接线,注意安全和规范;
3)理论推导和参数计算;
4)程序设计流程图及主要程序代码,代码需规范;
5)软硬联调,测试和记录数据,计算误差;
6)实验数据分析和调试排故;
7)实验结果总结。
考核要求与方法(限300字)
课前预习:线上学习情况占10%,通过SPOC平台上视频的观看情况,核心内容的在线测验与上课提问情况,看是否掌握模块的编程和使用方法,是否掌握控制算法的原理。
实验过程:占50%,根据功能与性能指标的完成程度(如温度测量精度、控制精度、通信是否成功)以及完成时间评价效果。其中实现基本功能且按时完成占45%,自主创新部分(采用其他控制方案取得更好的控制精度、从单点控制扩充到多点控制、开发个性化的上位机监控人机交互界面)占5%。
实验报告:占40%,主要考查如下两个方面:
规范性与完整性:实验报告要重点叙述自己完成的内容、采用的方法以及实验结果。
思考与分析:实验报告中是否对实验结果进行了分析研究,并给出分析结果或提出思考。
项目特色或创新(可空缺,限150字)
项目的特色在于:
1.突破传统的算法讲解无法落地的局限:从具有工程项目背景的控制任务出发,理清算法思路,基于单片机编程技术实现了各种PID控制算法,达到了工业级的控制精度。
2.完备的知识体系和实践内容,多技术融合创新:将传统PID的稳定性与模糊PID算法的自适应性相结合,提升温度控制精度;上下位机联动,在GD32上移植MODBUS协议栈,支持多设备组网和PC端跨平台通信。
3.全程采用国产芯片组:让学生掌握自主可控的技术栈,增强爱国情感。
附件1:项目实施情况

图8 实物作品


图9 学生编程现场 图10 任务答辩现场
图11 小组讨论现场

图12 指导学生利用PID算法多次获得平衡车、飞行器、机器人全国一等奖
附件2:
《单片机系统综合设计与实践》课程教学大纲
一、课程概况
| 课程目标 | 支撑毕业要求指标点 | 自动化专业具体描述(含思政融合点) | |||
|---|---|---|---|---|---|
| 课程代码 | 0108070093 | 课程性质 | 实践课 | ||
| 课程名称 | 单片机系统综合设计与实践 | 英文名称 | Microcontroller System Integration Design and Practice | ||
| 总学分 | 2.5 | 考核方式 | 考查 | ||
| 总学时 | 40 | 先修课程 | 单片机原理与应用技术 | ||
| 适用专业 | 自动化、电气工程及其自动化、物联网工程 | ||||
| 课程简介 | 《单片机系统综合设计与实践》是自动化/电气工程及其自动化/物联网工程等专业的核心实践课程。课程通过系统学习嵌入式系统(如GD32开发板)、高精度传感器(如K型热电偶)、模数信号处理模块(如CS1237)、实时控制算法(如模糊PID)、MODBUS通信等内容,使学生掌握单片机作为终端,PC机作为上位机的远程监控系统开发的完整流程与方法,为从事工业控制、智能硬件、物联网终端等领域工作奠定基础。 本课程重点讲授嵌入式C语言开发、MODBUS RTU通信协议、软硬件协同设计、系统调试优化等知识模块,着重培养学生工程实践能力、系统思维能力和团队协作能力,使其能够胜任嵌入式开发工程师、控制系统设计师等岗位要求。 在教学实施中,课程将国产芯片替代进口芯片(如GD32替代STM32)的自主创新意识、精益求精提升控制精度的工匠精神等思政元素与电路设计、算法实现、项目管理等教学环节深度融合,引导学生在“卡脖子”技术领域勇于突破,培养其规范的编程能力,提升协作精神与系统化思维模式。课程采用“项目驱动+阶梯训练”模式,以温控系统为典型载体,通过完整的“设计-实现-调试-优化”流程,强化学生解决复杂工程问题的能力。 |
||||
| 课程目标(Course Objectives, CO) | |||||
| CO1 | 能够运用单片机系统架构设计、传感器接口技术、工业通信协议(MODBUS RTU)等知识,完成嵌入式系统硬件电路设计,建立国产化芯片(如GD32)替代方案,具备在"卡脖子"技术领域实现自主可控的能力。(支撑毕业要求1.2/3.1) | ||||
| CO2 | 能运用PID控制算法,判断温度控制系统动态特性,提出参数优化策略,具备针对复杂工程问题设计实时控制解决方案的能力。(支撑毕业要求2.3/4.1) | ||||
| CO3 | 能够针对工业级温控需求,确定软硬件协同开发流程,通过模块化调试与系统集成,具备遵循工程伦理规范、解决实际工程问题的职业素养。(支撑毕业要求6.2/7.1) | ||||
| CO4 | 能设计团队协作分工方案,分析项目技术难点,验证创新性改进措施(如手机远程监控),取得可量化性能提升(如±0.5℃控温精度),具备在跨学科团队中沟通协作、持续学习的能力。(支撑毕业要求9.1/12.1) | ||||
| 二、课程目标和毕业要求指标点以及专业具体描述之间的关系 | |||||
| 目标1 (工程知识) |
1.2 掌握专业基础知识 3.1 设计/开发解决方案 |
•
能运用电路与自动控制原理,完成单片机系统硬件设计 • 在GD32国产芯片应用中体现"自主可控"技术意识 |
|||
| 目标2 (系统开发) |
2.3 设计复杂工程问题解决方案 4.1 研究分析能力 |
•
针对温控非线性特性,设计模糊PID参数自整定方案 • 通过MATLAB仿真与实物测试对比验证算法有效性 |
|||
| 目标3 (工程素养) |
6.2 工程与社会 7.1 环境与可持续发展 |
•
在系统调试中遵守电气安全规范与EMC设计准则 • 选用低功耗方案体现节能环保理念 |
|||
| 目标4 (团队创新) |
9.1 团队协作 12.1 终身学习 |
•
通过MODBUS协议联调培养跨岗位协作能力 • 在技术迭代中掌握Keil/MBD等工具链迁移方法 |
|||
三、教学内容、形式、要求、重点及难点
注:本课程为2周连续的实践课程,内容和学时分配按日进行:
Day 1-2:基础奠基
| 时间 | 内容 | 形式 | 要求 |
|---|---|---|---|
| 上午3h | GD32开发基础(国产芯片技术剖析) | 理论+演示 | 开发环境搭建成功 |
| 下午3h | 热电偶信号采集实验 | 分组实操 | 温度采集系统实物中完成温度采集和显示 |
| 思政融入 | 国产MCU替代战略行业案例分享 | 视频研讨 | 技术自主性分析报告 |
Day 3-4:通信核心
| 时间 | 内容 | 形式 | 产出物 |
|---|---|---|---|
| 上午3h | MODBUS RTU协议深度解析 | 协议分析仪实操 | 软件实现流程图 |
| 下午3h | GD32-PC数据交互系统开发 | 上位机和下位机交互调试(基于MODBUS POLL 和MODBUS SLAVE调试软件) | 双向通信系统 |
| 重点和难点 | MODBUS RTU通信协议的移植 | 软件开发 | 模块化程序 |
Day 5-7:控制进阶
| 时间 | 内容 | 形式 | 产出物 |
|---|---|---|---|
| 上午2h | PID算法讲解 | 小组仿真竞赛 | 算法仿真曲线 |
| 下午4h | 温控系统实物调试 | 阶梯式挑战 | 动态性能测试数据 |
| 创新点 | 添加超调抑制策略(加分项) | 自主探索 | 优化算法代码 |
Day 8-9:系统集成
| 时间 | 内容 | 形式 | 产出物 |
|---|---|---|---|
| 全天6h | 综合项目冲刺开发 | 综合实战 | 完整系统原型 |
| 验收标准 | 1. 控温精度±0.5℃ 2. 抗干扰测试通过 |
教师巡查 | 系统稳定性报告 |
Day 10:成果展示
| 内容 | 考核要点 | 支撑材料要求 |
|---|---|---|
| 系统功能演示 | 控温精度、通信稳定性 | 测试视频+原始数据记录 |
| 分组答辩(每组20min) | 技术路线合理性 | PPT/代码注释/设计文档 |
| 评委质询 | 问题解决能力 | 答辩记录表 |
| 交叉互评 | 团队协作意识 | 互评打分表 |
| 总结反馈 | 持续改进方案 | 课程改进建议书 |
四、教学内容对课程目标和毕业要求的支撑关系
1. 温度的测量
(1)教学内容:GD32开发基础、传感器接口设计、加热电路设计。
(2)教学重难点:通过热电偶信号调理电路设计,掌握模拟电路知识;通过阅读和理解CS1237模数转换芯片的数据手册,理解和掌握时序关系,并转换成编程语言。通过PWM控制加热,加上闭环控制的思想实现节能和精确控制。
(3)所支撑的课程目标为目标1(工程知识)和目标3(工程素养),支撑毕业要求1.2(掌握专业基础知识)和6.2(工程与社会)以及7.1(环境与可持续发展)
2. PID控制算法
(1)教学内容:闭环控制原理、比例积分和微分环节的背景及意义,模糊PID自适应调整参数的方法。
(2)教学重难点:针对温控非线性特性设计自适应算法,模糊PID控制算法、系统调试技术。
(3)所支撑的课程目标为目标1(工程知识)和目标2(系统开发),所支撑的毕业要求为2.3(设计复杂工程问题解决方案)以及4.1(研究分析能力)
3. 工业通信协议
(1)教学内容:在MODBUS RTU协议报文
(2)教学重难点:在协议移植过程中理解数字通信原理
(3)所支撑的课程目标为目标1(工程知识),所支撑的毕业要求为1.2(掌握工程知识)和3.1(设计/开发解决方案)
4. 团队协作和综合调试
(1)教学内容:分工合作,综合调试,通过Git协作记录验证分工合理性,分组项目开发、答辩互评。
(2)教学重难点:课程优秀项目展示、交流与评价,在展示与评审过程中培养沟通能力。
(3)所支撑的课程目标为目标目标3(工程素养)和4(团队创新),所支撑的毕业要求9.1(团队协作)和12.1(终身学习)
五、课程成绩评定
本课程为考查课,成绩构成如下:
课前预习:线上学习情况占10%,通过SPOC平台上的测验与上课提问情况,是否掌握模块的编程和使用方法,是否掌握控制算法的原理。
实验过程:占50%,根据功能与性能指标的完成程度(如温度测量精度、控制精度、通信是否成功)以及完成时间评价效果。其中实现基本功能且按时完成占45%,自主创新部分(采用其他控制方案取得更好的控制精度、从单点控制扩充到多点控制、开发个性化的上位机监控人机交互界面)占5%。
实验报告:占40%,根据文档论证的充分性、书写的规范性、个人贡献率等综合评定。主要考查如下两个方面:实验报告的规范性与完整性,实验报告要重点叙述自己完成的内容、采用的方法以及实验结果;思考与分析,实验报告中是否对实验结果进行了分析或研究,并给出分析结果或提出思考。
六、参考书目和资料
[1]自编讲义
[2]MODBUS协议标准
[3]CS1237数据手册
附件3:学生课程报告
92分
单片机系统综合设计与实践
课程报告
| 作品名称 | 让工业温控更智能——GD32 +模糊PID+ MODBUS全栈解决方案 |
| 团队名称 | 微芯探索队 |
| 团队成员 | |
二〇二四年六月
目 录
[1. 摘要(5分) - 1 -](file:///E:/田莉讲课比赛/第十届全国高校电工电子基础课程实验教学案例设计竞赛/2025年/(去标志)课程报告%20-%20副本.doc#_Toc18632)
[2. 团队名称及分工(5分) - 1 -](file:///E:/田莉讲课比赛/第十届全国高校电工电子基础课程实验教学案例设计竞赛/2025年/(去标志)课程报告%20-%20副本.doc#_Toc3253)
[3.设计方案论证(10分) - 1 -](file:///E:/田莉讲课比赛/第十届全国高校电工电子基础课程实验教学案例设计竞赛/2025年/(去标志)课程报告%20-%20副本.doc#_Toc4831)
[3.1 系统架构选择 - 1 -](file:///E:/田莉讲课比赛/第十届全国高校电工电子基础课程实验教学案例设计竞赛/2025年/(去标志)课程报告%20-%20副本.doc#_Toc14401)
[3.2 主控芯片选型 - 2 -](file:///E:/田莉讲课比赛/第十届全国高校电工电子基础课程实验教学案例设计竞赛/2025年/(去标志)课程报告%20-%20副本.doc#_Toc22375)
[3.3 温度传感器选型 - 2 -](file:///E:/田莉讲课比赛/第十届全国高校电工电子基础课程实验教学案例设计竞赛/2025年/(去标志)课程报告%20-%20副本.doc#_Toc26431)
[3.4 ADC芯片选型 - 3 -](file:///E:/田莉讲课比赛/第十届全国高校电工电子基础课程实验教学案例设计竞赛/2025年/(去标志)课程报告%20-%20副本.doc#_Toc24141)
[3.5 控制算法选择 - 3 -](file:///E:/田莉讲课比赛/第十届全国高校电工电子基础课程实验教学案例设计竞赛/2025年/(去标志)课程报告%20-%20副本.doc#_Toc31252)
[3.6 通信协议选择 - 3 -](file:///E:/田莉讲课比赛/第十届全国高校电工电子基础课程实验教学案例设计竞赛/2025年/(去标志)课程报告%20-%20副本.doc#_Toc1504)
[3.7 最终方案总结 - 4 -](file:///E:/田莉讲课比赛/第十届全国高校电工电子基础课程实验教学案例设计竞赛/2025年/(去标志)课程报告%20-%20副本.doc#_Toc24393)
[4. 理论分析与计算(15分) - 4 -](file:///E:/田莉讲课比赛/第十届全国高校电工电子基础课程实验教学案例设计竞赛/2025年/(去标志)课程报告%20-%20副本.doc#_Toc31818)
[4.1 热电偶信号处理 - 4 -](file:///E:/田莉讲课比赛/第十届全国高校电工电子基础课程实验教学案例设计竞赛/2025年/(去标志)课程报告%20-%20副本.doc#_Toc32460)
[4.2基本PID控制算法 - 4 -](file:///E:/田莉讲课比赛/第十届全国高校电工电子基础课程实验教学案例设计竞赛/2025年/(去标志)课程报告%20-%20副本.doc#_Toc6420)
[4.3 PID自整定算法 - 4 -](file:///E:/田莉讲课比赛/第十届全国高校电工电子基础课程实验教学案例设计竞赛/2025年/(去标志)课程报告%20-%20副本.doc#_Toc18752)
[4.4模糊PID控制 - 5 -](file:///E:/田莉讲课比赛/第十届全国高校电工电子基础课程实验教学案例设计竞赛/2025年/(去标志)课程报告%20-%20副本.doc#_Toc20061)
[5. 电路与程序设计(25分) - 6 -](file:///E:/田莉讲课比赛/第十届全国高校电工电子基础课程实验教学案例设计竞赛/2025年/(去标志)课程报告%20-%20副本.doc#_Toc1555)
[5.1 硬件电路 - 6 -](file:///E:/田莉讲课比赛/第十届全国高校电工电子基础课程实验教学案例设计竞赛/2025年/(去标志)课程报告%20-%20副本.doc#_Toc12797)
[5.2 软件设计 - 6 -](file:///E:/田莉讲课比赛/第十届全国高校电工电子基础课程实验教学案例设计竞赛/2025年/(去标志)课程报告%20-%20副本.doc#_Toc31886)
[5.2.1温度测量 - 6 -](file:///E:/田莉讲课比赛/第十届全国高校电工电子基础课程实验教学案例设计竞赛/2025年/(去标志)课程报告%20-%20副本.doc#_Toc7072)
[5.2.2 PID闭环控制 - 7 -](file:///E:/田莉讲课比赛/第十届全国高校电工电子基础课程实验教学案例设计竞赛/2025年/(去标志)课程报告%20-%20副本.doc#_Toc17677)
[5.2.3 MODBUS通信 - 8 -](file:///E:/田莉讲课比赛/第十届全国高校电工电子基础课程实验教学案例设计竞赛/2025年/(去标志)课程报告%20-%20副本.doc#_Toc27658)
[6. 测试方案与测试结果(20分) - 9 -](file:///E:/田莉讲课比赛/第十届全国高校电工电子基础课程实验教学案例设计竞赛/2025年/(去标志)课程报告%20-%20副本.doc#_Toc10167)
[6.1 测试方案 - 9 -](file:///E:/田莉讲课比赛/第十届全国高校电工电子基础课程实验教学案例设计竞赛/2025年/(去标志)课程报告%20-%20副本.doc#_Toc21363)
[6.2 测试结果 - 9 -](file:///E:/田莉讲课比赛/第十届全国高校电工电子基础课程实验教学案例设计竞赛/2025年/(去标志)课程报告%20-%20副本.doc#_Toc8679)
[7. 遇到的问题及解决方法(10分) - 10 -](file:///E:/田莉讲课比赛/第十届全国高校电工电子基础课程实验教学案例设计竞赛/2025年/(去标志)课程报告%20-%20副本.doc#_Toc14275)
[8. 总结与心得体会(5分) - 10 -](file:///E:/田莉讲课比赛/第十届全国高校电工电子基础课程实验教学案例设计竞赛/2025年/(去标志)课程报告%20-%20副本.doc#_Toc20470)
[8.1 总结 - 10 -](file:///E:/田莉讲课比赛/第十届全国高校电工电子基础课程实验教学案例设计竞赛/2025年/(去标志)课程报告%20-%20副本.doc#_Toc8633)
[8.2 心得体会 - 10 -](file:///E:/田莉讲课比赛/第十届全国高校电工电子基础课程实验教学案例设计竞赛/2025年/(去标志)课程报告%20-%20副本.doc#_Toc9801)
[9. 参考文献(5分) - 11 -](file:///E:/田莉讲课比赛/第十届全国高校电工电子基础课程实验教学案例设计竞赛/2025年/(去标志)课程报告%20-%20副本.doc#_Toc4163)
[]{#_Toc18632 .anchor}1. 摘要(5分)
温度控制在工业生产和科学实验中具有广泛的应用,如半导体制造、食品加工、材料热处理等。传统的PID控制方法在非线性、时变系统中往往难以达到理想的控制效果,而模糊PID控制结合了模糊逻辑的自适应性和PID控制的稳定性,能够更好地应对复杂环境下的温度调节需求。
本实验设计并实现了一套基于模糊PID算法的温度控制系统,采用上下位机架构:上位机为PC机,通过MODBUS RTU协议与下位机通信;下位机采用GD32单片机,结合K型热电偶和CS1237高精度模数转换器采集温度数据,并利用模糊PID算法动态调节PWM输出,控制加热元件使铜块温度稳定在设定值。系统通过MODBUS POLL软件实现温度数据的实时监测和设定值的远程调整。
测试表明,该系统在稳态误差(±0.4℃以内)、超调量(<5%)和调节时间(<60s)等方面表现良好,能够满足高精度温度控制的需求。相比传统PID控制,模糊PID算法在动态响应和抗干扰能力上具有明显优势。
本系统可进一步优化并应用于以下领域:工业自动化:如恒温箱、回流焊机等设备的温度控制。实验室研究:材料热处理、化学反应过程温度监测。智能家居:恒温热水器、地暖系统的精准调节。未来可通过引入更先进的控制算法(如神经网络PID)和无线通信技术(如Wi-Fi或LoRa)提升系统的智能化水平和适用场景。
关键词:模糊PID,K型热电偶,CS1237,GD32,MODBUS RTU
[]{#_Toc3253 .anchor}2. 团队名称及分工(5分)
团队名称:微芯探索队
表1 团队成员及分工
| 姓名 |
|
|
|
贡献率 |
| 张伟 |
|
2023016112 | 系统方案设计、模糊PID算法实现 | 40% |
| 钱浩 |
|
2023016115 | 硬件电路设计、CS1237模数转换程序的开发 | 30% |
| 孙子航 |
|
2023016109 | MODBUS通信协议的软件开发,以及上位机MODBUS POLL配置、数据可视化及测试 | 30% |
说明:贡献率根据各成员实际工作量和工作难度综合评定,组长张伟负责整体协调和关键算法实现,贡献率最高。
[]{#_Toc4831 .anchor}
3.设计方案论证(10分)
[]{#_Toc14401 .anchor}3.1 系统架构选择
|
|
|
选择结果 |
|---|---|---|---|
| 上下位机结构(当前方案) | 分工明确,PC端数据处理能力强;适合复杂算法调试 | 依赖通信协议,实时性略低 | ✓ 采用 |
| 纯嵌入式单机控制 | 实时性高,无需通信延迟 | 调试困难,缺乏数据可视化能力 | ✗ 淘汰 |
| 云端远程控制 | 支持远程监控,扩展性强 | 依赖网络稳定性,开发复杂度高 | ✗ 淘汰 |
**选择依据:**实验需要实时数据监控和算法调试,上下位机结构最符合需求。
[]{#_Toc22375 .anchor}3.2 主控芯片选型
|
|
|
|
|---|---|---|---|
| GD32F103CBT6(当前方案) | 性价比高(STM32同架构),主频72MHz,外设丰富 | 社区资源略少于STM32 | ✓ 采用 |
| STM32F103 | 生态完善,资料多 | 价格较高(缺货时溢价严重) | ✗ 淘汰 |
| ESP32 | 集成Wi-Fi/蓝牙,适合物联网 | 实时性较差,ADC精度低(12位) | ✗ 淘汰 |
| Arduino Uno | 开发简单,适合快速原型 | 性能弱(8位AVR,16MHz) | ✗ 淘汰 |
选择依据:
性能需求:模糊PID算法需要较高计算能力(GD32F103CBT6的Cortex-M4内核满足);
成本控制:GD32相比STM32同型号价格低30%~50%;
外设匹配:需支持PWM输出、UART(MODBUS)、SPI(CS1237通信)等外设。
[]{#_Toc26431 .anchor}3.3 温度传感器选型
|
|
|
|
|---|---|---|---|
| K型热电偶(当前方案) | 测温范围宽(-200~1200℃),成本低 | 需冷端补偿,信号微弱需放大 | ✓ 采用 |
| PT100铂电阻 | 精度高(±0.1℃),线性度好 | 成本高,响应速度较慢 | ✗ 淘汰 |
| DS18B20数字传感器 | 直接数字输出,无需ADC | 测温范围窄(-55~125℃) | ✗ 淘汰 |
**选择依据:**K型热电偶在成本、量程和响应速度上综合最优,适合实验室环境。
[]{#_Toc24141 .anchor}3.4 ADC芯片选型
|
|
|
选择结果 |
|---|---|---|---|
| CS1237(当前方案) | 24位高精度,低噪声,性价比高 | 需外置基准电压 | ✓ 采用 |
| ADS1256 | 32位超高精度,集成PGA | 价格昂贵(约CS1237的5倍) | ✗ 淘汰 |
| STM32内置ADC | 无需外置芯片,节省成本 | 精度低(12位),易受干扰 | ✗ 淘汰 |
**选择依据:**CS1237在精度和成本间取得最佳平衡,满足热电偶信号采集需求。
[]{#_Toc31252 .anchor}3.5 控制算法选择
|
|
|
选择结果 |
|---|---|---|---|
| 模糊PID(当前方案) | 自适应参数调整,抗干扰能力强 | 算法复杂度高,需调试规则库 | ✓ 采用 |
| 传统PID | 实现简单,计算量小 | 参数固定,应对非线性系统效果差 | ✗ 淘汰 |
| ON/OFF控制 | 极简实现,无超调 | 控制精度低,温度波动大 | ✗ 淘汰 |
**选择依据:**铜块温度控制具有非线性特性,模糊PID能显著提升动态性能。
[]{#_Toc1504 .anchor}3.6 通信协议选择
| 方案 | 优点 | 缺点 | 选择结果 |
|---|---|---|---|
| MODBUS RTU(当前) | 工业标准,抗干扰强,兼容性好 | 需硬件转换(RS485) | ✓ 采用 |
| UART直接通信 | 无需协议栈,开发简单 | 传输距离短(<1m),易受干扰 | ✗ 淘汰 |
| Wi-Fi通信 | 无线连接,扩展性强 | 延迟高,需额外射频模块 | ✗ 淘汰 |
**选择依据:**MODBUS RTU在可靠性和传输距离上最适合实验室有线控制场景。
[]{#_Toc24393 .anchor}3.7 最终方案总结
通过多方案对比,当前系统选择:
1.上下位机架构(PC+GD32);
2.K型热电偶+CS1237信号链;
3.模糊PID控制算法;
4.MODBUS RTU通信。
综合优势:
1、在成本、精度、实时性和扩展性之间取得最优平衡;
2、满足实验室环境下对温度控制的稳定性与调试需求。
系统最终设计结构为:
上位机(PC):通过MODBUS POLL软件发送设定温度并实时显示当前温度。
下位机(GD32):采集K型热电偶信号,经CS1237 ADC转换后,采用模糊PID算法计算控制量,驱动加热元件调节铜块温度。
[]{#_Toc31818 .anchor}4. 理论分析与计算(15分)
[]{#_Toc32460 .anchor}4.1 热电偶信号处理
K型热电偶输出微伏级电压,需经冷端补偿和放大:
Vout=Vthermo+Vcomp (1)
其中,Vcomp为冷端补偿电压(由CS1237内部的温度传感器测量环境温度计算)。
[]{#_Toc6420 .anchor}4.2基本PID控制算法
加入比例积分和微分控制之后,PID控制器的输出为:
out = Kp*E(k)+ Ki *(E(k) + E(k -1) + E(k -2) +....)+ Kd * ΔEk/Δt (2)
式2中,Kp 是比例系数,Ki为积分系数,Kd微分系数,E(k)=Sv - Pv(k),Sv 代表目标温度值,Pv (k)代表第K次测量温度值。ΔEk = lastPv - Pv 为前后相邻两次测量出的温度的差(温度的变化),Δt 为前后两次测量的时间差。lastPv 为上一次测量出的温度,Pv为当前测量出来的温度。
[]{#_Toc18752 .anchor}4.3 PID自整定算法
位置式PID的输出公式为:

(3)
将其离散化为:
(4)
即:
(5)
(6)
由于T是设定好的,所以对于位置式PID,最重要的是确定好Kp、Ti和Td。
用Z-N整定法来整定,先让系统起振,通过振荡信号确定临界周期Tc,然后再根据临界周期计算Ti和Td,它们的关系为:
(7)
(8)
(9)
其中,Kp_0为输出震荡时的比例系数,Tc为震荡时的临界周期。
自整定的核心是在设定温度处,单独使用适当的Kp_0使得PID的输出发生震荡,记录此时震荡的临界周期,然后使用上述公式计算出设定温度处的PID参数。
[]{#_Toc20061 .anchor}4.4模糊PID控制
传统的PID控制在面对不同工况时的适应性较差,如当误差较大时,需要较大的Kp进行修正,以便提高响应速度;而当误差较小时,较大的Kp又将造成超调和过冲现象。为解决传统PID参数适应性差的问题,可以对PID参数进行动态调整。使用模糊算法动态调整PID参数的算法叫做模糊PID算法,结构如图1所示。
模糊控制器
加热棒
PID控制器
传感器
测量值
目标值
dE/dt
E
Kp
Ki
Kd
输出PWM
Ec
图1 模糊PID的结构框图
本实验中,将E设定为目标值-测量值,即
(11)
其中Pv为测量值,Sv为目标值。
将误差变化Ec设定为上一次的测量值-当前测量值,即
(12)
其中lastPv为上一次的测量值,Pv为当前测量值。
模糊PID的实现步骤为:
步骤1--模糊化,将输入的误差E、误差变化Ec,输出的Kp、Ki、Kd进行模糊化,即为这些物理量构建模糊子集。
步骤2--模糊推理,模糊推理的核心是计算出E和Ec的隶属度。将E和Ec子集分为7个子集,分别为负大NB、负中NM、负小NS、零ZO、正小PS、正中PM、正大PB。然后根据重心法等方法来计算E和Ec对于子集中的这些值的隶属度。
步骤3--清晰化,根据输入E和Ec的隶属度和输出值的模糊规则表,对输出值进行清晰化。
过程欠详细
-4分
[]{#_Toc1555 .anchor}5. 电路与程序设计(25分)
[]{#_Toc12797 .anchor}5.1 硬件电路
数据采集模块主要包括以 GD32 微控制器为核心的数据收发控制单元;以 SP3485 芯片和USB转串口芯片ATK-MO340P(支持USB转485)为核心的RS485 通信单元;以K型热电偶和CS1237模数转换芯片为核心的温度数据检测单元,以铜块为被控对象,内置加热棒作为温度调节装置,温度降低的方式为自然冷却。
数据采集和控制系统的整体硬件设计框架图如图 2 所示。
缺少硬件原理图以及原理图分析 -4分
图2 系统整体设计框图
[]{#_Toc31886 .anchor}5.2 软件设计
[]{#_Toc7072 .anchor}5.2.1温度测量
热电偶由两根不同金属制成的引线构成,引线焊接在一起形成的结点A,作为热端,接入被测物体中,引线的末端连接到单片机电路板B点,当A、B两点之间的温度不同时,在回路中就会产生对应的热电电压,根据热电电压计算温度,二者是非线性的,并取决于冷端温度。由于多项式拟合的计算量大,本文使用查表法确定温度。另外热电偶电压非常小,需要放大提高测量精度,本文使用CS1237集成ADC进行温度数据采集,通过SPI接口与GD32单片机通信。CS1237板载可编程增益放大器,可提供放大功能,且内部自带一个温度传感器,可用于测量冷端温度进行冷端补偿。补偿方法为:将冷端温度转换为对应的电压,将冷端电压与测量到的热电偶电压相加,最后将冷端电压与热电偶电压之和转换为热电偶的工作端结温。流程图如图3所示。

图3 温度数据采集处理流程
[]{#_Toc17677 .anchor}5.2.2 PID闭环控制
CS1237AD模块测出温度的当前值,与给定值作比较,将差值进行比例积分和微分计算。PID的输出以PWM的形式控制加热棒电源的导通时间。如图4所示。

图4 PID闭环控制框图
具体实施方式为:加热棒由PA1控制。将定时器2的通道2配置为PWM方式,预分频系数为36000-1,计数周期设为2000-1,则PWM信号的周期为1秒,选择PWM mode 2,将 PID运算的输出赋值给定时器的CCR捕获比较寄存器,则PID的输出就是一秒钟内加热棒的加热时间。
[]{#_Toc27658 .anchor}5.2.3 MODBUS通信
下位机软件在MDK5 开发环境中使用 C语言编写,系统上电后进行GPIO 端口、串口、定时器的初始化,之后进行 CS1237、PID结构体、NVIC中断相关参数初始化,并使得 SP3485 芯片为接收数据状态,系统采用中断方式对传感器数据进行采集,微控制器与PC之间严格遵循 Modbus RTU 报文协议进行数据传输。在主函数循环中,微控制器用CS1237测出并计算温度数据,执行MODBUS任务,上传温度数据或者设定温度数据。定时器TIM1 用于断帧处理,串口1非空中断的回调函数中使能TIM1的中断,设置3.5个字符的时间为溢出时间,在TIM1中断的回调函数里置位标志位,标志接收到一帧数据。下位机MODBUS程序设计流程图如图5 所示。对接收到的一帧数据进行报文解析,看字节数、从站地址、校验和是否正确,然后根据功能码的类型,执行相应的任务。如果是03功能码,则是上位机向下位机索取温度数据,如果是06功能码,则是上位机下发温度数据给下位机。下位机执行相应操作后向上位机返回应答报文。

图5 MODBUS通信流程图
[]{#_Toc10167 .anchor}6. 测试方案与测试结果(20分)
[]{#_Toc21363 .anchor}6.1 测试方案
静态测试:固定设定温度(如50℃),观察稳态误差。
动态测试:阶跃响应(30℃→70℃),记录超调量和调节时间。
[]{#_Toc8679 .anchor}6.2 测试结果
| 设定温度(℃) | 稳态误差(℃) | 超调量(%) | 调节时间(s) |
|---|---|---|---|
| 50 | ±0.3 | 2.5 | 45 |
| 70 | ±0.4 | 3.1 | 50 |
在上位机监测到当前的温度值为20.9414度。如图6所示。

图6 上位机获取当前温度值
将目标温度设定为60度,如图7所示。

图7 上位机发送温度设定值
在VOFA+软件中,观察到波形如图8所示,右侧数据从上到下显示的是温度的设定值,实际值,PID的总输出,比例输出,积分输出和微分输出,可根据实际波形的变化趋势实时调整PID的参数。加热过程稳定时间1分钟,散热过程稳定时间为5分钟。系统稳定误差维持在0.2度之内。

图8 温度控制结果
[]{#_Toc14275 .anchor}7. 遇到的问题及解决方法(10分)
问题1:热电偶信号噪声大。
解决:增加硬件滤波(RC低通)及软件均值滤波。
问题2:MODBUS通信丢包。
解决:调整波特率(9600→19200)并优化校验机制。
问题3:模糊PID参数整定困难。
解决:采用试凑法结合MATLAB仿真优化。
[]{#_Toc20470 .anchor}8. 总结与心得体会(5分)
[]{#_Toc8633 .anchor}8.1 总结
本系统实现了高精度温度控制,模糊PID相比传统PID减少了超调,提升了响应精度。
[]{#_Toc9801 .anchor}8.2 心得体会
这门课终于结束了。说实话,整个过程对我们三个人来说并不轻松,熬了很多夜。从最开始的茫然无措,到后来勉强能跟上节奏,再到最后意外拿到了还不错的成绩,这一路走来,更像是一场和自己的较量。
我们以前没接触过这么完整的大项目,而且学单片机基础的时候发现,并不是一个擅长硬件的人,对单片机、传感器这些东西也谈不上有多少兴趣。刚开始连MODBUS协议是什么都不知道,GD32的开发环境搭建都能卡住半天,更不用说还要调试模糊PID这种听起来就头大的算法。每次实验课看着别人小组进展神速,而自己连热电偶的信号都读不准的时候,真的会怀疑自己到底适不适合学这个。
但可能就是在这种反复的失败和调试中,我慢慢摸到了一点门道。记得有一次,CS1237的ADC读数一直跳变,排查了半天才发现是PCB的地线没接好;还有模糊PID的参数整定,调了整整两天才勉强能让温度稳定下来。这些经历现在回想起来,虽然痛苦,但也让我对硬件系统有了更真实的认知——原来课本上的理论落到实际电路中,会有那么多意想不到的问题。
最后的验收成绩让我很意外。我们的系统并不完美,温度控制还有波动,通信偶尔也会丢包,但或许是因为整体方案的完整性,还是拿到了不错的评价。我知道这里面有运气的成分,毕竟和那些真正热爱硬件的同学相比,我的代码和电路都显得很“勉强”。但对我来说,能从零开始完成一个完整的温度控制系统,已经是很大的突破了。
这门课带给我们的,可能并不是对智能控制的热爱,而是一种“硬着头皮上”的韧性。我依然不觉得自己擅长这些,但至少现在,面对一个陌生的硬件项目时,我不会再像最初那样手足无措了。真心感谢老师的耐心指导,也感谢组员的合作。(写于验收结束后的深夜)
[]{#_Toc4163 .anchor}9. 参考文献(5分)
[1]刘金琨. 先进PID控制及其MATLAB仿真[M]. 电子工业出版社.
[2]MODBUS协议规范
[3]CS1237数据手册. 芯海科技. 阅 2024.6.15




