打印
[应用相关]

(转载)温控器PID算法的实现(C语言),未实验

[复制链接]
406|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
麻花油条|  楼主 | 2022-12-7 09:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
硬件原理:加热电阻为400,电源为市电,固态继电器控制通断,并提取市电的过零信号,单片机采用mega48,继电器通断最小时间为10ms,通断PWM的周期为100个过零信号.

本程序采用绝对式PID算法,当温度相差很多时,采用P算法(比例算法),当到达设定温度时,采用PID算法,实际实用稳定性还可以,上下波动在0.5度以内.

#include <avr/io.h>
#include "PID.h"
//static PID sPID;
//static PID *sptr=&sPID;
TADD Tadd1;
TADD Tadd2;
void IncPIDInit(PID *sptr)
{
sptr->SumError=0;
sptr->LastError=0;
sptr->PrevError=0;

//sptr->Proportion = 900;
//sptr->Integral=20;
//sptr->Derivative = 2;

//sptr->SetPoint = 0;
}



typedef struct
{
int SetPoint; //设定目标值
int32_t SumError; //误差累计

//int Proportion;
//int Integral; //积分常数
//int Derivative; //微分常数

int LastError; //Error[-1]
int PrevError; //Error[-2]
}PID;
#define PID_Proportion 900 //比例常数
#define PID_Integral 20 //积分常数
#define PID_Derivative 2 //微分常数
#define PWM_T 100
#define MAX_T 80 //加热的最大温度
typedef struct
{
PID spid; //PID控制器
unsigned char pwm_H;//输出
unsigned char EnAdd;//加热使能
int real_T; //实际温度值
unsigned char Taddset[3]; //加热的设定温度
unsigned char set_NO; //加热的档数
unsigned char error**;
unsigned char addok**;
}TADD;

void LocPIDCalc(TADD *sptr)
{
int iError,dError;
int32_t result;
iError = (sptr->spid.SetPoint*4) - (sptr->real_T/4);
//sptr->spid.LastError = iError;
if(iError>-2&&iError<4)
{
sptr->addok**=1;
sptr->spid.SumError +=iError;
dError = iError-sptr->spid.LastError;
sptr->spid.LastError = iError;
result=(PID_Proportion * iError +
PID_Integral * sptr->spid.SumError +
PID_Derivative * dError)/20;
}
else
{
sptr->spid.SumError =0;
sptr->spid.LastError=0;
if(iError>0)
sptr->addok**=0;
result=(PID_Proportion * iError)/20;
}
if(result>PWM_T)
result=PWM_T;
else if(result<0)
result=0;
if((sptr->real_T>>4)>MAX_T||sptr->error**==0)
result=0;
sptr->pwm_H=(unsigned char) result;
//return (unsigned char) result;

使用特权

评论回复
沙发
帛灿灿| | 2024-10-16 07:20 | 只看该作者

得到不同测试条件下的输出电流和电压值,分析数据并进行比较

使用特权

评论回复
板凳
Bblythe| | 2024-10-16 08:23 | 只看该作者

这样可以获得更光滑的表面。

使用特权

评论回复
地板
周半梅| | 2024-10-16 10:19 | 只看该作者

是因为它作用是起到抑制,多应用于开关电源电路中

使用特权

评论回复
5
Pulitzer| | 2024-10-16 11:22 | 只看该作者

对于标准PCB设计,c形孔的最小直径为0.5mm,

使用特权

评论回复
6
童雨竹| | 2024-10-16 13:18 | 只看该作者

它是由两个尺寸相同、匝数相同的线圈对称地绕制在同一个铁氧体环形磁芯

使用特权

评论回复
7
Wordsworth| | 2024-10-16 14:21 | 只看该作者

镀半孔或c形孔是在板的边缘上镀半个半孔的一半。

使用特权

评论回复
8
Clyde011| | 2024-10-16 15:24 | 只看该作者

驱动脉冲变压器原边时,

使用特权

评论回复
9
公羊子丹| | 2024-10-16 16:17 | 只看该作者

这种电路结构的特点是:由四只相同的开关管接成电桥结构驱动脉冲变压器原边。

使用特权

评论回复
10
万图| | 2024-10-16 17:20 | 只看该作者

这种技术称为板对板焊接

使用特权

评论回复
11
Uriah| | 2024-10-16 18:23 | 只看该作者

开模的话,模具不会塌踏。。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

279

主题

1448

帖子

2

粉丝