/*********************************************************************************

* COPYRIGHT NOTICE

* Copyright (c) 2017, XinJiang University

* All rights reserved.

*

* 文件名                :        Sys_Control.c

* 描述                 :        温度控制

*

* 版本                        :        V3.0.2

* 作者                        :        王志浩

* 日期                        :        2017-10-19

*

* 以下全部程序之著作权归属新疆大学所有,受《中华人民共和国著作权法》保护!

* 未经第一著作权所有人书面授权,任何单位和个人不得将以下程序用于商业用途!

* 修改此程序请保留上述版权声明,引用程序请注明出处!

**********************************************************************************/

#include "config.h"

PID_s                IronPID = {12.0f,0.4f,0.3f,0.0f,{0.0f,0.0f},0.0f,0.0f,0.0f};

/************************************************************

* 函数名                :        IronTempControl

* 功能说明        :        PID控制烙铁温度,P分段,I分离、抗饱和

*

* 输入参数        :        temp目标温度

* 输出参数        :        无

*

* 修改记录        :        新增函数,第一次编辑

* 历次作者        :        王志浩

* 日期                        :        2017-10-22

*************************************************************/

void IronTempControl(unsigned int temp)

{

//设定温度

IronPID.Set = temp;

EA=0;//stop other interrupt

//反馈温度

if(FtyModeFlag)//如果是在工厂模式,则按照校准的烙铁头编号查表

{

IronTemp.Feedback = GetIronTemp(FAC_DATA_Table.Adjust_s.Iron);

}

else//如果是在普通模式,则按照选定的烙铁头编号查表

{

IronTemp.Feedback = GetIronTemp(MENU_DATA_Table.Other_s.Heater_Tip);

}

EA=1;

IronPID.Feedback = IronTemp.Feedback;

//误差计算

IronPID.Delta[0] = IronPID.Set - IronPID.Feedback + STEADY_ERR;

//积分分离

if(IronPID.Delta[0] > 20.0f)

{

IronPID.kP = 13.0f;

IronPID.kI = 0.4f;

}

else if(IronPID.Delta[0]

{

IronPID.kP = 12.0f;

IronPID.kI = 0.4f;

}

else

{

IronPID.kP = 7.0f;

IronPID.kI = 0.5f;

}

//PID计算

if(IronPID.Integration > 100)//积分超过上限时,只累计负的积分量

{

if(IronPID.Delta[0] < 0)

{

IronPID.Integration += IronPID.kI * IronPID.Delta[0];

}

}

else if(IronPID.Integration < -100)//积分超过下限时,只累计正的积分量

{

if(IronPID.Delta[0] > 0)

{

IronPID.Integration += IronPID.kI * IronPID.Delta[0];

}

}

else

{

IronPID.Integration += IronPID.kI * IronPID.Delta[0];

}

IronPID.Out = IronPID.kP * IronPID.Delta[0] + IronPID.kD * (IronPID.Delta[0] - IronPID.Delta[1]) + IronPID.Integration;

//设定温度大于50且小于最高温度才开烙铁

if(IronPID.Set > 50 && IronPID.Set <= MENU_DATA_Table.Temp_s.Max_Temp && ((unsigned char)GetVoltage()>=FAC_DATA_Table.Other_s.Lim_Voltage))

{

//大于255,直接等于255

if(IronPID.Out > 255.0f)

{

PWM.Run = Enable;

PWM.Duty = 255u;

}

//大于0

else if(IronPID.Out > 0.001f)

{

PWM.Run = Enable;

PWM.Duty = (unsigned char)IronPID.Out;

}

//负数

else

{

PWM.Duty = 0;

IronPID.Out = 0;

PWM.Run = Disable;

IRON = 0;

}

}

//设定温度小于50或大于最高温度,则关烙铁

else

{

PWM.Duty = 0;

IronPID.Out = 0;

PWM.Run = Disable;

IRON = 0;

}

//传递

IronPID.Delta[1] = IronPID.Delta[0];

}

t12电烙铁c语言程序,T12白光烙铁固件源码(天山V1.2 51单片机硬件SPI LED支持3芯手柄)...相关推荐

  1. t12电烙铁c语言程序,T12白光烙铁控制器源码.doc

    T12白光烙铁控制器源码 T12白光烙铁控制器源码#include "STC15F204EA.h"//单片机头文件,24MHz时钟频率#include "INTRINS. ...

  2. t12电烙铁c语言程序,T12电烙铁制做分享过程1

    T12电烙铁制做分享过程1 [复制链接] T12电烙铁是个比较有趣且实用的制做,我们搞电子一般都会有把烙铁.T12的制做相对来说,还是很有趣的.我以前就想做,准备了2套部件,买了有好几年了,好像3年前 ...

  3. t12电烙铁c语言程序,可跑C代码的串口屏之T12白光烙铁

    T12 白光烙铁也是电子DIY中一个非常经典的项目,以至于T12白光DIY烙铁也是广大爱好者和专业人员的标配工具:T12的整个电路可以说是一个标准的温控系统,因此把代码稍微改制,就可以实现各种温控器的 ...

  4. t12电烙铁c语言程序,做一把精致的T12数控电烙铁

    认识众多玩家高手/拆客/DIYer,查阅更多资源,一起学习技术知识 您需要 登录 才可以下载或查看,没有帐号?立即注册 x 本帖最后由 枫林雪影 于 2019-3-28 21:00 编辑 发帖的时候忽 ...

  5. 杨辉三角c语言程序jian,杨辉三角C语言程序队列实现(带源码+解析)

    杨辉三角,即如下 通过学习数据结构,解决杨辉三角,可以使用循环来实现:在循环队列中依次存放第 i-1 行上的元素,然后逐个出队并打印,同时生成第 i 行上的元素并入队. 如果要求计算并输出杨辉三角前 ...

  6. c8051f020C语言程序,C8051F020应用程序包 - 其它资源 - 源码中国

    压缩包 : 171544c8051f020应用程序包.rar 列表 七段码显示\c8051F020.h 七段码显示\cyglink.txt 七段码显示\disp 七段码显示\disp.#1 七段码显示 ...

  7. int0低电平触发c语言,中断执行完后怎么回不去啊??? - 精华源码教程分享区 - 51单片机学习论坛 www.51c51.com - Powered by Discuz!...

    回得去 /头文件: #include "reg51.h" sbit int0=P3^2; void delay(unsigned int timer);         //延时子 ...

  8. 程序兵法:Java String 源码的排序算法(一)

    摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! 这是泥瓦匠的第103篇原创 <程序兵法:Java Str ...

  9. C语言成绩统计源代码,C语言课程设计学生成绩管理系统+源码

    <C语言课程设计学生成绩管理系统+源码>由会员分享,可在线阅读,更多相关<C语言课程设计学生成绩管理系统+源码(25页珍藏版)>请在人人文库网上搜索. 1.简易教学管理系统的设 ...

最新文章

  1. js不停地触发按钮的事件
  2. 呜啦啦,园园我来了~
  3. JavaFX8 modena样式(css)源码
  4. c++使用单向链表存储一组有序数据_初试攻略丨计算机考研中数据结构知识点总结,硬核!...
  5. 致敬!这些老外的开源技术养活了一票国产软件
  6. DNS 教父怒喷 DNS-over-HTTPS!
  7. Java-模拟KTV点歌(控制台程序)
  8. CentOS 6.6上搭建C++运行环境
  9. 网络历史之金融投资三剑客03
  10. 我是如何将LINE表情包转化为微信表情包的?/How I convert Line stickers into Wechat stickers just as the way they are?
  11. 网站实用性是这样建出来的
  12. 机器学习科普文章:“一文读懂机器学习,大数据/自然语言处理/算法全有了”
  13. 第八-九周-总结(day38-54)
  14. 【闪亮的玻璃图标悬浮效果】
  15. TensorRT debug及FP16浮点数溢出问题分析
  16. linux drupal 7安装教程,Ubuntu 14.04 LTS 下安装Drupal 7
  17. 一级建造师(一建)电子证书下载
  18. MATLAB上关于复数矩阵的转置与共轭知识详解
  19. php点阵字,用PHP编程读取汉字点阵数据
  20. java打印空心六边形_带文字的空心六边形。

热门文章

  1. Spring Boot——国际化
  2. [Spring实战系列](11)SpEL使用表达式装配
  3. vue 关于视频播放器vue-video-player,PC端正常,苹果手机初始化没有办法设置进度,currentTime 设置不生效解决
  4. Some resouces about design
  5. zabbix系列:修改默认的snmp端口161
  6. 欧美风企业宣传PPT模板
  7. 树莓派 --- 基于OpenCV实现人脸识别
  8. 基于Python实现神经网络中的激活函数图像绘制
  9. android xitong工具,Android系统工具盘点
  10. 耐克人脸识别_人脸识别启动,全系9个车型随意选,买它立马有1.2万现金拿