种基于c8051f单片机直流无刷电机转速控制系统

种基于c8051f单片机直流无刷电机转速控制系统

ID:20198825

大小:69.50 KB

页数:4页

时间:2018-10-09

种基于c8051f单片机直流无刷电机转速控制系统_第1页
种基于c8051f单片机直流无刷电机转速控制系统_第2页
种基于c8051f单片机直流无刷电机转速控制系统_第3页
种基于c8051f单片机直流无刷电机转速控制系统_第4页
资源描述:

《种基于c8051f单片机直流无刷电机转速控制系统》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、无刷直流电机内置3个霍尔效应传感器,用来检测转子的位置,也决定电机的换相,并可以根据该信号来计算电机的转速。当电机正常运行时,通过霍尔传感器可得到3个脉宽为180度电角度的互相重叠的信号,而电机转速的改变可以从位置传感器输出脉冲频率的改变上反映出来,因此可以利用单片机对这个脉冲信号进行监测得到电机转速。因频率和转速成正比测量,所以测出输出脉冲的频率即可计算出转速。另外,为了提高精度,高速(>/1000HZ)采用测频法,低速(<1000HZ)采用测周法。  将脉冲信号输出与INT0连接,采用INT0中断对转速脉冲计数,每1s读一次计数值,将此值与预设的转速值比

2、较,若大于预设的转速值,则减小DAC0的数值;若小于预设的转速值,则增加DAC0的值,调整电机的转速直到转速值等于预设定的值。电机当前的转速值可在七段数码管上显示,在电机的可控范围内控制电机转速等于预设值。单片机程序采用C51完成,部分源程序如下:1、系统时钟初始化,采用18.432MHZ外部晶振: 1.void SYSCLK_Init (void)  2.{  3.       int i;                             //延时计数器  4.       OSCXCN=0x67;                    //开启外

3、部振荡器18.432MHz晶体  5.       for(i=0;i<256;i++) ;        //等待振荡器启振  6.       while(!(OSCXCN&0x80)) ;       //等待晶体振荡器稳定  7.       OSCICN=0x88;                  //选择外部振荡器为系统时钟源并允许丢失时钟检测器  8.}   2、IO口初始化 1.void PORT_Init (void)  2.  3.      XBR0    =0x07;                     //使能SMBus,SP

4、I0,和UART0  4.      XBR1    =0x04;                    //P1.0<---int0  5.      XBR2    =0x40;                    //使能数据交叉开关和弱上拉  6.      EMI0CF  =0x27;  7.      EMI0TC  =0x21;  8.      P74OUT  =0xFF;  9.      P0MDOUT =0x15;  10.      P1MDOUT 

5、=0x3C;      //P1.2-P1.5推挽输出  1.      P1 &

6、= 0xc3;     //P1.2-P1.5=0  2.  3、定时器0初始化,定时时间为1ms 1. void Timer0_Init (void)  2.{  3.        CKCON

7、=0x8;  4.        TMOD

8、=0x1;                     //16位  5.         Count1ms=10;  6.        TR0 = 0;                         //停止定时器0  7.        TH0 = (-SYSCLK/1000) >> 8;       //设初值,1

9、ms时溢出  8.        TL0 = -SYSCLK/1000;  9.        TR0 = 1;                      //开启定时器0  10.        IE

10、= 0x2;   11.}  4、Timer0中断: 1.void Timer0_ISR (void) interrupt 1              2.{  3.    TH0 = (-SYSCLK/1000) >> 8;    4.    TL0 = -SYSCLK/1000;  5.    if (Count1ms)  6.    {  7.   

11、     Count1ms--;  8.    }  9.    if (Count1s)   10.    {  11.        Count1s--;                  //Count1s初值为1000  12.    }  13.    else  14.    {  15.        Count1s=1000;  16.        SaveMotorCount=MotorCount;          //MotorCount为测得每秒脉冲个数  17.        MotorCount=0;  18.        S

12、D=SaveMotorCount/2-SetSpee

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。