直流电机闭环调速课程设计.docx
《直流电机闭环调速课程设计.docx》由会员分享,可在线阅读,更多相关《直流电机闭环调速课程设计.docx(30页珍藏版)》请在冰豆网上搜索。
直流电机闭环调速课程设计
课程设计报告
课程名称:
计算机控制系统
设计题目:
直流电机闭环调速
院系:
电气信息学院
班级:
姓名:
学号:
姓名:
学号:
姓名:
学号:
指导教师:
设计时间:
摘要
在电气时代的今天,电动机在工农业生产、人们日常生活中起着十分重要的作用。
直流电机是最常见的一种电机,在各领域中得到广泛的应用。
研究直流电机的控制和测量方法,对提高控制精度和响应速度、节约能源等都具有重要意义。
电机调速问题一直是自动化领域中比较重要的问题之一。
不同领域对于电机的调速性能有着不同的要求,因此,不同的调速方法有着不同的应用场合。
为了提高直流调速系统的动态、静态性能,通常采用闭环控制系统(主要包括单闭环、双闭环)。
而在对调速指标要求不高的场合,采用单闭环即可。
闭环系统较之开环系统能自动侦测把输出信号的一部分拉回到输入端,与输入信号相比较,其差值作为实际的输入信号;能自动调节输入量,能提高系统稳定性。
在对调速系统性能有较高要求的领域常利用直流电动机,但直流电动机开环系统稳定性不能满足要求,可利用转速单闭环提高稳态精度。
本次课程设计利用软件定时方式采用Intel8255A可编程外设接口芯片唐都TD-PITC实验系统上模拟直流电动机闭环调速系统,A/D转换器实现模拟信号到数字信号的转换,设置电机转速的给定值,通过PWM方式可实现电机转速的调节,LED灯显示电机转速的大小状态。
关键字:
闭环调速、inter8255A、A/D转换器、PWM、LED
目 录
摘要
1控制系统总体设计方案……………………………………………………………3
2系统的组成及工作原理……………………………………………………………4
2.18255工作原理……………………………………………………………4
2.2转速调节原理………………………………………………………………5
2.3A/D转换原理………………………………………………………………5
2.4LED灯的工作原理…………………………………………………………6
2.5实现两位十进制数的显示…………………………………………………6
3硬件设计……………………………………………………………………………7
3.1接线图……………………………………………………………………7
4软件设计……………………………………………………………………………8
4.1转速调节程序设计框图……………………………………………………8
4.2主程序流程图………………………………………………………………9
4.3程序清单…………………………………………………………………10
5调试及结果………………………………………………………………………21
5.1调试步骤…………………………………………………………………21
5.2结果分析……………………………………………………………………21
5.2结论…………………………………………………………………………21
参考文献……………………………………………………………………………22
1控制系统总体设计方案
本设计是利用PC微机一台、TD-PIT实验系统一套实现对直流电机转速调节的应用。
编写程序,用ADC0809完成模拟信号到数字信号的转换。
输入模拟信号有A/D转换单元可调电位器提供的0~5V,将其转换后的数字信号读入累加器,做为控制电机的给定转速。
用8255的B口作为直流电机的控制信号输出口,通过对电机转速反馈量的运算,调节控制信号,达到控制电机匀速转动的的作用。
并将累加器中给定的转速和当前测量转速显示在屏幕上。
再通过LED灯显示出转速的大小变化。
整个程序设计过程分为基本功能实现阶段,检测程序阶段,功能扩展和功能验证及程序补充四个实验阶段。
基本功能实验阶段,在“轻松编程”软件中完成,主要完成各个子程序的调试;在检测程序阶段,在“轻松编程”软件中通过编译和链接,并反复检查没有逻辑错误;调试结果正确以后在进行相应的连接,将各个子模块联系起来功能扩展及程序的补充,在实验室里完成,使用唐都硬件实验箱,用TDPIT来编程实现;功能验证阶段,在实验室里完成。
2系统的组成及工作原理
2.18255工作原理:
本设计利用8255的A口作为输出口,控制8个单色LED灯,来实现电机转速的大小调节。
并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息,CPU和接口之间的数据传递总是并行的,即可以同时进行传递8位,16位,32位等。
8255可编程外围接口芯片是具有A、B、C三个并行接口,+5V单电源供电,能在以下三种方式下工作:
方式0—基本输入/出方式、方式1—选通输入/出方式、方式2—双向选通工作方式。
其控制字、内部结构图和引脚图见图1-1-1、图1-1-2.
图2-1-18255控制字
图2-1-28255内部结构图和引脚图
2.2转速调节原理:
PWM的占空比决定输出到直流电机的平均电压.
PWM不是调节电流的.PWM的意思是脉宽调节,也就是调节方波高电平和低电平的时间比,一个20%占空比波形,会有20%的高电平时间和80%的低电平时间,而一个60%占空比的波形则具有60%的高电平时间和40%的低电平时间,占空比越大,高电平时间越长,则输出的脉冲幅度越高,即电压越高.如果占空比为0%,那么高电平时间为0,则没有电压输出.如果占空比为100%,那么输出全部电压.
所以通过调节占空比,可以实现调节输出电压的目的,而且输出电压可以无级连续调节.
在使用PWM控制的直流无刷电动机中,PWM控制有两种方式:
(1)使用PWM信号,控制三极管的导通时间,导通的时间越长,那么做功的时间越长,电机的转速就越高
(2)使用PWM控制信号控制三极管导通时间,改变控制电压高低来实现
直流电机单元由DC12V、1.1W的直流电机,小磁钢,霍尔元件及输出电路构成。
PWM示意图如图2-2-1所示。
通过调节T1的脉冲宽度,改变T1的占空比,从而改变输出,达到改变直流电机转速的目的
图2-2-1PWM示意图
利用8255的PB0产生脉冲信号作为控制量,经驱动电路驱动电机运转。
霍尔测速元件输出的脉冲信号记录电机转速构成反馈量。
在参数给定的情况下,经PID运算,电机可在控制量的作用下,按PC机累加器给定的转速运转。
通过PC的0号通道,设置为输出1ms方波,作为采样时钟,PB0产生PWM脉冲计时及转速累加,系统总线上INTR中断用于测量电机转速。
2.3A\D转换原理
图2-3-1ADC0809外部管脚图
本设计用ADC0809完成模拟信号到数字信号的转换。
输入模拟信号有A/D转换单元可调电位器提供的0~5V,将其转换后的数字信号读入累加器,做为控制电机的给定转速。
2.4LED灯的工作原理:
LED灯显示器有8个单色发光二极管构成,在共阳极接法中,各二极管的阳极被连在一起,使用的时候要将它与+5V项链,而把各段的阴极连到器件的相应引脚上。
当某的LED灯的引脚为低电平的时候,该灯工作。
图2-4-1LED灯管脚图
通过8255的A口信号作为输入信号,控制各灯的工作状态。
来显示出此时电机转速的大小变化。
1.5实现两位十进制数的显示:
在计算机中,对数字的输入和输出是用二进制进行的,而在计算机内部十进制数要转换为二进制来表示,要实现两位十进制数的显示,必须将他们转换为目前最普遍使用的字符编码ASCII码。
本设计中通过作除法,即拆分法,将两位十进制AB转换为A*10+B的形式,再通过A+30H与B+30H来转换为ASCII码,若溢出,加7运算。
3硬件设计
3.1接线图:
图3-1-1A\D转换接线图
ADC转换单元中,D0-D7分别与系统总线的XD0-XD7对应相连,WR、RD、CLK分别与系统总线的XIOW、XIOR、CLK相连,片选引脚与系统IOY0相连,A、B、C接地,IN0接+5V直流电压源,如图3-1-1所示。
图3-1-2直流电机闭环接线图
直流电机闭环接线中,8255芯片的A口作为输出信号与LED灯项连,即PA0-PA7与系统总线的XD0-XD7相连,同时与ADC0809的D0-D7相连;B口的PB0作为直流电机控制信号输出口,经驱动电路A口,与直流电机相连驱动电机运转;片选信号线接系统的IOY1,读写信号线分别对应系统的XIO、RXIOW相连,其中,系统的中断INTR引脚用于测量电机转速与直流电机的HR引脚相连。
4软件详细设计
4.1转速调节程序设计框图:
(a)转速调节主程序图(b)测速中断处理程序图
(c)定时采样中断处理程序图
图4-1-1转速调节程序设计框图
4.2主程序流程图:
图4-2-1主程序流程图
4.3程序清单:
根据主程序流程图和转速调节设计框图写出相应程序,在“轻松编程”软件中完成各个子程序的调试;通过编译和链接,并反复检查没有逻辑错误;调试结果正确以后在进行相应的连接,将各个子模块联系起来,由于自己不具备硬件资源,所以调试的时候只能检查程序本身的错误,经过调试能显示各个子程序的功能,同时嵌套有延时子程序,方便程序的调用,端口地址的选择与确定,在实验室里完成,具体程序设计如下:
INTR_IVADDEQU0038H;INTR对应的中断矢量地址
INTR_OCW1EQU21H;INTR对应PC机内部8259的OCW1地址
INTR_OCW2EQU20H;INTR对应PC机内部8259的OCW2地址
INTR_IMEQU0BFH;INTR对应的中断屏蔽字
PCI_INTCSREQU0CC38H;PCI卡中断控制寄存器地址
IOY0EQU0600H;片选IOY0对应的端口始地址
IOY1EQU0640H;片选IOY0对应的端口始地址
MY8255_AEQUIOY0+00H*4;8255的A口地址
MY8255_BEQUIOY0+01H*4;8255的B口地址
MY8255_CEQUIOY0+02H*4;8255的C口地址
MY8255_MODEEQUIOY0+03H*4;8255的控制寄存器地址
AD0809EQUIOY1+00H;AD0809的端口地址
STACK1SEGMENTSTACK
DW64DUP(?
)
TOPLABELWORD
STACK1ENDS
DATASEGMENT
TABLE1DB'AssumedFanSpeed:
(/s)',0AH,0DH,'$';字符串变量
TABLE2DB'CurrentFanSpeed:
(/s)',0AH,0DH,'$';字符串变量
ENTDB0AH,0DH,'$';换行,回车
CS_BAKDW?
;保存INTR原中断处理程序入口段地址的变量
IP_BAKDW?
;保存INTR原中断处理程序入口偏移地址的变量
IM_BAKDB?
;保存INTR原中断屏蔽字的变量
CS_BAK1DW?
;保存定时器0中断处理程序入口段地址的变量
IP_BAK1DW?
;保存定时器0中断处理程序入口偏移地址的变量
IM_BAK1DB?
;保存定时器0中断屏蔽字的变量
TSDB14H;采样周期
SPECDW55;转速给定值
IBANDDW0060H;积分分离值
KPPDW1060H;比例系数
KIIDW0010H;积分系数
KDDDW0020H;微分系数
YKDW?
CKDB?
VADDDW?
ZVDB?
ZVVDB?
TCDB?
FPWMDB?
CK_1DB?
EK_1DW?
AEK_1DW?
BEKDW?
AAAADB?
VAADB?
BBBDB?
VBBDB?
MARKDB?
R0DW?
R1DW?
R2DW?
R3DW?
R4DW?
R5DW?
R6DW?
R7DB?
R8DW?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVDX,OFFSETTABLE1;显示字符串1
MOVAH,09H
INT21H
MOVAX,SPEC;显示给定值
CALLDECSHOW
MOVDX,OFFSETENT;回车,换行
MOVAH,09H
INT21H
MOVDX,OFFSETTABLE2;显示字符串2
MOVAH,09H
INT21H
CLI
MOVAX,0000H
MOVES,AX
MOVDI,0020H
MOVAX,ES:
[DI]
MOVIP_BAK1,AX;保存定时器0中断处理程序入口偏移地址
MOVAX,OFFSETTIMERISR
MOVES:
[DI],AX;设置实验定时中断处理程序入口偏移地址
ADDDI,2
MOVAX,ES:
[DI]
MOVCS_BAK1,AX;保存定时器0中断处理程序入口段地址
MOVAX,SEGTIMERISR
MOVES:
[DI],AX;设置实验定时中断处理程序入口段地址
INAL,21H
MOVIM_BAK1,AL;保存INTR原中断屏蔽字
ANDAL,0F7H
OUT21H,AL;打开定时器0中断屏蔽位
MOVDX,PCI_INTCSR;初始化PCI卡中断控制寄存器
MOVAX,1F00H;向PCI_INTCSR中写入003F1F00H
OUTDX,AX
ADDDX,2
MOVAX,003FH
OUTDX,AX
MOVDI,INTR_IVADD
MOVAX,ES:
[DI]
MOVIP_BAK,AX;保存INTR原中断处理程序入口偏移地址
MOVAX,OFFSETMYISR
MOVES:
[DI],AX;设置当前中断处理程序入口偏移地址
ADDDI,2
MOVAX,ES:
[DI]
MOVCS_BAK,AX;保存INTR原中断处理程序入口段地址
MOVAX,SEGMYISR
MOVES:
[DI],AX;设置当前中断处理程序入口段地址
MOVDX,INTR_OCW1
INAL,DX
MOVIM_BAK,AL;保存INTR原中断屏蔽字
ANDAL,INTR_IM
OUTDX,AL;打开INTR的中断屏蔽位
MOVVADD,0000H;变量的初始化
MOVZV,00H
MOVZVV,00H
MOVCK,00H
MOVYK,0000H
MOVCK_1,00H
MOVEK_1,0000H
MOVAEK_1,0000H
MOVBEK,0000H
MOVBBB,00H
MOVVBB,00H
MOVR0,0000H
MOVR1,0000H
MOVR2,0000H
MOVR3,0000H
MOVR4,0000H
MOVR5,0000H
MOVR6,0000H
MOVR7,00H
MOVR8,0000H
MOVMARK,00H
MOVFPWM,01H
MOVAAAA,7FH
MOVVAA,7FH
MOVTC,00H
MOVAL,80H;初始化8255
MOVDX,MY8255_MODE
OUTDX,AL
MOVAL,00H
MOVDX,MY8255_B
OUTDX,AL
MOVDX,MY8255_A
OUTDX,AL
MOVDX,PC8254_MODE;初始化PC机定时器0,定时1ms
MOVAL,36H
OUTDX,AL
MOVDX,PC8254_COUNT0
MOVAL,8FH
OUTDX,AL
MOVAL,04H
OUTDX,AL
STI
M1:
MOVAL,TS;判断采样周期到否?
SUBAL,TC
JNCM1;没到则继续等待
MOVTC,00H;采样周期到,将采样周期变量清0
MOVAL,ZVV
MOVAH,00H
MOVYK,AX;得到反馈量YK
LOOP1:
MOVDX,AD0809;启动A/D转换
OUTDX,AL
CALLDALLY
MOVDX,AD0809;读出转换结果
INAL,DX
MOVDX,MY8255_A;将结果显示于LED
OUTDX,AL
MOVBL,AL
MOVBH,AL
CALLPID;调用PID子程序,得到控制量CK
MOVAL,CK;把控制量转化成PWM输出
SUBAL,80H
JCIS0
MOVAAAA,AL
JMPCOU
IS0:
MOVAL,10H;电机的启动值不能低于10H
MOVAAAA,AL
COU:
MOVAL,7FH
SUBAL,AAAA
MOVBBB,AL
MOVAX,YK;将反馈值YK送到屏幕显示
CALLDECSHOW
MOVDL,0DH;回车
MOVAH,02H
INT21H
MOVAH,1;判断是否有按键按下
INT16H
JZM1;无按键则跳回继续等待,有则退出
EXIT:
CLI
MOVAL,00H;退出时停止电机运转
MOVDX,MY8255_B
OUTDX,AL
MOVDX,PC8254_MODE;恢复PC机定时器0状态
MOVAL,36H
OUTDX,AL
MOVDX,PC8254_COUNT0
MOVAL,00H
OUTDX,AL
MOVAL,00H
OUTDX,AL
MOVDX,PCI_INTCSR;恢复PCI卡中断控制寄存器
MOVAX,0000H
OUTDX,AX
MOVAX,0000H;恢复INTR原中断矢量
MOVES,AX
MOVDI,INTR_IVADD
MOVAX,IP_BAK;恢复INTR原中断处理程序入口偏移地址
MOVES:
[DI],AX
ADDDI,2
MOVAX,CS_BAK;恢复INTR原中断处理程序入口段地址
MOVES:
[DI],AX
MOVDX,INTR_OCW1;恢复INTR原中断屏蔽寄存器的屏蔽字
MOVAL,IM_BAK
OUTDX,AL
MOVDI,0020H
MOVAX,IP_BAK1;恢复定时器0中断处理程序入口偏移地址
MOVES:
[DI],AX
ADDDI,2
MOVAX,CS_BAK1;恢复定时器0中断处理程序入口段地址
MOVES:
[DI],AX
MOVAL,IM_BAK1
OUT21H,AL;恢复屏蔽字
STI
MOVAX,4C00H
INT21H
MYISRPROCNEAR;系统总线INTR中断处理程序
PUSHAX
PUSHCX
PUSHDX
MOVAX,DATA
MOVDS,AX
MOVAL,MARK
CMPAL,01H
JZIN1
MOVMARK,01H
JMPIN2
IN1:
MOVMARK,00H;计算转速
VV:
MOVDX,0000H
MOVAX,03E8H
MOVCX,VADD
CMPCX,0000H
JZMM1
DIVCX
MM:
MOVZV,AL
MOVVADD,0000H
MM1:
MOVAL,ZV
MOVZVV,AL
IN2:
MOVDX,PCI_INTCSR;清PCI卡控制寄存器标志位
SUBDX,19H
INAL,DX
MOVDX,PCI_INTCSR
ADDDX,2
MOVAX,003FH
OUTDX,AX
MOVDX,INTR_OCW2;向PC机内部8259发送中断结束命令
MOVAL,20H
OUTDX,AL
MOVAL,20H
OUT20H,AL
POPDX
POPCX
POPAX
IRET
MYISRENDP
TIMERISRPROCNEAR;PC机定时器0中断处理程序
PUSHAX
PUSHCX
PUSHDX
MOVAX,DATA
MOVDS,AX
INCTC;采样周期变量加1
CALLKJ
CLC
CMPMARK,01H
JCTT1
INCVADD
CMPVADD,0700H;转速值溢出,赋极值
JCTT1
MOVVADD,0700H
MOVMARK,00H
TT1:
MOVAL,20H;中断结束,发EOI命令
OUT20H,AL
POPDX
POPCX
POPAX
IRET
TIMERISRENDP
KJPROCNEAR;PWM子程序
PUSHAX
CMPFPWM,01H;PWM为1,产生PWM的高电平
JNZTEST2
CMPVAA,00H
JNZANOT0
MOVFPWM,02H
MOVAL,BBB
CLC
RCRAL,01H
MOVVBB,AL
JMPTEST2
ANOT0:
DECVAA
MOVAL,01H;PB0=1电机转动
MOVDX,MY8255_B
OUTDX,AL
TEST2:
CMPFPWM,02H;PWM为2,产生PWM的低电平
JNZOUTT
CMPVBB,00H
JNZBNOTO
MOVFPWM,01H
MOVAL,AAAA
CLC
RCRAL,01H
MOVVAA,AL
JMPOUTT
BNOT0:
DECVBB
MOVAL,00H;PB0=0电机停止
MOVDX,MY8255_B
OUTDX,AL
OUTT:
POPAX
RET
KJENDP
PID:
MOVAX,BX;PID子程序
SUBAX,YK;求偏差EK
MOVR0,AX
MOVR1,AX
SUBAX,EK_1
MOVR2,AX
SUBAX,AEK_1;求BEK
MOVBEK,AX
MOVR8,AX
MOVAX,R1;求偏差变化量AEK
MOVEK_1,AX
MOVAX,R2
MOVAEK_