电动自行车驱动控制系统_毕业设计.doc_第1页
电动自行车驱动控制系统_毕业设计.doc_第2页
电动自行车驱动控制系统_毕业设计.doc_第3页
电动自行车驱动控制系统_毕业设计.doc_第4页
电动自行车驱动控制系统_毕业设计.doc_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

盐城工学院毕业设计说明书(2013)目 录1、概 述11.1 电动自行车驱动控制系统设计的意义11.2 研究现状综述11.3 研究方法21.3.1直流电机调速原理21.3.2直流调速系统实现方式32、系统总体方案论证42.1 系统方案比较与选择42.2 系统方案描述43、硬件电路的模块设计53.1控制电路设计53.2信号处理电路设计63.3驱动电路方案及参数描述73.3.1 ir2110驱动电路中igbt抗干扰设计83.3.2 ir2110功率驱动介绍93.3.3 h桥驱动电路原理103.4 稳压电源设计103.5 光电测速电路114、系统软件设计124.1电动机驱动和速度控制程序设计134.2pwm调速与测速程序设计154.2.1 pca捕获模式154.2.2 pca脉宽调节模式164.2.3 pwm调制信号接收模块175.系统调试196、结束语20参考文献21致 谢22附录1 原理图23附录2 pcb图24附录3 程序清单251、定时器程序252、延时程序263、lcd显示程序264、pwm程序305、电动机调速程序326、主程序35电动自行车驱动控制系统设计1、概 述1.1 研究现状综述20世纪70年代以来,直流电机传动经历了重大的技术、装备变革。整流器的更新换代,以晶闸管整流装置取代了习用已久的直流发电机电动机组及水银整流装置使直流电气传动完成了一次大的跃进1。同时,高集成化、小型化、高可靠性及低成本成为控制的电路的发展方向。使直流调速系统的性能指标大幅提高,应用范围不断扩大。直流调速技术不断发展,走向成熟化、完善化、系列化、标准化,在可逆脉宽调速、高精度的电气传动领域中仍然难以替代1。早期直流传动的控制系统采用模拟分离器件构成,由于模拟器件有其固有的缺点,如存在温漂、零漂电压,构成系统的器件较多,使得模拟直流传动系统的控制精度及可靠性较低2。随着计算机控制技术的发展,微处理器已经广泛使用于直流传动系统,实现了全数字化控制。由于微处理器以数字信号工作,控制手段灵活方便,抗干扰能力强。所以,全数字直流调速控制精度、可靠性和稳定性比模拟直流调速系统大大提高。直流传动控制采用微处理器实现全数字化,使直流调速系统进入一个崭新的阶段。采用微处理器控制,使整个调速系统的数字化程度,智能化程度有很大改观;采用微处理器控制,使调速系统在结构上简单化,可靠性提高,操作维护变得简捷,电机稳态运行时转速精度等方面达到较高水平。 现阶段,我国还没有自主的全数字化直流调速控制装置生产商,而国外先进的控制器价格昂贵,且技术转让受限,为此研究及更好的使用国外先进的控制器,吸收国外先进的数字化直流电机调速装置的优点,具有重要的实际意义和重大的经济价值。1.2 研究方法1.2.1直流电机调速原理直流电动机根据励磁方式不同,直流电动机分为自励和他励两种类型。不同励磁方式的直流电动机机械特性曲线有所不同。但是对于直流电动机的转速有以下公式:其中:u电压;r内励磁绕组本身的电阻;f每极磁通(wb);cc电势常数;cr转矩常量3。由上式可知,直流电机的速度控制既可采用电枢控制法,也可采用磁场控制法。磁场控制法控制磁通,其控制功率虽然较小,但低速时受到磁极饱和的限制,高速时受到换向火花和换向器结构强度的限制4,而且由于励磁线圈电感较大,动态响应较差5。所以在工业生产过程中常用的方法是电枢控制法。图1-1 直流电机的工作原理图电枢控制是在励磁电压不变的情况下,把控制电压信号加到电机的电枢上,以控制电机的转速。传统的改变电压方法是在电枢回路中串联一个电阻,通过调节电阻改变电枢电压,达到调速的目的,这种方法效率低、平滑度差,由于串联电阻上要消耗电功率,因而经济效益低,而且转速越慢,能耗越大6。随着电力电子的发展,出现了许多新的电枢电压控制方法。如:由交流电源供电,使用晶闸管整流器进行相控调压;脉宽调制(pwm)调压等等。调压调速法具有平滑度高,能耗少,精度高等优点。在工业生产中广泛使用其中脉宽调制(pwm)应用更为广泛。脉宽调速利用一个固定的频率来控制电源的接通或断开,并通过改变一个周期内“接通”和“断开”时间的长短,即改变直流电机电枢上电压的“占空比”来改变平均电压的大小,从而控制电动机的转速,因此,pwm又被称为“开关驱动装置”。图1-2 电枢电压占空比和平均电压的关系图根据图1-2,如果电机始终接通电源时,电机转速最大为vmax,占空比为d= t1/t,则电机的平均速度为:d*vmax=v *d,可见只要改变占空比d,就可以得到不同的电机速度,从而达到调速的目的7。1.2.2直流调速系统实现方式(1)基于晶闸管作为主电路的调速系统 晶闸管的调速系统是采用分离元件设计的调速系统占用的空间大,控制角难于调整,且模拟器件的固有缺陷如:温漂、零漂电压等,导致电机的调速无法达到满意的结果。晶闸管的单向导电性,它不允许电流反向,给系统的可逆运行造成困难,性能较差,自动化控制程度差,调速过程较为复杂,不利于工业生产和小功率电路中采用。另一问题是当晶闸管导通角很小时,系统的功率因素很低,并产生较大的谐波电流,从而引起电网电压波动殃及同电网中的用电设备,造成“电力公害”。(2)基于pwm为主控电路的调速系统 与传统的直流调速技术相比较,pwm(脉宽调制技术)直流调速系统具有较大的优越性:主电路线路简单,需要的功率元件少;开关频率高,电流容易连续,谐波少,电机损耗和发热都较小;低速性能好,稳速精度高,因而调速范围宽;系统频带宽,快速响应性能好,动态抗干扰能力强;主电路元件工作在开关状态,导通损耗小,装置效率高。 基于单片机类由软件来实现pwm:在pwm 调速系统中占空比d是一个重要参数在电源电压ud不变的情况下,电枢端电压的平均值取决于占空比d的大小,改变d的值可以改变电枢端电压的平均值从而达到调速的目的。改变占空比d的值有三种方法:a、定宽调频法:保持t1不变,只改变t,这样使周期(或频率)也随之改变7。(图1-2)b、调宽调频法:保持t 不变,只改变t1 ,这样使周期(或频率)也随之改变7。(图1-2)c、定频调宽法:保持周期t(或频率)不变,同时改变t1 和t7。(图1-2)前两种方法在调速时改变了控制脉冲的周期(或频率),当控制脉冲的频率与系统的固有频率接近时,将会引起振荡,因此常采用定频调宽法来改变占空比从而改变直流电动机电枢两端电压。利用单片机的定时计数器外加软件延时等方式来实现脉宽的自由调整,此种方式可简化硬件电路,操作性强等优点。1.3 电动自行车驱动控制系统设计意义 现在电气传动的主要方向之一是电机调速系统采用微处理器实现数字化控制,电动自行车驱动控制系统系统通常采用直流调速技术,经过二十几年的发展,已达到一个很高的技术水平。特别是采用了微处理器及其他先进电力电子技术,使数字式直流调速装置在精度的准确性、控制性能的优良性和抗干扰的性能有很大的提高和发展,在国内外得到广泛的应用。数字化直流调速装置作为目前最新控制水平的传动方式显示了强大优势。全数字化直流调速系统不断升级换代,为工程应用和工业生产提供了优越的条件。2、系统总体方案论证2.1 系统方案比较与选择方案一: 采用专用pwm集成芯片、ir2110 功率驱动芯片构成整个系统的核心,现在市场上已经有很多种型号,如tl公司的tl494芯片,东芝公司的zsk313i芯片等。这些芯片除了有pwm信号发生功能外,还有“死区”调节功能、过流过压保护功能等。这种专用pwm集成芯片可以减轻单片机的负担,工作更可靠,但其价格相对较高,难于控制工业成本不宜采用。方案二: 采用mc51单片机、功率集成电路芯片l298构成直流调速装置。l298是双h高电压大电流功率集成电路,直接采用ttl逻辑电平控制,可用来驱动继电器、线圈、直流电动机、步进电动机等电感性负载。其驱动电压为46v,直流电流总和为4a。该方案总体上是具有可行性,但是l298的驱动电压和电流较小,不利于工业生产应用,无法满足工业生产实践中大电压、大电流的直流电机调速。方案三: 采用stc12c5a60s2增强型单片机、ir2110功率驱动芯片构成整个系统的核心实现对直流电机的调速。stc12c5a60s2具有两个定时器t0和t19。通过控制定时器初值t0和t1,从而可以实现从任意端口输出不同占空比的脉冲波形。stc12c5a60s2控制简单,价格廉价,且利用stc12c5a60s2构成单片机最小应用系统,可缩小系统体积,提高系统可靠性,降低系统成本。ir2110是专门的mosfet管和igbt的驱动芯片,带有自举电路和隔离作用,有利于和单片机联机工作,且igbt 的工作电流可达50a,电压可达1200v10,适合工业生产应用。 综合上述三种方案,本设计采用方案三作为整个系统的设计思路。2.2 系统构成 本系统以stc12c5a60s2为控制核心,配以4键盘和lcd液晶显示屏,通过stc12c5a60s2内部pca计数器对主干驱动电路进行速度采集,并通过a/d转换进行速度显示。同时将stc12c5a60s2产生的pwm信号经过逻辑延迟电路后加载到以ir2110为驱动核心,igbt构成的h桥主干驱动电路上实现对直流电机的控制和调速。框图如下图2-1图2-1 系统整体框图3、驱动控制系统硬件电路设计3.1控制电路本系统采用stc12c5a60s2控制输出数据,产生pwm信号,送到驱动电路,驱动直流电机,直流电机通过测速电路,将速度数据通过pca送回单片机,在lcd液晶显示屏上显示占空比和电机转速的变化,并依据按键电路下达的指令对数据进行处理,实现对电机速度和转向的控制,达到直流电机调速的目的。主控芯片stc12c5a60s2 主控芯片pwm信号的产生与放大直流电机测速发电机pca捕捉模式a/d转换图3-1控制电路框图stc12c5a60s2 系列单片机是宏晶科技生产的单时钟/机器周期(1t)的单片机,是高速、低功耗和超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。内部集成max810专用复位电路,2路pwm,8路高速10位a/d转换(250k/s),适用于电机控制,强干扰场合。stc12c5a60s2系列单片机有2路可编程计数器阵列pca/pwm,即p1.3与p1.4口(通过auxr1寄存器可以设置pca/pwm从p1口切换到p4口)。pca含有一个特殊的16位定时器,有2个16位的捕获/比较模块与之相连。每个模块可编程工作在4种模式下:上升/下降沿捕获、软件定时器、高速输出或可调制脉冲输出。本课题用到两个模式,即捕获模式和脉宽调节模式(pwm)。当pca模块用于捕获时,其保存各个模块的16位捕捉计数值,用于电机测速,捕捉电机转动时产生的电信号频率;当pca模块用于pwm模式时,可以控制输出的占空比,从而对电机进行调速控制。3.2信号处理电路 pwm作为速度信号,和方向信号dir(p1.2)一起要经过信号处理电路,产生4路满足功率驱动电路要求的时序信号。为了避免驱动电路短路, 信号处理电路要对输出时序有互锁保护功能, 功率驱动电路实现弱电控制强电的功能。电机速度信号pwm和方向信号dir,通过如图3-3所示电路,产生ir2110所需的控制信号hin1、hin2、lin1、lin2。dir经与非门产生相反信号dirx,由与门74ls08和与非门74ls00将pwm和dir或dirx进行逻辑运算,实现输出信号互锁保护,使hin1和lin2不能同时为高,hin2和lin2不能同时为高。dir=1时,电机正转;dir1=0时,电机反转。图3-1信号处理电路逻辑运算结果如下: hin1=pwm1dir lin1= hin2=pwm1 lin2=3.3驱动电路方案及参数描述 功率驱动部分采用2片ir2110驱动4片irf3205构成h桥控制电路(如图3-2所示)。ir2110驱动igbt 构成的h桥电路的特点显著,具有调速性能好,调速频带宽,可以工作在1100 khz范围内工作12。所要求的控制信号简单,只需要加入pwm信号即可。ir2110设计保护电路性能良好,安全性高,无控制信号时,电机处于刹车状态,可用于很多工业领域。在本设计中(图3-2),ir2110的自举电容采用了两个不同大小的电容并联使用。在频率为20 khz左右的工作状态下,可选用1.0f和0.1f电容并联。并联高频小电容可吸收高频毛刺干扰电压。电路中为了防止q1、q3导通时高电压串入vcc 端损坏芯片,在设计采用快恢复二极管in4148,其快速恢复时间为500ns13 可有效地隔断高压信号串入ir2110。由于vb高于vs电压的最大值为20v,为了避免vb过电压,电路中增加了10v稳压二极管d2、d3控制vb端电压在12v左右防止vb过压。由于密勒效应的作用,在开通与关断时,集电极与栅极间电容上的充放电电流很容易在栅极上产生干扰14。针对这中现象,本设计在输出驱动电路中的功率管栅极限流电阻r6、r7、r8、r9上反向并联了二极管d4、d5、d6、d7。为了避免马达的反电动势的危害,需要在晶体管两端接二极管,因为马达线圈在电路开闭瞬间产生的反向电动势通过会高过电源,这样对晶体管和电路会有很大的影响甚至烧毁零件。图3-2 驱动电路3.3.1 ir2110驱动电路中igbt抗干扰设计 对于任何cmos器件,使这些二极管正向导通或反向击穿都会引起寄生的可控晶闸管(scr)锁定,锁定的最终后果难以预料,有可能暂时错误地工作到完全损坏器件。若在“理想的自举”电路中,vcc由一个零阻抗电源供电,并通过一个理想的二极管给vb供电。负过冲电压将引起自举电容过充电。图3-3 ir2110部分寄生二极管示意图igbt(insulated gatebipolar transistor)是电压驱动型器件,由于是容性输入阻抗,故要求驱动电路提供一条小阻抗通路,将栅极电压限制在一定安全数字内17。如果电路的负载为感性负载,则在功率管开关瞬间、电源短路以及过电流关断时,di/dt将比较大,功率管就会产生过冲电压,从而使vs端电压低于com端。实际上,该电压是不能低于-4v,超出该极限电压就会引起高端通道工作的不稳定。3.3.2 ir2110功率驱动介绍(1)ir2110内部结构原理图及管脚说明 ir2110是ir公司生产的高压,高速的功率mosfet18, igbt专用驱动芯片,具有独立的高、低端输出双通道。门电压需求在1020v范围,悬浮通道用于驱动mosfet的高压端电压可以达到500v18。图3-3 ir2110内部结构图 图3-3中引脚10(hin)及引脚12(lin )双列直插式封装,分别驱动逆变桥中同桥臂上下两个功率mos器件的输入驱动信号输入端,当输入脉冲形成部分的两路输出,范围为(uss -0.5v)(ucc +0.5),图3-3中uss 和 ucc分别为引脚13(vss )及引脚8(v cc)的电压值。引脚11(sd)端为保护电路信号输入端。当该引脚为高电平时,ir2110的输出被封锁,输出端ho(7脚)、lc(1脚)恒为低电平。而当该脚为低电平时,输出跟随输入变化。用于故障(过电压、过电流)保护电路。 引脚6(vb)及引脚3(vcc)分别为上下通道互锁输出级电源输入端。用于接输出级电源正极,且通过一个较高品质的电容接引脚2。引脚3还通过一个高反压快速恢复二极管与引脚6相连。(2)ir2110的自举电路在驱动电路设计中,ir2110的自举电路可以有效的保护igbt。ir2110自举电路的结果原理图如图3-4所示:图3-4 ir2110自举电路原理图 图3-4中c1及vd1 分别为自举电容和快速恢复二极管,c2为vcc的滤波电容。当s1在关断期间,c1已经充满电,即vcc=vc1。在vm1开通,vm2关断期间,vc1通过电阻rg1与s1的栅射极间电容cg1放电。在vm1关断,vm2开通期间,s1栅电荷经rg1和vm2快速释放。在经过死区时间后,s2开通vcc经过vd1、s2给c1充电。这就是ir2110的自举电路原理。如果自举电容c选取的过大,可能使s2关断时电容两端还没有达到要求的电压,而电容选择较小则会导致电容存储的能量不够维持栅源电压在s1导通时间内为一定值。在选择自举电容c1最好选择非电解电容,电容应尽可能的靠近芯片。一般情况下为保证自举电容将栅源电压持续一段时间,选电容为其最小值的15倍左右。综合考虑在设计驱动电路时采用1uf的电容为ir2110的自举电容。3.3.3 h桥驱动电路原理自举电路输出端电源vcc是12v,输人信号端电源vdd是5v,c7、c8是自举电容,d1、d2是二极管, c9、c10是滤波电容, q2、q3、q4、q5是场效应晶体管.当q2、q5导通时, 电机正转;当q3、q4导通时, 电机反转;当q4、q5导通时,电机两极与地短接, 电机刹车制动。根据自举原理, 上桥q2的导通必须要以下桥q4的导通为前提, 给自举电容充电。理论上,q2是不能实现占空比导通的, 只能达到97%。q5始终导通, 接通不同占空比u可实现电机正转调速。当q2导通时, 电机全速正转;q4导通时, 电机两端都接地, 电机刹车。同理, q4的不同占空比可实现电机反转调速。图3-2 h桥驱动电路3.4 稳压电源因为系统需要的不同电压值较多,且由于电机在正常工作时对电源的干扰很大,如果只用一组电源难以防止干扰,为此在设计时采用了两组可调的稳压电源为系统控制单元和驱动单元单独供电。在设计时首先考虑到使用三端可调稳压集成芯片lm7805、和lm7905。lm7805系列稳压器输出连续可调的正电压,lm7905系列稳压器输出连可调的负电压,可调范围为1.2v37v,最大输出电流为1.5a。稳压器内部含有过流、过热保护电路,具有安全可靠,性能优良、不易损坏、使用方便等优点。其电压调整率和电流调整率均优于固定式集成稳压构成的可调电压稳压电源。再利用lm7805、lm7905三端稳压芯片即可形成一个1.2v18v可调和5v固定输出的稳压电源。具体设计电路图如下(图3-3)当220v交流电压经过变压器转换成双18v的交流电压,利用b2整流桥实现整流后,利用了3300uf大电容c1、c2整流,因为大容量电解电容有一定的绕制电感分布电感,易引起自激振荡,形成高频干扰,所以稳压器的输入、输出端常并入103瓷介质小容量电容c3、c4用来抵消电感效应,抑制高频干扰,利用lm317、lm337稳压器实现18v和-18v可调,最后在经过470uf电解电容c7、c8滤波后给lm7805、lm7905稳压后再通过c9、c10滤波后输出5v直流固定电压。图3-3 稳压电源电路3.5 光电测速电路本光电测速模块的设计主要采用型号为h42b6光电传感器。模块的工作原理如下,当码盘上的缝隙转到光电传感器所在的位置光敏晶体管接收到光线而导通,此时原理图中a点输出为低电平0,当圆孔缝隙离开光电传感器所在的位置光敏晶体管因接收不到光线而截止,此时a点输出为高电平1。图中lm358和电阻r4、r5组成电压比较器,起滤波整形的作用。经过lm358的电压信号通过pca口送至单片机进行频率测量。 a图3-5 光电测速模块原理图4、系统软件设计 系统程序为一个主程序(包括若干功能模块),中断子程序,以及若干个子程序,共计三大部分构成。按照任务的定义,每个功能模块都能完成某一明确的任务,实现具体的某个功能,如测量、计算、显示、键盘扫描、输出控制等。本设计的总程序设计流程图及其部分主要子程序流程图如图4-1系统总体流程图。图4-1 系统主体流程图4.1电动机驱动和速度控制程序设计#include #include motor_ctr.h#includetimer.h#includepwm.hunsigned char pwm0_temp= 128; /占空比设置,赋初值0x80 50%占空比unsigned char duty_cycle; unsigned char key1_f,key2_f,key3_f,key4_f;/按键标志位unsigned char start_f = 0;/设置完成,启动标志位void motor_ctr_int(void) dir = 0; /初始化方向 设ir=1正 dir=0反pwm_dis; /初始化时不输出pwmvoid pid_adjust(void) /pwm调节函数 if(start_f=1) pwm_dac(pwm0_temp); /更新pwm参数,改变输出占空比 duty_cycle=pwm0_temp*100/255; /占空比计算 void key(void)static unsigned int key1_cnt,key2_cnt,key3_cnt,key4_cnt; /按键有效计数if( key1 = 0 )+key1_cnt; /按键去抖if( key1_cnt = 5 )key1_f = 1;else key1_cnt= 0; if( key2 = 0 )+key2_cnt;if( key2_cnt = 5 )key2_f = 1;else key2_cnt= 0;if( key3 = 0 )+key3_cnt;if( key3_cnt = 5 )key3_f = 1;else key3_cnt= 0;if( key4 = 0 )+key4_cnt;if( key4_cnt = 5 )key4_f = 1;else key4_cnt= 0;void key_symbol_process(void)static unsigned char key4_flag; /按键状态标志if( key1_f )key1_f = 0;pwm0_temp+;/加速if( key2_f )key2_f = 0;pwm0_temp-;/减速if( key3_f )key3_f = 0;dir=dir; /方向切换 if( key4_f )key4_f = 0;key4_flag+; /通过标志位,设置个十百千设置if(key4_flag=1)/key4-p35-et1按第1次pwm_en; / 启动start_f = 1;if(key4_flag=2) /key4-p35-et1按第2次 start_f = 0;motor_stop; /快速制动key4_flag = 0;4.2pwm调速与测速程序设计4.2.1 pca捕获模式 stc12c5a60s2d系列单片机中的pca可编程计数器阵列含有一个特殊的16位定时器,它可与2个16位捕获比较模块相连。每个模块可编程工作在4种模式下,即:上升下降沿捕获、软件定时器、高速输出或可调制脉冲输出。设计时,可将模块0连接到p3.7(cex0pca0pwm0),模块1连接到p3.5(cex1pca1pwm1)。由于寄存器ch和cl的内容是正在自由递增计数的16位pca定时器的值,因此,pca定时器可作为2个模块的公共时间基准,并可通过编程工作在112振荡频率、12振荡频率、定时器0溢出或eci脚的输入(p3.4)。定时器的计数源由cmodsfr的cps1和cps0位来确定。要使pca模块工作在图4-2所示的捕获模式,寄存器ccapmn中的capnn和cappn至少应有一位必须置1。对模块的外部cexn输入(包括cex0p3.7、cex1p3.5、cex2p2.0、cex3p2.4口)的跳变进行采样时,若采样到有效跳变,其pca硬件就将pca计数器阵列寄存器(ch和cl)的值装载到模块的捕获寄存器中(ccapnl和ccapnh)。4.2.2 pca脉宽调节模式所有pca模块都可按图4-3所示的工作模式用作pwm输出。其输出频率取决于pca定时器的时钟源。由于所有模块均共用仅有的pca定时器,所以,它们的输出频率相同。各个模块的输出占空比是独立变化的,与使用的捕获寄存器epcnl,ccapnl有关。当cl-sfr的值小于epcnl,ccaphl时,输出为低,而当pca-clsfr的值等于或大于epcnl,ccapnl时,输出为高。当cl的值由ff变为00溢出时,epcnh,ccapnh的内容将被装载到epcnl,ccapnl中。这样就可实现无干扰地更新pwm。使能pwm模式时,模块ccapmn寄存器的pwmn和ecomn位必须置位。图4-2 pca捕获模式图4-3 pca脉宽调节模式4.2.3 pwm调制信号接收模块由于要用pca1模块来把上位机输出的频率为1khz的pwm调制信号的频率提高(因为频率越高,越容易滤波),故将pca定时器的时间基准置为12振荡频率。用pca1(p3.7)模块来识别接收的pwm调制信号时,应使pca1工作在上升下降沿捕获工作模式,并打开pca中断。设计时,可首先设置pca1工作在上升沿捕获工作模式,这样,当p3.7脚采样到上升沿跳变时,pca0模块即可将pca计数器阵列寄存器ch和cl的值装载到模块的捕获寄存器中ccap1h,ccap1l。然后在中断中把ccap1h,ccap1l的值存放到自定义的数据单元up_datah,up_datal中,并在中断中把pca1工作模式设置为下降沿捕获工作模式,从而在p3.7脚采样到下降沿跳变时,pca1模块硬件就可将pca计数器阵列寄存器ch,cl)的值装载到模块的捕获寄存器中ccap1h,ccap1l。之后,再在中断中把ccap1h,ccap1l的值存放在数据单元down_datah,down_datal中,并利用双字节无符号数减法得出pwm调制信号正脉冲时定时器的计数个数为:n1=down_datah,down_datal)-down_datah,down_datal#include #includepwm.h#include motor_ctr.hunsigned int capture_period ;/输入捕获的时间unsigned int capture_pca ; /定时器溢出次数unsigned int rpm ;void pwm_init(void) /pwm初始化函数 ccon = 0; cl = 0; ch = 0; cmod = 0x0d; /pca设置到p4口,pca模块0做pwm输出用 ccap0h = ccap0l =127;/ 0x80; /设置初始占空比 pcapwm0 =0; ccapm0 = 0x40;/0x42; /打开ccapm0寄存器的pwm0 和ecom0 /初始化时不输出pwm,模块1做pca捕获测速用 ccap1l = 0; ccap1h = 0; ccapm1 = 0x21; cr = 1; /pca定时器开始工作void pwm_dac(unsigned char pwm0temp)/pwm脉冲占空比调节函数 ccap0h = ccap0l =255 - pwm0temp;void pca_pro(void) /转速处理函数float m;float f;m = capture_period*1.0/65535; /前后捕获值,转换成溢出中断次数m = m + capture_pca;/总溢出中断次数if( m = 0.0|start_f=0 ) rpm = 0;elsem = m * 17777.78; f = 1000000.0/m; /频率,一秒的转数/f = 1000000.0/17777.78/m;rpm =( 60 * f)/8 ; / 码盘有8个孔 一份60秒转数 void pca_routine(void) interrupt 7 using 1 /中断服务函数static unsigned int current_capture_value, previous_capture_value ;static unsigned int current_pca, previous_pca;if ( cf = 1 ) /定时器溢出中断到cf=0; /清零中断标志位current_pca+; /定时器溢出次数+if (ccf1 = 1 ) ccf1=0; /清零中断标志位;current_capture_value = ccap1h*256+ccap1l;capture_pca = current_pca - previous_pca; previous_pca = current_pca;capture_period = current_capture_value - previous_capture_value; if(current_capture_valueprevious_capture_value) capture_pca-;previous_capture_value = current_capture_value;5.系统调试及运行 在程序编写的过程中,出现了很多问题,包括键盘扫描处理、pwm信号发生电路的控制、以及单片机控制直流电机的转动方向等问题,虽然问题不是很大,但是也让我研究了好长时间,在解决这些问题的时候,我不断向老师和同学请教,希望能通过大家一块的努力把软件编写的更完整,让系统的功能更完备。经过多天的努力探索,也经过老师的指导,大部分问题都已经解决,就是程序还是不能实现应该实现的功能,这让我很着急。后来经过一点一点的调试,并认真总结,发现了问题其实在编写中断处理程序时出现了错误,修改后即可实现直流电机调速的目的。总结这次软件调试,让我认识到了做软件调试的基本方法与流程:(1)认真检查源代码,看是否有文字或语法错误。(2)逐段子程序进行设计,找出错误出现的部分,重点排查。(3)找到合适的方法,仔细检查程序,分步调试直到运行成功。6、结束语现代电机控制的发展,一方面要求提高性能、降低损耗、减少成本,另一方面又不断地有技术指标及其苛刻特殊应用系统要求。随着微电子技术、电力电子技术和计算机技术,集成电路制作工艺的飞速发展,以及控制理论地完善、仿真工具地日渐成熟,给电机控制行业带来了很多机遇和反展契机。使用高性能的微机解决电机控制器不断增加的计算量和速度要求,使其功能强大、维修方便、适用范围广又非常经济。 本设计在指导老师和身边同学的帮助下,本人经过13周毕业设计基本完成了mc51控制单位、光耦隔离、ir2110驱动电路、igbt h桥电路、a/d数据采集单元的电路方案设计、参数计算、制版、软件编写、整体调试,整个系统的设计最后完成实物和软件调试基本上达到了毕业设计要求,但是离真正的工程推广和工业生产应用还有很多的工作要完成。参考文献1张友德等,单片机原理应用与实验m,复旦大学出版社1992.2张毅刚,彭喜源,谭晓钧,曲春波.mcs51单片机应用设计m.哈尔滨工业大学出版社2001.1.3宋庆环,才卫国,高志,89c51单片机在直流电动机调速系统中的应用m。唐山学院,2008.44陈锟危立辉,基于单片机的直流电机调速器控制电路j,中南民族大学学报(自然科学版),2003.9.5李维军 韩小刚 李 晋,基于单片机用软件实现直流电机pwm调速系统j,维普资讯,2007.96曹巧媛.单片机原理及应用m.北京,电子工业出版社,1997.7刘大茂,严飞.单片机应用系统监控主程序的设计方法j.福州大学学报(自然科学福建农林大学硕士论文版),1998.2.8/wolfwhite/blog/item/1e23bf09e83e16256b60fbf8.html9朱定华,戴汝平编著.单片机原理与应用m.清华大学出版社北方交通大学出版社,2003.8.10/danpianji/200808/10-846.html11薛钧义 张彦斌编著. mcs51/96系列单片微型计算m.西安交通大学出版社,1997.812陈国呈 编著.pwm逆变技术及应用m.中国电力出版社.2007年7月13马忠梅 等编著.单片机的c语言应用程序设计(第4版)m,北京航天航空大学出版社.2007. 414刘昌华,易逵编著.8051单片机的c语言应用程序设计与实践m.国防工业出版社2007.9致 谢经过13周对毕业设计课题的学习研究、设计调试和论文撰写,本次毕业设计已经圆满结束。作为一个电子科学与技术专业的学生,我的毕业设计偏重自动控制方向的设计,由于强电和电机工作原理等方面知识、经验较为匮乏,难免有许多考虑不周全的地方,幸好有导师的督促指导,以及一起学习的同学们的给予我无私的帮助,使我的毕业设计能够些许的成果呈现给大家,13周的毕业设计我感触很多。首先,我要感谢的是毕业设计的指导老师林金阳老师,他给于我毕业设计选题的最大自由性和毕业设计的最大信任性。虽然他本身不是自控专业的老师,但是他还是尽最大的努力给予我毕业设计上各个方面的指导。使我从他身上学到了认真、负责,这是我13周毕业设计所收获的最大知识和工作的态度。其次,我一起合作过两年的电气专业的许海军、魏乃荣,在我13周的毕业设计期间遇到过很多我没有学过的知识,如电机工作原理、强电知识等等,他们都给予我无私的帮助,有时候甚至花一整天的时间和我一起解决遇到的问题,他们的帮助是我毕业设计能够顺利完成的关键。第三,我的同专业的同学赵海明,我在软件设计方面遇到的很多问题都是在他的帮助下完成的,因为他白天要上班时间比较紧张,不过他还是经常利用晚上的时间加班、加点帮助我调试程序,他也是我毕业设计完成的功臣。最后,我要感谢给于我提供设计调试器材、场地的电气实验室,感谢帮我打下四年专业知识的老师,四年的专业知识的积累,是我完成毕业设计最重要的部分。感谢那些给于过我帮助、支持、信任的老师如黄靖老师等。毕业设计只是人生中一个短暂的结束,老师、同学给于我的知识、启发、教诲和友谊是我在步入社会后最为重要的财富。附录1 原理图附录2 pcb图附录3 程序清单1、定时器程序#include#includetimer.hunsigned char js10ms_f;/计时10ms标志位unsigned char js50ms_f;/计时50ms标志位unsigned char js100ms_f;/计时100ms标志位unsigned char js500ms_f;/计时500ms标志位unsigned char js200ms_f;/计时200ms标志位unsigned char js1min_f;/计时1分钟标志位void timer0_init(void) tmod = 0x21;/定时器0方式1 16bit定时器模式和定时器1方式2,8bit定时器模式 ,定时器1提供串口波特率 th0 =0xf8;/重装 tl0 =0xcc; tr0 = 1;/启动 et0 = 1;/允许中断 th1 = 255-clock/timer1_per_sec/12/256;/时基频率50hz tl1 = 255-clock/timer1_per_sec/12%256; tr1 = 0;/不启动 et1 = 1;/允许中断/定时器0溢出中断服务函数void timer0()interrupt 1static unsigned int cnt; th0 =0xf8;/重装 tl0 =0xcc;cnt+;if( cnt%10 = 0 ) js10ms_f = 1;if( cnt%50 = 0 ) js50ms_f = 1;if( cnt%100 = 0 ) js100ms_f = 1;if( cnt%200 = 0 ) js200ms_f = 1;if( cnt%500 = 0) js500ms_f = 1;if( cnt%1000 = 0 )js1min_f = 1;cnt = 0; 2、延时程序#includedelay.h#includeintrins.hvoid delay(unsigned int cnt) /简单的延时 while(-cnt); void delay5ms()unsigned char i, j; _nop_();_nop_();i = 108;j = 144;dowhile (-j); while (-i);3、lcd显示程序#include #includelcd1602.h#includedelay.h#includepwm.h#include motor_ctr.h#define lcd_data p0 /数据口sbit rs=p20;/数据/命令选择sbit rw=p21;/读、写选择sbit ep=p17;/使能信号/*测试lcd忙碌状态 */b busy(void)b t;rs=0;rw=1;ep=1;delay5ms();t=(b)(lcd_data&0x80);/测试是否忙碌ep=0;return t;/*写指令到lcd */void write_com(uchar a)while(busy();/判断lcd是否忙碌rs=0;rw=0;ep=0;lcd_data=a;ep=1;delay5ms();

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论