1、 2014 单片机课程设计单片机课程设计报告题 目 微型直流电机控制系统设计 专 业 班 级 学 号 实 现 形 式 Proteus 姓 名 分 数 指 导 老 师 学 院 名 称 电气信息学院 目 录1 绪论 .11.1 课题背景 .11.2 课题要求 .12 方案论证 22.1 系统组成 22.2 单片机选型 22.3 驱动方案论证 22.4 监测方案论证 42.5 人机接口方案 53 硬件设计 53.1 单片机最小系统设计 .53.2 I/O 分配 .63.3 驱动电路设计 73.4 转速检测电路设计 83.5 人机接口电路设计 94 软件设计 104.1 主程序流程 104.2 按键扫
2、描子程序流程 115 问题与分析 .125.1 设计问题 125.2 答辩问题 13参考文献 .14附录一(原理图) .15附录二(程序清单).16附录三(器件清单).181 绪论现代工业生产中,电动机是主要的驱动设备,目前在直流电动机拖动系统中已大量采用晶闸管(即可控硅)装置向电动机供电的 KZD拖动系统,取代了笨重的发电动一电动机的 FD系统,又伴随着电子技术的高度发展,促使直流电机调速逐步从模拟化向数字化转变,特别是单片机技术的应用,使直流电机调速技术又进入到一个新的阶段,智能化、高可靠性已成为它发展的趋势。 直流电机调速基本原理是比较简单的(相对于交流电机) ,只要改变电机的电压就可以
3、改变转速了。改变电压的方法很多,最常见的一种 PWM脉宽调制,调节电机的输入占空比就可以控制电机的平均电压,控制转速。1.1课题背景直流电动机具有良好的起动、制动性能,宜于在大范围内平滑调速,在许多需要调速或快速正反向的电力拖动领域中得到了广泛的应用。从控制的角度来看,直流调速还是交流拖动系统的基础。早期直流电动机的控制均以模拟电路为基础,采用运算放大器、非线性集成电路以及少量的数字电路组成,控制系统的硬件部分非常复杂,功能单一,而且系统非常不灵活、调试困难,阻碍了直流电动机控制技术的发展和应用范围的推广。随着单片机技术的日新月异,使得许多控制功能及算法可以采用软件技术来完成,为直流电动机的控
4、制提供了更大的灵活性,并使系统能达到更高的性能。采用单片机构成控制系统,可以节约人力资源和降低系统成本,从而有效的提高工作效率。传统的控制系统采用模拟元件,虽在一定程度上满足了生产要求,但是因为元件容易老化和在使用中易受外界干扰影响,并且线路复杂、通用性差,控制效果受到器件性能、温度等因素的影响,故系统的运行可靠性及准确性得不到保证,甚至出现事故。目前,直流电动机调速系统数字化已经走向实用化,伴随着电子技术的高度发展,促使直流电机调速逐步从模拟化向数字化转变,特别是单片机技术的应用,使直流电机调速技术又进入到一个新的阶段,智能化、高可靠性已成为它发展的趋势。1.2课题要求以 AT89C51单片
5、机作为主控制器、对微型直流电机进行控制。利用霍尔元件设计转速测量、检测直流电机速度,并显示。单片机为控制核心的直流电机 PWM调速控制系统,并实现以下功能:1) 直流电机的正转;2) 直流电机的反转;3) 直流电机的加速;4) 直流电机的减速;5) 直流电机的转速在数码管上显示;6) 直流电机的启动;7) 直流电机的停止;2 方案论证2.1 系统组成微型直流电机控制系统由单片机、显示电路、直流电机及其驱动电路组成。2.2 单片机选型单片机直流调速系统可实现对直流电动机的平滑调速。PWM 是通过控制固定电压的直流电源开关频率,从而改变负载两端的电压,进而达到控制要求的一种电压调整方法。在 PWM
6、驱动控制的调整系统中,按一个固定的频率来接通和断开电源,并根据需要改变一个周期内“接通”和“断开”时间的长短。通过改变直流电机电枢上电压的“占空比”来改变平均电压的大小,从而控制电动机的转速。因此,PWM又被称为“开关驱动装置” 。本系统以 89C51单片机为核心,通过单片机控制,C语言编程实现对直流电机的平滑调速。2.3驱动方案论证L298是 SGS公司的产品,比较常见的是 15脚 Multiwatt封装的 L298N,内部同样包含 4通道逻辑驱动电路。可以方便的驱动两个直流电机,或一个两相步进电机。L298N 可接受标准 TTL逻辑电平信号 VSS,VSS 可接 457 V电压。4 脚 V
7、S接电源电压,VS 电压范围 VIH为2546 V。输出电流可达 25 A,可驱动电感性负载。1 脚和 15脚下管的发射极分别单独引出以便接入电流采样电阻,形成电流传感信号。L298 可驱动 2个电动机,OUT1,OUT2 和 OUT3,OUT4 之间可分别接电动机,本实验装置我们选用驱动一台电动机。5,7,10,12 脚接输入控制电平,控制电机的正反转。EnA,EnB 接控制使能端,控制电机的停转。EnA 为低电平时,输入电平对电机控制起作用,当 EnA为高电平,输入电平为一高一低,电机正或反转。同为低电平电机停止,同为高电平电机刹停。下图是其引脚图:引脚介绍:第 1、15 脚:可单独引出连
8、接电流采样电阻器,形成电流传感信号,也可直接接地。第 2、3 脚:A 电机输出端口。第 4 脚:接逻辑控制的+5V 电源。第 6 脚:A 桥使能端口。第 5、7 脚:输入标准 TTL 电点平对 A 桥的输出 OUT1、OUT2 进行控制。第 8 脚:接电源地。第 9 脚:接电机驱动电源,最高可达 50V。第 11 脚:B 桥使能端口。第 10、12 脚:输入标准 TTL 电平对 B 桥的输出 OUT3、OUT4 进行控制。第 13、14 脚:B 电机输出端口。2.4 检测方案论证采用霍尔元件测量。主要分为两个部分。第一部分是利用霍尔器件将电机转速转化为脉冲信号;第二个部分是使用光耦,将传感器输
9、出的信号和单片机的计数电路两个部分隔开,减少计数的干扰。用于测量的 A44E 集成霍尔开关,磁钢用直径 D=6.004mm,长度为L=3.032mm 的钕铁硼磁钢。电源用直流,霍尔开关输出由四位半直流数字电压表测量,磁感应强度 B 用 95A 型集成霍尔元件测量。图 2-3 霍尔片管脚和管脚接线2.5 人机接口方案采用开关,开关一端接单片机,另一端接地,一旦按下,就会向单片机输入低电平。还有一种方法就是采用矩阵键盘。矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,列线通过电阻接正电源,并将行线所接的单片机的 I/O 口作为输出端,而列线所接的 I/O 口则作为输入。这样,当按键没有按
10、下时,所有的输入端都是高电平,代表无键按下。行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。其图形如下:在本系统中,需要输入的信号比较简单,采用独立键盘接线简单,实现容易,所以就用了开始所说的用一个开关。3 硬件设计3.1 单片机最小系统设计如图所示,单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统.对 51 系列单片机来说,最小系统一般应该包括:单片机、晶振电路、复位电路.3.2 I/O 分配STC89C51 有四组接口:P0 口,P0 口为一个 8 位漏级开路双向 I/O 口,每脚可吸收 8TTL 门电流
11、。当 P1 口的管脚第一次写 1 时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/ 地址的低八位。在 FIASH 编程时,P0 口作为原码输入口,当 FIASH 进行校验时, P0 输出原码,此时 P0 外部必须被拉高。P1 口,P1 口是一个内部提供上拉电阻的 8 位双向 I/O 口,P1 口缓冲器能接收输出 4TTL 门电流。 P1 口管脚写入 1 后,被内部上拉为高,可用作输入,P1 口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在 FLASH 编程和校验时,P1 口作为低八位地址接收。P2 口,P2 口为一个内部上拉电阻的 8 位双向 I/O 口
12、,P2 口缓冲器可接收,输出 4 个 TTL 门电流,当 P2 口被写“1” 时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2 口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2 口当用于外部程序存储器或 16 位地址外部数据存储器进行存取时,P2 口输出地址的高八位。在给出地址“1” 时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2 口输出其特殊功能寄存器的内容。P2 口在FLASH 编程和校验时接收高八位地址信号和控制信号。P3 口:P3 口管脚是 8 个带内部上拉电阻的双向 I/O 口,可接收输出 4 个 TTL门电流。当 P3 口写入“1”后
13、,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3 口将输出电流(ILL)这是由于上拉的缘故。 P3 口也可作为 AT89C51 的一些特殊功能口。在本系统中,P0 口输出数码管的段选信号; P1 口作为人机交互口,接开关;P2 口输出数码管的位选信号。3.3 驱动电路设计本系统采用 89C51控制输出数据,由单片机发生电路产生 PWM信号,送到芯片L298,并通过 L298电源驱动直流电机,并通过单片机程序控制 L298,改变直流电机的占空比,进而实现电机的加减速,正反转控制。其驱动电路如下面部分电路所示。3.4 转速检测电路设计转速检测电路如图所示,电机自动根据转速
14、输出对应的脉冲数,通过 74LS386将脉冲转化成方波,然后由单片机的 T1 计数器对方波进行计数,最后通过一定的算法转化成转速并输出。3.5 人机接口电路设计人机接口部分电路图如下图所示,从上至下共有五个开关,一次是正转、反转、加速、减速、停止。4 软件设计4.1 主程序流程主程序主程序是一个循环程序,其主要思路是,先设定好速度初始值,这个初始值与测速电路送来的值相比较得到一个误差值,然后通过在程序中占空比设置输出控制系数给改变波形的占空比,进而控制电机的转速。其程序流程图如图所示。软件由 1个主程序、1 个中断子程序和显示子程序组成。其程序流程如下:4.2 按键扫描子程序流程图按键扫描程序
15、采用中断方式,按下键,完成延时去抖动、键码识别、按键功能执行。要实现按住加/减速键不放时恒加或恒减速直到放开停止,就需在判断是否松开该按键时,每进行一次增加/减少一定的占空比。按键扫描程序流程图如下图 4.2所示5 问题与分析5.1 设计问题在课设的过程中出现了一些问题,或大或小,但都被我一一解决了。不如说系统图的端口接线,有时候会接错,那就不能实现电机的转动,这需要了解每个端口的作用。在程序编写的过程中,出现了很多问题,包括键盘扫描处理、PWM 信号发生电路的控制、以及单片机控制直流电机的转动方向等问题,虽然问题不是很大,但是也让我研究了好长时间,在解决这些问题的时候,我不断向老师和同学请教
16、,希望能通过大家一块的努力把软件编写的更完整,让系统的功能更完备。经过多天的努力探索,大部分问题都已经解决,就是程序还是不能实现应该实现的功能,这让我很着急。后来经过一点一点的调试,并认真总结,发现了问题其实在编写中断处理程序时出现了错误,修改后即可实现直流电机调速的目的。在仿真软件方面选择了 Proteus ,在 Proteus中画出系统电路图,当程序在Keil C中调试通过后,会生成以 hex为扩展名的文件,这就是使系统能够在Proteus中成功进行仿真的文件。将些文件加载到单片机仿真系统中,验证是否能完成对直流电机的速度调节。若不成功,则重新回到软件调试步骤,进行软件调试。找出错误所在,
17、更正后重新运行系统。硬件仿真电路的设计完全按照论文设计方案进行。在仿真的过程中也遇到了很多问题,比如元件选择、电路设计等,在元件选择方面,有的芯片是我以前学习的时候所没有遇到过的,所以在寻找和使用的过程中也遇到很多麻烦,但经过自己的努力,并借鉴从互联网上找到的资料,我逐渐掌握这些元件的使用方法和原理,为系统设计和仿真提供了良出的基础。另外,在进行仿真的时候,也经常出现程序没有错误了,但是仿真通不过的情况,这些大部分原因是在管脚定义上,很多系统仿真的问题都出在这。经过这段时间的努力,使我对仿真软件以及系统设计电路有了更深一步的认识,也为系统的成功奠定了基础。5.2 答辩问题问:光电耦合器的作用是
18、什么?答:光电耦合器也称为光电隔离器或光耦合器,有时简称光耦。这是一种以光为耦合媒介,通过光信号的传递来实现输人与输出间电隔离的器件,可在电路或系统之间传输电信号,同时确保这些电路或系统彼此间的电绝缘。问:在 AT89C51 芯片中 XTAL2 端口的作用是什么?答: XTAL1 和 XTAL2 分别为反向放大器的输入和输出,而 XTAL2 是来自反向振荡器的输出。参考文献1张友德等,单片机原理应用与实验M,复旦大学出版社 1992.2张毅刚,彭喜源,谭晓钧,曲春波.MCS51 单片机应用设计M.哈尔滨工业大学出版社 2001.1.3宋庆环,才卫国,高志,89C51 单片机在直流电动机调速系统
19、中的应用M。唐山学院,2008.44陈 锟 危立辉,基于单片机的直流电机调速器控制电路J,中南民族大学学报(自然科学版),2003.9.5李维军 韩小刚 李 晋,基于单片机用软件实现直流电机 PWM调速系统J,维普资讯,2007.96曹巧媛.单片机原理及应用M.北京,电子工业出版社,1997.7刘大茂,严飞.单片机应用系统监控主程序的设计方法J.福州大学学报(自然科学福建农林大学硕士论文版),1998.2.8http:/ 张彦斌编著. MCS51/96系列单片微型计算M.西安交通大学出版社,1997.812陈国呈 编著.PWM 逆变技术及应用M.中国电力出版社.2007 年 7月13马忠梅 等
20、编著.单片机的 C语言应用程序设计(第 4版)M,北京航天航空大学出版社.2007. 414刘昌华,易逵编著.8051 单片机的 C语言应用程序设计与实践M.国防工业出版社 2007.9附录一(原理图)附录二(程序清单)#include#define uchar unsigned charuchar N=0;uchar X=50; /占空比初始值为 50%int a,b;sbit RS=P30;sbit RW=P31;sbit EN=P32;unsigned char code str1=“ ZHENG ZHUAN “;unsigned char code str2=“ SPEED UP “;
21、 unsigned char code str3=“ FAN ZHAUN “;unsigned char code str4=“ SPEED DOWN “;unsigned char code str5=“ STOP “;uchar data disdata5;void delay1ms(unsigned int ms)/延时 0.1毫秒(不够精确的)unsigned int i,j;for(i=0;ims;i+)for(j=0;j100;j+);void wr_com(unsigned char com)/写指令/ delay1ms(0.1);RS=0;RW=0;EN=0;P2=com;de
22、lay1ms(0.1);EN=1;delay1ms(0.1);EN=0;void wr_dat(unsigned char dat)/写数据/ delay1ms(0.1);RS=1;RW=0;EN=0;P2=dat;delay1ms(0.1);EN=1;delay1ms(0.1);EN=0;void lcd_init()/初始化设置/delay1ms(15);wr_com(0x38);wr_com(0x08);wr_com(0x01);wr_com(0x06);wr_com(0x0c);void display(unsigned char *p)/显示/while(*p!=0)wr_dat(*
23、p);p+;delay1ms(0.1);init_play()/初始化显示 lcd_init();wr_com(0x80);display(str1);wr_com(0xc0);display(str2);while(1);sbit PWM=P36; /PWM输出脚sbit P1_2=P12;/正传sbit P1_3=P13;/反转sbit P1_4=P14;/加速sbit P1_5=P15;/减速sbit P1_6=P16;/停止sbit P1_1=P11;sbit P1_0=P10;sbit P0_0=P00;sbit P0_1=P01;sbit P0_2=P02;sbit P0_3=P0
24、3;void scjs(void)interrupt 3TH1=0Xff;TL1=0x17;b+;main()TMOD=0x00;IE=0X88;TH1=0Xff;TL1=0X17;TR0=1;TR1=1;a=0;b=0;while(1)PWM=1;while(1)b=0;while(!b);if (N=X)PWM=0;if (N=100)break;N+;if(P1_2=0)/M1正转P1_1=1;P1_0=0;X=50;P0_0=0;P0_1=1;lcd_init();wr_com(0x80);display(str1);if(P1_3=0)/M1反转P1_1=0;P1_0=1;X=50;
25、P0_0=1;P0_1=0;lcd_init();wr_com(0x80);display(str3);if(P1_6=0)/M1停止P1_1=1;P1_0=1;P0_0=1;P0_1=1;P0_2=1;P0_3=1;lcd_init();wr_com(0x80);display(str5);if(P1_4=0) P1_1=1;P1_0=0;X=100;P0_2=0;P0_3=1;lcd_init();wr_com(0xc0);display(str2);if(P1_5=0)P1_1=1;P1_0=0;X=20;P0_2=1;P0_3=0;lcd_init();wr_com(0xc0);display(str4);N=0;附录三(器件清单)AT89C51 芯片1电动机 1L298 芯片 1LED 4LCD 1晶闸管 1电阻 6电容 3开关 6