基于单片机的无刷直流电机的控制系统 下载本文

参考文献

[1] 张文灼.单片机应用技术.机械工业出版社.2008 [2] 李先允.电力电子技术.中国电力出版社.2006

[3] 张琛.直流无刷电机原理及应用.机械工业出版社.1996 [4] 谭建成.电机控制专用集成电路.机械工业出版社.1997 [5] 王晓明.电动机的单片机控制.北京航空航天大学出版社.2002 [6] 吴守箴,臧英杰.电气传动的脉宽调制控制技术.机械工业出版.1995

[7] 胡文静.永磁无刷直流电动机的发展及展望.微特电机.2002.35(4):34~38

[8] 张毅刚 ,等.新编MCS-51单片机应用设计.哈尔滨工业大学出版社.2003

[9] 赵亮 侯国锐.单片机C语言编程与实例.人民邮电出版社.2003 [10] 蔡耀成.无刷直流电机中的霍尔位置传感器.微特电机.1999.27(5):23~25

25 / 37

致谢

在这次毕业设计中,要特别感谢我的导师河北科技大学李争(博士)给予的耐心细致的指导,对于在设计过程中所遇到的许多具体问题,他均提出了相应的解决方案。这对于毕业设计的顺利完成起到了十分重要的作用。

26 / 37

附录A: 程序:

#include

#define uchar unsigned char #define ulong unsigned long

extern uchar zs; /*定义转速变量*/

extern uchar tag=0x00,tag1=0x00; /*启动标志位和闪烁标志位*/ extern ulong 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[]={0x00,0x90,0x91,0x92,0x93,0x00}; /*数码管位选*/ uchar *zy=p1; /*定义指针指向数组p1*/ void d_ms(uchar m) {

uchar i,j;

for(i=0;i

/*延时程序*/

for(j=0;j<100;j++) /*延时100*m微秒*/ }

void start() {

if(tag==0) /*系统未启动*/ {

27 / 37

{ }

;

/*开始程序*/

P0=0xFF; /*数码管各段全亮,确认完好无损*/ P1=0xFF; /*数码管全部选通*/ P0=0x00; P1=0x00;

tag=1; /*启动标志位置1系统启动*/ } else

tag=0; /*再次按下,标志位置0*/ }

void up() /*向上箭头函数*/ {

if(tag1==0) /*闪烁标志位为0*/ {

If(zssd<=4000) /*最大转速为4000转*/

{

zssd+=100; /*无闪烁,转速设定+100转*/ }

}

void fanzhuan() /*反转函数*/ {

}

else /*有闪烁,位选与转速*/

switch(*zy) { }

case 0x90: zssd=zs+1000;break; case 0x91: zssd=zs+100;break; case 0x92: zssd=zs+10;break; case 0x93: zssd=zs+1;break;

28 / 37