资源描述
摘 要本文主要设计一个基于单片机的直流电机PWM控制系统。PWM控制提高了调速范围,提高了调速精度,改善了快速性能、功率和功率因数。系统在设计中被控对象采用5V的直流电机,以MCS-51单片机为控制核心,采用LCD1602液晶作为显示元件,进行软硬件的设计。硬件电路由protel设计制作,主要设计了液晶显示电路、键盘控制电路、时钟电路、复位电路、霍尔测速电路和驱动电路。软件设计在Keil开发平台用C语言编写,程序采用模块化设计方案,包括液初始化程序、晶显示程序、键盘控制程序、时钟中断程序。本系统PWM控制直流电机采用调压调速的方法,整体设计包括软件和硬件两个部分。通过利用单片机产生PWM控制信号控制直流电机,详细介绍脉宽调制(PWM)控制原理,直流电机的工作原理和数学模型以及用H型桥电路基本原理设计的驱动电路。通过硬件电路的模拟情况,说明系统运行正常,各个功能模块实现是可行的,控制精度比较高,能够满足系统的基本要求。关键字:单片机;PWM;直流电机IVAbstractIn this paper, it is designed by using PWM speed control system to control the speed of DC-motor based microcontroller. PWM speed control system can improve the speed range and speed accuracy, it also can improved speed performance, power and power factor. Controlled object in the design of the system is a 5V DC-motor controlled by MCS-51 microcontroller as the core, using LCD1602 as the display device. Based which we can begin the hardware and software design. The hardware circuit is designed by the software of Protel which contains the circuit design of the liquid crystal display, the keyboard control circuit, clock circuit and reset circuit, the Hall-speed circuit and drive circuit. Software development platform used in the Keil C language, the program is modular in design, including liquid crystal display program, the keyboard control program and clock interrupt routine. The system uses voltage DC-motor PWM speed control method. Overall design includes two parts of software and hardware design. The DC-motor is controlled through the use of single chip PWM control signal, and detailed pulse-width modulation (PWM) control theory, the working principle of DC-motor and mathematical models and H-bridge circuit with the basic principles of design of the drive circuit. Hardware circuit simulations, indicates that the system is operating normally and each functional module is feasible, especially control precision is relatively high. The system can meet the basic requirements. Key words: Single Chip Microcontroller;PWM;DC-motor目 录绪 论11 系统的总体分析与器件的选择31.1 本系统的设计方案31.2 单片机电路的介绍32 系统硬件结构的设计72.1 时钟电路的设计72.2 复位电路的设计82.3 液晶显示器电路的设计92.3.1 液晶显示元件的选择92.3.2 液晶显示元件160292.3.3 液晶显示电路设计112.4 键盘控制电路的设计122.5 霍尔测速电路的设计132.6 驱动电路的设计142.6.1 直流电机简介142.6.2 直流电机调速162.6.3 H型桥驱动电路163 系统软件程序的设计193.1 系统的软件主程序设计193.2 系统初始化子程序设计203.3 LCD液晶驱动子程序设计213.4 键盘控制子程序设计223.5 时钟中断子程序设计224 系统的调试244.1 硬件调试244.2 软件调试254.3 系统的编译器和烧录软件26结 论34致 谢35参考文献36附录A 英文原文37附录B 汉语翻译45附录C 直流电机PWM控制系统原理图52附录D 直流电机PWM控制系统程序53附录E 元件清单59沈阳理工大学应用技术学院学士学位论文绪 论现代工业电力拖动一般都要求局部或全部的自动化,因此必然要把控制元件组成的自动控制系统有机的统一起来,随着近代电力电子技术和计算机技术迅猛发展以及现代控制理论的应用,使得自动化电力拖动的水平越来越高,以达到高速、优质和高效率。而对于低成本的自动化技术更是受到国内外各类企业的青睐,尤其是小型企业。运用低成本的自动化技术不仅有益于获得经济效益,而且还能提高生产率。在现实的生活当中,自动化控装置系统的应用非常广泛1 2,其中自动调速系统的应用则起着尤为重要的作用。虽然直流电机不如交流电机那样结构简单、价格便宜、制造方便和容易维护,但是它的良好启动、制动性能以及在广泛的范围内平滑的调速使得它就在当今依然是自动调速的系统的主要形式。例如:军事和宇航方面的雷达天线、火炮瞄准、惯性导航等的控制;工业方面的数控机床、工业机器人、印刷机械等设备的控制;计算机外围设备以及办公设备;音响设备以及家用电器中的录音机、数码相机、洗衣机、空调等的控制。随着全控型器件的问世,它的特点开关速度更快和控制更方便使得脉宽调制技术表现出更大的优越性能,主电路线路简单,需要用的功率元件少,开关频率高,电流容易连续,谐波少,电机损耗和发热都较小;低速性能好,稳速精度高,因而调速范围宽;系统快速响应性能好,动态抗扰能力强;主电路元件工作在开关状态,导通损耗小,装置效率更高;微型计算机的飞速发展,正向各个领域渗透,直流调速系统向数字化方向发展成为一种趋势。驱动电动机的方案有三种:工作在通断两个状态的开关控制、相位控制和脉宽调制控制,在单向通用电动机的电子驱动电路中,主要的器件是晶闸管,后来是用相位控制的双向的可控硅,在这以后这种半控的器件一直主宰着电机控制市场。到70和80年代才先后出现全控型功率器件,如GTO、GTR、POWER-MOSFET、IGBT和MCT等。利用这种能自关断的器件,取消了原来普通晶闸管所必须的换向电路,简化了电路结构,提高了效率,提高了工作频率,降低了噪声,也缩小了电力电子装置的体积和重量。之后由于谐波和功率因数的原因逐步由斩波器或者PWM变流器所代替,明显的扩大了调速范围,提高了调速精度,改善了快速性、效率和功率因数。直流电机脉冲宽度调制(Pulse Width Modulation-简称PWM)产生于70年代中期。最早用于不可逆、小功率驱动,例如自动跟踪天文望远镜、自动记录仪表等。随后的十多年,由于出现了宽调速永磁直流电机,它们之间的结合促使PWM技术的快速发展,并使得电气驱动技术达到了一个新的高度。PWM最早应用在军事工业和空间技术当中。它以优越的性能满足高速度、高精度的随动跟踪系统的要求。随后在民用工业以及机器人等领域得到了普及。如今电子技术、计算机技术和电机控制技术相结合的趋势更加明显,促进电机控制技术以更快速度向前发展。随着市场的发展,电机的驱动性能也越来越高,希望功能更强、噪声更低、控制算法更复杂,同时还要符合环境标准,可以预见,在不久的将来,会有更新的电力电子器件问世,已有的器件会得到更好的改进。本文设计的直流电机PWM控制系统,从系统总体分析与器件的选择,硬件电路的设计,系统软件电路的设计和系统调试四个部分来组织全文。该设计控制器使用单片机STC89C52,用1602LCD液晶显示电机的转速、方向、启停以及占空比,驱动电路采用H型桥接,同时采用霍尔元件测速。1 系统的总体分析与器件的选择1.1 本系统的设计方案图1.1直流电机PWM控制系统的方框图从直流电机PWM控制系统图1.1中,可以清楚的看到系统的各个组成部分,包括:键盘控制电路、时钟电路、复位电路、LCD显示电路、驱动电路、霍尔测速电路以及被控对象直流电机与系统的核心元件单片机。系统的思路简单明了,首先单片机生成PWM波,PWM波通过驱动电路驱动直流电机工作,然后通过霍尔测速电路反馈回单片机并通过LCD显示电路在液晶上显示出来,系统采用独立键盘控制直流电机的加速和减速,电源的通和断,电机的方向以及PWM波形的占空比。1.2 单片机电路的介绍(一)STC89系列单片机的原理和结构STC89系列单片机时MCS51系列单片机的派生品。它们在指令系统、硬件结构和片内资源上与标准8051单片机完全兼容,DIP40封装系列与8051为pin-to-pin兼容。STC89系列单片机高速(最高时钟频率90MHz),低功耗,在系统中应用可编程(ISP,IAP),不占用用户资源。简单概括来说,单片机应用系统的结构可分为三个层次:第一层是指单片机:通常指应用系统主处理机,即所选择的单片机器件。第二层是指单片机系统:指按照单片机的技术要求和嵌入对象的资源要求而构成的基本系统,入时钟电路、复位电路和扩展存储器于单片机构成了单片机系统。第三层是指单片机应用系统:指能满足嵌入对象的要求的全部电路系统。(1)STC89C52系列单片机引脚功能分类单片机引脚结构图如图1.2所示:图1.2 STC89C52引脚结构图STC89C52是40引脚双列直插式封装,由于 DIP40封装系列与8051为pin-to-pin兼容,则他管脚功能兼容8051的功能。但是P0和P2,既可以做I/O输入,也做AD信号输入口。当做AD信号输入的时候就不能再做I/O输入了,也不能再外围扩张I/O口了。(二)STC89系列单片机的主要性能STC89C52RC是STC公司生产的单片机,它是一款性价比非常高的单片机,内置8K字节Flash,1K电擦除可编程EEPROM片内程序存储器和512字节RAM,片内程序存储器空间能满足本系统程序存储之需要,可省去片外EPROM程序存储器和地址锁存器,使电路结构简捷。STC89C52主要性能和参数3:它具有低功耗,超低价,高速(090M),高可靠性的特点;RC/RD+系列为真正的看门狗,缺省为关闭(冷启动),启动后无法关闭可放心省去外部看门狗;内部Flash擦写次数为100000次以上;STC89C52RC/RD+系列单片机出厂时就已完全加密,无法解密,用户程是用ISP/IAP机制写入,一边校验一边写,无读出命令,彻底无法解密;具有8个中断源、6个中断矢量、2个优先权的中断机构;低功耗模式有空闲模式和掉电模式;工作电压是(3.4v5v),典型值是5v。由于STC单片机具有ISP(在系统可编程)/IAP(在应用可编程)功能,无需专用编程器/仿真器,可通过串口(P3.0/P3.1)直接下载用户程序,8K程序3秒钟即可完成。所以本设计选用该型号的单片机。STC89系列单片机按芯片型号分别有64/32/16/8K片内Flash,分为2个Flash存储块:Block0和 Block1。2个Flash存储块在物理上Block0在前,Block1在后。通过REMAP功能可以将Flash块重定位。内部Flash擦写次数为100000次以上。ISP是指电路板上的空白器件可以编程写入最终用户程序代码,而不需要从电路板上取下芯片。已经编程的器件也可以用ISP方式擦除或再编程。单片机在“ISP模式”下,上电时,可以进行ISP操作,在ISP模式下,单片机通过串行端口与外部主机,(如PC机或终端)通信。单片机从主机接收命令和数据,用于擦除和再编程代码存储区。当ISP操作结束时,应重新配置单片机,这样才能正常进行下一次操作。系统复位时,单片机检查状态字节中的内容。如果状态字为0,则转去0000H地址开始执行程序;这是用户程序的正常起始地址。如果状态字不为0,则将引导向量的值作为程序计数器的高8位,低8位固定为00H,若引导向量为FCH,则程序计数器内容为FC00H,即程序转到FC00H地址开始执行,而ISP服务程序就是从FC00H处开始的,那么也就是进入了ISP状态了。接下来就可以用PC机的ISP软件,如ZLGISP软件对系统编程了。STC89C52RC/RD+系列单片机出厂时就已完全加密,无法解密,用户程序是用ISP/IAP机制写入,一边校验一边写,无读出命令,彻底无法解密;ISP主要应用于在线(或远程)升级,通过执行ISP引导码改写用户程序,无须编程,无须亲临现场。STC89系列单片机在出厂时,片内已经烧录有ISP引导码,占用Block1的程序空间前2K字节,并设置为从Block1启动。启动时,首先执行ISP引导码,确认是程序下载,还是正常启动。无论是程序下载还是正常启动,ISP引导码最后总是将REMAP取消,恢复Block0在前8K的地址空间,进而执行Block0中的用户程序,即用户程序总是放在Block的00H开始的单元,除非用户自行修改了ISP引导码。IAP功能就是在应用可编程,利用该功能,就可将本不具有EEPROM的单片机具有相当于EEPROM的功能,而且存储空间远大于EEPROM。IAP不能对自身所在的Block编程,即当程序运行在Block1时,可编程的是Block0。根据这个特点,通过REMAP功能可设置在应用编程的Flash的大小。对于STC89C52来说,(1)当程序运行于Block0时,可拥有68K的Flash EEPROM(一般不使用);(2)当程序运行于Block1时,可拥有近32K的Flash EEPROM(需要技巧或更改ISP引导码的用户);技巧:对于想使用32K的Flash EEPROM,又不想更改ISP引导码的用户,可以这样设计程序,在用户程序开始处,通过REMAP功能将Block1影象到前8K,并将影象指令之后的程序烧录在Block1中即可。程序流程定位:Block1(ISP引导码)到Block0(用户程序REMAP部分)到Block1(用户程序)要使用IAP功能,必须启用IAP功能。STC89的超级Flash配置存储器SFCF的bit6位用来开关IAP功能,0关闭,1开启,程序启动时默认关闭。IAP的主要功能有:片擦除,块擦除,扇区擦除,字节编程,字节校验IAP功能的用途:(1)通过IAP功能可以不需要编程器就可以做单片机实验。这对初次学习单片机的人们,尤其对学校单片机的教学带来极大的方便是一种最低成本的单片机开发手段。(2)可以对产品升级软件进行升级。不需要外加监控芯片,只是通过串行口便可将PC机内的产品升级软件下载到产品中去,而实现产品软件的升级换代。在自己的实验室便可通过Modem对远方的产品进行软件升级。这将是以后电子产品的必然趋势。(3)还可以在线对产品参数修改。可实现在线对现场历史数据的存储、曲线参数的校正等功能。适用于一些需要经常改变数据的应用产品(如计费器、门禁系统及需要升级的产品等)及需要远距离改变设备参数的产品(遥控设备等)。442 系统硬件结构的设计本设计采用的硬件电路设计软件为Protel99SE加service pack 6的补丁包。Protel99SE是Protel公司近10年来致力于Windows平台开发的最新结晶,能实现从电学概念设计到输出物理生产数据,以及这之间的所有分析、验证和设计数据管理。最新版本的Protel软件可以毫无障碍地读Orcad、Pads、Accel(PCAD)等知名EDA公司设计文件,以便用户顺利过渡到新的EDA平台。Protel99 SE共分5个模块,分别是原理图设计、PCB设计(包含信号完整性分析)、自动布线器、原理图混合信号仿真、PLD设计。基于单片机的直流电机PWM控制系统硬件设计包括6个部分,分别是:液晶显示电路、键盘控制电路、时钟电路、复位电路、霍尔测速电路和驱动电路。设计本着简单明了,成本低廉,实用性强的原则。首先,系统的主控芯片采用的是MCS-51系列单片机,这是已经在工业,民用业现场应用十分广泛的单片机型号了,目前已经发展了很多增强功能,本设计采用的是STC89C52RC单片机。其次,驱动电路,采用的是H型桥接电路这种设计能够满足直流电机的正反转,实验中采用5V的直流电机。还有,显示部分采用液晶显示器1602LCD进行显示。设计主要能及时准确生动的的进行数据的显示,以便于直观的看到电机的转速变化、正反方向以及占空比等情况。最后,添加了蜂鸣器电路,与PWM波同频率,以便直观的观察占空比的变化。 2.1 时钟电路的设计MCS-51系列单片机HMOS器件内含有一个高增益的反相放大器,通过XTAL1、XTAL2外接作为反馈元件的晶体后,构成自激振荡器。接法如图2.1所示。图2.1 单片机的时钟电路原理图振荡器的振荡频率主要取决于晶体;电容对振荡频率有微调作用,通常在30pF左右。电容的安装位置应尽量靠近单片机芯片。2.2 复位电路的设计单片机在启动运行时都需要复位,以便CPU和系统中的其他部件都处于某一确定的初始状态,并从该状态开始工作。MCS-51系列单片机的复位(RST)引脚上只要出现了10ms以上的高电平,单片机就实现复位。复位的功能是把程序计数器PC值初始化为0000H,使单片机从0000H单元开始执行程序。除此之外,复位操作还对一些特殊功能寄存器的值有影响。MCS-51系列单片机系统常常有上电复位和操作复位两种方法。上电复位是指单片机上电瞬间,要在RST引脚上出现宽度大于10ms的正脉冲,才能使单片机进入复位状态。操作复位是指用户按下“复位”按钮使单片机进入复位状态4。本系统中这两种复位电路(如图2.2)都体现出来了。图2.2 单片机的复位电路原理图上电时,+5V电源立即对单片机芯片供电,同时经R对电容C充电。C上电建立的过程就是负脉冲的宽度,经过倒相后,RST上出现正脉冲使单片机实现上电复位。当按钮S0按下时,RST上同样出现高电平,实现复位。2.3 液晶显示器电路的设计2.3.1 液晶显示元件的选择LCD液晶显示器,英文名字是Liquid Crystal Display,缩写为LCD。它的主要原理是以电流刺激液晶分子产生点、线、面配合背部灯管构成画面。LCD 的构造是在两片平行的玻璃当中放置液态的晶体,两片玻璃中间有许多垂直和水平的细小电线,透过通电与否来控制杆状水晶分子改变方向,将光线折射出来产生画面。液晶显示器(LCD)是平板显示器的一种,具有低电压、微功耗、无辐射、小体积等特点,被广泛应用于各种嵌入式产品中。嵌入式系统开发中常用的液晶显示器有12864液晶和LCD1602,带中文字库的12864液晶是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为12864, 内置8192个16*16点汉字,和128个16*8点ASCII字符集。利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示84行1616点阵的汉字。也可完成图形显示。LCD1602显示模块只能实现ASCII字符显示,但是低电压低功耗。由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。所以考虑到淋浴房温度控制显示系统不需要太多的显示内容,从经济实惠的角度考虑。本设计选用LCD1602。2.3.2 液晶显示元件1602字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16*1,16*2,20*2和40*2行等的模块,本设计使用的是长沙太阳人电子有限公司的1602字符型液晶显示器。一般1602字符型液晶显示器实物如图2.3所示。图2.3 LCD1602实物图(一)LCD1602主要技术参数: 显示容量为162个字符;芯片工作电压是4.55.5V;工作电流为2.0mA(5.0V);模块最佳工作电压是5.0V;字符尺寸为2.954.35(WH)mm。(二)引脚功能说明1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表1.6。表2.1 1602LCD引脚接口说明表编号符号引脚说明编号符号引脚说明1VSS电源地9D2数据2VDD电源正极10D3数据3VL液晶显示偏压11D4数据4RS数据/命令选择12D5数据5R/W读/写选择13D6数据6E使能信号14D7数据7D0数据15BLA背光源正极8D1数据16BLK背光源负极其中VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10k的电位器调整对比度。RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。三、1602LCD的RAM地址映射及标准字库表液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在何处显示字符,如图2.4是1602的内部显示地址。图2.4 LCD1602内部显示地址例如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H)。在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无需人工干预。每次输入指令前都要判断液晶模块是否处于忙的状态。1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,就能看到字母“A”。2.3.3 液晶显示电路设计液晶显示器(LCD)是平板显示器的一种,具有低电压、微功耗、无辐射、小体积等特点,被广泛应用于各种嵌入式产品中。因而本设计采用液晶显示器显示温室环境信息。液晶显示器的接口电路有2种:一种是总线式接口电路方式;另一种是非总线式接口电路方式。总线式接口电路方式是把液晶显示器看做外部的数据存储器,访问液晶显示器就像访问数据存储器的一个单元一样,采用这种方式能充分发挥单片机的总线读写功能,便于升级和扩展。而非总线方式是直接利用I/O口进行读写,较灵活,不便于升级。这里采用总线式接口方式。接口时要注意显示器的使能信号E是高电平有效,而单片机的读、写信号是低电平有效,所以要取反。这里使用的液晶显示器为LCD1602。LCD1602为字符点阵式液晶显示器,可以显示162个字符,可以满足要求。单片机将数据发送到LCD 显示模块,并控制LCD显示模块按照一定的格式显示的功能。其具体的电路设计如图2.5所示。图2.5 液晶显示电路2.4 键盘控制电路的设计系统需要通过键盘控制直流电机的转速、方向与启停。按键键盘有独立式按键和矩阵式键盘5两种形式。根据实际情况,本系统采用独立式键盘设计。其接口电路如图2.6所示。四个开关分别和单片机的P1.3、P1.4、P1.5、P1.6相连。按下S1单片机产生PWM的波形占空比增大,从而使得直流电机两端的电压平均电压增大,在磁通量不变的情况下,电压与转速成正比,从而使转速增加。当按下S2后,正好相反,能够使转速减小。按下S3,电机的转动方式正好相反。当S4按下时,系统会停止工作。如此循环。图2.6 温度上下限调节电路原理图四个按钮控制功能如下:S1:增加PWM波形的占空比。S2:减小PWM波形的占空比。S3:切换直流电机的转动方向。S4:切换系统工作的通断状态。2.5 霍尔测速电路的设计所谓霍尔效应6,是指磁场作用于载流金属导体、半导体中的载流子时,产生横向电位差的物理现象。当电流通过霍尔元件时,若在垂直于电流的方向施加磁场,则霍尔元件两侧面会出现横向电位差(即称为霍尔电压),由于磁场的变化,于是霍尔元件发出脉冲信号传输给控制器来处理,从而实现测速测位置等传感器或开关作用。所以说,需要有磁场的变化,才能有相应的霍尔脉冲信号输出,对于单极性的霍尔,那么你就用磁铁的一极朝向霍尔的正面感应区,那么等到电机轴上的磁铁转到霍尔放置的位置时,就会因为受到磁场变化,并切割磁力线,霍尔就会输出脉冲信号。利用霍尔测速就是利用这个原理。通常可以用计数法、测脉宽法和等精度法来进行测试。所谓计数法就是给定一个闸门时间,在闸门时间内,计数输入的脉冲个数:脉冲宽度就是利用待测信号的脉宽来控制计数门。对于一个高精度的高频计数信号进行计数。由于闸门不能与被测信号同步。因此,这两种都存在一定的误差第一种方法适合信号频率高的情况。第二种适合频率低的情况。实验中,采用第一种方法进行测速,设定的闸门时间为1S。霍尔传感器具有体积小,噪声低,灵敏度高,快速上电等优点。实际中安装方法如图2.7所示。 图2.7 霍尔元件安装图在直流电机的主轴上安装一个小磁刚,在电机转动后,每当小磁钢接近霍尔元件时,由霍尔元件的特性可知,此时霍尔输出为低电平,当小磁钢远离霍尔元件时,霍尔输出为高电平,如此循环,霍尔元件就能够测出电机的转速。在实际的设计中,采用单极性的霍尔元件,霍尔元件的2脚连接到单片机的P3.5,如图2.8所示。单片机的定时器1工作在计数状态。图2.8 霍尔元件连接图2.6 驱动电路的设计2.6.1 直流电机简介直流电动机,这些年来一直作为换能器。绝大多数的直流电动机都是由电磁力形成一种方向不变的转矩而实现的连续旋转的。有刷直流电机的物理模型如图2.9所示。其中固定部分(定子)由磁铁(成为主磁极)和电刷组成;转动部分(转子)由环形铁芯上的绕组组成,定子与转子之间有一气隙。在电枢铁芯上放置由A和B两根导体连成的电枢线圈,线圈的首端和末端分别连到两个圆弧形的铜片上,此铜片称为换向片。换向片之间互相绝缘,由换向片构成的整体称为换向器。换向器固定在转轴上,换向片与转轴之间互相绝缘。在换向片上放置着一对固定的不动的电刷B1和B2,当电枢旋转时,电枢线圈通过换向器和电刷与外电路接通。图2.9 有刷直流电机的物理模型图有刷直流电机的工作原理如图2.10所示。给两个电刷加上直流电源,如图2.10(a)所示,有直流电流从电刷A流入,经过线圈abcd,从电刷B流出,根据电磁力定律,载流导体ab和cd受到电磁力的作用,其方向由左手定则判定,两段导体受到的力形成了一个转矩,使得转子逆时针转动;当其方向转到图2.10(b)所示的位置,电刷A与换向片2接触,电刷B和换向片1接触,直流电机从电刷A流入,在线圈中的流动方向是dcba,从电刷B流出。此时载流导体ab和cd受到电磁力的作用,其方向仍由左手定则判定,两段导体受到的力形成了一个转矩,仍使得转子逆时针转动;如此循环,换向片配合电刷使得电机转动起来,线圈边处于N极下,其中通过电流的方向总是由电刷A流入的方向,而在S极下时,总是从电刷B端流出,这保证了每个磁极下线圈边中的电流方向始终是一个方向。图2.10 有刷直流电机的工作原理图2.6.2 直流电机调速根据直流电机的电机基本原理,由感应电动势,电磁转矩以及机械特性方程式可知,直流电动机的调速方法7三种:(1)调节电枢供电电压U。改变电枢电压主要是从额定电压往下降低电枢电压,从电动机额定转速向下变速,属于横转矩调速方法。对于要求在一定范围内无级调速的系统来说,这种方法最好。变化遇到的时间常数较小能快速响应,但是需要大容量可调直流电源。 (2)改变电动机主磁通。改变磁通可以实现无级调速,但只能减弱磁通进行调速(简称弱磁调速),从电机额定转速向上调速,属于恒功率调速方法。变化时间遇到的时间常数同变化遇到的相比要大得多,响应速度较慢,但所需的电源容量要小。(3)改变电枢回路电阻R。在电动机电枢回路外串电阻进行调速的方法,设备简单,操作方便。但是只能进行有级调速,调速平滑性差,机械特性较软;空载时几乎没有什么调速作用;还会在调速电阻上消耗大量的电能。改变电阻调速有很多的缺点,所以很少采用,只在一些大型的起重机、卷扬机及电车等性能要求不高或低速运转时间不长的情况下才会用。弱磁的调速范围比较小,一般与调压调速配合使用,在额定转速以上做小范围的升速。因此,自动控制的直流调速系统主要以调压调速为主,必要时与弱磁调速配合使用。2.6.3 H型桥驱动电路利用PWM波控制直流电机,实际就是将PWM波加载到电机驱动电路的两端。如图2.11所示为一个典型的直流电机控制电路。电路得名于H桥式驱动电路”是因为它的形状酷似字母H。四个三极管组成H的四个臂,而电机就是H型的横杠。电路中,H桥式电路驱动电路包括四个三极管和一个直流电机。要使电机运转,必须导通对角线上的一对三极管,根据不同三极管对的导通情况,电流可能会从左到右或从右到左流过电机,从而控制电机的转向。图2.11 H桥式驱动电路如下图2.12所示,当Q1管和Q4管导通时,电流就从电源正极经Q1从左到右穿过直流电机,然后再经过Q4回到电源负极。按图中电流箭头所示,该流向的电流将驱动直流电机工作。当三极管Q1和Q4导通时,电流将从左向右流过电机,从而驱动电机按特定方向转动。图2.12 H桥式驱动电机顺时针转动当三极管Q2和Q3导通时,电流将从右向左流过电机,从而驱动电机沿另一方向转动,如图2.13所示,电机逆时针转动。图2.13 H桥式驱动电机逆时针转动驱动电机最重要的要保证H桥上的两个同侧的三极管不会同时导通非常重要。如果三极管Q1和Q2同时导通,那么电流就会从正极出发,流经两个三极管,直接回到负极。此时,电路中只有两个三极管而没有其他的任何负载,因此电路上的电流可能达到最大值(该电流受电源性能限制),甚至烧坏三极管。PWM调速方式主要分单极性和双极性两种的工作方式。对于双极性的工作方式,就是在一个脉冲周期内,单片机量控制口各输出一个控制信号,两信号高低电平相反,两个信号高低电平相反,两信号的高电平时决定电动机的转向和转速。对于单极性工作方式,就是单片机控制口一端置低电平,另一端输出PWM信号,两口的输出切换和对PWM的占空比调节决定电动机的转向和转速。由于单极性工作制电压波中的交流成分比双极性工作制中的小,其电流的最大波动也比双极性工作制的小,所以实际设计中采用的是单极性工作制。实际的驱动电路考虑到功率,故多加两个三极管,形成功率运放,如图2.14所示。图2.14 驱动电路硬件连接图3 系统软件程序的设计3.1 系统的软件主程序设计系统软件程序要包括初始化程序、LCD液晶显示程序、键盘控制程序、时钟中断程序。程序在Keil开发平台上采用C语言编写。主程序的流程图如图3.1所示。本系统的软件部分采用C51编程,在Keil环境下运行。Keil软件是标准的51单片机集成开发环境。既可以实现软件编译,(asm编译为hex),也可以配合仿真模块实现硬件仿真8。图3.1主程序流程图以下是主程序:void main() init(); while(1) if(!s1) k1+; if(k1=100)k1=0;if(k1=20)j+;/增加 if(!s2) k1+; if(k1=100)k1=0;if(k1=20)j-;/减少if(!s3) k1+; if(k1=100)k1=0;if(k1=20)tem0+;/正反if(!s4) k1+; if(k1=100)k1=0;if(k1=20)tem1+;/开停zh_fa = tem0%2;s_s = tem1%2;xian(); 3.2 系统初始化子程序设计系统初始化设计包括LCD液晶初始化和单片机内部的定时器的初始化,以及单片机端口初始化几部分。系统初始化程序逻辑图如图3.2所示。图3.2系统初始化流程图其中液晶的初始化子程序的流程图如图3.3所示。图3.3 LCD初始化流程图3.3 LCD液晶驱动子程序设计显示模块采用的是LCD1602液晶显示芯片,单片机将处理完的数据传输到LCD显示的时候,也用了很多子程序,它们有检查LCD忙状态(程序流程图为图3.4);写指令数据到LCD(程序流程图为图3.5);写显示数据到LCD(程序流程图为图3.6); 图3.4 检查LCD忙流程图 图3.5 写指令数据流程图 图3.6 写显示数据流程图 对于液晶上需要显示的数据包括PWM波形的占空比、转速的数值、转速的方向和系统是否通电。液晶显示子程序的逻辑图如图3.7所示。图3.7 液晶显示子程序逻辑图3.4 键盘控制子程序设计系统共设定了四个按键,S1用于增加PWM波形的占空比,S2用于减少PWM波形的占空比,S3用于切换电机的转向,S4用于控制系统是否上电。键盘控制子程序逻辑图如图3.8所示。图3.8 键盘扫描程序流程图3.5 时钟中断子程序设计时钟中断子程序主要用于定时器重装初值以及给定电机H型桥接电路的驱动信号。定时器T0工作在定时状态,定时器T1工作在技术状态。T0定时中断子程序逻辑图如图3.9所示。图3.9 时钟中断程序流程图4 系统的调试众所周知,电子元器件存在着误差,且在电路设计过程中采取了一些工程上的估计方法,为了保证系统能够正常工作,且运行状态最佳,需在系统设计完成后,对系统运行进行调试。然后,在系统正常运行情况下,对系统进行现场测试,最后,对测试数据进行分析,得出结论,完成系统设计。一般来说,系统调试分为硬件调试和软件调试两部分。硬件调试主要是指对制作好的硬件系统电路进行硬件连接正确性的测试,电路功能能否正常实现以及可靠性检测。一般可采用输入检测程序的方法来检测硬件电路功能。软件调试是指在各个程序模块基本调试正确的基础上,进行系统软件的综合调试,尤其要注意各程序模块之间能否正确地实现调用和被调用等。4.1 硬件调试一、硬件调试方法(1)静态调试在样机加电之前,先用万用表等工具,根据硬件逻辑设计图仔细检查样机线路的正确性,核对元器件型号、规格和安装是否符合要求。应特别注意电源系统检查,以防止电源的短路和极性的错误。并重点检查系统总线(地址总线,数据总线和控制总线),是否存在相互之间或和其他信号线短路。(2)联机仿真 测试扩展RAM存储器测试I/O口和I/O设备 测试程序存储器二、常见硬件故障分析(先写调试方法,后写故障分析,最后说明本课题的调试过程)(1)逻辑错误样机硬件的逻辑错误是由于设计错误和加工过程中的工艺性错误所造成的。这类错误包括错线、开路、短路,其中短路是最常见也是最难以排出的故障。(2)元器件失效 元器件失效的原因有两个方面,一是由于元器件本身损坏或性能差,诸如电电容的型号参数选择不正确,集成电路损坏,或速度、功耗等技术参数不合格等;第二是组装错误造成的元器件失效,诸如电容、二极管、三极管极性错误,集成块安装方向倾倒等。(3)可靠性问题分析 系统不可靠的因素很多,如金属化孔、开关或插件的接触不良所造成的时好时坏;内部和外部的干扰;电源滤波不完善;器件负载超过额定值造成的逻辑电路不稳定。4.2 软件调试一、软件调试程序的基本方法如下:(1) 单步。一次只执行一条指令,在每步完成后又返回临控调试程序。(2) 运行。可以从程序任何一条地址处启动,然后全速执行。(3) 断点运行。用户可以在程序任何处设置断点,当程序执行到断点时,控制返回到临控调试程序。(4) 检查和修改存储器单元的内容。(5) 检查和修改存储器的内容。 (6) 符号化调试。能按汇编语言程序的符号进行调试。二、程序转跳错误这种错误的现象是程序运行不到指定的地方,或发生死循环,通常是由于错用了指令或改错了标号引起的。三、程序错误对于计算程序,经过反复测试后,才能验证它的正确性。软件调试程序,意思就是用开发单片机程序的计算机去模拟单片机的指令执行,并虚拟单片机片内资源,从而实现调试的目的,但是软件调试存在一些问题,如计算机本身是多任务系统,划分执行时间片是由操作系统本身完成的,无法得到控制,这样就无法时时的模拟单片机的执行时序,也就是说 ,不可能像真正的单片机运行环境那样执行的指令在同样一个时间能完成(往往要完成的比单片机慢)9。在Keil软件的工具栏中选Debug进行调试,调试文件时得选好时钟芯片的晶振为11.0592MHz,将文件先分段调试,然后再将整个文件一起调试。在Keil软件中建立好自己的工程文件,并把自己相应的程序保存为.C文件,编译后生成.hex文件。在编译的成的Message中,查看程序的语法错误,如果有错误,可以根据Message中的提示对错误修改。当出现没有出现错误和警告的时候在将程序烧录到单片机中,然后就进行硬件的调试,观察当按键按下时,单片机是否按照程序的步骤执行,液晶显示出的电机的转速,根据经验判断是否离谱,电机方向切换是否正确,在整个运行过程中,电机的运行是否连贯,没有在某一时刻,出现掉电现象。 在调试中,并不是一次就能成功的。当出现问题后,在程序中应设置断点,查看问题的所在,同时也用万用表的蜂鸣档查试硬质电路的连接情况,看是否有假焊,漏焊,错焊的情况。当出现上述问题后,一般是程序的走向不对,后者就是电路板的焊制有问题。但只要细心排查,都能一一解除。评价一个系统做的如何,不仅要看硬件的构造,成本是否低廉,实用性是否较强,适应环境是否多变,还要看软件是否比较简练。程序不应该写的冗长,在写程序的过程中,不仅要遵循一般的写做原则(如主程序在达到目的的前提下应尽量简短),还要依据硬件的客观条件(如P0口的驱动能力比P1口强),要带有目的性地编程序、改程序和调程序。只有这样才能提高单片机的运行效率。4.3 系统的编译器和烧录软件(一)Keil编译器软件Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。下面详细介绍Keil C51开发系统各部分功能和使用10。图4.1 C51工具包整体结构图Keil C51单片机软件开发系统的整体结构C51工具包的整体结构,如图4.1所示,其中uVision与Ishell分别是C51 for Windows和for DOS的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE 本身或其它编辑器编辑C 或汇编源文件。然后分别由C51及A51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM 中。Keil是目前进行51单片机开发最常用的编译软件。关于Keil的使用,有很多的资料介绍,这里只介绍其整个编译过程,在最短时间内开始使用Easy 51DP-2开发板。对于Keil更详细的介绍,可以参考一些专门书籍资料。在Keil里,每一个完整的程序,都是以一个工程的形式建立的。一个工程里可以有一个或多个*.c文件和*.h文件,但只可以有一个main()函数。一般的做法是将包含main()函数的C文件加入到工程中,其他文件以#include头文件的形式加到这个C文件里。这样,在编译的时候,其他的文件会被自动的导入到工程里来。打开Keil软件后,出现(图4.2)所示界面。当然,如果Keil在上次关闭时有打开的工程,再一次打开时它会自动加载上一次的工程文件。图4.2 Keil软件主界面首先点击Project-New Project(Project-Open Project为打开一个已经存在的工程),如图4.3所示。图4.3 Keil软件打开新工程界面点开后,在出现的对话框中选择工程存在路径,单击“保存”后,出现(如图4.4所示)界面。在此界面上选择电路板上所用的单片机型号: STC89S51(或者是STC89S52,视开发板上具体型号而定),单击“确定”。图4.4 选择电路板上所用的单片机型号设置完成后,软件会提示“是否将8051上电初始化程序添加入工程?”这个一般选“否”。这样,就建立了一个空的51工程。接下来的事,就是在这个工程里面加入自己的程序代码。点击,或者File-New,便建立了一个空的文本框。现在,就可以开始在里面输入你的代码了。保存时注意:如果是用C语言写的程序,则将文本保存成*.c,如果是用汇编写的程序,则将文本存成*.asm。到目前为步,我们已经建立了一个工程,也写了一个程序代码。但现在还不能开始编译。因为还没有将程序代码添加到工程里面去。下一步就是将写完的程序添加到工程里面,如图4.5所示,在左边Project Workspace里的Source Group 1上右击,选择Add Files to Group Source Group 1。在打开的对话框中,选择刚存的文件路径和对应的扩展名。这样,程序就添加进了这个工程。图4.5 添加文件到工程中下一步,就开始编译刚输入进去的代码。点击工具栏中的按钮。接着,Keil会打出下面的提示:Build target Target 1compiling 16021602.c.linking.Program Size: data=22.3 xdata=0 code=1440first - 0 Error(s), 0 Warning(s).其中“first - 0 Error(s), 0 Warning(s).”说明现在的工程编译通过,0个错误和0个警告。建立工程的时候,默认是不生成HEX文件的,得在编译做如下设置:单击,或者在Project Workspace里Target 1上右击,选择“Options for Target Target 1”。出现如图4.6所示对话框,选择“Output”按图示,将箭头所指的多选框勾上,点“确定”。现在再点击重新编译,系统提示:“creating hex file from first.”。便会在工程所在文件夹里生成HEX文件。图4.6 生成HEX文件Keil有很强大的调试功能,可以显示C程序的反汇编代码、可以计算代码运行的时间、可以显示程序中某一变量的值,能用好这个调试工具对编写单片机程序会有很大的帮助。同样的,在这里,只对Debug进行简单应用介绍,更详细的使用方法可以参看相关书籍资料。图4.7 调试前设置窗口首先,单击,弹出如图4.7所示对话框,在Target页面上设置对应的晶振频率。其他不用作修改。设置完成后,单击,进入调试界面(如图4.8所示)。图4.8 Keil调试界面点击中对应的工具按钮则可以开始调试。另外,“View”下的三个工具在调试中会经常用到。“Disassembly Window”显示C文件的反汇编程序;“Watch & Call Stack Window”可以显示程序中某一变量的值;“Memory Window”可以显示内存中某一地址的值。(二)STC-ISP软件这里采用的单片机程序烧写软件stc-isp-v3.8,这个软件在网上流传很广,因为其下载线制作简单。被很多单片机爱好者采用。此软件使用时还需要一个单片机下载线来把程序下载到单片机里,单片机下载线原理图(如图4.9所示)图4.9 下载线原理图使用STC-ISP来进行程序写的过程如下:先从网站上下载到STC-ISP的软件包,解压后,打开其中“软件”文件夹,
展开阅读全文