社区导航

 

搜索
查看: 9295|回复: 15

[原创] F103实现的PID算法用于温控系统

[复制链接]

14

TA的帖子

0

TA的资源

禁止发言

发表于 2016-9-23 12:41 | 显示全部楼层 |阅读模式

回复

使用道具 举报

6

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2016-9-23 14:30 | 显示全部楼层
楼主能共享源码,万分感谢

回复

使用道具 举报

14

TA的帖子

0

TA的资源

禁止发言

 楼主| 发表于 2016-9-23 15:15 | 显示全部楼层
优酷上复制不了,我直接百度云链接:http://pan.baidu.com/s/1mivuURe 密码:497d

回复

使用道具 举报

30

TA的帖子

1

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2016-9-30 18:19 | 显示全部楼层
在考虑用M0做温控,学习一下

回复

使用道具 举报

1

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2016-10-5 21:08 | 显示全部楼层
楼主真是及时雨,感谢分享!

回复

使用道具 举报

14

TA的帖子

0

TA的资源

禁止发言

 楼主| 发表于 2016-11-19 19:10 | 显示全部楼层
上次PID算法应用于温度控制,效果不错;近期准备一个PID控制电机的教程

回复

使用道具 举报

14

TA的帖子

0

TA的资源

禁止发言

 楼主| 发表于 2017-2-24 10:56 | 显示全部楼层
之前的链接失效了 http://pan.baidu.com/s/1miK5CTy

回复

使用道具 举报

1

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2017-3-28 23:00 | 显示全部楼层
typedef struct
{
float SV ;//用户设定值
float PV ;//当前值

float Kp ;//比例系数
float T ;//PID计算周期 采样周期
float Ti ;//积分时间
float Td ;//微分时间
//中间变量
float Ek ;//本次偏差
float Ek_1 ;//上一次偏差
float SEk ;//历史偏差之和
//中间计算结果
float Pout ;//
float Iout ;//
float Dout ;//

float OUT0 ;//补偿
float OUT ;//最终的计算结果
uint16_t c10ms ;//时间计数
uint16_t pwmcycle ;//PWM周期
}PID ;


void PID_Init(void)
{
pid.SV = 120 ;
pid.Kp = 30 ;
pid.T = 500 ;//PID计算周期
pid.Ti = 5000000 ;//温度惯性大取5000S 积分时间
pid.Td = 1000 ;//1S 微分时间 传感器采样反馈回来的温度变化率
pid.pwmcycle = 200;//PWM调制的周期
pid.OUT0 = 1;//默认最小值
}
uint16_t PID_Calc(void)
{
  float DelEk ;
  float ti,Ki ;
  float td;
  float kd;
  float out ;
  if(pid.c10ms   pid.Ek = pid.SV-pid.PV ;//计算误差
  pid.Pout= pid.Kp*pid.Ek ;//计算比例输出
  pid.SEk +=pid.Ek ;//历史偏差求和
  DelEk = pid.Ek -pid.Ek_1 ;//近两次偏差之差
  ti = pid.T/pid.Ti ;
  ki = ti*pid.Kp ;
  pid.Iout = ki*pid.SEk*pid.Kp ;//积分输出
  td = pid.Td/pid.T ;
  Kd = pid.Kp*td ;
  pid.Dout = kd*DelEk ;//微分输出
  out = pid.Pout + pid.Iout + pid.Dout ;//最终输出
  if(out>pid.pwmcycle) pid.OUT=pid.pwmcycle;//限制幅度
  else if(out<0) pid.OUT=pid.OUT0;//
  else  pid.OUT = out ;//
  pid.Ek_1 = pid.Ek;//更新变量
  pid.c10ms =0 ;//清除计数器
  return 0 ;
}

回复

使用道具 举报

1

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2017-7-10 13:23 | 显示全部楼层
1111111111111111111

回复

使用道具 举报

1

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2017-8-3 14:51 | 显示全部楼层
谢谢分享

回复

使用道具 举报

3

TA的帖子

5

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2017-10-23 11:15 | 显示全部楼层
xiexie楼主分享代码

回复

使用道具 举报

2

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2017-11-28 10:52 | 显示全部楼层
666666666666666666666666666666666666666666666666

回复

使用道具 举报

2

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2017-11-28 10:53 | 显示全部楼层
为啥看不到代码???

回复

使用道具 举报

4

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2018-1-17 15:13 | 显示全部楼层
学习,谢谢

回复

使用道具 举报

1

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2020-5-2 14:16 | 显示全部楼层
hillchina 发表于 2016-9-23 15:15 **** 作者被禁止或删除 内容自动屏蔽 ****

楼主源代码可以再分享一下嘛,最新在学习STM32,做实验试试。谢谢啦


回复

使用道具 举报

29

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2020-5-16 13:52 | 显示全部楼层

楼主果然还是那个楼主,万分感谢


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

关闭

站长推荐上一条 1/4 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2020-6-4 13:13 , Processed in 0.511206 second(s), 36 queries , Gzip On, MemCache On.

快速回复 返回顶部 返回列表