直流电动机控制课程设计总结报告
微机原理及应用B 课程设计任务书 2010-2011学年 第 2学期 第 19 周- 19 周
注:1、此表一组一表二份,课程设计小组组长一份;任课教师授课时自带一份备查。
2、课程设计结束后与“课程设计小结”、“学生成绩单”一并交院教务存档。
目录
摘要 .................................................................................................................................................. 3
Abstract ............................................................................................................................................. 4
一、概述........................................................................................................................................... 5
二、直流电机硬件电路设计及描述 . .............................................................................................. 6
2.1直流电机的结构 . ............................................................................................................... 6
2.2直流电机的工作原理 . ....................................................................................................... 6
2.3电磁关系 . ........................................................................................................................... 7
2.4直流电机主要技术参数 . ................................................................................................... 7
2.5直流电机的类型 . ............................................................................................................... 8
2.6直流电机的特点 . ............................................................................................................... 8
三、直流电机硬件电路设计及描述 . .............................................................................................. 8
3.1 总体方案设计 . .................................................................................................................. 8
3.1.1 设计思路 . .............................................................................................................. 8
3.1.2设计原理图 . ......................................................................................................... 10
3.2设计原理及其实现方法 . ................................................................................................. 10
3.2.1速度调节的实现 . ................................................................................................. 10
3.2.2 转向的控制 . ........................................................................................................ 11
四、流程图..................................................................................................................................... 12
五、. 程序代码(C 语言) . ................................................................................................... 13
六、程序代码(汇编语言) . ........................................................................................................ 18
七、收获、体会和建议 . ................................................................................................................ 24
附录 ................................................................................................................................................ 25
1. 本设计所需要芯片以及作用 . .......................................................................................... 25
2. 主要参考文献 . .................................................................................................................... 26
摘要
随着自动控制技术与计算机科学技术的快速发展,制造业领域已大量采用计算机技术进行自动控制,这使制造业各个领域的成果,效率和质量得到大幅度提高。各种微机控制系统在基本构造上是类同的,主要由微机控制器,被控对象与接口电路(输入,输出及驱动接口电路)组成。根据被控对象的不同,微机控制系统又分为闭环控制系统(反馈控制输出信号的大小)与开环控制系统,学好“微机原理与接口技术”是掌握微机控制系统原理与技术的基础;而“微机原理与接口技术课程设计”是巩固,深化,掌握本门课程知识不可缺少的重要环节。
通过本次课程设计加深对《微机原理与接口技术》的理解和掌握。在设计程序的过程中,广泛的查阅相关资料,如各类中断的作用和调用方式, 屏幕显示等等,通过实践来加深对理论知识的理解,同时将自己对这门技术的理解应用在电动机控制的设计当中,理论与实践相互融合、相互促进,提高自己的理论水平和实践能力。
关键词: 微机原理;计算机控制技术;电动机控制;仿真
Abstract
Along with the automatic control technology and computer science
technology rapid development, manufacturing field has adopt a large number of computer technology in automatic control, this makes the manufacturing
various areas of the results, efficiency and quality have been greatly improved. All kinds of microcomputer control system in the basic structure is similar,
mainly on by microcomputer controller, was charged with the object and the
interface circuit (input, output and driving interface circuit) composition.
According to the controlled object is different, the microcomputer control
system and divided into closed loop control system (feedback control the size of the output signal) and the open loop control system, the learning of
"principle of the computer and interface technology" is a master of the
microcomputer control system principle and technology foundation; And
"principle of the computer and interface technology course design" is
consolidated, deepening, master this course knowledge indispensable
important segment.
Through this course design deepen our understanding of the
"microcomputer principle and connection technology" understanding and
mastery. In the design process, in the process of extensive reading of related materials, such as all kinds of interrupt the function and calls, screen, and so
on, way through practice to deepen our understanding of the theory of
knowledge, and understanding for these techniques used in motor control the understanding of the theory and practice of design, integration, promote each other, improve their theoretical level and the practice ability.
Keywords:
Microcomputer principle; Computer control technology; Motor control; The simulation
直流电机控制
一、概述
直流电机就是将直流电能转换成机械能(直流电动机) 或将机械
能转换成直流电能(直流发电机) 的旋转电机。直流电机的结构应由定子和转子两大部分组成。直流电机运行时静止不动的部分称为定子,定子的主要作用是产生磁场,由机座、主磁极、换向极、端盖、轴承和电刷装置等组成。运行时转动的部分称为转子,其主要作用是产生电磁转矩和感应电动势,是直流电机进行能量转换的枢纽,所以通常又称为电枢,由转轴、电枢铁心、电枢绕组、换向器和风扇等组成。
为了推广直流电机在化工领域的使用,由于直流电机的功能已得
到很大提 高,因此更为人性化的设计势必在操作和显示方面。直流电机直流电动机调速控 制一般采用模拟法,对电动机的简单控制应用比较多。简单控制是指对电动机进 行启动,制动,正反转控制和顺序控制。这类控制容易实现,并可通单片机,直 流电机驱动芯片和开关元件来实现,所以本课题采用此法。同时考虑到以前的直 流电机只能通过数码管来进行简单地显示转速,且不能清楚的了解其转向,而 LCD 液晶显示器可以弥补这一点,并且还添加一些更为人性化的提示,这是以 前的数码管所不能代替的,这必将是一个新的趋势。
直流电机的主要功能非常广泛,例如:军事 和宇航方面的雷达
天线,火炮瞄准,惯性导航,卫星姿态,飞船光电池对太阳得 跟踪
等控制;工业方面的各种加工中心,专用加工设备,数控机床,工业机器人,塑料机械,印刷机械,绕线机,纺织机械,工业缝纫机,泵和压缩机等设备的控制;计算机外围设备和办公设备中的各种磁盘驱动器,各种光盘驱动器,绘图仪,扫描仪,打印机,传真机,复印机等设备的控制;音像设备和家用电器中的录音机,录像机,数码相机,洗衣机,冰箱,电扇等的控制。
二、直流电机硬件电路设计及描述
2.1直流电机的结构
直流电机由定子和转子两部分组成。在定子上装有磁极(电磁式
2.2直流电机的工作原理
直流电机电路模型,磁极N 、S 间装着一个可以转动的铁磁圆柱
体,圆柱体的表面上固定着一个线圈。当线圈中流过电流时,线圈受
到电磁力作用,从而产生旋转。根据左手定则可知,当流过线圈中电
2.4直流电机主要技术参数
直流电机的主要额定值有: 额定功率Pn :在额定电流和电压下,电机的负载能力。
额定电压Ue :长期运行的最高电压。
额定电流Ie :长期运行的最大电流。
额定转速n :单位时间内的电机转动快慢。以r/min为单位。 励磁电流If :施加到电极线圈上的电流。
2.5直流电机的类型
直流电机可按其结构、工作原理和用途等进行分类,其中根据直流电机的用途可分为以下几种:直流发电机(将机械能转化为直流电能)、直流电动机(将直流电能转化为机械能)、直流测速发电机(将机械信号转换为电信号)、直流伺服电动机(将控制信号转换为机械信号)。下面以直流电动机作为研究对象。
2.6直流电机的特点
通过电刷间的电流与导体电流的性质不同;通过电刷电流为直流电流,导体电流为交变电流;电枢电势与电流反方向,称为反电势。电磁转矩的方向与电机的转向相同,为驱动转矩。作为电动机运行:在直流电机的两电刷端上加上直流电压,电枢旋转,拖动生产机械旋转,输出机械能;作为发动机运行:用原动机拖动直流电机的电枢,电刷端引出直流电动势,作为直流电源,输出电能。
三、直流电机硬件电路设计及描述
3.1 总体方案设计
3.1.1 设计思路
1). 通过键盘改变脉冲的占空比从而达到改变转速使得电机转速从高
到低,从低到高
2). 通过改变pwm 的极性从而改变电机的转向,实现正反转
3). 能够通过数码显示管显示电机的转速和电机的转向
4). 通过启动键唯一启动电机,从而达到防止电机误启动的目的
5). 能够通过键盘快速达到电机预先设定的速度和转向
备注:由于没有传感器,所以本课程设计中没有设计测速模块,所显示的速度为理论速度,并非电机的实际转速
3.1.2设计原理图
3.2设计原理及其实现方法
3.2.1速度调节的实现
通过控制L298的使能端“允许”或者“禁止”,通过改变a
(脉冲宽度)的值,从而达到控制PWM 脉冲宽度调节电机转速的目的 3.2.2 转向的控制
通过L298中的H 桥,从AT89C51中的P1_6和P1_7输出控制信号控制BJT 的基极电压,控制L298中H 桥的BJT 通断,从而达到控制电机转向的目的
附:A. L298的原理图
B. 本设计所需要芯片以及作用 AT89C51:单片机
L298:控制电机驱动和转向 74L408:四与门芯片
8255A :用于扩展51端口,作显示用 2803:显示缓冲用 MAX239:串口通讯芯片
四、流程图
五、. 程序代码(C 语言)
#include #include #include #include #include
#define PA XBYTE[0x1FFF] //A口地址; #define PB XBYTE[0x3FFF] //B口地址 ; #define PC XBYTE[0x5FFF] //C口地址;
#define CON XBYTE[0x7FFF] //*控制字地 */ ;
uchar key=0; //定义key 为全局变量 uint a=100;
uchar n=5; //单次增加的步长,用于输出脉冲占空比控制 uint k1=0,mn=10; //设置mn 为转向标志位 uchar bai,shi,ge; uint seg_code[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x98,0xff};
//0~9的七段显示代码;
/*THE MAIN PROCESS*/
void main() {
CON=0x80;
P1_5=0; //使电机停转 ;
TMOD=0x15; //定时器1工作在模式1
TH1=0xFF; //定时器1的溢出中断时间为50ms ; TL1=0xb0; ET1=1;
TR1=1; while(1) {
key=GetKey();
/*case 1~case 9是预先设定的速度,方便电机直接调节到该速度,避免通过 ’+’ 键调节*/
switch(key)
{ case '1': { a=10;break; } case '2': { a=25; break; } case '3': { a=40; break; } case '4': { a=55; break; } case '5': { a=70; break; }
case '6': { a=90; break; } case '7': { a=110;break; } case '8': { a=130;break; } case '9': { a=150;break; }
case '+': { P1_4=0;control();break; } //电机加速
case '-': { control(); break;} //’-‘代表减速
case '=': { P1_7=0; P1_6=1; mn=0;control(); break;} //电机顺时针转
case 'c': { P1_7=1; P1_6=0; mn=1;control() ; break;} //逆时针转
case '/': { control();} //‘/‘键按下时,电机开始转动
default: break; //不影响电机运行 } } }
/*THE END OF MAIN PROCESS*/
/*THE INTERRUPTION FUNCTION*/
void time()interrupt 3 //中断号为3,即是定时器1溢出中断 { //此处是计时50ms 中断一次 TR1=0; //此函数用于显示速度 k1+=TL0;
display(a/100,a%100/10,a%10,mn); /*if(count==51) {
sprintf(s,"%04d",k1%1000); //注意sprintf 的用法; //确保有四位输出
count=1; k1=0; }
display(a,bai,shi,ge); */ TH1=0x3c; TL1=0xb0; TH0=0x00; TL0=0x00; TR1=1; }
/* THE INTERRUPTION FUNCTION */
/*THE GETKEY FUNCTION WHICH WAS USED TO GET THE INFORMATION FROM THE KEY */ /*行信号从P1口的低四位读进,列信号从P2口的高四位读进*/
uchar GetKey() {
P1_0=0; P1_1=1; P1_2=1; P1_3=1; P2_0=1; P2_1=1; P2_2=1; P2_3=1;
_nop_();_nop_(); // 适当的延时以便消除抖动 if(!P2_0)return '7'; if(!P2_1)return '8'; if(!P2_2)return '9'; if(!P2_3)return '/';
P1_0=1; P1_1=0; P1_2=1; P1_3=1;
_nop_();_nop_(); if(!P2_0)return '4'; if(!P2_1)return '5'; if(!P2_2)return '6';
if(!P2_3){P1_4=0;return '*'; }
P1_0=1; P1_1=1; P1_2=0; P1_3=1;
_nop_();_nop_(); if(!P2_0)return '1'; if(!P2_1)return '2'; if(!P2_2)return '3'; if(!P2_3)return '-';
P1_0=1; P1_1=1; P1_2=1; P1_3=0;
_nop_();_nop_();
if(!P2_0)return 'c';
if(!P2_1){P1_4=0;return '0'; } // P1_4和P1_5脚通过一个“与”门用来防止误启动 if(!P2_2)return '='; if(!P2_3)return '+';
return 0; }
/*延时程序*/
/*THE DELAY FUNCTION*/
void delay(uint i) {
uint j,k; for(;i>0;i--)
for(j=10;j>0;j--) for(k=10;k>0;k--); }
/*THE DISPLAY FUNCTION*/
void display(uchar bai,uchar shi,uchar ge ,uint mn) {
PB=0x08; //0000 1000 PA=seg_code[ge]; delay(2);
PB=0x04;//0000 0100 PA=seg_code[shi]; delay(2);
PB=0x02;//0000 0010 PA=seg_code[bai]; delay(2); PB=0x01;//0000 0001 PA=seg_code[mn];
delay(2); //注意这儿的延时越短越好,应为处理终端的时间越短,对电
机 // 的实时性显示就越好;
}
/*THE CONTROL FUNCTION*/ /*
由于参数 a 是一个全局变量,代表着脉冲的占空比,每次调用函数时; 必须注意参数 a 值;
*/
/* 如果按键为 ‘-’,‘+’(加速减速)以及‘c' ,’=‘(正转反转)时,不需跳出循环,按其他键时,需要跳出循环, 必须需要重新设置占空比*/ /* P1_4和P1_5脚通过一个“与”门用来防止误启动 */
void control() {
EA=1; while(1) {
if(a>=150)
a=150; //设置了 a 的最大值,限定了电机的最高速度 if(a
a=10; // 设置了 a 的最小值,限定了电机的最高速度 P1_5=1; // 与P1_4信号形成控制L298的控制信号达到控制转速的目的 delay(a); // 调用延时,形成脉宽的调节 P1_5=0; //电机逐渐停转 ; delay(160-a);
/*以下的程序改变 a 的值达到改变脉冲宽度的目的*/ key=GetKey(); if(key=='-') // 减速 a=a-n;
else if(key=='+') {a=a+n;} // 加速
else if(key=='=') // 如果按下’=‘键,则电机顺时针转; {
P1_6=1; P1_7=0; mn=0; }
else if(key=='c') //反转 { P1_7=1; P1_6=0; P1_4=1;
mn=1; }
else if(key=='*'||key=='0') //如果按下停止键’*‘或者’0’ ;
{ P1_5=0;P1_4=1; //ENA=0(P1_5=0)电机停转; break; }
else if(key!=0) //如果没有按键按下,则继续在此while 循环中运行
{
switch(key)
{
case '1': { a=10; break; } case '2': { a=25; break; } case '3': { a=40; break; } case '4': { a=55; break; } case '5': { a=70; break; } case '6': { a=90; break; } case '7': { a=110; break; } case '8': { a=130; break; } case '9': { a=150; break; } default : break ; } } }
EA=1; }
附: motor_ctr.h FILE
typedef unsigned char uchar; typedef unsigned int uint ; extern uchar GetKey(); extern void delay(uint i); extern void control();
void display(uchar bai,uchar shi,uchar ge ,uint mn);
六、程序代码(汇编语言)
ORG 0000H
SJMP DISPLAY ORG 0003H
LJMP BUTTON ; 外部0中断入口地址 ORG 000BH
LJMP DINGSHI ; 定时中断T0入口地址 RS EQU P3.0 RW EQU P3.1 E EQU P3.4
ORG 0030H ; 此次直流电机的设计以LCD 字符夜晶的
; 显示程序为主程序
DISPLAY:
SETB EA ; 打开中断总开关 SETB EX0 ; 打开外部中断0开关
SETB IT0 ; 打开外部中断0下降沿触发 MOV TMOD,#01H ; 设置定时工作方式 MOV TL0,#0FFH ; 设置定时初值 MOV TH0,#0FFH
SETB ET0 ; 打开定时中断T0开关 CLR P0.5 CLR P0.6 CLR P0.7
SETB TR0 ; MOV DPTR,#TAB ; MOV R0,#00H ; MOV R1,#16 ; "SET SPEED PLEASE" MOV R3,#00H MOV R4,#00H LP9:
LCALL CHUSHI LP2:
ACALL BUSY MOV A,#00H MOVC A,@A+DPTR MOV P1,A ACALL DATAS INC DPTR DJNZ R1,LP2 LP3:
CJNE R3,#00H,LP4 CJNE R4,#00H,LP4 SJMP LP3
LP4: MOV R7,#00H ; MOV R5,#09H ; CURRENT : ACALL BUSY MOV P1,#0C0H ACALL ENABLE
MOV DPTR,#MMTAB ACALL BUSY
LP5:
MOV A,#00H
定时器T0开始定时 夜晶显示的字符首地址 脉宽的初值
的字符个数中断的标志
的字符个数
MOVC A,@A+DPTR MOV P1,A INC DPTR ACALL DATAS ACALL BUSY DJNZ R5,LP5
MOV DPTR,#STAB MOV A,R2 MOV P1,A ACALL DATAS ACALL BUSY
MOV A,R3 ; MOVC A,@A+DPTR MOV P1,A ACALL DATAS ACALL BUSY
MOV A,R4 ; MOVC A,@A+DPTR MOV P1,A ACALL DATAS
; LP8:
CJNE R7,#00H,LP7 ;
LJMP LP8 ; LP7:
SJMP LP4
CHUSHI: ; ACALL BUSY
MOV P1,#00000001B ; ACALL ENABLE ACALL BUSY
MOV P1,#00111000B ; ACALL ENABLE ACALL BUSY
MOV P1,#00001111B ; ACALL ENABLE ACALL BUSY
MOV P1,#00000110B ; 显示速度的十位 显示速度的个位 使夜晶始终显示当前电机的速度 速度不变时等待 速度变时重新读入速度 使夜晶显示的一些初始设置 清屏并光标复位 设置显示模式:8位2行5x7点阵 显示器开、光标开、光标允许闪烁文字不动,光标自动右移
ACALL ENABLE ACALL BUSY
MOV P1,#80H ; 写入显示起始地址 ACALL ENABLE RET
ENABLE: ; 写入控制命令的子程序 SETB E CLR RS CLR RW CLR E RET
DATAS: ; SETB E SETB RS CLR RW CLR E RET
BUSY: ; CLR E
MOV P1,#0FFH CLR RS SETB RW SETB E
JB P1.7,BUSY RET
ORG 2000H
DINGSHI: ; CPL P0.7
JNB P0.7,Z1 ; MOV A,#0FFH
SUBB A,R0 MOV TH0,A SETB TR0 RETI
Z1: MOV TH0,R0 ; SETB TR0 RETI
写入数据子程序 准备写入数据 定时中断服务程序 周期一定 脉宽
BUTTON: ; 从控制键盘中读取操作命令 PUSH ACC CLR EX0 CLR EA
INC R7 ; MOV A,#0FFH MOV P2,A MOV A,P2
JNB ACC.0,AA0 JNB ACC.1,KK0 JNB ACC.2,ZZ JNB ACC.3,FF JNB ACC.4,WW0 AJMP QQ
AA0: CJNE R0,#0FFH, AA1 ; AJMP QQ
AA1: MOV A,R0 ADD A,#5 MOV R0,A AJMP QQ
KK0: CJNE R0,#00,MM ; AJMP QQ
MM: MOV A,R0 SUBB A,#5 MOV R0,A AJMP QQ
QQ: MOV A,R0 MOV B,#5 DIV AB MOV B,#10 DIV AB MOV R3,A MOV R4,B SETB EX0 LCALL DELAY LCALL DELAY LCALL DELAY LCALL DELAY SETB EA
加速操作 减速操作
POP ACC RETI
ZZ: SETB P0.5 ; 正转操作 CLR P0.6
MOV R2,#2BH ; 正转标志 "+" LCALL DELAY LCALL DELAY LCALL DELAY SETB EX0 SETB EA POP ACC RETI
FF: CLR P0.5 ; SETB P0.6
MOV R2,#2DH ; LCALL DELAY LCALL DELAY LCALL DELAY SETB EX0 SETB EA POP ACC RETI
WW0: CLR P0.5 ; CLR P0.6 LCALL DELAY LCALL DELAY LCALL DELAY SETB EX0 SETB EA POP ACC RETI
DELAY: ; MOV R5,#0E0H MM0: MOV R6,#30H MM1: DJNZ R6,MM1 DJNZ R5,MM0
反转操作 反转标志 "-" 停止操作 延时子程序
TAB: DB 53H,45H,54H,20H
DB 53H,50H,45H,45H ; "SET SPEED PLEASE" 代码 DB 44H,20H,50H,4CH DB 45H,41H,53H,45H
STAB: DB 30H,31H,32H,33H
DB 34H,35H,36H,37H ; "0,1,2,3,4,5,6,7" 代码 DB 38H,39H,41H,42H ; "8,9,A,B,C,D,E,F" DB 43H,44H,45H,46H
MMTAB: DB 43H,4FH,52H,52H
DB 45H,4EH,54H,20H ; " CURRENT : " 代码 DB 3AH END
七、收获、体会和建议
这次课程设计是一次非常好的锻炼机会, 历时一个星期左右,通过这一个星期的学习,发现了自己的很多不足,自己知识的不怎么牢固,看到了自己的实践经验更是比较缺乏,理论联系实际的能力还急需提高。
课程设计是培养学我们综合运用所学知识, 发现, 提出, 分析和解决实际问题, 锻炼实践能力的重要环节, 是对我们实际工作能力的具体训练和考察过程. 此次拔河游戏机课程设计,我仍体会颇深。从中学到很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中,难免会遇到
过各种各样的问题,同时在设计的过程中发现了自己的很多的不足,自己知识的很多漏洞,对以前所学过的知识理解得不够深刻,掌握得不够牢固。虽然这只是一次的较简单的课程设计,可是也耗费了我们不少的心血。无论如何,就当它是一次数电的复习课吧!同时也作了一次很好的复习!
感激学校让我有这次学习设计的机会,让我受益匪浅,这次学习对于我们没有真正实践经验的同学来说,绝对是一次成长的机会。
附录
1. 本设计所需要芯片以及作用 AT89C51:单片机
L298:控制电机驱动和转向 74L408:四与门芯片
8255A :用于扩展51端口,作显示用
2803:显示缓冲用 MAX239:串口通讯芯片 2. 主要参考文献
[1] 李群芳、黄建编著. 单片微型计算机与接口技术. 北京:电子工业出版社;
[2] 张毅刚编著. 单片机原理及应用. 北京:高等教育出版社; [3] 王建校,杨建国等编著.51系列单片机及C51程序设计. 北京:科学出版社;
[4] 李朝青编著. 单片机原理及接口技术. 北京:北京航空航天大学出版社
[5]周佩玲. 微机原理与接口技术(基于16位机). 北京:电子工业出版社
[6]吴秀清主编. 微型计算机原理与接口技术. 北京:清华大学出版社 [7]沈美明等编.IBM-PC 汇编语言程序设计. 北京:清华大学出版社 [8]张伟等编.Protel DXP 入门与提高. 北京:人民邮电出版社 [9]李继灿编. 新编16/32位微型计算机原理及应用(第3版). 北京:清华大学出版社
[10]李继灿编. 微型计算机原理与接口技术题解及实验指导. 北京:清华大学出版社
[11]康华光等编. 电子技术基础-数字部分(第四版). 北京:高等教育出版社
[12]高吉祥等编. 电子技术基础-实验与课程设计. 北京:电子工业出版社
[13]甘登岱主编.Protel DXP电路设计与制版实用教程. 北京:人民邮电出版社
[14]钱培怡编. 电子电路实验与课程设计. 北京:地震出版社 [15]李国栋,王新中,陆志平等编. 微机原理与接口技术课程设计.
杭州:浙江大学出版社