基于单片机淬火炉温温度控制课程设计


    基PID控制淬火炉炉温控制系统设计
    1总体方案设计
    次课程设计针PID控制淬火炉进行温度控制设计步骤分步
    首先进行控制系统建模数字控制器设计设计方案:选ZieglerNichols方法进行PID参数整定建立闭环控制系统MATLAB仿真达求PID参数
    AD转换
    温度采集
    加热电路
    DA转换
    AT89C52单片机
    硬件设计实现单片机选AT89C52温度采集热电偶配合MAX6675DA转换DAC0802实现LCD显示温度系统框图图11

    显示温度






    图11 系统框图
    软件设计先编写子程序包括AD转换温度检测子程序延迟子程序DA转换子程序PID控制程序系统初始化编写程序
    protues进行硬件连线仿真否达系统求温度进行控制









    2控制系统建模数字控制器设计
    21设计容
    淬火生产程中道关键工序温度控制精度直接影响产品质量淬火炉温度控制通常温区设计针温区进行温度控制求控制温度范围600800℃控制精度±1℃温度探头选热电偶输出010mA电流信号通双控硅控制器控制加热电阻两端电压输入电流输出电压线性关系象温控数学模型:
    (21)
    中:时间常数 T=400秒放系数 K=100℃mA滞时间 τ10秒控制算法选PID控制
    22PID控制器原理
    PID控制器偏差例积分微分进行控制调节器简称针控制象进行参数调节控象结构参数完全掌握精确数学模型时应PID控制技术方便PID控制器根设定值实际值误差利例积分微分等基控制规律者适配合形成PIPDPID等复合控制规律控制系统满足性指标求
    典型PID控制系统结构图图21误差信号分进行例积分微分组合控制



    U(s)
    +
    E(s)

    +
    +

    C(s)
    控象


    +
    R(s)






    图21 PID控制系统结构图
    PID控制算法模拟表达式:
    (22)
    应模拟PID调节器传递函数:

    (23)
    计算机控制系统中PID控制规律实现必须数值逼方法采样周期相短时求代积分差分代微分模拟PID离散化变差分方程
    数字PID位置型控制算式:
    (24)
    数字PID增量型控制算式:
    (25)
    中 称例增益
    称积分系数
    称微分系数
    果单纯数字PID控制器模仿模拟调节器会获更效果必须发挥计算机运算速度快逻辑判断功强编程灵活等优势控制性超模拟调节器
    单回路控制系统中扰动作控参数偏离定值产生偏差动控制系统调节单元变送器测量值定值相较产生偏差进行例积分微分(PID)运算输出统标准信号控制执行机构动作实现温度压力流量工艺参数动控制例作P偏差成正积分作I偏差时间积累微分作D偏差变化率
    例控制迅速反应误差减少稳态误差系统控制输入0系统程值等期值两种情况例控制出稳态误差期值变化时系统程值产生稳态误差例控制消稳态误差例放系数加会引起系统稳定
    减稳态误差控制器中加入积分项积分项误差取决时间积分着时间增加积分项会增样误差积分项会着时间增加加推动控制器输出增稳态误差进步减少直等零
    积分(I)例(P)通常起称例+积分(PI)控制器系统进入稳态稳态误差果单独积分(I)话积分输出时间积累逐渐增调节动作缓慢样会造成调节时系统稳定裕度降
    动控制系统较惯性组件(环节)滞(delay)组件调节程中出现甚振荡解决办法引入微分(D)控制误差时候抑制误差作误差接零时抑制误差作应该零
    应PID控制必须适调整例放系数KP积分时间TI微分时间TD整控制系统良性次设计采ZieglerNichols方法PID参数整定
    23ZieglerNichols方法
    ZieglerNichols方法基系统稳定性分析PID整定方法.设计程中需考虑特性求整定方法非常简单控制效果较理想
    传统PID验调节体分步:
    1关闭控制器ID元件加P元件产生振荡
    2减P系统找界振荡点
    3加I系统达设定值
    4重新电观察超调振荡稳定时间否符合系统求
    5针超调振荡情况适增加微分项
    5步骤调节PID控制器时普遍步骤寻找合时ID参数时非易事
    John ZieglerNathaniel Nichols发明著名回路整定技术PID算法应工业领域反馈控制策略中常ZieglerNichols整定技术1942年第次发表出直现广泛应着
    谓PID回路整定指调整控制器实际值设定值间误差产生反作积极程度果正巧控制程相缓慢话PID算法设置成机干扰改变程变量者操作改变设定值时采取快速显著动作
      相反果控制程执行器特灵敏控制器操作程变量话PID算法必须较长段时间应更保守校正力回路整定质确定控制器作产生程反作积极程度PID算法消误差提供帮助
    年发展ZieglerNichols方法已发展成种参数设定中处验计算法间中间方法种方法控制器确定非常精确参数进行微调
    ZieglerNichols方法分两步:
    1构建闭环控制回路确定稳定极限
    2根公式计算控制器参数
    稳定极限P元件决定出现稳态振荡时达极限产生界系数Kpcrit界振荡周期Tcrit
    确定界系数Kpcrit界振荡周期Tcrit根表21公式计算参数:
    表21 PID参数计算
    控制器类型
    计算特征数





    P
    05KPcrit




    PD
    08KPcrit

    012Tcrit


    PI
    045KPcrit
    085Tcrit



    PID
    06KPcrit
    05Tcrit
    012Tcrit


    24PID参数整定
    首先建立闭环系统采阶跃输入加入PID控制器图22MATLAB仿真输出图23








    图22 加PID控制器结构图














    图23 加PID控制器阶跃响应
    加入PID控制器结构图图24












    图24 加入PID控制器结构图
    根ZieglerNichols方法先积分微分系数0例控制例系数阶跃响应出现稳态振荡时图25示曲线










    图25 时曲线
    知KPcrit0655Tcrit37表21计算出PID参数:
    (26)
    (27)
    (28)











    图26 计算参数曲线
    计算参数进行仿真图26发现系统超调较积分系数减例微分系数进行微调 时曲线图27示











    图27 参数调整曲线















    3硬件设计实现
    31完整系统电路图
























    图31 完整系统电路图
    图31次设计完整系统电路图
    32温度检测
    系统采热电偶采集温度MAX6675作热电偶放器AD转换
    热电偶种感温元件温度信号转换成热电动势信号通电气仪表转换成测介质温度热电偶测温基原理两种成份均质导体组成闭合回路两端存温度梯度时回路中会电流通时两端间存Seebeck电动势:热电动势谓塞贝克效应两种成份均质导体热电极温度较高端工作端温度较低端端端通常处某恒定温度根热电动势温度函数关系制成热电偶分度表分度表端温度0 ℃时条件热电偶具分度表热电偶回路中接入第三种金属材料时该材料两接点温度相热电偶产生热电势保持变受第三种金属接入回路中影响热电偶测温时接入测量仪表测热电动势知道测介质温度
    Maxim公司新推出MAX6675集成热电偶放器冷端补偿AD转换器SPI串口热电偶放器数字转换器MAX6675特性:简单SPI串行口温度值输出0℃~+1024℃测温范围12位025℃分辨率片冷端补偿高阻抗差动输入热电偶断线检测单+5V电源电压低功耗特性工作温度范围20℃~+85℃2000VESD信号MAX6675复杂单片热电偶数字转换器部具信号调节放器12位模拟数字化热电偶转换器冷端补偿传感校正数字控制器1SPI兼容接口1相关逻辑控制
    33温度显示
    次设计显示部分采LM016L显示2行16列英文字符8位数总线D0D7RSRWEN三控制端口(14 线)工作电压 5V没背光常1602B功引脚样(调背光二线脚)次设计LM016L显示炉温温度户设定温度
    34DA转换电路
    DA转换采DAC0832实现DAC0832双列直插式8位DA转换器完成数字量输入模拟量(电流)输出转换分辨率8位转换时间1μs满量程误差±1LSB
    ILE高电片选信号CS写信号WR1低电时输入寄存器控制信号1种情况输入寄存器输出输入变化WR1低电变高时控制信号成低电时数锁存输入寄存器中样输入寄存器输出端外部数DB变化变化
    第二级锁存说传送控制信号 XFER写信号 WR2时低电时二级锁存控制信号高电8位DAC寄存器输出输入变化WR2低电变高时控制信号变低电输入寄存器信息锁存DAC寄存器中
    35加热电路
    加热电路图32







    图32 加热电路
    炉温温度低设定温度时L1进行加热电容加热快慢取决两温度值差值








    4软件设计


























    图41 程序流程图
    程序流程图图41示
    热电偶检测温度MAX6675放AD转换送入单片机程序首先液晶显示器显示开始设定温度实际温度接着直扫描键盘果KS0次设定温度加1液晶显示器显示出果KS1次设定温度减1液晶显示器显示出设定值温度实际值较计算差值果实际温度设定温度差值送入DAC转换器加热电路进行加热果实际温度设定温度没冷装置进行加热温度然运行程键盘扫描重复述程





































    参考文献
    [1]潘新民单片微型计算机实系统设计民邮电出版社 199207
    [2]沙占友单片机外围电路设计[M]北京:电子工业出版社 200301
    [3]海生微型计算机控制技术清华学出版社2007
    [4]孙育 ATMEL新型AT89S51系列单片机应清华学出版社200501
    [5]贾金玲单片机原理应电子科技学出版社200408





















    附录1 程序
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #define uchar unsigned char
    #define uint unsigned int
    uchar m
    sbit lcdP2^0
    sbit DOUTP2^3
    sbit SCLKP2^4
    sbit CSP2^5
    sbit leP2 ^ 1
    sbit oeP2 ^ 2
    sbit RELAYP2^6
    sbit KS0P1^0
    sbit KS1P1^1
    sbit KS2P1^2
    uchar code LcdBuf1[] {Set temp}
    uchar code LcdBuf2[] {Rel temp}
    uchar Vref5
    uchar a[6]
    uchar g[6]
    unsigned char sumout
    uint SET_TEMP650
    unsigned int read_max6675(void)
    { unsigned char i
    unsigned int AD0
    CS0
    SCLK0 *输出数D15*
    SCLK1
    for(i12i>0i) *读取转换结果*
    { SCLK0
    if(DOUT1) AD++
    ADAD<<1 *数左移*
    SCLK1
    }
    SCLK0
    flagSO*读取D2断偶标志*
    SCLK1
    SCLK0
    *输出数D1*
    SCLK1
    SCLK0
    *输出数D0*
    SCLK1
    CS1
    return AD
    }
    unsigned ADC1()
    {
    long l
    uint q0
    lread_max6675()
    l(244894100)*l*Vref+1 转换电压值
    ll+7500
    g[0](l10000)10+'0' 取整数值数组
    g[1](l1000)10+'0'
    g[2](l100)10+'0'
    a[3]'' 忽略数
    a[4]t10+'0'
    q(g[0]'0')*100+(g[1]'0')*10+(g[2]'0')
    return q
    }
    void ADC()
    {
    long t
    tread_max6675()
    t(244894100)*t*Vref+1 转换电压值
    tt+7500
    a[0](t10000)10+'0' 取整数值数组
    a[1](t1000)10+'0'
    a[2](t100)10+'0'
    }
    void constant_temperature() 恒温
    {
    uint b
    b(a[0]'0')*100+(a[1]'0')*10+(a[2]'0')
    if(b {
    RELAY0
    mSET_TEMPb
    m(unsigned char)(m256)
    }
    else
    {
    RELAY1
    mSET_TEMPb
    m(unsigned char)(m256)
    }
    }
    void delay_ms(uchar ms)
    {
    uint ij
    for(i0i for(j0j<120j++)
    }
    typedef struct {

    double SetPoint * 设定目标 Desired Value *

    double Proportion * 例常数 Proportional Const *
    double Integral * 积分常数 Integral Const *
    double Derivative * 微分常数 Derivative Const *

    double LastError * 前项误差 *
    double PrevError * 前第二项误差 *
    double SumError * 总误差 *

    } PID
    ****************************************************************************
    PID计算部分
    ****************************************************************************

    double PIDCalc( PID *pp double NextPoint )
    {
    double dErrorError
    double SetPoint
    SetPointSET_TEMP
    Error pp>SetPoint NextPoint * 计算前偏差 *
    pp>SumError + Error * 积分总偏差*
    dError pp>LastError pp>PrevError * 前微分 *
    pp>PrevError pp>LastError
    pp>LastError Error * 三误差值移位 *
    return(NextPoint+pp>Proportion * Error + pp>Integral * pp>SumError + pp>Derivative * dError ) *返回总误差值*
    }
    void pid(void)
    {
    PID sPID * 定义PID结构体变量 *
    double rOut * PID 响应输出 *
    unsigned char rIn * PID 反馈 (Input) *
    double x
    sPIDProportion 036 * 设置 PID 例系数 *
    sPIDIntegral 00006 * 设置PID积分系数 *
    sPIDDerivative 18 * 设置PID微分系数 *
    sPIDSetPoint 20 * 设置 PID 输出值 *
    {
    unsigned char sumout * PID进入循环检测状态中 *
    unsigned char i
    rIn ADC1() * 读传感器输出 *
    for(i0i<50i++)
    x 50 * (double)rIn 2560
    rOut PIDCalc ( &sPIDx ) * 计算PID 输出 *
    sumoutrOut*2565
    }
    }
    void dac0832(out)
    {

    RELAY0
    P3out
    delay(100)
    RELAY1
    }

    void key(void )
    {
    if(KS00)
    delay_ms(1)
    if(KS00)
    SET_TEMP++
    while(KS0)
    if(KS10)
    delay_ms(1)
    if(KS10)
    SET_TEMP
    while(KS1)
    display_onechar(09SET_TEMP100+'0')
    display_onechar(010(SET_TEMP100)10+'0')
    display_onechar(011SET_TEMP10+'0')
    }
    main()
    {
    lcd_init()
    display_string(00LcdBuf1)
    display_string(10LcdBuf2)
    Write_CGRAM(LcdBuf) CGRAM写入定义摄氏度符号
    display_onechar(0120) 显示定义摄氏度符号
    display_onechar(0131) 显示定义摄氏度符号
    display_onechar(1120)
    display_onechar(1131)
    while(1)
    {
    key()
    ADC()
    constant_temperature()
    display_string(19a)
    pid()
    dac0832(sumout)
    delay_ms(100)
    }
    }


    附录2 LCD程序
    #ifndef LCD_1602_
    #define LCD_1602_
    #include
    #include
    sbit LCD_RS P2 ^ 0
    sbit LCD_RW P2 ^ 1
    sbit LCD_E P2 ^ 2
    #define LCD_DATA P0

    unsigned char code LcdBuf[] { 定义汉字 5X7存储64字节
    0x0c0x120x120x0c0x000x000x000x00
    0x0f0x100x100x100x100x100x0f0x00
    }
    void delay(unsigned int ms)
    {
    unsigned char y
    for(ms>0ms)
    for(y120y>0y)
    }

    bit lcd_busy()
    { 测试LCD忙碌状态
    bit result
    LCD_RS 0
    LCD_RW 1
    LCD_E 1
    _nop_()
    _nop_()
    _nop_()
    _nop_()
    result (LCD_DATA & 0x80)
    LCD_E 0
    return result
    }
    void WriteCommand(unsigned char wdata)
    {
    while(lcd_busy())
    LCD_DATAwdata
    LCD_RS0
    LCD_RW0
    LCD_E1
    LCD_E0
    delay(5)
    LCD_E1
    }
    void WriteData(unsigned char wdata)
    {
    while(lcd_busy())
    LCD_DATAwdata
    LCD_RS1
    LCD_RW0
    LCD_E1
    LCD_E0
    delay(5)
    LCD_E1
    }
    void lcd_init(void)
    {
    WriteCommand(0x38)
    WriteCommand(0x38)
    WriteCommand(0x38)
    delay(5)
    WriteCommand(0x08)
    WriteCommand(0x01)
    WriteCommand(0x06)
    WriteCommand(0x0c)
    }
    void set_xy(unsigned char xunsigned char y)
    {
    switch (x)
    {
    case 0 y+0x80 break
    case 1 y+0xc0 break
    }
    WriteCommand(y)
    }
    void display_onechar(unsigned char xunsigned char yunsigned char wdate)
    {
    set_xy(xy)
    WriteData(wdate)
    }
    void display_string(unsigned char xunsigned char yunsigned char *s)
    {
    set_xy(xy)
    while(*s)
    {
    WriteData(*s)
    s++
    }
    }
    ******************************************************************
    void Write_CGRAM(unsigned char *p)
    {
    unsigned char ijkk
    unsigned char tmp0x40 操作CGRAM命令码
    kk0
    for(j0j<2j++) 64 字节存储空间生成 8 定义字符点阵 64X8
    {
    for(i0i<8i++) 8 字节生成 1 字符点阵
    {
    WriteCommand(tmp+i) 操作CGRAM命令码+写入CGRAM址
    WriteData(p[kk]) 写入数
    kk++
    }
    tmp + 8
    }
    }
    #endif






    附录3 完整硬件电路图



























    文档香网(httpswwwxiangdangnet)户传

    《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
    该内容是文档的文本内容,更好的格式请下载文档

    下载文档到电脑,查找使用更方便

    文档的实际排版效果,会与网站的显示效果略有不同!!

    需要 2 香币 [ 分享文档获得香币 ]

    下载文档

    相关文档

    燃烧式工业窑炉温度比值控制系统课程设计

     课 程 设 计 说 明 书 学生姓名: 学 号: 学 院: 机械工程与自动化学院 专 业: 过程装...

    5年前   
    1278    0

    基于单片机的数字温度计设计课程设计

    基于单片机的数字温度计设计引言随着现代信息技术的飞速发展和传统工业改造的逐步实现.能够独立工作的温度检测和显示系统应用于诸多领域。传统的温度检测以热敏电阻为温度敏感元件。热敏电阻的成本低,但需...

    3年前   
    936    0

    基于单片机的数字温度计课程设计

    摘要 本文提出了关于MCS-51系列单片机的数字温度计的制作电路方法和编程思想。设计一直灌输着电子电路制作软硬结合,以硬件为主的理念。采用模块化的设计思想。硬件模块分为温度的感应模块、时钟...

    3年前   
    783    0

    基于51单片机数字温度计设计课程设计

    课 题: 基于51单片机数字温度计设计专 业: 电子信息工程班 级: 班学 号: 姓 名: ...

    3年前   
    976    0

    基于单片机的空调温度控制系统设计毕业设计

     毕业设计  题 目 基于单片机的空调温度控制系统设计 学生姓名 学 号 学 院 计算机与信息工程系 专业班级 指导...

    5年前   
    2548    0

    基于单片机的温度控制系统设计毕业论文

    职业学院毕业论文 题目:单片机温度控制系统研制 系 院:工程技术学院 学生姓名: 学 号: 专 业:机电一体化 ...

    5年前   
    5865    0

    论文:基于单片机的温度控制系统

    本设计以AT89C51单片机为核心的温度控制系统的工作原理和设计方法。温度信号由温度芯片DS18B20采集,并以数字信号的方式传送给单片机。文中介绍了该控制系统的硬件部分,包括:温度检测电路、...

    5年前   
    1851    0

    基于单片机的高精度温度检测与控制系统

    温度的检测与控制的系统渐渐在我们的日常生活中愈发重要,在我们的日常生活的领域还有各个国家和地方的都大量涉及单片机对温度的检测与其控制,比如温度计,酒店的紧急火灾报警温度感应器等等。

    3年前   
    854    0

    基于单片机的温度控制外文文献及中文翻译

    Temperature Control Using a Microcontroller: An Interdisciplinary Undergraduate Engineering Desi...

    5年前   
    1347    0

    论文:基于单片机的温度控制系统

    本设计以AT89C51单片机为核心的温度控制系统的工作原理和设计方法。温度信号由温度芯片DS18B20采集,并以数字信号的方式传送给单片机。

    5年前   
    2414    0

    基于AT89C51单片机的鸡舍温度控制系统

    基于AT89C51单片机制作一个温度控制器,用于自动接通电加热或制冷设备,从而使鸡舍内温度达到设想温度的要求,并能实时显示室内温度。当室内温度低于设定下限温度时,控制器连通电加热设备,当室内温度...

    6年前   
    14644    0

    单片机课程设计报告基于单片机的温控系统

    职业学院机械与电子工程学院基于单片机温控系统课程设计报告班 级 电信班 学生姓名 学 号 指导教...

    3年前   
    996    0

    基于51单片机的定时闹钟设计单片机课程设计

    单片机 课 程 设 计 报 告 院系: 信息工程学院 ...

    2年前   
    495    0

    基于PID的温度控制系统设计论文

     (20XX届) 毕业设计 题  目:   基于PID的温度控制系统设计  学  院:             专  业:     电气工程及其自动...

    5年前   
    1997    0

    基于单片机的温湿度控制器设计课程设计报告

    《智能仪器仪表设计与调试》课程设计报告 学 院: 电气与信息工程学院 专业班级: 测控10-01 学生姓名: 学 ...

    1年前   
    306    0

    基于51单片机的数字温度计毕业设计

    数字测温计设计摘要:随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研、各个领域,已经成为一种比较成熟的技术。在工业生产中温度是常用的被控参数,而采用单片机来对这些被控参数进行控制...

    3年前   
    1203    0

    计算机控制课程设计温度控制

    XX大 学课程设计报告  院(部、中心) 姓 名 学 号   专 ...

    3年前   
    427    0

    基于热敏电阻数字温度计课程设计

    单片机应用系统(三级)项目设计说明书(2012/2013学年第二学期)题 目 : 基于热敏电阻的数字温度计 __专业班级 : 电子信息工程 学生姓...

    4年前   
    652    0

    基于单片机的拔河游戏机设计课程设计

    ××大学××学院××课程设计基于单片机的拔河游戏机设计学生姓名学 号所 在 系专业名称班 级指导教师成 绩 ...

    3年前   
    585    0

    基于单片机的自动节水灌溉系统课程设计

     数理与信息工程学院应用系统设计 题 目: 基于单片机的自动节水灌溉系统 专 业: 计算机科学与技术(专升本) 班 级: ...

    3年前   
    612    0

    文档贡献者

    文***品

    贡献于2023-01-07

    下载需要 2 香币 [香币充值 ]
    亲,您也可以通过 分享原创文档 来获得香币奖励!
    下载文档

    该用户的其他文档