硬件原理:加热电阻为400,电源为市电,固态继电器控制通断,并提取市电的过零信号,单片机采用mega48,继电器通断最小时间为10ms,通断PWM的周期为100个过零信号.

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

#include

#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 errorflg;

unsigned char addokflg;

}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->addokflg=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->addokflg=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->errorflg==0)

result=0;

sptr->pwm_H=(unsigned char) result;

//return (unsigned char) result;

}

温控仪C语言程序,(转载)温控器PID算法的实现(C语言),未实验相关推荐

  1. pid温度控制c语言程序及仿真,pid算法温度控制c语言程序

    描述 温度控制PID自整定原理介绍 整定PID(三模式)控制器 整定温度控制器涉及设置比例.积分和微分值,以得到对特定过 程的可能的最佳控制.如果控制器不包含自动整定算法,或者自 动整定算法未提供适合 ...

  2. 查找算法的实现c语言,查找算法的实现(C语言版)

    <查找算法的实现(C语言版)>由会员分享,可在线阅读,更多相关<查找算法的实现(C语言版)(6页珍藏版)>请在人人文库网上搜索. 1.芬梨受交峙东喊济雏狈违晕裂赵檀芬逛温乌摄阿 ...

  3. DSB算法C语言程序,单片机中使用DSB温度传感器C语言程序.doc

    单片机中使用DSB温度传感器C语言程序 单片机中使用DS18B20温度传感器C语言程序(参考1) /************************************************** ...

  4. c语言程序位置式pid算法,位置式PID算法的C语言代码

    描述 位置式PID的C语言写法详解 PID调节口诀: 参数整定找最佳,从小到大顺序查 先是比例后积分,最后再把微分加 曲线振荡很频繁,比例度盘要放大 曲线漂浮绕大湾,比例度盘往小扳 曲线偏离回复慢,积 ...

  5. 坐标反算c语言程序,道路坐标正反算无限个拐点计算器测量程序(新20070825)

    <道路坐标正反算无限个拐点计算器测量程序(新20070825)>由会员分享,可在线阅读,更多相关<道路坐标正反算无限个拐点计算器测量程序(新20070825)(10页珍藏版)> ...

  6. c语言程序竞赛,2015年江西理工大学C语言程序设计竞赛(初级组)

    JankTao相亲记 解法:排序 #include #include #include #include #include #include #include #include using names ...

  7. 插补c语言程序,逐点比较法插补C语言程序

    <逐点比较法插补C语言程序>由会员分享,可在线阅读,更多相关<逐点比较法插补C语言程序(6页珍藏版)>请在人人文库网上搜索. 1.该函数在VC+6.0下编译测试通过,可实现直线 ...

  8. c语言程序和数据是可执行,C语言学习笔记(C编程-Tan Haoqiang)

    计算机程序: 计算机可以识别和执行的一组指令. 计算机的每项操作均按照说明进行谭浩强c语言程序设计课件f,计算机的所有操作均由程序控制. 计算机指令: 指导机器工作的指令和命令. The 指令包含一个 ...

  9. c语言程序执行时无法输入字符串,C语言程序设计中键盘输入数据的方法分析

    1. 引言 C语言程序设计是一门实践性很强的语言课程,在程序设计过程中经常需要从键盘输入所需要的数据.C语言没有专门的输入语句,可以调用C语言编译系统提供的函数库中的库函数来实现.有些程序虽然调试成功 ...

最新文章

  1. 玩转高性能超猛防火墙nf-HiPAC
  2. c++ socket 结构体
  3. Itext实现导出PDF常用方法说明
  4. SpringMVC的数据响应方式
  5. Hbase出现ERROR: Can‘t get master address from ZooKeeper; znode data == null解决办法
  6. R开发(part12)--基于RC的面向对象编程
  7. php发送数据到视图格式_PHP-FPM的相关知识的深度解释
  8. mule esb 集成_集成框架比较– Spring集成,Mule ESB或Apache Camel
  9. 存储相关知识-DAS/SAN/NAS
  10. python+selenium自动化driver.switch_to.frame用法
  11. 让px单位自动转换为rem的方法
  12. iOS 混合开发 —— 方案分析
  13. HBase BulkLoad批量写入数据实战
  14. chapter2 基因组学
  15. 通用微PE工具箱下载_通用微PE使用教图文程
  16. ssm和springboot的区别
  17. 假如我年少有为不自卑
  18. android 各个版本的发布时间和信息
  19. 网络蛋白质组学在计算机中应用,蛋白质组学及其相关技术在运动人体科学中的应用...
  20. 测试4年裸辞失业,面试17k的测试岗被按在地上摩擦,结局让我崩溃大哭...

热门文章

  1. 【旧文章搬运】PE感染逆向之修复(Serverx.exe专杀工具出炉手记)
  2. 小码哥-玩转【斗鱼直播APP】系列之获取APP图片资源
  3. 金蝶K3 WISE 12.1在Windows 2008 R2虚拟机服务器上的配置
  4. mac 查询端口被哪个进程占用
  5. 企业微信公众号如何调用视频列表(视频专辑)
  6. OLSR协议详解(1)
  7. php bouncy castle,java-错误,包括Bouncycastle提供程序
  8. 记忆计算机课,记忆人脑就计算机课件.ppt
  9. 深入理解异步I/O+epoll+协程,附上epoll原理解析以及协程现实与原理剖析视频
  10. 论文浅尝 - ESWC2020 | YAGO 4: A Reason-able Knowledge Base