版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 郑州航空工业管理学院毕 业 论 文(设 计) 2014 届 电气工程及其自动化 专业 1206972 班级 题 目 无刷直流电机控制系统软件设计 姓 名 高昌荣 学号 120697203 指导教师 崔建锋 职称 副教授 二一 四 年 五 月 十六 日内 容 摘 要 近年来由于电力电子技术和控制技术的飞速发展,无刷直流电机以其体积小、能效高、运转可靠、维修方便等好处,在电动自行车等日常控制的各个领域获得了广泛的使用。论文是用AT89C51单片机为主芯片来设计无刷直流电机控制系统,它由功率变换器、控制器、电动机、位置传感器四部分组成,本论文主要进行软件设计,软件采用c语言编程,包括主程序、键盘控
2、制子程序、PWM子程序、运行子程序、启动子程序、停止子程序、电动机的加减速程序、延时子程序。所编程序简单易懂、运行可靠,能够实现系统所要求的基本功能。关键词 无刷电动机 ; c语言;AT89C51;PWM·II· AbstractIn recent years due to the rapid development of power electronics technology and control technology, brushless DC motor with its small size, high efficiency, reliable operatio
3、n, easy maintenance. Papers with AT89C51 microcontroller-based chip design brushless DC motor control system, which consists of power converters, controllers and software consists of three parts, which mainly uses the software main c language, the interrupt service routine, start the program, stop p
4、rogram, the program of the motor acceleration and deceleration, speed position control procedures, keyboard control procedures, display program, PWM wave program, delay subroutines. Using c language program with easy to understand, easy to operate, reliable, able to achieve the basic functions requi
5、red by the system. Keyword Brushless motor; c language; AT89C51; PWM目 录第1章 概述11.1 无刷直流电机的发展概况11.2 无刷直流电动机的结构21.3 无刷直流电机的工作原理21.3.1 无刷直流电动机转矩分析21.3.2 无刷直流电动机与输出开关管换流信号21.4无刷直流电机系统框图3第2章 无刷直流电动机控制器设计42.1 单片机最小系统42.2换向逻辑电路42.3位置传感器信号整形电路52.4 单片机与键盘接口6第3章 无刷直流电机功率变换电路设计73.1 功率变换器主电路设计73.2 功率驱动电路设计7第4章 无
6、刷直流电动机控制系统软件设计94.1无刷直流电机程序设计概况94.2系统主程序设计94.3键盘程序流程图114.4 Pwm程序流程图134.5 电机正反转程序流程图18致 谢21参考文献22附录23程序清单23无刷直流电机控制系统硬件电路总图34V · ·无刷直流电机控制系统软件设计120697203 高昌荣 指导教师 崔建锋 副教授第1章 概述1.1 无刷直流电机的发展概况无刷直流电机以其优良的转矩特性在运动控制领域得到了广泛的应用,保持了传统直流电动机良好的动、静态调速特性,且结构简单、运行可靠、易于控制,但普通的直流电动机由于需要机械换相和电刷,可靠性差,需要经常维护
7、;换相时产生电磁干扰,噪声大,影响了直流电动机在控制系统中的进一步应用。为了克服机械换相带来的缺点,以电子换相取代机械换相的无刷电机应运而生。多年以来,随着永磁新材料、微电子技术、自动控制技术以及电力电子技术特别是大功率开关器件的发展,无刷电动机得到了飞速的发展。无刷直流电动机已经不是专指具有电子换相的直流电机,而是泛指具有有刷直流电动机外部特性的电子换相电机。在控制方面,由于无刷直流电机的特殊结构,其运行是通过逆变器功率器件随转子的不同位置相应地触发其不同的功率管来实现的,因此准确检测转子的位置并根据转子位置准时切换功率器件的触发组合状态是控制无刷直流电机正常运行的关键。使用位置传感器检测转
8、子位置技术已普遍应用,现在国内外在无刷直流电机控制上的研究热点就是无位置传感器检测方法。1.2 无刷直流电动机的结构无刷直流电机一般由电机本体、转子位置传感器、功率变换器、控制器四部分组成。1.3 无刷直流电机的工作原理1.3.1 无刷直流电动机转矩分析功率变换器开关在转子每转60电角度就会产生一次切换,在这周期内,转子不停的受到顺时(逆时)方向的力矩,这就是它会一直绕同一方向旋转的原因。1.3.2 无刷直流电动机与输出开关管换流信号一般用在空间上互差120度的三个霍尔位置元件作为无刷直流电机的位置传感器,位置检测和开关驱动信号关系,如图1-1所示图1-1 无刷电机的位置检测和开关驱动信号表1
9、-1 无刷直流电动机的转向与开关管导通关系转向霍尔逆变桥开关信号ABCT1T2T3T4T5T6正转001000011010001100011000110100110000101100001110011000反转0010110000101000010111100001000001101010011001100000111.4无刷直流电机系统框图在无刷直流电动机控制系统中,各个单元的作用是不同的。电机运行时首先由转子位置传感器检测转子磁极位置并向控制器输出信号,接着控制器根据电动机旋转方向的要求和来自位置传感器的三个输出信号,对它们进行PWM逻辑处理以驱动功率开关器件。功率驱动单元接到信号后,功率
10、管导通或截止,同时电枢绕组的电流按一定的顺序进行换流,实现电子换向,驱动电机旋转。图2-1 电动机控制系统框图第2章 无刷直流电动机控制器设计 2.1 单片机最小系统单片机最小系统也就是说能够保证单片机能够按照要求运行的最少硬件。包括:电源电路、复位电路、晶振电路。图2-1 最小系统电路图2.2换向逻辑电路本文设计用到的逻辑电路,使用的芯片是GAL16V8。可以对各个输入端口的逻辑信号及其非信号按逻辑与连接实现译码功能。根据单片机(P1.0,P1.1,P1.2)捕获的霍尔信号(A,B,C),单片机输出的六个状态信号PHASE1PHASE6(接到单片机的P0.0P0.5),单片机输出的PWM调制
11、信号PWM1(P0.6)和 (P0.0P0.5)输出的信号逻辑组合变换后得到控制6个功率管的触发信号(PWM11PWM16)。图2-2 用GAL16V8实现电子换相电路图2.3位置传感器信号整形电路霍尔元件产生的电动势很低,要加上拉电阻以提高其输出电压。本系统整形电路先经LM324比较器进行简单整形,再经过电容滤波,然后经施密特触发器得到上升沿和下降沿都很陡峭的矩形脉冲信号。图2-3 位置信号整形电路霍尔元件在空间上互差120度,脉冲输出的每一路宽度都为180度,整形电路的输出脉冲信号如下图2-4所示图2-4 整形电路输出脉冲信号2.4 单片机与键盘接口本设计的系统用是最简单的2乘3矩阵类型的
12、键盘(P2.3-P2.7)来实现对整个控制系统的操作,键盘结构如下图所示:图2-5 系统键盘接口第3章 无刷直流电机功率变换电路设计3.1 功率变换器主电路设计无刷直流电动机的功率变换器由逆变器和驱动电路组成。其中逆变部分采用三相桥式全控逆变电路,功率开关器件采用MOSFET,功率驱动电路采用以IR公司的专用驱动芯片IR2130进行控制。图3-1 功率变换器主电路图本设计采用MOSFET功率元,响应快、阻抗输入高、稳定性比较好、不需要大的驱动,所需驱动电路并不复杂。3.2 功率驱动电路设计6个功率管的导通和关断顺序可以被IR2130芯片同时控制,例如三相全桥驱动电路的上半桥Q1、Q3、Q5导通
13、、关断被HO1HO3输出端分别控制;而下半桥Q4、Q6、Q2导通、关断由IR2130芯片的输出端LO1LO3控制,以便控制无刷直流电机转速和正反转。IR2130的典型电路如图3-2所示。图3-2 无刷直流电机的功率驱动电路第4章 无刷直流电动机控制系统软件设计4.1无刷直流电机程序设计概况系统采用AT89C51单片机为主芯片设计无刷直流电机控制系统,下面主要为系统的软件设计,采用c语言编程,包括主程序、键盘控制子程序、PWM子程序、启动子程序、停止子程序、运行子程序、电动机的加减速子程序、延时子程序。所编程序简单易懂、运行可靠,能够实现系统所要求的基本功能。4.2系统主程序设计图 4-1 主程
14、序流程图主程序设计首先要对工作方式寄存器、特殊功能寄存器、定时器、计数器与我们定义的一些变量进行初始化,然后调用键盘子程序获得参数,当启动键按下后,然后调用启动子程序,判断是否正常启动,主程序流程图如上图4-1所示void main(void) TMOD=0x59; /*T1软件启动,T0软件+脉冲启动,T1计数器,T0定时器 T1工作在方式1,T0工作在方式1*/ TCON=0x20; TH1=0x00;TL1=0x00;TH0=0xD8;TL0=0xF0;IE=0x82; /*中断允许总控制,禁止T1中断*/ keyget();if(tag=1)start();elsestop();4.3
15、键盘程序流程图键盘程序主要实现外部控制的启动、停止、加减速与正反转,主程序初始化运行会调用键盘程序,键盘程序运行后要不断地扫描有没有键按下,扫描过程中当有键按下时,要延时去抖并判断是哪个功能键按下。流程图如下图4-2所示。图4-2 键盘程序流程图void keyget() /*键盘扫描函数*/ uchar x; /*定义变量*/P2=0XC0 ; /*键盘扫描,看是否有键按下*/if(P2&0XC0)=0) /*有键按下*/ P2=0X80; /*P2.7置1,扫描第一行*/if(P2&0X80)=0) /*第一行有键按下*/d_ms(1500); /*延时去抖*/x=P2;
16、/*读P2口*/elseP2=0X40; /*P2.6置1,扫描第二行*/if(P2&0X40)=0) /*第二行有键按下*/d_ms(1500); /*延时去抖*/x=P2; /*读P2口*/switch(x) case 0xA0: start();break; /*启动*/ case 0x90: up();break; /*向上箭头*/ case 0x88: fanzhuan();break; /*反转*/ case 0x60: left();break; /*左移*/ case 0x50: down();break; /*向下箭头*/ case 0x48: right();bre
17、ak /*右移*/4.4 Pwm程序流程图首先我们要确定频率和占空比,我们选用12MHZ晶振,让PWM 输出频率为1KHZ, 让定时中断次数为C=100,即0.01MS中断一次,则TH0=FF,TL0=F6;由于设定中断时间为0.01ms,这样可以设定占空比可从1-100 变化,即0.01ms*100=1ms。 TH0 和TL0 是计数器0 的高8 位和低8 位计数器,计算方法:TL0=(65536-C)%256;TH0=(65536-C)/256,其中C 为所要计数的次数;TMOD 是计数工作模式选择,TMOD=0X01表示选用模式1,它有16 位计数器,最大计数脉冲为65536,最长时间为
18、65.536ms。程序流程图如下图4-3所示。图4-3 pwm程序流程图#include <REGX51.H>#define uchar unsigned char#define V_TH0 0XFF#define V_TL0 0XF6#define V_TMOD 0X01void init_sys(void); /*系统初始化函数*/void Delay5Ms(void);unsigned char ZKB1,ZKB2;void main (void)init_sys();ZKB1=40; /*占空比初始值设定*/ZKB2=70; /*占空比初始值设定*/while(1)if (
19、!P1_4) /*如果按了+键,增加占空比*/Delay5Ms();if (!P1_4)ZKB1+;ZKB2=100-ZKB1;if (!P1_5) /*如果按了-键,减少占空比*/Delay5Ms();if (!P1_5)ZKB1-;ZKB2=100-ZKB1;/*对占空比值限定范围*/if (ZKB1>99) ZKB1=1;if (ZKB1<1) ZKB1=99;/*函数功能:对系统进行初始化,包括定时器初始化和变量初始化*/void init_sys(void) /*系统初始化函数*/*定时器初始化*/TMOD=V_TMOD;TH0=V_TH0;TL0=V_TL0;TR0=1
20、;ET0=1;EA=1;/*延时*/void Delay5Ms(void)unsigned int TempCyc = 1000;while(TempCyc-);/*中断函数*/void timer0(void) interrupt 1 using 2static uchar click=0; /*中断次数计数器变量*/TH0=V_TH0; /*恢复定时器初始值*/TL0=V_TL0;+click;if (click>=100) click=0;if (click<=ZKB1) /*当小于占空比值时输出低电平,高于时是高电平,从而实现占空比的调整*/P1_6=0;elseP1_6=
21、1;if (click<=ZKB2)P1_7=0;elseP1_7=1; 4.5 电机正反转程序流程图当扫描出键盘正反转按键有动作时,延时去抖,判断正(反)转,读取p1口,然后调用相应的程序,正(反)程序中调用pwm程序, p0.6口输出的pwm信号与p0.0-p0.5输出的六路控制换相信号通过换相芯片GAL16V8相与,再通过IR2130驱动芯片驱动功率管有序的导通与关断,从而控制电机转向。正反转流程图如下图图4-4 电机正反转程序流程图void zhengzhuan() /*正转函数*/ p1.0=HA; p1.1=HB; p1.2=HC;pwm();while(p1.2)dop0.
22、4=1;p0.5=1;while(p1.1)dop0.2=1;p0.3=1;while(p1.1;p1.2)dop0.3=1;p0.4=1;while(p1.0)dop0.0=1;p0.1=1;while(p1.0;p1.2)dop0.0=1;p0.5=1;while(p1.0;p1.1)dop0.1=1;p0.2=1; PWM=PHASE&&pwm(); void fanzhuan() /*反转函数*/ p1.0=HA; p1.1=HB; p1.2=HC;pwm();while(p1.2)dop0.1=1;p0.2=1;while(p1.1)dop0.0=1;p0.5=1;w
23、hile(p1.1;p1.2)dop0.0=1;p0.1=1;while(p1.0)dop0.3=1;p0.4=1;while(p1.0;p1.2)dop0.2=1;p0.3=1;while(p1.0;p1.1)dop0.4=1;p0.5=1; PWM=PHASE&&pwm(); 致 谢在我将要毕业的这最后一段时间里,我要感谢所有给与我帮助的人,我的同学,我的老师,感谢有你们的陪伴,然后要感谢我的指导老师崔建峰,如果没有他的教导和帮助,我是不可能这么顺利就能完成了毕业设计的。崔老师细心的指导,严格的要求,还有他和蔼可亲的为人的态度,激起了我努力向上、奋发图强的。因为激情。刚开始
24、拿到论文题目的时候,我是绞尽脑汁也弄不明白它的工作原理,这使我很困惑,不知道该怎么办才好,我心急如焚,不知道从何下手,在这最关键的时刻,还是崔老师的开导让我有了进展,这时,我终于找到了眉目,都说万事开头难,这话一点也不假,只要把头开好,那么以后得工作会是一帆风顺的。他指导我做出了PWM程序调速部分,通过修改程序使直流电动机可以启动、停止、加速、减速、正转、反转,接着又找出了我设计中存在的不足,并指导我如何才能更好地实现设计的功能,如何高效率,稳定的运行,这也是我的问题的生化。崔老师不仅在指导毕业设计上给了我很大的帮助,还及时解决了我心理上的问题真是雪中送炭啊,他给了我很大的支持与帮助,使我不知
25、道该怎样去表达对他的感激之情,只能说一声谢谢。参考文献1 牛秀岩.电机学M.北京:冶金工业出版社,20062 王益全.电动机原理与实用技术.北京:科学出版社,20053 阮毅,陈伯时.自动控制系统M.北京:机械工业出版社,20104张琛.直流无刷电动机的原理及应用北京机械工业出版社,20045 谢运祥,欧阳森.电力电子单片机控制技术. 机械工业出版社,20076 叶金虎.现代无刷直流永磁电动机的原理和设计.辞学出版社,20077 李志民,张遇杰.同步电动机调速系统.北京机械工业出版社,19958 余永权,汪明慧,黄英.单片机在控制系统中的应用.电子工业出版社 ,20039 张立,黄两一.电力电
26、子场控器件及其应用北京机械工业出版社,199510 卢静,陈非凡,张高飞等.基于单片机的无刷直流电动机控制系统设计.北京机械工业学院学报,200211 顾绳古.电机及拖动基础. 机械工业出版社,200410 周绍英.电力拖动M.北京:冶金工业出版社,2006附录程序清单#include<reg51.h>#define uchar unsigned char#define ulong unsigned longextern uchar zs; /*定义转速变量*/extern uchar tag=0x00,tag1=0x00; /*启动标志位和闪烁标志位*/extern ulong
27、zssd=3000; /*转速设定*/ ulong count; /*脉冲计数*/ulong zkbg,zkbd; /*占空比高低*/ sbit P14=P1.4;/*位定义*/sbit P15=P1.5;sbit P16=P1.6;sbit P17=P1.7;uchar code p1=0x90,0x91,0x92,0x93; /*数码管位选*/uchar *zy=p1; /*定义指针指向数组p1*/void d_ms(uchar m) /*延时程序*/ uchar i,j; for(i=0;i<m;i+) for(j=0;j<1000;j+) /*延时100um微秒*/nop;
28、 void start() /*开始程序*/ if( tag=1 ) /*系统启动*/ P0=0x00; P1=0x00;P0=0xFF; /*数码管各段全亮,确认完好无损*/ P1=0xFF; /*数码管全部选通*/ else tag=0; /*再次按下,标志位置0*/ void zhengzhuan() /*正转函数*/ p1.0=HA; p1.1=HB; p1.2=HC;pwm();while(p1.2)dop0.4=1;p0.5=1;while(p1.1)dop0.2=1;p0.3=1;while(p1.1;p1.2)dop0.3=1;p0.4=1;while(p1.0)dop0.0=
29、1;p0.1=1;while(p1.0;p1.2)dop0.0=1;p0.5=1;while(p1.0;p1.1)dop0.1=1;p0.2=1; PWM=PHASE&&pwm(); void up() /*向上箭头函数*/if(tag1=0) /*闪烁标志位为0*/ If(zs<=3000) /*最大转速为3000转*/ zs+=100; /*无闪烁,转速设定+100转*/ else /*有闪烁,位选与转速*/ switch(*zy)case 0x90: zs=zs+1000;break;case 0x91: zs=zs+100;break;case 0x92: zs=
30、zs+10;break;case 0x93: zs=zs+1;break;void fanzhuan() /*反转函数*/ p1.0=HA; p1.1=HB; p1.2=HC;pwm();while(p1.2)dop0.1=1;p0.2=1;while(p1.1)dop0.0=1;p0.5=1;while(p1.1;p1.2)dop0.0=1;p0.1=1;while(p1.0)dop0.3=1;p0.4=1;while(p1.0;p1.2)dop0.2=1;p0.3=1;while(p1.0;p1.1)dop0.4=1;p0.5=1; PWM=PHASE&&pwm(); vo
31、id left() /*左移函数*/if(tag1=0) /*闪烁标志位为0,无闪烁*/tag1=1; /*闪烁标志位置1,开始闪烁*/zy=p1; /*指针指向位选数组首地址*/ else /*已经开始闪烁*/ zy-; /*指针指向当前位选数组*/if(zy=p10) /*当指针指向第一位时*/zy=p1+3; /*自动跳转到第四位*/d_ms(2000); /*2S内没动作,停止闪烁*/tag1=0; /*闪烁标志位置0,停止闪烁*/void down() /*参考up()函数*/if(tag1=0) if(zssd>=2000) zssd-=100; elseswitch(*zy
32、)case 0x90: zssd=zs-1000;break;case 0x91: zssd=zs-100;break;case 0x92: zssd=zs-10;break;case 0x93: zssd=zs-1;break; void right() /*参考left()函数*/if(tag1=0)tag1=1;zy=p1+3;elsezy+;if(zy=p13)zy=p1;d_ms(2000);tag1=0;void keyget() /*键盘扫描函数*/ uchar x; /*定义变量*/P2=0XC0 ; /*键盘扫描,看是否有键按下*/if(P2&0XC0)=0) /*有
33、键按下*/ P2=0X80; /*P2.7置1,扫描第一行*/if(P2&0X80)=0) /*第一行有键按下*/d_ms(1500); /*延时去抖*/x=P2; /*读P2口*/elseP2=0X40; /*P2.6置1,扫描第二行*/if(P2&0X40)=0) /*第二行有键按下*/d_ms(1500); /*延时去抖*/x=P2; /*读P2口*/switch(x) case 0xA0: start();break; /*启动*/ case 0x90: up();break; /*向上箭头*/ case 0x88: fanzhuan();break; /*反转*/ c
34、ase 0x60: left();break; /*左移*/ case 0x50: down();break; /*向下箭头*/ case 0x48: right();break /*右移*/void display(uchar *z) /*显示函数*/uchat code d_p=0XFC,0X60,0XDA,0XF2,0X66,0XB6,0XBE,0XFE,0XE6; /*定义段选数组0-9*/uchar a,b,c,d; /*转速各位*/a=zs/1000; /*转速千位*/b=zs%1000/100; /*转速百位*/c=zs%100/10; /*转速十位*/d=zs%10; /*转速个位*/if(tag1=0) /*无闪烁时*/doz0=1; /*P10置高*/P0=d_pa; /*从数组读数,P0口输出*/d_ms(20); /*延迟显示*/z0=0;z1=1;P0=d_pb;d_ms(20);z1=0;z2=1;P0=d_pc;d_ms(20);z2=0;z3=1;P0=d_pd;d_ms(20);z3=0;while(0);else
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年货物运输合同规定运输方式与责任
- 2025年度历史建筑保护拆墙工程合作协议4篇
- 2024猪场租赁承包合同
- 2024节能减排协议书
- 《中枢性高热患者的护理与治疗》课件
- 2025年度新媒体运营与公关合作服务合同范本4篇
- 2024年05月云南广发银行昆明分行招考笔试历年参考题库附带答案详解
- 2025年度大数据分析服务合同样本8篇
- 2025变频器代理商销售合同:市场拓展与品牌推广合作3篇
- 二零二五年度高端酒店集团食材供应与服务合同3篇
- 常见老年慢性病防治与护理课件整理
- 履约情况证明(共6篇)
- 云南省迪庆藏族自治州各县区乡镇行政村村庄村名居民村民委员会明细
- 设备机房出入登记表
- 六年级语文-文言文阅读训练题50篇-含答案
- 医用冰箱温度登记表
- 零售学(第二版)第01章零售导论
- 大学植物生理学经典05植物光合作用
- 口袋妖怪白金光图文攻略2周目
- 光伏发电站集中监控系统通信及数据标准
- 三年级下册生字组词(带拼音)
评论
0/150
提交评论