中南大学机电一体化实验数字pidpwm调压调速设计报告珍藏版本科本科毕业论文.docx
- 文档编号:11248144
- 上传时间:2023-02-26
- 格式:DOCX
- 页数:41
- 大小:101.67KB
中南大学机电一体化实验数字pidpwm调压调速设计报告珍藏版本科本科毕业论文.docx
《中南大学机电一体化实验数字pidpwm调压调速设计报告珍藏版本科本科毕业论文.docx》由会员分享,可在线阅读,更多相关《中南大学机电一体化实验数字pidpwm调压调速设计报告珍藏版本科本科毕业论文.docx(41页珍藏版)》请在冰豆网上搜索。
中南大学机电一体化实验数字pidpwm调压调速设计报告珍藏版本科本科毕业论文
基于单片机的数字PID控制直流电机
PWM调压调速器系统设计
所在学院:
机电工程学院
专业班级:
学生姓名:
学生学号:
PID简介及设计要求
PID(比例积分微分,英文全称为ProportionIntegrationDifferentiation)控制器由比例单元(P)、积分单元(I)和微分单元(D)组成。
它是根据被控过程的特性确定PID控制器的比例系数、积分时间和微分时间的大小来实现自动控制,实际中也有PI和PD控制。
简单来说,就是测量关心的变量,与期望值相比较,用这个误差纠正调节控制系统的响应。
问世至今已有近70年历史,它以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制的主要技术之一。
当被控对象的结构和参数不能完全掌握,或得不到精确的数学模型时,控制理论的其它技术难以采用时,系统控制器的结构和参数必须依靠经验和现场调试来确定,这时应用PID控制技术最为方便。
即当我们不完全了解一个系统和被控对象,或不能通过有效的测量手段来获得系统参数时,最适合用PID控制技术。
PID控制器其输入e(t)与输出u(t)的关系为u(t)=kp(e((t)+1/TI∫e(t)dt+TD*de(t)/dt)式中积分的上下限分别是0和t因此它的传递函数为:
G(s)=U(s)/E(s)=kp(1+1/(TI*s)+TD*s)其中kp为比例系数;TI为积分时间常数;TD为微分时间常数。
使用中只需设定三个参数(Kp,Ti和Td)即可。
在很多情况下,并不一定需要全部三个单元,可以取其中的一到两个单元,但比例控制单元是必不可少的。
本次实验就是应用数字PID模型作单片机控制编程,其中P、I、D参数可根据实际情况进行输入调节。
利用单片机PWM输出调节施加于直流电机两端的电压,实现对直流电机的PID调压调速功能。
.
设计原理与思路
PID调速设计原理图
如图所示,此为一闭环控制系统:
§反馈量
运用单片机来控制AD芯片来转换模拟电压到数字电压。
具体过程如下:
实际转速通过压频转换器转换为频率,输入AD转换芯片。
直流电机实际转速越大,则AD给定的电压越大,则产生的数字量越大。
再将通过AD转换后得到的八位二进制数输入单片机。
单片机利用输入的实际频率值和预先设定的值进行比较,通过运算得到一个偏差。
§PID运算
借助单片机实现PID运算。
PID调节器通过这个偏差进行PID运算,得到PWM的占空比值。
如若实际的转速比期望转速小则这样就相当于加大了PWM的占空比,相当于增大直流电机的给定电压,要是比设定值大,这样也会得到一个偏差,就把这个变差与给定的电压向减,这样就可以减少PWM的占空比,同理则减小直流电机的给定电压,直到下一次PID运算。
如此往复反馈调节,直到所得实际转速与期望转速接近,达到调节电动机速度的目的。
§PWM输出调制
PWM的意思是脉宽调节,也就是调节方波高电平和低电平的时间比。
例如,一个20%占空比波形,会有20%的高电平时间和80%的低电平时间占空比越大,高电平时间越长,则输出的脉冲幅度越高,即电压越高。
如果占空比为0%,那么高电平时间为0,则没有电压输出。
如果占空比为100%,那么输出全部电压。
所以通过调节占空比,可以实现调节输出电压的目的,而且输出电压可以无级连续调节。
§提高控制精度
为提高系统实际调节时的精度,在PID运算过程中所有数据均采用浮点数运算。
在单片机应用系统的数据处理过程中,浮点数的结构相对复杂,但它能够以固定的字节长度保持相对精度不变,用较少的字节表示很大的数的范围,便于存储和运算,在处理的数据范围较大和要求精度较高时,采用浮点数。
设计方案
1.硬件介绍
在产生PWM波形我们采用ADC0809芯片和AT89C51两个核心器件。
ADC0809芯片是要外加电压和时钟,当输入不同的电压的时候,就可以把不同的电压模拟量转化为数字值,输入的电压越大,其转换的相应的数字也就会越大,ADC0809芯片有8个通道输入和8个通道输出。
其具体的管脚图如下:
ADC0809芯片管脚图
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。
AT89C51是一种带2K字节闪烁可编程可擦除只读存储器的单片机。
AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
外形及引脚排列如图所示
AT89C51芯片管脚图
2.PWM输出程序设计
PWM通过占空比来调节方波高电平和低电平的时间比。
由单片机进行控制的实际过程为:
将单片机的P1.0、P1.2与直流电机的电压输入端相接,利用定时器中断来置位复位P1.0、P1.2来输出电压,于是我们就可以通过改变定时器初值从而改变定时时间来决定输出方波的占空比。
利用T0定时器产生时间为1ms的中断(当单片机晶振频率为12MHz时置初值为0FC18H),此为输出方波的周期。
利用T1产生时间为0~1ms的中断(即定时器初值为0FC18H~0FFFFH之间,依据PID调节计算值决定),此为一个方波周期中高电平的时间。
将PID运算后得到的频率值转为定时器的初值,赋予定时器T1,即可改变控制电压的等效值。
%PWM源程序
ORG0000H
AJMPMAIN
ORG000BH
AJMPINT0_P
ORG001BH
AJMPINT1_P
ORG0030H
MAIN:
MOVTMOD,#11H
MOVTH0,#0FCH
MOVTL0,#18H
MOVTH1,#0
MOVTL1,#0
MOVR1,#0FCH
MOVR0,#29H
SETBTR0
SETBTR1
SETBEA
SETBET0
SETBET1
SJMP$
INT0_P:
MOVTH0,#0FCH
MOVTL0,#18H
MOVTH1,R1
MOVTL1,R0
SETBP1.0
SETBP1.2
SETBTR1
NOP
RETI
INT1_P:
CLRP1.0
CLRP1.2
CLRTR1
NOP
RETI
END
3.如何将实际转速采集输入单片机
直流电机在转动的过程中,光电开关会将实际的转速情况采集为电脉冲,再经压频转换器输入AD转换器。
而实际输入单片机进行运算的并不是转速对应的频率值,而是经AD转换后的八位二进制数。
因此,我们要求得频率值与AD转换后的八位二进制数的对应关系。
具体过程如下:
1.将单片机与串行数据显示器相连,利用串行数据显示器将输入单片机的八位二进制数显示。
2.将直流电机与电源连接,启动运行。
通过调节转换器上的可变电阻,使显示数据为0FEH时(此为保证数据准确,防止饱和失真),记录下实际转速对应的频率值。
3.计算转速频率值与AD转换后的八位二进制数的对应系数。
4.对PID控制器参数的调节
比例系数Kp对系统性能的影响:
(1)对系统的动态性能影响:
Kp加大,将使系统响应速度加快,Kp偏大时,系统振荡次数增多,调节时间加长;;Kp太小又会使系统的响应速度缓慢。
Kp的选择以输出响应产生4:
1衰减过程为宜。
(2)对系统的稳态性能影响:
在系统稳定的前提下,加大Kp可以减少稳态误差,但不能消除稳态误差。
因此Kp的整定主要依据系统的动态性能。
积分时间TI对系统性能的影响:
(1)对系统的动态性能影响:
积分控制通常影响系统的稳定性。
TI太小,系统可能不稳定,且振荡次数较多;TI太大,对系统的影响将削弱;当TI较适合时,系统的过渡过程特性比较理想。
(2)对系统的稳态性能影响:
积分控制有助于消除系统稳态误差,提高系统的控制精度,但若TI太大,积分作用太弱,则不能减少余差。
微分时间TD对系统性能的影响:
(1)对系统的动态性能影响:
微分时间TD的增加即微分作用的增加可以改善系统的动态特性,如减少超调量,缩短调节时间等。
适当加大比例控制,可以减少稳态误差,提高控制精度。
但TD值偏大或偏小都会适得其反。
另外微分作用有可能放大系统的噪声,降低系统的抗干扰能力。
(2)对系统的稳态性能影响:
微分环节的加入,可以在误差出现或变化瞬间,按偏差变化的趋向进行控制。
它引进一个早期的修正作用,有助于增加系统的稳定性。
PID控制器的参数必须根据工程问题的具体要求来考虑。
一般来说,要同时满足这些要求是很难做到的,必须根据系统的具体情况,满足主要的性能指标,同时兼顾其它方面的要求。
心得体会
本次实验完成了基于单片机的数字PID控制器的设计,并通过实验过程对PID参数进行调节,实现了对直流电机的调压调速过程。
世上无难事,只怕有心人。
从最初接触到设计题目时些许的茫然到最终实验报告的完成,这其间并不是一帆风顺。
在最初阶段查阅资料中,程序设计过程中,对PID参数的调节过程中我都遇到了一些问题。
通过与张老师和周围的同学交流讨论,在解决问题的同时,我不仅增长了知识也提高了发现问题解决问题的能力。
此时,站在“山顶”回看来路,虽然付出的过程充满了坎坷,但成功的完成设计要求也给了我很大的鼓舞与前进的动力。
而在今后的人生与工作中还有很多座大山等着我。
同时,细节决定成败!
在程序设计的过程中,我遇到了平常容易忽视的一些问题,诸如数据存储器空间的复用,语句的书写错误,参数的符号错误等等。
俗话说“千里之堤毁于蚁穴”,而这些看似细小的问题却导致了实验的失败,反复更正花费了大量时间。
对于我们做工程的人,细节不容忽视!
这也是我经过本次实验我的亲身认知。
此外,我想真诚地感谢张老师!
在学习的过程中,一个方向比一个解答更为重要!
张老师为我们指明了方向,而“路”完全靠我们自己去走。
在提高学生自主性的同时,也增加了学生的学习与思考的动力。
无论实在程序设计过程中还是实验参数调节过程中与同学讨论,都使我受益匪浅。
附录:
PID程序
EK0EQU40H
EK1EQU43H
EK2EQU46H
KPPEQU60H
KIIEQU63H
KDDEQU66H
PPEQU76H
IIEQU79H
DDEQU7CH
AIMEQU50H
UK0EQU70H
UK1EQU73H
ORG0000H
AJMPMAIN
ORG000BH
AJMPINT0_P
ORG001BH
AJMPINT1_P
ORG0030H
MAIN:
LCALLSET0
SETBTR0
SETBTR1
SETBEA
SETBET0
SETBET1
SJMP$
INT0_P:
INC4FH
MOVR0,#4FH
CJNE@R0,#20,UNDO
LCALLINPUT
MOV4FH,#0
UNDO:
MOVTH0,#0FCH
MOVTL0,#18H
MOVTH1,4DH
MOVTL1,4EH
SETBP1.0
SETBP1.2
SETBTR1
NOP
RETI
INT1_P:
CLRP1.0
CLRP1.2
CLRTR1
NOP
RETI
SET0:
MOV73H,#0
MOV74H,#0
MOV75H,#0;%UK1
MOVR0,#UK1
LCALLBTOF
MOV40H,#00H
MOV41H,#00H
MOV42H,#0
MOVR0,#EK0
LCALLBTOF
MOV43H,#00H
MOV44H,#00H
MOV45H,#0;%EK1
MOVR0,#EK1
LCALLBTOF
MOV46H,#0
MOV47H,#0
MOV48H,#0;%EK2
MOVR0,#EK2
LCALLBTOF
MOV60H,#7FH
MOV61H,#10H
MOV62H,#0;%KPP
MOVR0,#KPP
LCALLBTOF
MOV63H,#7FH
MOV64H,#10H
MOV65H,#0;%KII
MOVR0,#KII
LCALLBTOF
MOV66H,#00H
MOV67H,#00H
MOV68H,#0;%KDD
MOVR0,#KDD
LCALLBTOF
MOV50H,#03H
MOV51H,#20H
MOV52H,#00H;%AIM频率期望值给定%%%%%%%%此值根据实际需要输入%%%%%%
MOVR0,#AIM
LCALLBTOF
MOV53H,#01H
MOV54H,#12H
MOV55H,#90H;%求取采样的八位二进制数与对应频率值之间的系数根据实际计算所得
MOVR0,#53H
LCALLBTOF
MOVTMOD,#11H
MOVTH0,#0FCH
MOVTL0,#18H
MOVTH1,#0
MOVTL1,#0
MOV4DH,#0FCH
MOV4EH,#29H;%置定时器初值
RET
INPUT:
MOVDPTR,#0FEF0H
MOVA,#0
MOVX@DPTR,A
WAIT:
JBP3.3,WAIT
MOVXA,@DPTR;%实际值读入
MOVA,#0FFH;
MOV57H,A
MOV56H,#8
MOV58H,#0;阶码赋值8,将AD读入的八位二进制转为浮点数
MOVR0,#56H
MOVR1,#53H;求得八位二进制数对应的频率
LCALLFMUL
;%计算偏差
MOVR1,#EK1
MOVR0,#EK2
LCALLFMOV
MOVR1,#EK0
MOVR0,#EK1
LCALLFMOV
MOVR1,#AIM
MOVR0,#EK0
LCALLFMOV
MOVR1,#56H
LCALLFSUB
;%PP计算
MOVR1,#EK0
MOVR0,#PP
LCALLFMOV
MOVR1,#EK1
LCALLFSUB
MOVR1,#KPP
LCALLFMUL
;%II计算
MOVR0,#II
MOVR1,#EK0
LCALLFMOV
MOVR1,#KII
LCALLFMUL
;%DD;
MOVR1,#EK1
MOVR0,#4AH
LCALLFMOV
MOVA,4AH
ADDA,#1
MOV4AH,A;%阶码加一即原数乘以2;
MOVR1,#EK0
MOVR0,#DD
LCALLFMOV
MOVR1,#4AH
LCALLFSUB
MOVR1,#EK2
LCALLFADD
MOVR1,#KDD
LCALLFMUL
;%PID
MOVR0,#UK1
MOVR1,#PP
LCALLFADD
MOVR1,#II
LCALLFADD
MOVR1,#DD
LCALLFADD
MOVR1,#UK1
MOVR0,#UK0;检验UK1是否在0~5之间;
LCALLFMOV
;%对UK判定处理
MOVR0,#UK0
LCALLFSGN
CJNEA,#1,SETZERO
MOV4AH,#01H
MOV4BH,#50H
MOV4CH,#00H
MOVR0,#4AH
LCALLBTOF
MOVR1,#UK0
LCALLFCMP
JNCSETT
MOVR0,#UK0
MOVR1,#4AH
LCALLFMOV
LJMPSETT
SETZERO:
LCALLFCLR
;%用UK计算T1的初值
SETT:
MOV4AH,#03H
MOV4BH,#20H
MOV4CH,#00H
MOVR0,#4AH
LCALLBTOF
MOVR1,#UK0
LCALLFMUL
LCALLFTOD
JCZANDX
CLRC
CLRA
SUBBA,4BH
MOV4BH,A
CLRA
SUBBA,4AH
MOV4AH,A
CJNEA,#0FCH,FUZHI
CLRC
MOVA,#29H
SUBBA,4BH
JCFUZHI
MOV4BH,#29H
LJMPFUZHI
ZANDX:
CLRC
CLRA
SUBBA,4AH
MOV4BH,A
MOV4AH,#0FFH
FUZHI:
MOV4DH,4AH
MOV4EH,4BH
RET
;浮点数格式化
FSDT:
LCALLMVR0;将待格式化操作数传送到第一工作区中
LCALLRLN;通过左规完成格式化
LJMPMOV0;将已格式化浮点操作数传回到[R0]中
;FADD功能:
浮点数加法
FADD:
CLRF0;设立加法标志
SJMPAS;计算代数和
;FSUB功能:
浮点数减法
FSUB:
SETBF0;设立减法标志
AS:
LCALLMVR1;计算代数和?
先将[R1]传送到第二工作区
MOVC,F0;用加减标志来校正第二操作数的有效符号
RRCA
XRLA,@R1
MOVC,ACC.7
ASN:
MOV1EH,C;将第二操作数的有效符号存入位1EH中
XRLA,@R0;与第一操作数的符号比较
RLCA
MOVF0,C;保存比较结果
LCALLMVR0;将[R0]传送到第一工作区中
LCALLAS1;在工作寄存器中完成代数运算
MOV0:
INCR0;将结果传回到[R0]中的子程序入口
INCR0
MOVA,R4;传回尾数的低字节
MOV@R0,A
DECR0
MOVA,R3;传回尾数的高字节
MOV@R0,A
DECR0
MOVA,R2;取结果的阶码
MOVC,1FH;取结果的数符
MOVACC.7,C;拼入阶码中
MOV@R0,A
CLRACC.7;不考虑数符
CLROV;清除溢出标志
CJNEA,#3FH,MV01;阶码是否上溢?
SETBOV;设立溢出标志
MV01:
MOVA,@R0;取出带数符的阶码
RET
MVR0:
MOVA,@R0;将[R0]传送到第一工作区中的子程序
MOVC,ACC.7;将数符保存在位1FH中
MOV1FH,C
MOVC,ACC.6;将阶码扩充为8bit补码
MOVACC.7,C
MOVR2,A;存放在R2中
INCR0
MOVA,@R0;将尾数高字节存放在R3中
MOVR3,A
INCR0
MOVA,@R0;将尾数低字节存放在R4中
MOVR4,A
DECR0;恢复数据指针
DECR0
RET
MVR1:
MOVA,@R1;将[R1]传送到第二工作区中的子程序
MOVC,ACC.7;将数符保存在位1EH中
MOV1EH,C
MOVC,ACC.6;将阶码扩充为8bit补码
MOVACC.7,C
MOVR5,A;存放在R5中
INCR1
MOVA,@R1;将尾数高字节存放在R6中
MOVR6,A
INCR1
MOVA,@R1;将尾数低字节存放在R7中
MOVR7,A
DECR1;恢复数据指针
DECR1
RET
AS1:
MOVA,R6;读取第二操作数尾数高字节
ORLA,R7
JZAS2;第二操作数为零,不必运算
MOVA,R3;读取第一操作数尾数高字节
ORLA,R4
JNZEQ1
MOVA,R6;第一操作数为零,结果以第二操作数为准
MOVR3,A
MOVA,R7
MOVR4,A
MOVA,R5
MOVR2,A
MOVC,1EH
MOV1FH,C
AS2:
RET
EQ1:
MOVA,R2;对阶,比较两个操作数的阶码
XRLA,R5
JZAS4;阶码相同,对阶结束
JBACC.7,EQ3;阶符互异
MOVA,R2;阶符相同,比较大小
CLRC
SUBBA,R5
JCEQ4
EQ2:
CLRC;第二操作数右规一次
MOVA,R6;尾数缩小一半
RRCA
MOVR6,A
MOVA,R7
RRCA
MOVR7,A
INCR5;阶码加一
ORLA,R6;尾数为零否?
JNZEQ1;尾数不为零,继续对阶
MOVA,R2;尾数为零,提前结束对阶
MOVR5,A
SJMPAS4
EQ3:
MOVA,R2;判断第一操作数阶符
JNBACC.7,EQ2;如为正,右规第二操作数
EQ4:
CLRC
LCALLRR1;第一操作数右规一次
ORLA,R3;尾数为零否?
JNZEQ1;不为零,继续对阶
MOVA,R5;尾数为零,提前结束对阶
MOVR2,A
AS4:
JBF0,AS5;尾数加减判断
MOVA,R4;尾数相加
ADDA,R7
MOVR4,A
MOVA,R3
ADDCA,R6
MOVR3,A
JNCAS2
LJMPRR1;有进位,右规一次
AS5:
CLRC;比较绝对值大小
MOVA,R4
SUBBA,R7
MOVB,A
MOVA,R3
SUBBA,R6
JCAS6
MOVR4,B;第一尾数减第二尾数
MOVR3,A
LJMPRLN;结果规格化
AS6:
CPL1FH;结果的符号与第一操作数相反
CLRC;结果的绝对值为第二尾数减第一尾数
MOVA,R7
SUBBA,R4
MOVR4,A
MOVA,R6
SUBBA,R3
MOVR3,A
RLN:
MOVA,R3;浮点数规格化
ORLA,R4;尾数为零否?
JNZRLN1
MOVR2,#0C1H;阶码取最小值
RET
RLN1:
MOVA,R3
JBACC.7,RLN2;尾数最高位为一否?
CLRC;不为一,左规一次
LCALLRL1
SJMPRLN;继续判断
RLN2:
CLROV;规格化结束
RET
RL1:
MOVA,R4;第一操作数左规一次
RLCA;尾数扩大一倍
MOVR4,A
MOVA,R3
RLCA
MOVR3,A
DECR2;阶码减一
CJNER2,#0C0H,RL1E;阶码下溢否?
CLRA
MOVR3,A;阶码下溢,操作数以零计
MOVR4,A
MOVR2,#0C1H
RL1E:
CLROV
RET
RR1:
MOVA,R3;第一操作数右规一次
RRCA;尾数缩小一半
MOVR3,A
MOVA,R4
RRCA
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中南 大学 机电 一体化 实验 数字 pidpwm 调压 调速 设计 报告 珍藏 版本 本科毕业 论文