1、装 订 线2014-2015学年第 2 学期 物电 学院期末考试卷微型计算机控制技术学号: 姓名: 班级: 成绩:评语:(考试题目及要求)直流电机控制系统设计本设计是以实现控制直流电机的正反转以及转速为功能的实用系统。采用ATmega128单片机和外围电路实现。利用单片机的定时器的10位相位修正PWM工作模式以及全桥(H桥)来实现直流电机的控制。其中利用按键控制直流电机的正反转和转速的状态转换。设计中采用PWM调制技术,实现对直流电机的调制。系统实现了在线调速、正转、反转、加速、减速、停止等多种功能,键盘设置等,具有一定的实用价值。目录第1章 设计概述- 1 -1.1 任务描述- 1 -(1)
2、设计目的- 1 -(2) 基本要求- 1 -1.2 研究背景- 1 -1.3 功能描述- 2 -第2章 总体设计- 3 -2.1 总体原理图- 3 -2.2 硬件设计结构- 3 -2.3 软件设计流程- 4 -(1)电机控制模块- 4 -(2)中断- 5 -2.4 工作过程- 5 -第3章 硬件模块设计- 5 -3.1 控制器模块- 5 -(1)ATmega128单片机简介- 5 -(2)时钟频率电路- 6 -(3)复位电路的设计- 6 -3.2 驱动模块- 7 -3.3 输入模块- 8 -(1)键盘扫描电路- 8 -第4章 软件设计模块- 9 -4.1 设计思想- 9 -(1)系统配置- 9
3、 -(2)键盘扫描- 10 -(3)中断程序- 10 -4.2 软件系统结构- 10 -4.3 系统配置- 10 -(1)初始化- 10 -(2)中断服务程序:- 12 -总结- 14 -参考文献- 15 -word文档 可自由复制编辑第1章 设计概述1.1 任务描述(1)设计目的鉴于已学过的单片机理论,为实现理论与实践的结合,从元件到系统的设计,来加强自己的硬件电路制作能力和软件编程思想的提高。此外还能从书本走向实用化,使自己所学的知识真正应用于实际,走出课堂走向实践。(2) 基本要求实现直流电机的正转、反转实现直流电机的加速、减速控制本系统可通过人机交互实现在线控制转速和方向1.2 研究背
4、景在现代工业中,电动机作为电能转换的传动装置被广泛应用于机械、冶金、石油化学、国防等工业部门中,随着对生产工艺、产品质量的要求不断提高和产量的增长,越来越多的生产机械要求能实现自动调速。长期以来,自动调速电动机一直占据着调速控制的统治地位。由于它具有良好的线性调速特性,简单的控制性能,高效率,优异的动态特性,现在仍是大多数调速控制电动机的最优选择以前电动机大多使用由模拟电路组成的控制柜进行控制,现在单片机已经开始取代模拟电路作为电机控制器。当前电机控制器的发展方向越来越趋于多样化和复杂化,现有的专用集成电路未必能满足苛刻的新产品开发要求,为此可考虑开发电机的新型单片机控制器,因此研究直流电机的
5、速度控制,有着非常重要的意义。由于变频技术的出现,交流调速一直冲击直流调速,但综观全局,尤其是我国在此领域的现状,再加上全数字直流调速系统的出现,更提高了直流调速系统的精度及可靠性,直流调速系统仍将处于十分重要地位。对于直流调速系统转速控制的要求有稳速、调速、加速或减速三个方面,而在工业生产中对于后两个要求已能很好地实现,但工程应用中稳速指标却往往不能达到预期的效果,稳速要求即以一定的精度在所需要的转速稳定运行,在各种干扰不允许有过大的转速波动。1.3 功能描述本系统是采用ATmega128单片机为主控的可控直流电机系统。通过五个按键分别实现控制电机的正转、反转、加速、减速、停止。为区别各个状
6、态,每个状态对应发光二极管LED0-LED5。图1.3 系统功能模块框图第2章 总体设计2.1 总体原理图 图2.1 系统总体原理图图2.1中U1是主控芯片ATmega128,外加R3构成的复位电路组成最小系统。其中系统使用8M外部晶振。S1S5是独立按键,分别控制直流电机的正转、反转、停止、加速、减速。MA,MB是电机方向控制口,通过转换电平来控制电机的转向,高电平时正转,低电平时反转。PM是电机的转速控制口。通过脉宽调制改变定周期方波的占空比来控制电机速度。2.2 硬件设计结构本设计主要有按键模块、稳压模块、驱动模块、主控模块和复位电路组成。其中5V稳压模块用来给单片机供电,12V稳压模块
7、用来给电机供电,主控器是AVR系列的ATmega128。独立按键作为输入,电机控制端作为输出。主要硬件结构如图2.2。 图2.2 主要硬件结构图2.3 软件设计流程本系统软件设计主要分为按键扫描和PWM输出两大模块。为实现在系统工作过程中的状态快速切换,使用独立的点触式按键。在软件编写时可以按模块编写。其主要模块如下:(1)电机控制模块控制电机正转、反转、停止、加速、减速的软件流程图如图2.3.2。 图2.3.2电机控制模块流程图(2)中断本系统在控制电机转速的过程中,通过外部中断INT0、INT1来改变PWM占空比来改变转速。占空比可以从0%-99%,可控电机从停止到最大速度。中断过程如图2
8、.3.3。图2.3.3 中断服务过程2.4 工作过程系统上电之后自动复位,如果要求直流电机正转可直接按下S1,相反如果要求直流电机反转可直接按下S2即可。若要停止转动可直接按下S3。如果在电机转动过程中要求转速增大(或减小),可以通过按S4(或S5)来调整。而且还可以直接在正转或反转的情况下实现转向的转换。当前工作在什么状态将会有发光二极管只是该状态。实现可视化,简单明了。第3章 硬件模块设计3.1 控制器模块(1)ATmega128单片机简介ATmega128为基于AVR RISC 结构的8位低功耗CMOS微处理器。AVR内核具有丰富的指令集和32个通用工作寄存器。所有的寄存器都直接与算术逻
9、辑单元(ALU)相连接,使得一条指令可以在一个时钟周期内同时访问两个独立的寄存器。这种结构大大提高了代码效率,并且比普通的复杂指令集微处理器高10倍的数据吞吐率。ATmega128具有如下特点:128KB的系统内可编程Flash(具有在写的过称中还可以读的能力,即RWW)、4KB的EEPROM、4KB的SRAM、53个通用I/O口线、32个通用工作寄存器、实时时钟RTC、4个灵活的具有比较模式和PWM功能的定时器/计数器(T/C)、两个USART、面向字节的两线接口TWI、8通道10位ADC(具有可选的可编程增益)、具有片内振动器的可编程看门狗定时器、SPI串行端口、与IEEE1149.1规范
10、兼容的JTAG测试接口,以及6种可以通过软件选择的省电模式。(2)时钟频率电路AVR系列单片机内部都有复位电路、RC振荡电路,因此在一般使用时最小系统基本不使用外围电路,直接给它供电就能工作。AVR内部RC振动器可以给系统提供时钟信号,且这个时钟频率可以通过修改熔丝位来改变频率高低,一般AVR系列单片机在出厂时把熔丝位统一设成内部1MHz的RC振荡。所以一般单片机的硬件最小系统基本不用,需要外接复位电路、晶体振荡电路。此处外加一8MHz的外部石英晶振,电路如图3.1.2图3.1.2 外部振荡源电路一般选用石英晶体振荡器。此电路在上电大约延迟10ms后振荡器起振,在XTAL2引脚产生幅度为3V左
11、右的正弦波时钟信号,其振荡频率主要由石英晶振的频率确定。电路中两个电容 C1,C2的作用有两个:一是帮助振荡器起振;二是对振荡器的频率进行微调。C1,C2的典型值为20PF。单片机在工作时,由内部振荡器产生或由外直接输入的送至内部控制逻辑单元的时钟信号的周期称为时钟周期。其大小是时钟信号频率的倒数,常用fosc表示。图中时钟频率为8MHz,即fosc=8MHz,则时钟周期为1/8s。(3)复位电路的设计此处设计的复位电路是上电复位。待系统上电时便完成了复位,3.2 驱动模块在单片机系统的实际应用中,使用全桥(H桥)来控制直流电动机,基本原理图如图3.2.1所示。图3.2.1 直流电机的全桥电路
12、VT1-VT4是功率MOSFET管,VT1和VT2组成一个桥臂,VT3和VT4组成另一个桥臂。每个MOSFET旁边有一个续流二极管。当VT1和VT4打开时,电机的控制电流从A流向B,此时电机正转;而当VT2和VT4打开时,电机的电流从B流向A,此时电机反转。这样,通过VT1-VT4的控制就可以控制电动机的转向。对于直流电动机转速控制可以有很多种方法:可以使用晶闸管调整导通角,从而调整输出电压来调整直流电机转速;也可以通过D/A输出不同的电压来控制直流电机的转速。本系统用的是PWM(脉冲宽度调制)方法。PWM的原理很简单,利用脉冲冲量等效原理,通过一系列周期相等但宽度可调的脉冲来等效理想电压波形
13、。例如,一个恒为3V的电压波形可以用复制为5V的PWM脉冲序列等效,其等效图如图3.2.2。电压/V 电压/V 53210 t t图3.2.2 PWM脉冲序列等效电压示意如图3.2.1.2所示,对于每个调制周期T而言,序列为高电平5V的时间都是3T/5,即这是一个占空比为60%的PWM脉冲序列。所以只要调制频率足够高,它的等效效果其实就是一个电压为3V的恒定电压波形。本次设计电机驱动使用的是大功率H桥双路电机驱动模块,供电电压为336V,能承受大电流过载,最大电流可达30A。采用完整的两片半桥驱动芯片极低内阻的N沟道MOSFET组成。实物如图3.2.3所示:图3.2.3 电机驱动3.3 输入模
14、块(1)键盘扫描电路键盘是人与单片机打交道的主要设备。它们各有自己的特点,其中独立键盘硬件电路简单,而且在程序设计上也不复杂,一般用在对硬件电路要求不高的简单电路中;矩阵键盘与独立键盘有很大区别,首先在硬件电路上它要比独立键盘复杂得多,而且在程序算法上比它要烦琐,但它在节省端口资源上有优势得多,因此它更适合于多按键电路。其次就是消除在按键过程中产生的“毛刺”现象。这里采用最常用的方法,即延时重复扫描法,延时法的原理为:因为“毛刺”脉冲一般持续时间短,约为几ms,而我们按键的时间一般远远大于这个时间,所以当单片机检测到有按键动静后再延时一段时间(这里我们取10ms)后再判断此电平是否保持原状态,
15、如果是则为有效按键,否则无效。在本次设计中采用了独立键盘的方式,如图3.3.1。其中按键S1、S2、S3是采取的键盘扫描程序,取出端口B的不同值来判断哪个键按下。S4、S5是采用外部中断INT0和外部中断INT1,按键内容在中断子程序中编写。图3.3.1 独立按键第4章 软件设计模块4.1 设计思想本系统软件编写可分成三大模块,系统配置、按键扫描模块和中断服务子程序。(1)系统配置设置提供调制方波的片上定时器/计数器的周期在PWM控制寄存器中设置接通时间设置PWM输出的方向,这个输出是一个通用I/O管脚启动定时器使能PWM控制器(2)键盘扫描取值判断(3)中断程序中断请求中断判优中断响应中断处
16、理中断返回4.2 软件系统结构软件编写可分为几个不同的模块,如图2.3.1图2.3.1 系统软件模块4.3 系统配置(1)初始化本次设计所用到的I/O端口有PB0、PB1、PB2、PB5、PD0、PD1、PA0、PA1I/O引脚初始化:void port_init(void)PORTA=0x03;DDRA=0xFF;PORTD=0x03;DDRA=0x00;PORTB=0x27;DDRB=0x00;time1初始化:void time1_init(void)TCCR1B=0x00;/设置初始化值,决定输出PWM波形的频率TCNT1H=0xFC;TCNT1L=0x01;OCR1AH=0x01;O
17、CR1AL=0xFF;/设置比较寄存器的初始化值OCR1BH=0x03;OCR1BL=0xFF;OCR1CH=0x03;OCR1CL=0xFF;ICR1H=0x03;ICR1L=0xFF;TCCR1A=0x43;TCCR1B=0x02;/启动T/C1初始化Atmega128单片机:void init_devices(void)CLI( );XDIV=0X00;XMCRA=0x00;Port_init( );Time1_init( );MCUCR=0x00;EICRA=0x0A;EICRB=0x00;EIMSK=0x03;TIMSK=0x03;ETIMSK=0x00;SPI( );(2)中断服务
18、程序:1、如果增大键被按下#pragma interrupt_handler int0_isr:2void int0_isr(void)Unsigned int temp;temp=OCR1A;if(temp 0x0000)temp=temp-10;OCR1A=temp;按键扫描程序:void key(void)unsigned char key=0xFF;if( key!=PINB)delay_ms(1);If(key!=PINB)key=PINB;if(key=0xFE)PORTA=0x01;/正向转动else if(key=0xFD)PORTA=0x02;/反向转动else if(key
19、=0xFB)PORTA=0x00;/停止转动总结本次系统设计虽然看似简单,但在做的过程中却发现了自己的好多不足之处,理论知识再怎么丰富,感觉也是力不存心,好在之前在在实验室做过一些东西,在之前自学AVR基础上,不但加深了对这款单片机的认识,而且提高了自己的编程能力。在做之前先是查阅了有关书籍,把所涉及的有关知识全部记录下来后慢慢消化,然后接着做起了仿真,验证自己的想法是否是真确的。待所有仿真结论成立后,便开始了硬件的搭建,直至测试通过。把理论运用于实践中,在实践中遇到问题再运用理论知识去解决。我想这是每一个大学生都应该做到的,这样才能让我们学的更牢,知识面更广。仅仅学习书本上的知识而不知道如何
20、运用的人和仅仅只会实践操作而不会用理论知识去解决实践中的问题的人,都不是这个社会所需要的,只有将理论与理论结合好,才能将所学知识运用到最大化。整个设计通过了软件和硬件上的调试。我想这对于自己以后的学习和工作都会有很大的帮助的。在这次设计中遇到了很多实际性的问题,在实际设计中才发现,书本上理论性的东西与在实际运用中的还是有一定的出入的,所以有些问题不但要深入地理解,而且要不断地更正以前的错误思维。对于单片机设计,其硬件电路是比较简单的,主要是解决程序设计中的问题。而程序设计是一个很灵活的东西,它反映了你解决问题的逻辑思维和创新能力。它才是一个设计的灵魂所在。因此在整个设计过程中大部分时间是用在程
21、序上面的。很多子程序是可以借鉴书本上的,但怎样衔接各个子程序才是关键的问题所在,这需要对单片机的结构很熟悉。因此可以说单片机的设计是软件和硬件的结合,二者是密不可分的。但是,通过这次设计我也发现自己的很多不足之处。在设计过程中我发现自己考虑问题很不全面,自己的专业知识掌握的很不牢固,尤其在整合的思维上有所欠缺,总是眼高手低,忽视重要的细节。本系统虽然完成预设功能,但是仍然有很多改进之处,这样才能实现实用化。是自己走向更高的台阶。 参考文献1ATmega128单片机入门与提高.北京航空航天大学出版社M,2009.2AVR单片机C语言应用100例M.电子工业出版社,2012年.3C程序设计(第四版)M.清华大学出版社,2011年.4单片机的C语言应用程序设计. 马忠梅 籍顺心 张 凯 马 岩. 北京:北京航空航天大学,2010.6 郭天祥.51单片机C语言教程,电子工业出版社,2005年7月7 丁元杰.单片微机原理及应用,机械工业出版社,2005年7月8周立功.直流电机原理与驱动M.西安:西安电子科技大学出版社.2008.1word文档 可自由复制编辑