- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一种基于C8051F单片机的直流无刷电机转速控制系统
作者:王天庆 谭名栋
?? [摘要]:C8051F020为例介绍了C8051F单片机在无刷直流电机转速控制中的应用、实现方法、硬件结构及软件结构等。 [关键词]:??? [Abstract]:? The article introduces application of C8051F020 in rotate speed Control of direct current and brushless motor, realization method,configuration of software and hardware. [Keywords]: MCU,direct current and brushless motor,? rotate speed Control
引言:IT周边产品(打印机、软驱、硬驱)中得到广泛的应用。 C8051F单片机是美国Silabs公司推出的一种与51系列单片机内核兼容的单片机,具有高速、高性能、高集成度。以C8051F020为例,具有如下特点: C8051F020片上系统单片机片内资源: 一、模块外设 (1)逐次逼近型8路12位ADC0100ksps??? 可编程增益放大器PGA 温度传感器 (2)8路8位ADC1输入与P1口复用500ksps?? 可编程增益放大器PGA (3)两个12 位DAC (4)两个模拟电压比较器 (5)电压基准内部提供2.43V 外部基准可输入 (6)精确的VDD监视器 二、高速8051微控制器内核25MIPS??? 22个矢量中断源 三、存储器 片内4352字节数据RAM 64KBFlash程序存储器可作非易失性存储 外部可扩展的64KB 数据存储器接口 四、数字外设 8个8位的端口I/O I2CSPI2个增强型UART串口 可编程的16位计数器/定时器阵列(PCA) 5个通用16位计数器/定时器 专用的看门狗WDT 五、JTAG调试和边界扫描接口,可实现在线实时动态调试。C8051F单片机具有丰富的片上硬件资源及高运算速度,这为实现复杂的控制算法提供了保障,而且几乎不需系统扩展即可满足控制系统对硬件资源的需求,极大地提高了系统可靠性。??? 硬件部分主要由电机、电机驱动电路及单片机及显示块组成。其功能框图如下: ??? 电机驱动采用美国安森美公司开发的高性能第二代单元无刷直流电机控制器MC33035。该芯片内部具有定频调宽PWM电路,它集译码、过热、过流、欠压保护、正反转控制等诸多功能于一身,是一种功能齐全的电机控制器。PWM来控制电动机电枢电压可以实现调速。在正常情况下,误差放大器输出与振荡器输出锯齿波信号比较后,产生脉宽调制(PWM)信号如下图所示。改变输出脉冲宽度,相当于改变供给电动机绕组的平均电压,从而控制其转速。所以我们可以通过单片机控制DAC0的输出,控制输入到直流无刷电机的电压,进而控制PWM波的占空比达到控制电机转速的目的。 MC33035的脉宽调节原理图 ??? 软件部分:??? 无刷直流电机内置3个霍尔效应传感器,用来检测转子的位置,也决定电机的换相,并可以根据该信号来计算电机的转速。当电机正常运行时,通过霍尔传感器可得到3个脉宽为180度电角度的互相重叠的信号,而电机转速的改变可以从位置传感器输出脉冲频率的改变上反映出来,因此可以利用单片机对这个脉冲信号进行监测得到电机转速。因频率和转速成正比测量,所以测出输出脉冲的频率即可计算出转速。另外,为了提高精度,高速(/1000HZ)采用测频法,低速(1000HZ)采用测周法。INT0连接,采用INT0中断对转速脉冲计数,每1s读一次计数值,将此值与预设的转速值比较,若大于预设的转速值,则减小DAC0的数值;若小于预设的转速值,则增加DAC0的值,调整电机的转速直到转速值等于预设定的值。电机当前的转速值可在七段数码管上显示,在电机的可控范围内控制电机转速等于预设值。??? ??? ??? 单片机程序采用C51完成,部分源程序如下: 一、系统时钟初始化,采用18.432MHZ外部晶振: void SYSCLK_Init (void)??? {?????? int i;???????????????????????????? //延时计数器 OSCXCN=0x67;??????????????????? //开启外部振荡器18.432MHz晶体 for(i=0;i256;i++) ;??????? //等待振荡器启振 while(!(OSCXCN0x80)) ;?????? //等待晶体振荡器稳定 OSCICN=0x88;??
文档评论(0)