电力拖动课程设计-开环控制的PWM直流调速系统设计与实现_第1页
电力拖动课程设计-开环控制的PWM直流调速系统设计与实现_第2页
电力拖动课程设计-开环控制的PWM直流调速系统设计与实现_第3页
电力拖动课程设计-开环控制的PWM直流调速系统设计与实现_第4页
电力拖动课程设计-开环控制的PWM直流调速系统设计与实现_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

第页拖动系统课程设计报告书题目:专业:姓名:学号:指导教师:任务书课题名称:开环控制的PWM直流调速系统设计与实现课程设计任务:1、查找文献,掌握直流电动机PWM调速的基本工作原理;2、设计直流电动机开环调速系统,建立系统模型并进行仿真试验;3、设计并调试基于51单片机的H桥驱动控制电路;4、设计速度调节器算法,对开环系统进行负载试验;课程设计要求:1、能独立设置电机速度(按键设置或滑动变阻器设置或上位机设置);2、能显示当前电机的实际速度(单位为:r/min);3、能控制电机启动、停止、正反转、软启动和软制动;课程设计内容:1、设计直流电动机开闭环调速系统总体方案;2、建立系统数学模型,并设计电流调节器和转速调节器算法;3、直流电机的控制电路、驱动电路、保护电路及其检测电路设计4、基于单片机的开环调速系统软件程序设计;任务下达日期:2015年6月3日设计日期:2015年6月9日

摘要本次设计先通过上网查找资料,了解直流电机PWM开环调速系统的原理及其特性。再通过PROTUES电路仿真PWM波形控制输出并设计该开环直流电机调速系统硬件电路。此次设计的系统可通过按钮实现正反转调节,实现电机的7档调速,并且在LCD屏幕中实时显示出电机的状态,包括正反转,档位以及电机转速。该系统有如下优点:需用的大功率可控器件少,线路简单;调速范围宽:电流波形系数好,附加损耗小;功率因数高。关键词:开环直流电机PWM51单片机

目录TOC\h\z\u\t"标题2,1,标题3,2,标题4,3"1系统概述 62硬件电路设计 72.1主控制模块 72.1.1单片机管脚介绍: 72.1.2晶振电路与复位电路 82.2.3矩阵键盘 92.2脉冲整形触发电路设计 102.3LCD1602 102.4电机参数 112.5电机驱动模块 112.5.1模块描述 112.5.2模块接口说明 112.5.3模块使用说明 123软件设计 123.1操作说明 123.2c程序设计 133.2.1LCD1602 133.2.2矩阵键盘读取 133.2.3占空比计算 143.2.4PWM信号产生 143.2.5转速计算 143.2.6换向 144系统调试 144.1PWM信号调试 144.2电机转速测试 145结束语 156参考文献 157附录 157.1设计图纸 157.2元器件清单 157.3程序 15

1系统概述该直流电机调速系统是以STC89C52单片机为核心,配以相应硬件电路,完成电机启动停止控制、正反装控制以及1-7档电机转速选择等功能。实际运用时,用户可以根据自己需求来设置电机档位或电机的正反转,起停。PWM直流电机调速系统主要由矩阵键盘、单片机、脉冲整形触发电路、电机驱动模块等部分组成。其中矩阵键盘用于控制电机各种功能的实现。电机上装有41线码盘,电机转一周形成41个脉冲,通过脉冲整形触发电路接入52单片机的I/O口进行计数并用于计算电机转速。电机PWM控制信号由52单片机定时器定时触发,通过I/O口输入至电机驱动模块来进行控制电机转速。脉冲整形触发电路矩阵键盘复位电路晶振电路电源输入STC89C52脉冲整形触发电路矩阵键盘复位电路晶振电路电源输入STC89C52LCDLCD1602电机电机驱动模块图一:系统功能方块图如图1所示电源输入电路为STC89C52提供5Vvcc电源。晶振电路的主要作用是提供基准频率,在电路产生震荡电流,发出时钟信号。复位电路是使单片机的CPU和系统中的其他功能部件都处在一个确定的初始状态,并从这个状态开始工作,例如复位后PC=0000H,使单片机从第—个单元取指令。键盘接口电路实现PWM直流电机调速系统的各种功能。脉冲整形触发电路将电机41线码盘产生的脉冲输入至单片机进行电机转速计算。电机驱动模块接收单片机PWM控制信号来驱动电机。LCD1602液晶屏用来显示电机的正反转状态、起停状态、档位及实时的转速。2硬件电路设计2.1主控制模块2.1.1单片机管脚介绍:图2:单片机管脚单VCC(40):供电电压,其工作电压为5V。GND(20):接地。P0端口(P0.0-P0.7):P0口为一个8位漏极开路双向I/O口,每个引脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1端口(P1.0-P1.7):P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高电平,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。P2端口(P2.0-P2.7):P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口,用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3端口(P3.0-P3.7):P3口管脚是一个带有内部上拉电阻的8位的双向I/O端口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入端时,由于外部下拉为低电平,P3口将输出电流(ILL)。P3口同时为闪烁编程和编程校验接收一些控制信号。复位RST(9):复位输入。在振荡器运行时,有两个机器周期(24个振荡周期)以上的高电平出现在此引脚时,将使单片机复位,只要这个引脚保持高电平,51芯片便循环复位。复位后P3.0-P3.7口均置1,引脚表现为高电平,程序计数器和特殊功能寄存器SFR全部清零。当复位脚由高电平变为低电平时,芯片为ROM的00H处开始运行程序。复位操作不会对内部RAM有所影响。ALE/(30):当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地低位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如果想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,则置位无效。(29):外部程序存储器的选通信号。在由外部程序存储器取指令期间,每个机器周期两次有效。但在访问外部数据存储器时,这两次有效的信号将不出现。EA/VPP(31):当保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,将内部锁定为RESET;当端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V的编程电源(VPP)。XTAL1(19):来自反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2(18):来自反向振荡器的输出。片机的管脚如图2所示。2.1.2晶振电路与复位电路本系统采用STC系统列单片机,相比其他系列单片机具有很多优点。一般STC单片机资源比其他单片机要多,而且执行速度快;STC系列单片机使用串口对单片机进行烧写,下载程序较为方便;STC52单片机内部集成了看门狗电路;且具有很强抗干扰能力。本系统采用内部方式的时钟电路和加电自复位的复位电路,如下图3:图3:晶振电路与复位电路2.2.3矩阵键盘键盘是与单片机进行人机交互的最基本的途径,其以按键的形式来设置控制功能或输入数据,按键的输入状态本质上是一个开关量。对于简单的开关量的输入可以采用独立式按键,这种方法接口简单,但占用单片机I/O端口资源较多。对于输入参数较多、功能复杂的系统,需要采用矩阵式键盘进行输入控制。本系统采用2*3矩阵式键盘,键盘连接方式如图4所示:图4:矩阵键盘2.2脉冲整形触发电路设计图5:脉冲触发整形电路脉冲触发整形电路如上图5所示。当光透过光栅时,光电门导通,NPN接受到高电压使三极管也导通,从而使单片机接受到一个从高电平到低电平的下降沿信号。2.3LCD1602液晶显示器(LCD)是一种功耗很低的显示器,它的使用非常广泛,比如电子表、计算器、数码相机、计算机的显示器和液晶电视等。电机调速过程中所需要显示的信息比较多,为了能直观的看到结果,本设计采用液晶显示屏LCD进行显示,具体连接方式如图6所示。图6:LCD1602电路2.4电机参数图7:电机实物图及参数电机的实物图及参数如上图7所示。电机的线码盘为41线,电机转动一周会发出41个脉冲信号。其一些实测数据如下表所示:电压V空载电流(mA)转速(r/min)堵转电流(A)55010000.5128043001.22412-86002.32.5电机驱动模块2.5.1模块描述1双全新电机驱动芯片,兼容L91102模块供电电压:2.5-12V3适合的电机范围:电机工作电压2.5v-12V之间,最大工作电流0.8A4可以同时驱动2个直流电机,或者1个4线2相式步进电机。5PCB板尺寸:2.8cm*2.1cm超小体积,适合组装6设有固定安装孔,直径:3mm2.5.2模块接口说明6P黑色弯排针说明:1VCC外接2.5V-12V电压2GND外接GND3IA1外接单片机IO口4IB1外接单片机IO口5IA2外接单片机IO口6IB2外接单片机IO口4P绿端子说明:1OA1OB1接直流电机2个引脚,无方向2OA2OB2接直流电机2个引脚,无方向2.5.3模块使用说明接通VCC,GND模块电源指示灯亮IA1输入高电平,IB1输入低电平,【OA1OB1】电机正转;IA1输入低电平,IB1输入高电平,【OA1OB1】电机反转;IA2输入高电平,IB2输入低电平,【OA2OB2】电机正转;IA2输入低电平,IB2输入高电平,【OA2OB2】电机反转;3软件设计3.1操作说明矩阵键盘3排6个按键分别对应不同的功能。功能如下图8所示:图8:矩阵键盘按键功能电机默认的启动状态为3档速度,方向正转。可以通过不同的功能按键来对电机的起停、正反转、转速等控制。电机的实时状态会显示在LCD1602中。电机转速1s刷新一次。3.2c程序设计3.2.1LCD1602RSR/W操作说明00写入指令寄存器(清除屏等)01读busyflag(DB7),以及读取位址计数器(DB0~DB6)值10写入数据寄存器(显示各字型等)11从数据寄存器读取数据图9:LCD1602寄存器选择控制表LCD1602的寄存器控制如上图9所示。当写入数据时,令RE=1R/W=0;使能端E设置为低电平,单片机I/O口输出指令,令使能端为E低电平,此时E下降沿是LCD1602写入指令。想LCD1602写入数据用同样的方法。写入数据或指令程序流程图如下图10所示。开始开始R/E=0E=0R/E=0E=0RS=0?RS=0?结束N结束YE=1向E=1向指令寄存器写指令E=1向数据寄存器写数据图10:LCD1602写入指令/数据流程图3.2.2矩阵键盘读取矩阵键盘读取数值的流程如下图11所示。开始开始P1=0x0fP1=0x0fP1=0x0fP1=0x0f?Key_sure=1Key_sure=1YN延时延时1msP1=0x0fP1=0x0f? YNkey_surekey_sure=1? NY确定确定输入值,key_sure=0;图11:矩阵键盘运行流程3.2.3占空比计算本单片机采用的是24M晶振,且设置PWM周期为10ms。当设定好档位K时,可以根据一下公式计算出PWM占空比的定时器定时时间。低电平信号TL1=(65536-2000*(10-K))%255;低电平信号TH1=(65536-2000*(10-K)-TL1)/255;高电平信号TL1=(65536-2000*K)%255; 高电平信号TH1=(65536-2000*K-TL1)/255;3.2.4PWM信号产生PWM信号根据占空比计算所得的数值附给定时器。定时器1采用方式1定时。并几下当前电平的状态。当状态为1时,表示输出为高电平,计时器载入高电平信号的时间;当状态为0时,表示输出应为低电平,计时器载入低电平信号时间。每进入一次中断,状态加一与2取余数。3.2.5转速计算通过T0计时器/计数器计数。本设计采用M法测速。当单片机P3.2口接收到下降沿信号时,产生中断,每产生一次中断,给计一次数。直到产生第100个PWM信号后,根据公式speed=(60*下降沿个数)/(41)计算出电机转速并刷新屏幕。每次计算完成后,重新给PWM信号和下降沿中断信号计数,以能够继续准确的测出电机转速。3.2.6换向当电机高速运转时,若直接换向则会导致过流现象。故在换向时,软件上要停止PWM信号产生,并进行一段延迟,让电机转速降为0时,在定时器开始工作,输出PWM信号换向。当PWM1信号为高电平,PWM2信号为低电平时,电机正转;PWM1为低电平,PWM2为高电平时,电机反转;当PWM1和PWM2信号都为低电平时,电机停止。4系统调试4.1PWM信号调试用PROTUES仿真测量PWM信好的周期与占空比。由于在设计中,单片机采用24MHz的晶振,且定时器采用方式1的方法进行计时,故应设置一周期定时器在入值TC=2^16-2000;但在仿真中,实际测的PWM的周期约为12.6ms,仿真如下图12所示:图12:PWM信号周期测试图1根据仿真测得的PWM信号进行对计数器载入值调整,当TC=2^16-1511时,PWM周期约为10ms,测试结果如下图13所示:图13:PWM信号周期测试24.2电机转速测试档位转速(r/min)占空比(%)1500302670403790504870605930706980807101490

5结束语通过此次的课程设计,让我对单片机的运用更加的熟练。对其定时器的了解更加深刻。也学会了运用单片机产生PWM信号来控制电机的运行。同样的也加深了对开环电机调速的理解,以及提高了我程序的编写,排序能力。这次课程设计让我对运用单片机实际做东西有了更多感触,如:PWM信号产生,定时器设定的值不一定就是实际的定时值,因为在中断中程序的运行也需要一定的时间,也造成了单片机无法产生频率极高的PWM信号。6参考文献王兆安刘进军.电力电子技术北京:机械工业出版社,2009,5张俊谟单片机中级教程北京:北京航空航天大学出版社,2006,10林瑞光电机与拖到基础杭州:浙江大学出版社,2012,7陈伯时电力拖动自动控制系统北京:机械工业出版社,2009,87附录7.1设计图纸7.2元器件清单符号名称规格数量R1电阻10K1R2电阻20K1R3电阻4.7K1R4电阻5.1K1STC89C52R单片机18090三极管NPN1HC-36电机驱动模块1M电机17.3程序#include<reg52.h> #include<stdio.h>#defineucharunsignedchar#defineuintunsignedint #defineLCD_FL0X80//第一行地址0x80-0xA7#defineLCD_SL0Xc0//第二行地址0xC0-0xE7#defineLCD_S0X0c//开显示不显示光标光标不闪烁#defineLCD_Display_mode0X38//设置16x2显示5x7点阵8位数据接口#defineLCD_clear0x01//清屏指令数据指针清零所有显示清零#defineCOM0//指令#defineDATE1 //数据sbitPWM1=P2^0; // pwm1信号sbitPWM2=P2^1;// pwm2信号sbitRS=P2^4; // LCD1602寄存器选择sbitRW=P2^5; //1602读写选择sbitE=P2^6; // 1602使能端intstate,direction,rank;//起停1on0off方向1正2反 档位intkey_in;//按键输入intBG;//输出高低点评状态uintRAND,S;intspeed;//数度计算参数intPHTH,PHTL,PLTL,PLTH;//定时器时间voiddelay_1ms(intt) //1ms大致延时{ inti,j; for(i=0;i<t;i++) for(j=0;j<120;j++);}//lcd1062voiddelay(uinta)//小延时{while(a--);}voidwrite(uintx,ucharsth)// 命令或数据写入{RS=x;RW=0;E=0; P0=sth; delay(3); E=1; delay(25); E=0;} voidwrite_string(uintline,uchar*str) // 字符串输入{write(COM,line); while(1) { if(*str=='\0')break; write(DATE,*str); str++; delay(50); }}voidlcd_init() // 初始化{ delay_1ms(15); write(COM,LCD_Display_mode); delay_1ms(5); write(COM,LCD_S); delay_1ms(5); write(COM,LCD_clear); delay_1ms(5); write_string(LCD_FL,"STATE:CWOFF"); //cw顺时针,正转ccw逆时针 delay_1ms(5); write_string(LCD_SL,"RS(rpm):0");}////键盘输入voidkey(){staticintkey_sure=0;//避免一直按着一个键的时候一直读入 uintkey_flash; key_in=-1; P1=0x0f; if((P1&0x0f)!=0x0f) { delay_1ms(1); if((P1&0x0f)!=0x0f&&key_sure==1) { key_sure=0; key_flash=P1|0xf0; P1=key_flash; switch(P1) { case0xee:key_in=1;break;//+ case0xed:key_in=2;break;//- case0xde:key_in=4;break;//正转 case0xdd:key_in=5;break;//反转 case0xbe:key_in=7;break;//启动 case0xbd:key_in=8;break;//停止 } } } else { key_sure=1; }} ////根据档位进行占空比计算voidtime_calculate() { PLTL=(65536-1511*(10-rank))%255; PLTH=(65536-1511*(10-rank)-PLTL)/255; PHTL=(65536-1511*rank)%255; //2000,实际周期12.6ms1587,10.5ms PHTH=(65536-1511*rank-PHTL)/255;} // //pwm信号产生voidpwm_on() {BG=1;time_calculate();if(direction==1) { PWM1=1; PWM2=0; } else { PWM1=0; PWM2=1; } TR1=1;ET1=1; TH1=PHTH;TL1=PHTL; RAND=0;S=0;}////电机转速计算voidspeed_calculate() {charyy[4];S=0;speed=0; speed=(60*RAND)/(41); RAND=0; sprintf(yy,"%d",speed); if(speed%1000==0) {yy[3]='\0';} delay(5); write_string(LCD_SL+8,""); //屏幕清空 delay(35); write_string(LCD_SL+8,yy);}////计时器1中断voidtime0()interrupt3 {time_calculate();BG++;S++;if(BG==1) { TH1=PHTH; TL1=PHTL; } else { BG=0; TH1=PLTH; TL1=PLTL; } if(direction==1){PWM1=~PWM1;PWM2=0;} else{PWM2=~PWM2;PWM1=0;}}////计数器中断voidtime2()interrupt0{RAND++; if(S==200) {speed_calculate();}}////主程序voidmain(){rank=5; //设置默认转速 state=0; //电机停止状态 direction=1; //电机转向为正方向PWM1=0; // 无PWM信号 PWM2=0; //lcd_init(); // 初始化屏幕 while(1) { key(); if(key_in>0) { if(key_in==1||key_in==2) { if(key_in==1&&rank<9) { rank++; } if(key_in==2&&rank>3) { rank--; } time_calculate(); } else if(key_in==7||key_in==8) { if(key_in==8&&state==1)

温馨提示

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

评论

0/150

提交评论