基于STM32温控系统的设计概述

基于STM32温控系统的设计

一、系统功能描述

利用STM32系列芯片,作为本温控系统的主控芯片。同过RS232通信协议实现下位机与计算机的通信,通过XTR105和PT100铂热电阻组合转化为稳定的模拟信号量,然后通过AD7705将模拟量转变为数字量输入主控芯片,这样主控芯片通过计算就可以得到当前温度的值。然后,主控芯片经过PID算法,计算出需要输出电流大小,写到MAX538芯片中,该芯片将数字量转化为模拟量输入XTR110,从而得到稳定的电流输出。


二、硬件电路设计

1、硬件电路设计包括PT100铂电阻的信号调理电路、AD7705的使用、MAX538的使用、XTR110的使用。其中AD、DA的使用按照芯片说明书,    连接电路,并配置主控芯片即可。这里仅仅阐述测温的信号调理电路。


根据TI提供的芯片的使用信息,这里实际的测温范围为0-500度,计算出上述电路中的电阻。

2、USB转串口电路设计


选用该芯片的好处:开发电路成熟,开发速度快,尤其是有配套驱动,基本不需在开发对应的驱动程序。

三、软件层的设计

1、 上位机软件开发

需求分析:上位机需要先设置串口通讯的基本参数,然后打开串口,设置温控的参数,设置完成后点击开始温控,最后接受下位机发出来的串口信息。

2、 下位机软件开发

需求分析:下位机需要完成与上位机的通讯,同时当开始温控时还要完成温控功能。下位机采用uC/OSII嵌入式实时操作系统,建立两个任务。


串口通讯任务通过任务解析模块对上位机发出来的指令进行解析,启动温控任务。温控任务将测量出来的温度通过Message的方式把内部的数据发送给串口通讯任务。串口通讯任务在将这些任务发送给上位机。

任务解析模块需要处理的事件有,串口参数设置、温控任务启动、温控任务结束。

3、 PID温度控制算法

参考博客

http://www.cnblogs.com/cj695/p/3276400.html

http://www.cnblogs.com/cj695/p/3274798.html#2758143

Kp可以说是PID算法中必不可少的一个量。没有它控制就不可能实现。它的作用是根据当前量与设定量的差值按照一定比例放大后得到控制量。

//pid.h

#ifndef __PID__

#define __PID__

/*PID = Uk +KP*[E(k)-E(k-1)]+KI*E(k)+KD*[E(k)-2E(k-1)+E(k-2)];(增量型PID算式)

函数入口: RK(设定值),CK(实际值),KP,KI,KD

函数出口: U(K)*/

typedef struct PIDValue

{

    int8 KP;

    int8 KI;

    int8 KD;

    int8 F;

    int8 BITMOV;

    int EK[3];

     

    int UK;

    int RK;

    int CK;

    int UK_REAL;

 

}pid_str;

//PIDValueStr  PID;

void    pid_exe(pid_str*PID)  ;

#endif

 

//pid.c

/*PID = PID->UK_REAL +PID->KP*[E(k)-E(k-1)]+PID->KI*E(k)+PID->KD*[E(k)-2E(k-1)+E(k-2)];(增量型PID算式)

函数入口:PID->RK(设定值),PID->CK(实际值),PID->KP,PID->KI,PID->KD

函数出口: U(K)*/

#include"defines.h"

#include"pid.h"

#define MAXOUT 0xff

//#define MAXGAP 100

 

void pid_exe(pid_str*PID)

{

    PID->EK[2]=PID->EK[1];

    PID->EK[1]=PID->EK[0];

    PID->EK[0]=PID->RK-PID->CK;

    PID->UK_REAL=PID->UK_REAL

        +PID->KP*(PID->EK[0]-PID->EK[1])//微分一次后积分即原数

        +(float)PID->KI*PID->EK[0]/PID->F//直接积分

        +(float)PID->KD*(PID->EK[0]-2*PID->EK[1]+PID->EK[2])*PID->F;//二阶微分后积分即一阶微分

    if((PID->UK_REAL>>PID->BITMOV)>=MAXOUT)

    {

        PID->UK=MAXOUT;

    }elseif(PID->UK_REAL>>PID->BITMOV<=-MAXOUT)

    {

        PID->UK=-MAXOUT;

    }else

    {

        PID->UK=PID->UK_REAL>>PID->BITMOV;

    }

         

}

这里我写的代码用到的是增量型的PID(即UK_REAL +PID->KP*[E(k)-E(k-1)]+PID->KI*E(k)+PID->KD*[E(k)-2E(k-1)+E(k-2)];这句话所对应的是pid控制量在之前pid控制量的基础上增加的值,相当于求了一次导)。最终输出的结果将每一次运算的值累加输出就行了。

  • 8
    点赞
  • 114
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
基于 STM32 的密闭系统温度控制是一种常见的工程控制应用。该系统可以对密闭环境中的温度进行精准的控制,以满足不同的需求。下面为您提供基于 STM32 的密闭系统温度控制设计思路和步骤。 1. 系统概述 首先,需要对系统的设计目的和功能进行概述。该系统的设计目的是为了实现对密闭环境中的温度进行精准的控制,以满足不同的需求。系统的主要功能包括温度采集、温度控制温度显示等。 2. 硬件设计 在硬件设计方面,需要选择合适的硬件平台和相关的传感器和执行器。选择 STM32F103C8T6 开发板作为硬件平台,该开发板具有较强的处理能力和丰富的外设资源,可以满足系统的需求。选择 DS18B20 温度传感器进行温度采集,选择继电器作为执行器进行温度控制。 3. 软件设计 在软件设计方面,需要进行系统的程序设计和开发。其中,需要进行温度采集、温度控制、通信等模块的编写。程序实现的主要功能包括: - 温度采集模块:通过 DS18B20 温度传感器进行温度采集,并将采集到的温度值存储到内存中。 - 温度控制模块:通过继电器进行温度控制,当温度达到设定值时,继电器断开电路,当温度低于设定值时,继电器闭合电路。 - 通信模块:采用串口通信进行数据传输,将采集到的温度值和设定温度值等信息发送到上位机进行显示和控制。 4. 实验验证和结果分析 进行系统的实验验证,测试系统的性能和稳定性。可以通过不同的温度设置和温度变化来测试系统的控制精度和响应速度,通过实验结果分析系统的性能和准确性。 总之,基于 STM32 的密闭系统温度控制是一种常见的工程控制应用,需要进行系统的硬件设计和软件开发,同时进行实验验证和结果分析,以保证系统的可靠性和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大牛攻城狮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值