《单片机原理及应用》
课程设计报告书
课题名称 小直流电机调速控制系统 姓 名 学 号 专 业 指导教师
机电与控制工程学院 年 月 日
1
任务书
设计题目:小直流电机调速控制系统
设计任务及要求:用0809采样电位器的值,并在显示器上显示,将此信号作为方波占空比,用过0832输出经放大后控制电机转速。
为了获得可调的直流电压调制成大小,极性可变的直流电压作为电动机的电枢,
实现系统的平滑调速,这种调速系统就称为直流脉宽调速系统。 为了再比较简单的运动控制中实现智能控制,因此设计了单片机控制直流调速系统。
2
目 录
1、绪论…………………………………………………………………1 2、方案论证……………………………………………………………2 3、方案说明……………………………………………………………3 4、硬件方案设计………………………………………………………5 5、软件方案设计…………………………………………………… 12 6、调试………………………………………………………………16 7、结束语…………………………………………………………… 17 8、参考文献………………………………………………………… 18 9、附录………………………………………………………………19
3
1.绪论
单片微型计算机的诞生是计算机发展史上的一个新的里程碑。近年来,随着技术的发展和进步,以及市场对产品功能和性能的要求不断提高,直流电动机的应用更加广泛,尤其是在智能机器人中的应用。直流电动机的起动和调速性能、过载能力强等特点显得十分重要,为了能够适应发展的要求,单闭环直流电动机的调速控制系统得到了很大的发展。而作为单片嵌入式系统的核心—单片机,正朝着多功能、多选择、高速度、低功耗、低价格、大存储容量和强I/O功能等方向发展。随着计算机档次的不断提高,功能的不断完善,单片机已越来越广泛地应用在各种领域的控制、自动化、智能化等方面,特别是在直流电动机的调速控制系统中。这是因为单片机具有很多优点:体积小,功能全,抗干扰能力强,可靠性高,结构合理,指令丰富,控制功能强,造价低等。所以选用单片机作为控制系统的核心以提高整个系统的可靠性和可行性。
对直流电机调速器设计的研究,主要实现对电机的控制。本课程设计主要是实现PWM调速器的正转、反转、加速、减速、停止等操作。并实现电路的仿真。为实现系统的微机控制,在设计中,采用了AT89S52单片机作为整个控制系统的控制电路的核心部分,配以各种显示、驱动模块,实现对电动机转速参数的显示和测量。设计的整个控制系统,在硬件结构上采用了大量的集成电路模块,大大简化了硬件电路,提高了系统的稳定性和可靠性,使整个系统的性能得到提高。
1
2.方案论证
直流电机PWM控制系统的主要功能包括:直流电机的加速、减速以及电机的正转和反转,并且可以调整电机的转速,还可以方便的读出电机转速的大小,能够很方便的实现电机的智能控制。其间,还包括直流电机的直接清零、启动(置数)、暂停、连续功能。该直流电机系统由以下电路模块组成:振荡器和时钟电路:这部分电路主要由AT89S52单片机和一些电容、晶振组成。设计输入部分:这一模块主要是利用带中断的独立式键盘来实现。设计控制部分:主要由89S52单片机的外部中断扩展电路组成。设计显示部分:包括液晶显示部分和LED数码显示部分。
2.1 基本原理
主体电路:即直流电机PWM控制模块。这部分电路主要由AT89S52单片机的I/O端口、定时计数器、外部中断扩展等控制直流电机的加速、减速以及电机的正转和反转,并且可以调整电机的转速,还可以方便的读出电机转速的大小和了解电机的转向,能够很方便的实现电机的智能控制。其间,还包括直流电机的直接清零、启动(置数)、暂停、连续功能。该直流电机PWM控制系统由以下电路模块组成:设计输入部分:这一模块主要是利用带中断的独立式键盘来实现。设计控制部分:主要由89S52单片机的外部中断扩展电路组成。设计显示部分:包括液晶显示部分和LED数码显示部分。直流电机PWM控制实现部分:主要由一些二极管、电机和L298直流电机驱动模块组成。
2
3 方案说明
课程设计所介绍的单片机控制直流电机调速系统,具有结构简单,输出档位可显示,反映灵敏等特点,其输出档位采用数码管显示,方面操作与观察,该设计控制器使用单片机AT89S52,数模转换DAC0832芯片,用二位共阳极LED数码管以并口传送数据,实现档位的显示,能准确达到以上要求,同时在单片机最小系统中设计了总开关和按钮控制。利用DAC0832芯片进行数/模控制,输出的电压经放大后驱动小直流电机的速度进行数字量调节,并显示运行状态DJ—XX和D/A输出的数字量。
(1)调速系统以AT89S52单片机为控制核心,由命令输入模块、LCD显示模块及电机驱动模块组成。采用带中断的独立式键盘作为命令的输入,单片机在程序控制下,定时不断给直流电机驱动芯片发送PWM波形,H型驱动电路完成电机正,反转控制;同时单片机不停的将从键盘读取的数据送到LCD显示模块去显示,从中不仅能读取其速度,而且能知晓其转向及一些温心提示。
3
直流电机P0口驱动模块直流电机AT89C51单片机AT89C51P2口LCD液晶显示P1口加速控制端减速控制端正转控制端反转控制端停止控制端 (2)直流电机类型 直流电机可按其结构、工作原理和用途等进行分类,其中根据直流电机的用途可分为以下几种:直流发电机(将机械能转化为直流电能)、直流电动机(将直流电能转化为机械能)、直流测速发电机(将机械信号转换为电信号)、直流伺服电动机(将控制信号转换为机械信号)。下面以直流电动机作为研究对象。 (3)直流电机结构
直流电机由定子和转子两部分组成。在定子上装有磁极(电磁式直流电机磁极由绕在定子上的磁绕提供),其转子由硅钢片叠压而成,转子外圆有槽,槽内嵌有电枢绕组,绕组通过换向器和电刷引出。
4
4.硬件方案设计
(1)DAC0832简介
DAC0832是8分辨率的D/A转换集成芯片。与微处理器完全兼容。这个DA芯片以其价格低廉、接口简单、转换控制容易等优点,在单片机应用系统中得到广泛的应用。D/A转换器由8位输入锁存器、8位DAC寄存器、8位D/A转换电路及转换控制电路构成。
a.主要特性参数:分辨率为8位
稳定时间1us;
可单缓冲、双缓冲或直接数字输入; 只需在满量程下调整其线性度; 单一电源供电(+5V~+15V); 低功耗,200mW。
b.芯片结构:
D0~D7:8位数据输入线,TTL电平,有效时间应大于90ns(否则锁存器的数据会出错);
ILE:数据锁存允许控制信号输入线,高电平有效; CS:片选信号输入线(选通数据锁存器),低电平有效; WR1:数据锁存器写选通输入线,负脉冲(脉宽应大于500ns)有
效。由ILE、CS、WR1的逻辑组合产生LE1,当LE1为高电
5
平时,数据锁存器状态随输入数据线变换,LE1的负跳变时将输入数据锁存;
XFER:数据传输控制信号输入线,低电平有效,负脉冲(脉宽应大于500ns)有效;
WR2:DAC寄存器选通输入线,负脉冲(脉宽应大于500ns)有效。
由WR1、XFER的逻辑组合产生LE2,当LE2为高电平时,DAC寄存器的输出随寄存器的输入而变化,LE2的负跳变时将数据锁存器的内容打入DAC寄存器并开始D/A转换。
IOUT1:电流输出端1,其值随DAC寄存器的内容线性变化; IOUT2:电流输出端2,其值与IOUT1值之和为一常数; Rfb:反馈信号输入线,改变Rfb端外接电阻值可调整转换满量程精度;
Vcc:电源输入端,Vcc的范围为+5V~+15V; VREF:基准电压输入线,VREF的范围为-10V~+10V; AGND:模拟信号地 DGND:数字 (2)8255简介:
a. 一个并行输入/输出的LSI芯片,多功能的I/O器件,可作为CPU总线与外围的口.
b. 具有24个可编程设置的I/O口,即使3组8位的I/O口为PA
口,PB口和PC口.它们又可分为两组12位的I/O口,A组包括
6
A口及C口(高4位,PC4~PC7),B组包括B口及C口(低4位,PC0~PC3).A组可设置为基本的I/O口,闪控(STROBE)的I/O闪控式,双向I/O3种模式;B组只能设置为基本I/O或闪控式I/O两种模式,而这些操作模式完全由控制寄存器的控制字决定. c. 8255引脚功能:
RESET:复位输入线,当该输入端处于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。
CS:芯片选择信号线,当这个输入引脚为低电平时,即/CS=0时,表示芯片被选中,允许8255与CPU进行通讯;/CS=1时,8255无法与CPU做数据传输.
RD:读信号线,当这个输入引脚为低电平时,即/RD=0且/CS=0时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。
WR:写入信号,当这个输入引脚为低电平时,即/WR=0且/CS=0时,允许CPU将数据或控制字写入8255。
D0~D7:三态双向数据总线,8255与CPU数据传送的通道,当CPU 执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。
PA0~PA7:端口A输入输出线,一个8位的数据输出锁存器/缓冲器, 一个8位的数据输入锁存器。
7
PB0~PB7:端口B输入输出线,一个8位的I/O锁存器, 一个8位的输入输出缓冲器。
PC0~PC7:端口C输入输出线,一个8位的数据输出锁存器/缓冲器, 一个8位的数据输入缓冲器。端口C可以通过工作方式设定而分成2个4位的端口, 每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。'
A0,A1:地址选择线,用来选择8255的PA口,PB口,PC口和控制寄存器.
当A0=0,A1=0时,PA口被选择; 当A0=0,A1=1时,PB口被选择; 当A0=1,A1=0时,PC口被选择; 当A0=1.A1=1时,控制寄存器被选择. (3)AT89S52简介: a.主要性能 :
与MCS-51单片机产品兼容 、8K字节在系统可编程Flash存储器、 1000次擦写周期、 全静态操作:0Hz~33Hz 、 三级加密程序存储器 、 32个可编程I/O口线 、三个16位定时器/计
8
数器 八个中断源 、全双工UART串行通道、 低功耗空闲和掉电模式 、掉电后中断可唤醒 、看门狗定时器 、双数据指针 、掉电标识符
b.功能特性描述:
P0 口:P0口是一个8位漏极开路的双向I/O口。作为输出口,
每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下P0具有内部上拉电阻。在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。
P1 口:P1 口是一个具有内部上拉电阻的8 位双向I/O 口,p1 输
出缓冲器能驱动4 个 TTL 逻辑电平。对P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2 的触发输入(P1.1/T2EX),具体如下表
9
所示。在flash编程和校验时,P1口接收低8位地址字节。
引脚号 P1.0 数输入),时钟输出 T2EX(定时器/计数器T2的捕捉P1.1 /重载触发信号和方向控制) P1.5 P1.6 P1.7 MOSI(在系统编程用) MISO(在系统编程用) SCK(在系统编程用) 第二功能 T2(定时器/计数器T2的外部计P2 口:P2 口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输
出缓冲器能驱动4 个TTL 逻辑电平。对P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX @DPTR)时,P2 口送出高八位地址。在这种应用中,P2 口使用很强的内部上拉发送1。在使用8位地址(如MOVX @RI)访问外部数据存储器时,P2口输出P2锁存器的内容。在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。
10
P3 口:P3 口是一个具有内部上拉电阻的8 位双向I/O 口,p2 输
出缓冲器能驱动4个TTL 逻辑电平。对P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。P3口亦作为AT89S52特殊功能(第二功能)使用,在flash编程和校验时,P3口也接收一些控制信号。
端口引脚 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7
第二功能 RXD(串行输入口) TXD(串行输出口) INTO(外中断0) INT1(外中断1) TO(定时/计数器0) T1(定时/计数器1) WR(外部数据存储器写选通) RD(外部数据存储器读选通) 11
5.软件方案设计
1、显示电路与AT89S52单片机接口电路设计
2、AT89S52单片机最小系统
利用AT89S52单片机、晶振电路、复位电路、电源构成单片机最小应用系统,在此基础上扩展显示电路、驱动电路。
12
3.D/A转换0832电路
4.部中断设置 1) 外部中断允许设置
中断控制寄存器IE的EX0对应INT0,EX1对应INT1,EA为中断的总开关,若要开放外部中断,只要将IE对应的位和总开关EA置1即可。
如:开放外部中断0的设置: SETB EX0 SETB EA
开放外部中断0和1的设置: SETB EX0 SETB EX1 SETB EA
(2) 外部中断触发方式设置
单片机外部中断有两种触发方式,一种是电平触发方式,另一种
是脉冲触发方式,单片机外部中断触发方式与TCON的IT位有关。
13
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 电平触发设置方法:CLR ITX,为低电平触发方式。 脉冲触发设置方法:SETB ITX=1,为脉冲下降沿触发方式。 在使用外部中断时,如果不进行设置,则为电平触发方式。 (3) 外部优先级设置
外部中断IN0、INT1的中断优先级的设置是通过设置IP寄存器实现的,IP的PX0对应INT0,PX1对应INT1。PX置1为高级中断,PX为0为低级中断。
× × × PS PT1 PX1 PT0 PX0 5. 外部中断扩展方法
在图2.8为外部中断扩展方法,设X1、X2、X3、X4、X5为外部警情信号,X1代表是加速信号,X1=0表示加速;X2代表减速信号,X2=0表示减速;X3代表正转信号,X3=0表示正转;X4代表反转信号,X4=0表示反转;X5代表停止信号,X5=0表示停止处理。
图 5.1外部中断扩展电路
14
当系统检测到有中断请求时,响应如下中断服务流程图2.9。
图5.2 流程图
15
外部中断 X0=0?X1=0?X2=0?X3=0?X4=0?加速操作,RETI减速操作,RETI正转操作,RETI反转操作,RETI停止操作,RETI6.调试
主程序开始对LCD进行一些初始化操作将已知要提示的内容送入LCD中并使其显示在第一行判断设置电机的速度是否为0,若是,一直等待将从键盘读取的速度和转向送入LCD中并使其在第二行显示判断是否有命令输入,若没,一直等待LJMP 图6.1
直流电机PWM调制控制系统具有加速、减速、正转、反转、停止控制功能。操作开关通过中断控制直流电机的加速、减速、正转、反转、停止控制功能,并通过LCD液晶显示。振荡、时钟电路和复位电路由89S52单片机内部给出。直流电机转动速度由LCD液晶显示。操作开关状态由液晶显示器显示。
16
7.结束语
这次课程设计是一次非常好的锻炼机会,通过学习,发现了自己的很多不足,自己知识的不怎么牢固,看到了自己的实践经验更是比较缺乏,理论联系实际的能力还急需提高。
到的东西,将对我后面两年的学习有重要的指导作用,不敢说以后,但在毕业前的这段时间内,这次学习对我的确很重要。
学到了如何务实,如何去学一门技术,同时也知道了如何学习,什么才是学习。如果每天都能像这样的学习,大学四年的课程,一年就够了,或许还不要。
次设计的学习比我在读高三时都还累。技术学到了一点,也许会忘记,学习的方法学到了,是一辈子的财富。同时这段时间也是值得回忆的。现在看看自己以前自学的一点东西,学了都有将近一年了,还是一个新手。这次学习让我知道了,只要想学,键是有没有毅力和压力。自学的更是这样的,没有周围人的压力,就要自己去找压力。现在学到的东西,在以后的工作中一定也会学到,但我毕竟早了两年知道这个道理,它在书本上是学不来的,一定要自己经历了,在实践中才学得到。两年的时间,也许会对我的未来有大的影响。
17
8.参考文献
1、单片机原理与接口技术(第二版)(马淑华编著) 北京邮电大学出版社。
2、单片机基础M( 李广弟等编著) 北京航空航天大学出版社。 3、数字电子技术基础 (阎石编著)(第三版) 高等教育出版社。 4、微型计算机原理与接口技术(第二版) 清华大学出版社。 5、单片机原理与接口技术实验指导书 6、微型计算机原理与接口技
18
9.附录
直流电机控制程序 #include #define uchar unsigned char //宏定义 sbit zheng=P1^0; sbit fan=P1^1; sbit add=P1^2; sbit dec=P1^3; sbit stop=P1^4; //电机正转控制键 //电机反转控制键 //电机加速 //电机停止 //电机正转PWM信号 //电机反转PWM信号 //电机减速 sbit PWMZ=P2^0; sbit PWMF=P2^7; bit run=0; 行,=0电机停止 bit Z=0,F=0; //电机运行标志位,=1时电机运 //电机正反标志位 //开机时速度为中间值 unsigned char PWM=0xBF; //unsigned char code suduzhi[]={0x00,0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,0xFF}; { } /*****主函数*****/ void main(void) { //速度等级数值 void delay(unsigned char n) unsigned char i,j; for(j=0;j TMOD=0x21; TH0=0xFF; TL0=0x00; 19 TH1=PWM; TL1=PWM; EA=1; ET0=1; ET1=1; EX0=1; IT0=1; PT0=1; PT1=1; PX0=0; PWMZ=0; PWMF=0; while(1) { } } void int0(void) interrupt 0 { EX0=0; if(zheng==0) { TR0=1; Z=1; F=0; PWMF=0; } if(fan==0) //定时中断优先 //开机时,电机不转动//关外部中断0 20 { TR0=1; F=1; Z=0; PWMZ=0; } if(add==0) { delay(10); if(add==0) { if(PWM<0xFF) 度加 PWM=PWM+8; else PWM=0xFF; } while(add==0); } if(dec==0) { delay(10); if(dec==0) { if(PWM>0x7F) PWM=PWM-8; else PWM=0x7F; } while(dec==0); } //定时初值加,脉宽加,速 //定时初值减,脉宽减,速度减 21 if(stop==0) { TR0=0; TR1=0; PWMZ=0; PWMF=0; } EX0=1; } void time0(void) interrupt 1 { TR0=0; TR1=1; TH0=0xFF; TL0=0x00; TH1=PWM; TL1=PWM; TR1=1; PWMZ=0; PWMF=0; TR0=1; } void time1(void) interrupt 3 { TR1=0; if(Z==1) PWMZ=1; else PWMF=1; } 22 指导教师 评 语 课程设计 成 绩 指导教师 签 字 年 月 日 23 因篇幅问题不能全部显示,请点此查看更多更全内容