基于8088控制器的直流电机闭环调速.docx
- 文档编号:13055705
- 上传时间:2023-06-10
- 格式:DOCX
- 页数:23
- 大小:1.01MB
基于8088控制器的直流电机闭环调速.docx
《基于8088控制器的直流电机闭环调速.docx》由会员分享,可在线阅读,更多相关《基于8088控制器的直流电机闭环调速.docx(23页珍藏版)》请在冰点文库上搜索。
基于8088控制器的直流电机闭环调速
基于8088控制器的直流电机闭环调速
摘要:
在现实生活中的各个运动系统环节,都少不了电机的积极作用,所以,能够控制好电机,一来能够节约能耗,二来能使电机输出我们所需要的效果,从而提高效率。
本课程设计系统由AEDK-LabACT自控/计控原理实验箱中的直流电机和电机驱动功率放大器、
调节器(8088控制器)、电机转速检测传感器、F/V转换器等组成,本课程设计采用单闭环控制方
案结合PID算法来实现直流电机的调速。
关键词:
直流电机;闭环调速;PID;8088控制器
Basedonthe8088controllerofDCmotorcontro
Abstract:
Inreallife,eachmovingsystemlinks,notthemotorpositiverole,therefore,tocontrolthemotor,thuscansaveenergy,andcanmakethemotortooutputtheresultthatweneed,thusimprovingefficiency.
ThecurriculumdesignofthesystembyAEDK-LabACTautomation/controlprincipleexperimentboxintheDCmotorandamotortodrivethepoweramplifier,Regulator(8088controller),motorspeeddetectingsensor,F/Vconverteriscomposed,thecurriculumdesignusingasingleclosedloopcontrolmethodThecombinationofPIDalgorithmtoachievetheDCmotorspeedregulation.
Keywords:
DCmotor;closedloopcontrol;PIDcontroller;8088
目录
第1章引言1
1.1背景1
1.2选题的目的和意义1
1.3本课程设计的主要内容1
第2章系统整体设计方案1
2.1总体思想1
2.2硬件组成及工作原理2
2.2.1电机驱动2
2.2.2速度采集3
2.3软件及算法5
2.3.1程序流程图5
第3章参数调试及数据分析6
3.1调整频率/电压63.2实验数据及分析
3.2.1改变Kp6
3.2.2改变Ti6
3.2.3改变Td7
第4章结束语9
致谢10
参考文献11
附录12
第1章引言
1.1背景
在现实生活中的各个运动系统环节,都少不了电机的积极作用,所以,能够控制好电机,一来能够节约能耗,二来能使电机输出我们所需要的效果,从而提高效率。
电机调速问题一直是自动化领域中比较重要的问题之一。
不同领域与场合对电机的调速性能有着不同的要求。
因此,不同的场合要求不同的调速方案。
1.2选题的目的和意义
为了提高直流电机调速系统的动态、静态性能,通常采用闭环控制系统,其中主要包括单闭环与双闭环。
而在对于调速指标要求不高的情况下,通常采用单闭环控制系统就足够达到要求了。
闭环系统较之开环系统就是把输出信号通过传感模块反馈到输入端,与输入信号相比较,其差值作为实际的输入信号;能自动调节输入量,能提高系统稳定性。
在对调速系统性能有较高要求的领域常利用直流电动机,但直流电动机开环系统稳定性不能满足要求,可利用转速单闭环提高稳态精度。
1.3本课程设计的主要内容
1.了解直流电动机速度闭环控制随动系统的组成和工作原理。
2.了解和掌握数字PID调节器控制参数的工程整定方法
3.了解和掌握用LabACT实验箱数字PID实验被控过程。
4.观察和分析在标准PID控制系统中,P.I.D参数对系统性能的影响。
5.掌握本实验机的PID控制算法中的特殊使用。
第2章系统整体设计方案
2.1总体思想
本课程设计系统采用AEDK-LabACT自控/计控原理实验箱中的直流电机和电机驱动功率放大器、调节器(8088控制器)、电机转速检测传感器、F/V转换器等组成,组成框图见图2-1。
图2-1直流电动机速度闭环控制随动系统的组成框图
电机驱动功率放大器输入/输出电压范围:
0~+5V。
电机转速传感器检测-F/V转换器输出电压范围:
0~+5V,对应于电机转速为0~3300转/分。
上面框图调节器采用的是计算机控制器(8088控制器),通过在AEDK-LabACT软件平台上编程,编译,下载到实验箱中,通过在AEDK-LabACT软件平台上的虚拟终端观察波形,通过调节PID参数来实现电机调速。
2.2硬件组成及工作原理
2.2.1电机驱动(DAC0832+驱动电路)
电机驱动硬件电路由两部分组成:
数模转换+信号驱动电路。
数模转换使用实验箱B2单元的DAC0832,该电路负责把8088控制器输出的数字信号转换成模拟电压值,该电路OUT2可以实现-5V~+5V输出。
不过本次设计只需要0~+5V的信号,所以使用OUT1输出。
电路图如图2-2所示。
为使直流电机达到更好的调速效果,直流电机驱动通过运放把信号放大1.5倍(输出电压范围为:
0V~7.5V)。
同时,为了增大驱动的输出电流,采用四运放并联输出的方案。
该方案简单易行,效果明显。
电路图如图2-3所示。
图2-2DAC0832原理图
图2-3电机驱动原理图
2.2.2速度采集(电机测速+F/V转换器+AD)
闭环调速方案需要速度采集模块,电机测速由直流电机带动光栅盘转动,光栅盘上有12个透光孔,光栅盘下有一个光电断续器,它输出一组频率正比于电机转速的脉冲信号,经过施密特触发反向器74LS14滤去毛刺后送至该模块的F/V转换,通过F/V转换就可以得到表征电机的当前转速的电压值。
电机测速如图2-4,F/V转换如图2-5所示。
图2-4电机测速原理图
图2-5F/V转换原理图
把经F/V转换后的电压信号由模数转换(AD0809)转换成数字信号输入8088控制器,控制器通过PID算法对反馈信号进行处理。
因此形成了速度控制的闭环系统。
AD0809与8088的接口电路如图2-6所示。
由于AD0809是8路输入,本设计只使用了其中一路,采用的是IN4输入口。
图2-6AD0809原理图
2.3软件及算法
2.3.1程序流程图
本设计程序由两部分组成:
主程序(如图2-7)和定时器中断程序(如图2-8),主程序主要负责与上位机通讯,定时器中断程序负责实现PID算法控制,定时器中断的时间决定了采样周期,本设计采样周期为4ms。
程序见附件1。
图2-7主程序流程图图2-8中断程序流程图
第3章参数调试及数据分析
3.1调整频率/电压
(F/V)转换静态工作点B1单元中电位器的左边K3开关拨下(GND),右边K4开关拨上(+5V),信号输出(B1的Y测孔)调整为+3V(调节方法:
调节电位器,用万用表测量Y测孔)。
Y测孔联线到C2模块电机输入测孔,调整C2模块中的电位器W2,使电机输出电压测孔上的直流电压等于+3V。
3.2实验数据及分析
3.2.1改变Kp
Kp=1.5,Ti=0.092,Td=0.014Kp=2.8,Ti=0.092,Td=0.014
由原理可知,Kp可以改善系统的动态性能,由上图可以明显看出,当Kp过大时,使得超调量变得更大,系统的稳定性变差。
3.2.2改变Ti
Kp=1.5,Ti=0.092,Td=0.014Kp=1.5,Ti=0.02,Td=0.014
Kp=1.5,Ti=0.12,Td=0.014Kp=1.5,Ti=0.245,Td=0.014
减小积分参数(Ti),积分作用减弱,反知。
根据上面图形对比可以得出如下结论:
积分作用过强,将会造成系统的稳态性能变差,甚至震荡,造成系统不稳定。
积分作用过弱,将会造成系统的动态性能变差,甚至不能达到设定值。
3.2.3改变Td
Kp=1.5,Ti=0.092,Td=0.014Kp=1.5,Ti=0.092,Td=0.145
Kp=1.5,Ti=0.092,Td=0.245
由于微分相位超前,所以Kp可以改善反应滞后,及具有预见性。
但是微分作用的加入降低了系统的抗干扰性,如果微分作用过强,会降低系统的稳态性能甚至造成系统不稳定。
第4章结束语
通过这次课程设计,让我对计算机控制技术这门课有了进一步的认识。
这次课程设计是对这门课程的一个总结,对计算机控制技术知识的应用。
设计时要有一个明确的思路,再结合所学知识一步一步达到设计的预期效果。
通过这次设计对我们独自解决问题的能力也有所提高。
在整个过程中,我查阅了相关书籍及文献,取其相关知识要点应用到课设中,而且其中有很多相关设备选取标准可以直接选取,这样设计出来的设备更加符合要求。
致谢
在这次课程设计中遇到很多的问题,但在老师的指导与同学的帮助下顺利完成了这次课程设计,再次对所有指导我的老师、帮助我的同学以及所有帮助过我的人说声感谢
参考文献
[1]杨帮华,王建等.微机原理与接口技术实用教程.清华大学出版社,2011.
[2]王书锋,谭建豪.计算机控制技术.华中科技大学出版社,2011.
[3]上海埃威航空电子有限公司.计控原理实验机指导书,2012.
附录
#defineUINTunsignedint
#defineBYTEunsignedchar
#defineCS08320x00//D/A0832地址
#defineCS8259E0x20//8259命令寄存器地址
#defineCS8259O0x21//8259控制寄存器地址
#defineCS8253T00x40//8253定时器0地址
#defineCS8253T10x41//8253定时器1地址
#defineCS8253T20x42//8253定时器2地址
#defineCS8253C0x43//8253控制寄存器地址
#defineCS2730x60//并行输出地址
#defineCSAD_1_00x80//虚拟示波器0809通道0地址
#defineCSAD_1_10x81//虚拟示波器0809通道1地址
#defineCSAD_2_00xA0//实验用示波器0809通道0地址
#defineCSAD_2_10xA1
#defineCSAD_2_20xA2
#defineCSAD_2_30xA3
#defineCSAD_2_40xA4
#defineCSAD_2_50xA5
#defineCSAD_2_60xA6
#defineCSAD_2_70xA7
#defineCS0809_00X80
#defineCS0809_10X81
#defineDSADDR0x0030//数据暂存段地址
#defineDSMAX0x0D00
#defineCOMMBYTE0x0CF0//串行口暂存偏移地址
#defineREVBYTE0x0C00//用于上下交换数据区偏移地址
#defineCSADDR0x0100
#defineADSELECT0x0C20//AD端口选择暂存偏移地址
#defineREVEN0x20
#definedsvalue0x003f
#defineD8253T0L0x33
#defineD8253T0H0x13//4ms定时//TH0THL*(4/4.9152)=4000时钟频率:
1.229MHZ
#include
voiddelay1(intt);
voidinterruptirq7(void);//中断7服务程序
voidinterruptirq0(void);//中断0服务程序
BYTERevByte(void);//接收一个字节
voidSendByte(BYTEbyte);//发送一个字节
BYTERevEnable(void);//查询允许接受标记
intbSpeed,bSpeedD;//当前转速、目标转速
intKp,Ti,Td,T;//PID设置参数、周期
intPk;//PID输出
intKi,Kd;//积分、微分系数
intE0,E;//速度误差
intEsum;//积分累积量
unsignedintTdd,count;
BYTEbTest;
BYTESendFlag;//新数据接收标志
BYTETable[5];//临时存放接收到的数据
BYTEIndex;//临时存放接收到的数据的个数
intOver;//接收超时检测
BYTEflag;
intmain(void)
{
//取得系统程序段段地址,计算并设置数据段段地址
UINTuiDS;
_asm{cli}//关中断
uiDS=_CS;
uiDS=uiDS+dsvalue;
_DS=uiDS;
_ES=uiDS;
flag=0;
Tdd=1;
Kp=0x19;//比较系数25
Ti=0x64;//积分时间常数100
Td=0x50;//微分时间常数80
T=4;//周期4ms
Esum=0;//积分累积量
E0=0;//清误差寄存器
bSpeedD=0;//目标转速
SendFlag=1;//数据发送标志
outportb(0x00,0xa0);//把数字量160传给DAC0832
//初始化8259,工作方式为:
单片,上升沿触发,中断类型号为8,正常全嵌套方式,非自动EOI,
选用8086/8088系统,开中断0和中断6
outportb(0x20,0x13);//;ICW1:
边沿触发,单片,要ICW4
outportb(0x21,0x08);//;ICW2:
中断类型码8
outportb(0x21,0x01);//;ICW4:
非特殊完全嵌套方式,非自动EOI方式,86/88系统
outportb(0x21,0xBE);//;OCW1:
IRQ6.IRQ0开放(0开放1禁止)
outportb(0x20,0x20);
//定时器0:
先低再高,方式3(方波发生器)
outportb(CS8253C,0x36);
outportb(CS8253T0,D8253T0L);//4ms定时
outportb(CS8253T0,D8253T0H);
outportb(CS0832,0);
//嵌入汇编,设置中断入口地址
_asm{
pushds
pushsi
pushax
xorax,ax
movds,ax
movax,offsetirq7
movsi,003ch
mov[si],ax
movsi,003eh
movax,cs
mov[si],ax
movax,offsetirq0
movsi,0020h
mov[si],ax
movsi,0022h
movax,cs
mov[si],ax
popax
popsi
popds
}
_asmSTI//开中断
enable();
while
(1)
{
_asmCLI
bTest=RevEnable();
if(bTest==REVEN)//允许接收
{
bTest=RevByte();
if(bTest==0)//以下程序为接收上位机数据
{
Index=0;
bTest=REVEN;
while(Index<4)
{
Over=1000;
while
(1)
{
bTest=RevEnable();
if(bTest==REVEN)
{
break;
}
else
{
delay1
(1);
}
if(Over<1)
break;
else
Over--;
}
if(Over<1)
break;
Table[Index]=RevByte();//接收上位机设置的参数
Index++;
}
if(Index==4)//参数处理
{
Kp=Table[0];//保存比例系数
Ti=Table[1];//保存积分时间常数
Td=Table[2];//保存微分时间常数
bSpeedD=Table[3];//保存目标速度设定值
Esum=0;//清积分累积量
E0=0;//清误差寄存器
SendFlag=1;//置接收数据标志
}
}
}
_asmSTI
delay1
(1);
}
}
//延时子程序
voiddelay1(intt)
{
intj;
for(j=0;j } //中断0服务子程序 //用PID参数对速度进行控制 voidinterruptirq0(void) { inti; intden,rem; intden1,rem1; intden2,rem2; UINTuiDS; uiDS=_CS; uiDS=uiDS+dsvalue; _DS=uiDS; _ES=uiDS; count++; if(count>=Tdd) { if(SendFlag==1) { if(Ti==245) {Ki=0;} else { Ki=T*Kp/Ti;//积分系数计算 } Kd=Td*Kp/T;//微分系数计算 Esum=0; E=0; E0=0; SendFlag=0;//清接收数据标志 } outportb(CSAD_2_4,0); for(i=0;i<100;i++);//延时 bSpeed=inportb(CSAD_2_4);//目标转速采样 i=(unsignedint)bSpeed; E=bSpeedD-i; Esum=Esum+E;//积分累加 den=Ki*(Esum/100); rem=Ki*(Esum%100); den1=Kp*(E/100); rem1=Kp*(E%100); den2=Kd*((E-E0)/100); rem2=Kd*((E-E0)%100); Pk=den+den1+den2; Pk=Pk+rem/100+rem1/100+rem2/100; Pk=Pk+(rem%100+rem1%100+rem2%100)/100; if(Pk<0)Pk=0; if(Pk>255)Pk=255; E0=E;//误差保存 outportb(CS0832,Pk);//PID输出控制 count=0; } SendByte(bSpeedD);//发送目标转速到上位机显示 SendByte(bSpeed);//发送当前转速到上位机显示 outportb(0x20,0x20); } //防止误触发进入 voidinterruptirq7(void)//防止死机 { outportb(0x20,0x20); } //接收一个字节,并返回该字节 BYTERevByte(void) { BYTEb; _asm{ PUSHAX PUSHBX PUSHES INT1FH MOVBL,AL MOVAX,0030H MOVES,AX MOVAL,BL MOVES: [3312],AL POPES POPBX POPAX } b=peekb(DSADDR,COMMBYTE); returnb; } //发送一个字节byte voidSendByte(BYTEbyte) { pokeb(DSADDR,COMMBYTE,byte); _asm{ PUSHAX PUSHES MOVAX,0030H MOVES,AX MOVAL,ES: [3312] INT1EH POPES POPAX } } //判断是否允许接收,返回REVEN-允许,其他不允许 BYTERevEnable(void) { BYTEb; _asm{ PUSHAX PUSHES MOVAX,0030H MOVES,AX INT1DH MOVES: [3312],AL POPES POPAX } b=peekb(DSADDR,COMMBYTE); returnb; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 8088 控制器 直流电机 闭环 调速
文档标签
- 基于MATLAB直流电机闭环
- 单片机控制闭环直流
- 配合控制直流闭环
- 直流电机转速检测调速器
- 基于电流调制动态
- 基于S7300PLCPID闭环控制
- 基于ATmega8PWM闭环
- 基于MATLAB闭环直流
- 闭环控制PWM直流调速
- 基于arm9直流电机调速
- 直流电机闭环调速控制系统
- 直流电机闭环调速作业
- 电磁调速电动机控制器
- 基于TMS320LF2407A直流电机调速
- 基于DSPPWM闭环
- 基于MATLAB直流电机速度
- MATLAB闭环直流调速
- 直流电机闭环反馈MATLAB
- MATLAB分析闭环系统
- 基于MATLAB的直流电动机双闭环调速系统的仿真研究基于MATLAB
- 基于MATLAB的CDMARAKE接收机仿真基于MATLAB