STM32的PID温控
STM32的 PID和PWM墨水温度控制系统
控制方案:
K_SENSOR热电偶作为温度传感器,50w电烙铁作为加温设备作为控制对象,预先设定一个温度值,微处理器为ARM公司Cortex-M3内核,STM32F103ZET6型号,开发板需用3.3v供电运行。采用MAX6675芯片作为K型热电偶信号调理电路,它将从热电偶读取温度值并转换为12位数字量存储在内部存储器中,其三根外部通信线与STM32开发板相连,对应SDIO_CMD、SDIO_CK、SDIO_D3,进行数据的读取传输。考虑意外断电时用户设定数据值与PID参数等的保存,采用具有断电保存数据功能的24C202芯片,将其两引脚与STM32中TIM4 CH2与TIM4 CH1相连通信,相关数据便可写入进24C202芯片进行后备保存,液晶屏作为显示温度的器件。固态继电器受控于三极管,三极管受控于光电耦合器,光电耦合器接开发板outputPB8管脚。STM32端口信号输出时经PID控制算法计算得出数据,相应的控制PB8输出电平的PWM脉冲信号宽度,通过改变PB8输出电平的高低宽度进而控制加热器的工作状态。
1 位式控制算法
1 位式控制算法输出信号只有H,L两种状态。Sv用户设定值,Pv控制对象当前值。
2 算法输出信号OUT的依据:
Pv < Sv时,信号输出H; Pv >= Sv时,信号输出L。此方式是二位式输出信号,当控制对象是1000w的加热器,用户设定值为100摄氏度,传感器反馈回来的值小于100度时,系统输出H信号加热器按照额定功率工作;当传感器反馈回来的值大于等于100度时,系统输出L信号加热器立即停止工作。
3 只考察控制对象当前的状态值
此算法使得系统只有两种输出状态,大功率运行或者完全不工作,结果导致传感器反馈回来的温度值总是在设定温度值上下浮动。特别的,,位式控制算法主要考虑现在时间控制对象的状态,控制对象加热器具有热的惯性,无法实现温度的有效控制。
2 PID控制算法
算法分析:
1 从开机以来传感器的所有采样点的数据序列
X1 、 X2 、 X3 …… …… Xk-2 、 Xk-1 、 Xk
2 分析采样点的数据序列,可挖掘三方面信息
比例控制:
若差值越大表明实际与设定值之间的偏差越大,将偏差值乘以一个系数值作为系统的输入量,则输出信号使电路导通加热时间越长;偏差值越小输入控制信号使被控对象加热工作时间越短或者不加热。例如,加热片的一个控制周期为T,利用pwm波形控制电路的导通与截止,输出信号Pout值越大则pwm波有效电平维持时间越长,反之同理。
比例控制就是根据当前偏差值比例大小输出控制信号,优点是反应快控制作用及时,其缺点在于当系统反馈值与设定值相等时,系统不输出信号处于失控状态,单纯的比例控制算法是个始终有偏差的控制算法。
②历史偏差序列
积分控制:
当历史偏差值积分结果大于0,调节器输出较强的信号;小于0,调节器输出较弱信号。只要有稳态偏差存在,调节器输出会不断变化,直到偏差值为0。但当历史积分值为0,则证明历史上系统不存在误差,却无法保证当前不存在误差。积分作用能消除单纯比例控制产生的余差,但系统的稳定性必然下降。积分作用的强弱取决于积分时间常数Ti,Ti越大,积分作用越弱,反之则越强。
③最近两次偏差相减
在微分控制中,控制器的输出与输入偏差信号的微分(即偏差的变化率)成正比关系。可减小超调量,并能在偏差信号的值变得太大之前,在系统中引入一个有效的早期修正信号,从而加快系统的动作速度,减少调节时间。微分控制反映偏差的变化率,只有当偏差随时间变化时,微分控制才会对系统起作用,而对无变化或缓慢变化的对象不起作用。因此微分控制在任何情况下不能单独与被控制对象串联使用。
3 PID算法的数学模型
4 基于STM32的PID算法
程序设计时利用C语言或汇编语言可以方便实现这个计算公式。OUT即为本次运算的结果,利用OUT可以去驱动执行机构输出对应的控制信号,例如温度控制就可以控制PWM的宽度,电磁阀就可以改变电磁线圈电流以改变阀门开度,或者是可控硅的导通角度等;这种PID算法计算出的结果(OUT值)表示当前控制器应该输出的控制量,所以称为位置式(直接输出了执行机构应该达到的状态值)。
式中:,本次偏差值;,上次偏差值;,上上此偏差值。增量式PID的计算只需要最近3次的偏差(本次偏差,上次偏差,上上次偏差),不需要处理器存储大量的历史偏差值,计算量也相对较少,容易实现。
5.STM32控制电路图设计
K型热电偶信号处理电路
温控板输出电路
- PID参数整定
PID控制器的参数整定是控制系统设计的核心内容。它是根据被控过程的特性确定PID控制器的比例系数、积分时间和微分时间的大小。PID控制器参数整定的方法很多,概括起来有两大类:一是理论计算整定法。它主要是依据系统的数学模型,经过理论计算确定控制器参数。这种方法所得到的计算数据未必可以直接用,还必须通过工程实际进行调整和修改。二是工程整定方法,它主要依赖工程经验,直接在控制系统的试验中进行,且方法简单、易于掌握,在工程实际中被广泛采用。
PID控制器参数的工程整定方法,主要有临界比例法、反应曲线法和衰减法。三种方法各有其特点,其共同点都是通过试验,然后按照工程经验公式对控制器参数进行整定。但无论采用哪一种方法所得到的控制器参数,都需要在实际运行中进行最后调整与完善。现在一般采用的是临界比例法。利用该方法进行PID控制器参数的整定步骤如下:(1)首先预选择一个足够短的采样周期让系统工作﹔(2)仅加入比例控制环节,直到系统对输入的阶跃响应出现临界振荡,记下这时的比例放大系数和临界振荡周期﹔(3)在一定的控制度下通过公式计算得到PID控制器的参数。
PID参数的设定:是靠经验及工艺的熟悉,参考测量值跟踪与设定值曲线,从而调整P\I\D的大小。PID控制器参数的工程整定,各种调节系统中P.I.D参数经验数据以下可参照:
温度T: P=2060%,T=180600s,D=3-180s
压力P: P=3070%,T=24180s,
液位L: P=2080%,T=60300s,
流量L: P=40100%,T=660s。
7 程序实现
输出高电平停止加热,IO口置为SET;输出低电平开始加热,IO口置为RESET。主函数开始执行时,第一步将液晶屏LCD初始化,显示我们想要显示的字符;把4号定时器打开,设置10ms为产生一个更新事件,将中断函数初始化把需要用到的热电偶信号调理电路初始化,让其具备控制能力;PID参数初始化时,将我们预先经过调试法得出的部分参数输入程序,设为固定值,若运行效果不理想再继续试调;PID计算函数其最终计算结果将体现在输出端口的高低电平变化中。循环函数中,不断调用温度读取函数及PID输出计算函数,核心函数为PID计算实现。
8 系统运行效果:
STM32的PID温控相关推荐
- 全新STM32 PID温控‘包括‘PID源码‘PCB‘源理图 全新自整定PID温控 STM32温控源码 … 资料参考价值较高,内含PCB+原理图+程序,内容完整。
全新STM32 PID温控'包括'PID源码'PCB'源理图 全新自整定PID温控 STM32温控源码 - 资料参考价值较高,内含PCB+原理图+程序,内容完整. 注:STM32程序使用IAR打开 注 ...
- PID温控实验平台搭建(一)——PID基础知识介绍
PID温控实验平台搭建 (一)PID基础知识介绍 (二)PID进阶知识介绍及源码分享 (三)从零开始搭建STM32温控实验平台 (四)PID温控系统代码讲解 (五)最终实验现象与总结 文章目录 前言 ...
- PID温控实验平台搭建(二)——PID进阶知识介绍及源码分享
PID温控实验平台搭建 (一)PID基础知识介绍 (二)PID进阶知识介绍及源码分享 (三)从零开始搭建STM32温控实验平台 (四)PID温控系统代码讲解 (五)最终实验现象与总结 文章目录 前言 ...
- PID温控实验平台搭建(四)——PID温控系统实验代码讲解
PID温控实验平台搭建 (一)PID基础知识介绍 (二)PID进阶知识介绍及源码分享 (三)从零开始搭建STM32温控实验平台 (四)PID温控系统代码讲解 (五)最终实验现象与总结 文章目录 前言 ...
- 基于stm32单片机智能温控风扇控制系统Proteus仿真
资料编号:103 下面是相关功能视频演示: 103-基于stm32单片机智能温控风扇控制系统Proteus仿真(源码+仿真+全套资料) 功能介绍:采用stm32单片机.ds18b20温度传感器采集温 ...
- stm32直流电机PID控制hal库(Cubemx)
stm32直流电机PID控制hal库(Cubemx),一步步手把手教你怎么配置cubemx怎么写代码. 未对pid就行深入解析,不过相信您通过配置和写代码以后大概可以知道pid的主要作用. 文章目录 ...
- STM32电机PID速度控制
2.3 STM32电机PID速度控制 之前的文章,完成了直流减速电机的PWM控制.电机测速.本篇文章,将实现电机的速度闭环控制. 在公众号:小白学移动机器人,发送:速度PID,即可获得本篇文章的STM ...
- 【DIY】使用STM32及PID算法实现一个磁悬浮玩具
今天教大家来做一个磁悬浮玩具,先上两张成品的效果图: 1)磁悬浮的基本原理 磁悬浮有下推式和上拉式两种基本形式. 所谓下推式,就是控制部分在底座上,悬浮的磁铁在上面,依靠底座从下往上的排斥磁力推动磁铁 ...
- STM32——灰度PID的使用
灰度PID 文章目录 灰度PID 一.灰度传感器背景 二.原理介绍 三.通信协议 四.传感器的调试方法 一.灰度传感器背景 世界正处在科技革命和产业革命的交汇点上,科学技术在广泛交叉和深度融合中不断创 ...
最新文章
- 高级经济师计算机水平考试,【2017上海高级经济师评审职称外语、计算机成绩不再为前置条件】- 环球网校...
- Linux交叉编译问题strace解决 signalfd.c:15: xlat/sfd_flags.h:17: error: size of array 'type name' is negative
- 9 个可以快速掌握的 Java 性能调优技巧
- 全球及中国液压磁路保护器行业发展规划与产销需求预测报告2022版
- hdu2037今年暑假不AC
- OAuth 2.0攻击方法及案例总结
- 小白学数据分析-----留存率分析_I[次日留存率突然下降了50%?]
- Windows 10 x64 安装 Visual Basic 6.0 SP6
- Kong 网关API安装部署以及应用实例----------腾云驾雾
- 2015手机网民超10亿是什么景象?
- 表情识别(四)--多网络级联表情识别
- 理解数据类型与数学运算:摄氏温度与华氏温度的相互转换
- java排序_Java实现九种排序算法3:插入排序之希尔排序
- FIT2CLOUD飞致云旗下多云管理平台完成华为FusionCompute兼容性测试
- SAR空间自回归模型
- r语言和python培训_Python 和R语言
- 求一个向量变换为另一个向量的矩阵_机器学习数学-矩阵
- ai钢笔工具怎么描线_AI: 如何用钢笔工具画曲线
- 李一男复出,能否完成一次“永不言败”的创业?
- LightOJ 1406 Assassin`s Creed
热门文章
- springboot各种集成
- ONU弱光对网速的影响
- android 图片质量,Android微信朋友圈图片不如 IOS的质量好
- 服务器三大技术架构及应用软件部署架构
- 学习EMACScript6新特性
- android打印机打印网页,如何不调用Android打印预览页面去进行打印?
- javaweb JAVA JSP房屋租赁管理系统房屋管理系统JSP网上租房系统JSP房产信息网站房屋租赁系统房屋
- 稀疏矩阵的三元组存储方法c语言,数据结构C语言版 稀疏矩阵的三元组顺序表存储表示和实现...
- .NET Framework下载
- 文件服务器报告,如何对文件服务器进行精细化管理之三:存储报告(示例代码)...