欢迎来到天天文库
浏览记录
ID:20198825
大小:69.50 KB
页数:4页
时间:2018-10-09
《种基于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
此文档下载收益归作者所有