基于MSP430单片机的直流无刷电机控制系统设计_第1页
基于MSP430单片机的直流无刷电机控制系统设计_第2页
基于MSP430单片机的直流无刷电机控制系统设计_第3页
基于MSP430单片机的直流无刷电机控制系统设计_第4页
基于MSP430单片机的直流无刷电机控制系统设计_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

毕业设计说明书基于MSP430单片机的无刷直流电机控制系统设计2013年6月基于MSP430单片机的无刷直流电机控制系统设计摘要无刷直流电动机是在有刷直流电动机的基础上发展起来的。现阶段,虽然各种交流电动机和直流电动机在传动应用中占主导地位,但无刷直流电动机正受到普遍的关注。自20世纪90年代以来,随着人们生活水平的提高和现代化生产、办公自动化的发展,家用电器、工业机器人等设备都越来越趋向于高效率化、小型化及高智能化,作为执行元件的重要组成部分,电机必须具有精度高、速度快、效率高等特点,无刷直流电机的应用和需求也因此而迅速增长。本设计是把无刷直流电动机作为设计对象,以MSP430单片机为控制MCU,单片机采集比较电平及电机霍尔反馈信号,通过软件编程控制无刷直流电动机。将整个系统分成几个部分,讨论了各个部分的电路原理、控制策略、具体实现。根据永磁无刷直流电动机的特性实施脉宽PWM控制,并通过转速传感器测量转速通过LCD1602动态显示转速。关键词:无刷直流电动机,单片机,霍尔位置传感器MSP430Microcontroller-basedbrushlessDCmotorControlSystemDesignAbstractBrushlessDCmotorinabrushDCmotordevelopedonthebasisof.Atthisstage,althoughexchangesofallkindsofDCmotorsandmotordriveintheapplicationofthedominant,butbrushlessDCmotorisundercommonconcern.Sincethe1990s,aspeople'slivingstandardsimproveandmodernizeproduction,thedevelopmentofofficeautomation,householdappliances,industrialrobotsandotherequipmentareincreasinglytendtobehighefficiency,smallsizeandhighintelligence,astheimplementationofcomponentsAnimportantcomponentofthemotormusthaveahighaccuracy,speed,highefficiency,brushlessDCmotorandthereforetheapplicationisalsogrowingrapidly.ThisdesignisthebrushlessDCmotorastheelectricbicyclemotor-drivencontrolsystem,MSP430microcontrollerforcontrolMCU,SCMcollectionandcomparison-levelelectricalsignalHallfeedback,softwareprogrammingthroughbrushlessDCmotorcontroller.Thispaperanalyzestherequirementsfromthesystem,thewholesystemwillbedividedintoseveralparts,analysisanddiscussionofthevariouspartsofthecircuitofthecontrolstrategy,implementationmethod.AccordingtothepermanentmagnetbrushlessDCmotorcontrolofthePWMpulsewidth,speedsensoranddisplayspeedthroughLCD1602.Keywords:BLDCM,thesinglechipprocessor,hallpositionsensor⑧其中为电磁转矩;为负载转矩;B为阻尼系数;QUOTE为电机机械转速;J为电机的转动惯量。传递函数:无刷直流电机的运行特性和传统直流电机基本相同,其动态结构图可以采用直流电机通用的动态结构图,如图所示:图3.2无刷直流电机动态结构图由无刷直流电机动态结构图可求得其传递函数为:式中:为电动势传递系数,为电动势系数;为转矩传递函数,QUOTE,R为电动机内阻,为转矩系数;为电机时间常数,,G为转子重量,D为转子直径。3.3模糊PI控制器无刷直流电机速度模糊PI控制器的输入变量有两个,分别是速度偏差e(t)和速度偏差的变化率ec(t)。模糊控制器的输出为KPS,KIS,来调节PI控制器的比例增益KP(KP=KPS*KPP)和积分增益KI(KI=KIS*KIP),其中KPP,KIP为预先给定的值,通常为1.其模糊控制的规则制定原则如下:在稳态时,如BLCD的转速由于系统参数的变化而发生波动,则同时调节比例增益和积分增益,使得转速保持恒定;当系统响应时间较长时,则同时增加比例增益和积分增益,以减小响应时间。根据电机的额定转速3000r/min,可确定误差e的实际论域范围为[-1000,1000],误差变化率de/dt的实际论域范围为[-2.5*10j,2.5*10j]。对论域进行模糊化,把输入和输出量都量化到[-5,-4,-3,-2,-1,0,1,2,3,4,5]这样一个区间上面,对应的模糊子集为NL,NM,ZO,PS,PM,PL.根据专家知识,建立合适的模糊规则库,KPS,KIS对应的控制规则表如下表3.1和表3.2所示。表3.1KPS的控制规则表Ec(t)E(t)NLNMNSZOPSPMPLNLPLPLPMPMPSPSZONMPLPMPMPSPSZONSNSPMPMPSPSZONSNSZOPMPSPSZONSNSNMPSPSPSZONSNSNMNMPMPSZONSNSNMNMNLPLZONSNSNMNMNLNL表3.2KIS的控制规则表Ec(t)E(t)NLNMNSZOPSPMPLNLPMPSNMPMPSPSNSPMPSPSZOZONLNMNSZOPSPMPLPSZONSNSPLPMPSPMPLPLPLPM根据上面的模糊控制规则进行计算,采用面积平分法解模糊,就可以得到KPS,KIS参与调整系统PI控制器的比例增益KP(KP=KPS*KPP)和积分增益KI(KI=KIS*KIP)。模糊PI控制的直流无刷电机调速系统具有很快的响应速度,且在给定速度发生变化的情况下具有很强的速度跟踪能力,同时结合了模糊语言的自适应控制系统,减小了电流的脉动,即在一定程度上减小了转矩脉动,提高了系统的性能。

4控制系统设计4.1系统总体功能介绍本设计总体功能如图4.1所示,以MSP430F149作为控制核心,通过专用驱动芯片LM621连接逆变电路驱动电机工作,按键实现加速减速功能,加速键按下一次转速增加100转,减速键盘按下一次转速减少100转,可调范围在2000转到4000转之间,通过涡轮流量计测试实际流量信息反馈到单片机中实现高精度的电机转速调节,LCD1602实时显示流量信息。图4.2为系统总体软件流程图。MSP430MSP430LCD1602逆变电路LM621逆变电路LM621位置传感器位置传感器无刷直流电机无刷直流电机涡轮流量计涡轮流量计按键按键图4.1系统总体功能流程图图4.2系统总体软件流程图4.2MSP430F149单片机最小系统MSP430F149单片机最小系统由MSP430F149单片机,晶振以及复位电路组成。两个晶振分别接单片机的XIN1,XOUT1,XIN2,XOUT2口,复位电路采用专用复位芯片SP7085,与单片机RESET口连接,采用SPX1117M3-3.3为单片机供电3.3V。MSP430F149单片机最小系统硬件连接如图4.3.图4.3MSP430F149单片机最小系统4.3显示模块介绍4.3.1显示模块硬件设计本系统采用LCD1602液晶屏显示,P4口接上拉电阻,LCD1602液晶屏的控制端接在P3口上面,P3.5——P3.7口。图4.4显示模块硬件图4.3.2显示模块软件设计用LCD显示一个字符时比较复杂,首先找到显示屏上某个位置所对应的RAM区的8个字节,在有程序分别对这个8个字节置“1”或置“0”,“1”表示点亮,“0”表示不亮,这样组合起来就能把一个字符点亮。但是有的控制器内部自带字符发生器,如LCD1602,显示一个字符就非常容易了,把控制器的工作设定在文本方式,再根据字符显示的位置,找到该位置找出显示RAM所对应的地址,设立光标,在把所需要的字符代码送上去就可以了。显示模块软件流程图如图4.5。开始开始LCD1602初始化延时写LCD指令取显示地址写数写完?是否读取数据并显示返回图4.5显示模块子程序流程图4.4驱动模块介绍4.4.1驱动模块硬件设计本设计采用电机专用驱动芯片LM621驱动逆变电路实现电机的运行。LM621的HS1,HS2,HS3与霍尔位置传感器相连,接入位置信号以控制电机的电子换相,引脚11、12、13(灌电流输出端),引脚14、15、16(抽电流输出端)分别与逆变电路连接驱动电机,VCC2接+5V电源,INH接单片机P2.7口输入PWM波,DIR接单片机P2.6口控制转向,硬件连接图如图4.6。图4.6驱动电路硬件图4.4.2PWM控制软件设计PWM(脉冲宽度调制)是通过控制固定电压的直流电源开关频率,改变负载两端的电压,从而达到控制要求的一种电压调整方法。本次设计采用定频调宽方式,MSP430F149本身含有PWM产生模块,利用MSP430F149单片机的TIMEA的模式7产生PWM波对电机进行调速。根据电机参数设定调速范围为2000转~4000转,每次加速键(减速键)按下,电机转速减少(增加)100转,调速等级分为20级,经计算,每次占空比改变0.025。是否是否有按键按下?由占空比计算波形持续时间计算定时器A常数按键扫描产生PWM波开始初始化返回否有按键按下?由占空比计算波形持续时间计算定时器A常数按键扫描产生PWM波开始初始化返回是是 图4.7PWM子程序流程图4.5按键模块介绍4.5.1按键模块硬件设计本设计采用1*4矩阵键盘实现对整个系统的操作,四按键一端分别通过1k的电阻与单片机的P3.0,P3.1,P3.2,P3.3接口连接,另一端通过100k的电阻与+5V电源连接。按键模块连接如图4.8。图4.8按键模块硬件连接图4.5.2按键模块软件设计本系统使用最简单的1*4矩阵键盘实现对整个系统的操作。各键对应的功能和键值如表4.1。表4.1各键对应功能和键值键位功能键值BUTTON1启动/制动0XA0BUTTON2加速0X90BUTTON3正反转0X88BUTTON4减速0X50各键详细功能如下:BUTTON1:启动系统。单片机上电初始化后,首先扫描键盘,若BUTTON1被按下,则启动系统,否则将一直扫描键盘,此时其他键没有任何功能。BUTTON2和BUTTON4:通过按BUTTON4或BUTTON4,当前位闪烁,此时通过BUTTON2和BUTTON4可对当前位进行+1/-1,若2S内没有操作,系统自动确认当前输入值。BUTTON3:正反转,实现电机机的反转。按键模块子程序流程图如图4.9图4.9按键模块子程序流程图4.6限流电路设计主回路中通过电动机的电流最终是经过电阻R4接地。因此,Uf=R4IM,其大小正比于电动机的电流IM。而Uf同数/模转换器的输出电压U0分别送到LM324运算放大器的两个输入端,一旦反馈电压Uf大于来自数/模转换器的给定信号U0,则LM324运算放大器输出为低电平,通过非门变为高电平输入到LM621的引脚17,使输出关断,从而截断了直流无刷电动机定子绕组的所有电流通路,迫使电动机电流下降,一旦电流下降到时Uf小于U0,则LM324运算放大器输出回到高电平,通过非门变为低电平,接LM621的17脚,LM621正常工作。图4.10限流电路4.7速度反馈电路设计涡轮流量计采用24V直流供电,输出24V脉冲信号经过电阻分压变为3.3V脉冲信号,与单片机p2.5口连接,电路硬件连接见图4.11。涡轮流量计输出的电压脉冲信号与瞬时流量之间的计算公式为Q=3600×f/k,通过采集流量反馈信号实现对流量的闭环精确控制。图4.11速度反馈电路硬件设计结论本设计所述的直流电机闭环调速系统是以低价位的MSP430单片机为核心的,而通过单片机来实现电机调整又有多种途径,相对于其他用硬件或者硬件与软件相结合的方法实现对电机进行调整,采用PWM软件方法来实现的调速过程具有更大的灵活性和更低的成本,它能够充分发挥单片机的效能,对于简易速度控制系统的实现提供了一种有效的途径。曾经也试过用单片机直接产生PWM波形控制逆变电路开关器件的导通,但其最终效果并不理想,在使用了少量的硬件后,单片机的压力大大减小,程序中有充足的时间进行闭环控制的测控和计算,使得软件的运行更为合理可靠。显示部分采用LCD1602这种液晶显示器功耗低,显示功能全,能完全满足本设计的显示要求,而且软件程序编写相对简单;基本实现了对由直流无刷电机构成的血泵的多级精确调速。附录A程序:#include<MSP430x14x.h>#include<BoardConfig.h>#defineucharunsignedchar#defineulongunsignedlongexternucharzs;/*定义转速变量*/externuchartag=0x00;/*启动标志位*/externulongzssd=3000;/*转速设定*/ulongcount;/*脉冲计数*/ulongzkbg,zkbd;/*占空比高低*/#defineCLR_P26P2OUT&=~BIT6; #defineSET_P26P2OUT|=BIT6;#defineCLR_P27P2OUT&=~BIT7; #defineSET_P27P2OUT|=BIT7;#defineCLR_LCM_RSP3OUT&=~BIT5; #defineSET_LCM_RSP3OUT|=BIT5;#defineCLR_LCM_RWP3OUT&=~BIT6; #defineSET_LCM_RWP3OUT|=BIT6;#defineCLR_LCM_ENP3OUT&=~BIT7; #defineSET_LCM_ENP3OUT|=BIT7;#defineBUSY 0x80//常量定义#defineDATAPORT P4OUT#defineL 50ucharstr0[16],str1[16],count;uintspeed;unsignedlongtime; uchar*zy=p1;/*定义指针指向数组p1*/voidd_ms(ucharm) /*延时程序*/{uchari,j; for(i=0;i<m;m++)for(j=0;j<100;j++)/*延时100*m微秒*/ { ; }}/**********写指令到LCD子函数************/voidWriteCommandLCM(ucharWCLCM,ucharBusyC){if(BusyC)lcd_wait(); DATAPORT=WCLCM;LCM_RS=0;LCM_RW=0; LCM_EN=1; _nop_(); _nop_(); _nop_();LCM_EN=0;}/**********写数据到LCD子函数************/voidWriteDataLCM(ucharWDLCM){lcd_wait();//检测忙信号 DATAPORT=WDLCM;LCM_RS=1;/*选中数据寄存器*/LCM_RW=0; //写模式LCM_EN=1;_nop_(); _nop_(); _nop_();LCM_EN=0;}/***********lcd内部等待函数*************/voidlcd_wait(void){DATAPORT=0xff; //读LCD前若单片机输出低电平,而读出LCD为高电平,则冲突. LCM_EN=1;LCM_RS=0;LCM_RW=1;_nop_();_nop_(); _nop_();while(DATAPORT&BUSY) {LCM_EN=0; _nop_(); _nop_(); LCM_EN=1; _nop_(); _nop_(); } LCM_EN=0;}/**********LCD初始化子函数***********/voidinitLCM(){ DATAPORT=0; ddelay(15); WriteCommandLCM(0x38,0);ddelay(5);WriteCommandLCM(0x38,0);ddelay(5);WriteCommandLCM(0x38,0);ddelay(5);WriteCommandLCM(0x38,1);WriteCommandLCM(0x08,1);WriteCommandLCM(0x01,1);WriteCommandLCM(0x06,1);WriteCommandLCM(0x0c,1);}/****显示指定坐标的一个字符子函数****/voidDisplayOneChar(ucharX,ucharY,ucharDData){Y&=1;X&=15;if(Y)X|=0x40;X|=0x80;WriteCommandLCM(X,0);WriteDataLCM(DData);}/*******显示指定坐标的一串字符子函数*****/voidDisplayListChar(ucharX,ucharY,uchar*DData){ucharListLength=0;Y&=0x01;X&=0x0f;while(X<16){DisplayOneChar(X,Y,DData[ListLength]);ListLength++;X++;}}voidSTR(){ str0[0]='S'; str0[1]='p'; str0[2]='e';str0[3]='e'; str0[4]='d'; str0[5]=''; str0[6]=(speed%100000)/10000+0x30; str0[7]=(speed%10000)/1000+0x30; str0[8]=(speed%1000)/100+0x30; str0[9]='.'; str0[10]=(speed%100)/10+0x30; str0[11]=speed%10+0x30; str0[12]='k'; str0[13]='m'; str0[14]='/'; str0[15]='h';}voidstart() {if(tag==0){P0OUT=0x00;P1OUT=0x00;tag=1;}elsetag=0;}voidup(){If(zssd<=4000) {zssd+=100;}}voidfanzhuan(){P26=0;P27=0;}voiddown(){if(zssd>=2000){ zssd-=100;}}voidkeyget() { ucharx;P2DIR=0xFF; P2OUT=0xC0; if((P2OUT&0xC0)==0) {P2DIR=0xFF; P2OUT=0x80; if((P2OUT&0x80)==0) { d_ms(1500); x=P2OUT; }P2DIR=0xFF; P2OUT=0x40; if((P2OUT&0x40)==0) { d_ms(1500); x=P2OUT; } } switch(x-0x21) { case0x7F:start();break; case0x6F:up();break; case0x67:fanzhuan();break; case0x2F:down();break;/ }}voiddisplay(uchar*z)/*显示函数*/{STR(); DisplayListChar(0,0,str0); DisplayListChar(0,1,str1); uchara,b,c,d;/*转速各位*/ a=zs/1000;/*转速千位*/ b=zs%1000/100;/*转速百位*/ c=zs%100/10;/*转速十位*/ d=zs%10; /*转速个位*/}voidcs(){zs=count/8*100;}voidpwm() /*pwm输出函数*/{ulonga;a=zs/zssd;zkbd=a/(a+1);zkbg=1-zkbd;P26=1;/d_ms(1000*zkbg);P26=0;d_ms(1000*zkbd);}voidmain(void){WDTCTL=WDTPW+WDTHOLD;/*选择系统主时钟为8MHz*/BCSCTL1&=~XT2OFF;do{IFG1&=~OFIFG;for(i=0xFF;i>0;i--);}while((IFG1&OFIFG));BCSCTL2|=SELM_2+SELS;TACCTL0|=CCIE;/TACTL|=TASSEL_2+ID_3;CCTL0=CCIE;CCR0=50000;TACTL=TASSEL_2+MC_2;_BIS_SR(LPM0_bits+GIE); keyget(); if(tag!=0) { keyget();display(p1); pwm();}}//Time

温馨提示

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

评论

0/150

提交评论