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

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

一种基于C8051F单片机的直流无刷电机转速控制系统[作者:王天庆谭名栋姚文斌[摘要]:该文以C8051F020为例介绍了C8051F单片机在无刷直流电机转速控制中的应用、实现方法、硬件结构及软件结构等。[关键词]:单片机、无刷直流电机、转速控制[Abstract]:ThearticleintroducesapplicationofC8051F020inrotatespeedControlofdirectcurrentandbrushlessmotor,realizationmethod,configurationofsoftwareandhardware.[Keywords]:MCU,directcurrentandbrushlessmotor,rotatespeedControl引言:具有梯形反电动势的永磁同步电动机通常被称为无刷直流电动机,它具有结构简单、体积小、重量轻、效率高、高功率密度、启动扭矩大、惯量小和响应快等其它种类直流电机无法比拟的特性。采用电子换向器替代了传统直流电动机的机械换向装置,从而克服了电刷和换向器所引起的噪声、火花、电磁干扰、寿命短等一系列弊病。由于无刷直流电动机既具备交流电动机的结构简单、运行可靠、维护方便等一系列优点,又具有直流电动机的运行效率高、无励磁损耗以及调速性能好等诸多优点,故其在在家用消费类产品(空调、冰箱、洗衣机)和IT周边产品(打印机、软驱、硬驱)中得到广泛的应用。C8051F单片机是美国Silabs公司推出的一种与51系列单片机内核兼容的单片机,具有高速、高性能、高集成度。以C8051F020为例,具有如下特点:C8051F020片上系统单片机片内资源:一、模块外设(1)逐次逼近型8路12位ADC0转换速率最大100ksps可编程增益放大器PGA温度传感器(2)8路8位ADC1输入与P1口复用转换速率500ksps可编程增益放大器PGA(3)两个12位DAC(4)两个模拟电压比较器(5)电压基准内部提供2.43V外部基准可输入(6)精确的VDD监视器二、高速8051微控制器内核流水线式指令结构速度可达25MIPS22个矢量中断源三、存储器片内4352字节数据RAM64KBFlash程序存储器可作非易失性存储外部可扩展的64KB数据存储器接口四、数字外设8个8位的端口I/OI2CSPI2个增强型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外部晶振:voidSYSCLK_Init(void){inti;//延时计数器OSCXCN=0x67;//开启外部振荡器18.432MHz晶体for(i=0;i256;i++);//等待振荡器启振while(!(OSCXCN&0x80));//等待晶体振荡器稳定OSCICN=0x88;//选择外部振荡器为系统时钟源并允许丢失时钟检测器}二、IO口初始化voidPORT_Init(void){XBR0=0x07;//使能SMBus,SPI0,和UART0XBR1=0x04;//P1.0---int0XBR2=0x40;//使能数据交叉开关和弱上拉EMI0CF=0x27;EMI0TC=0x21;P74OUT=0xFF;P0MDOUT=0x15;P1MDOUT|=0x3C;//P1.2-P1.5推挽输出P1&=0xc3;//P1.2-P1.5=0}三、定时器0初始化,定时时间为1msvoidTimer0_Init(void){CKCON|=0x8;TMOD|=0x1;//16位Count1ms=10;TR0=0;//停止定时器0TH0=(-SYSCLK/1000)8;//设初值,1ms时溢出TL0=-SYSCLK/1000;TR0=1;//开启定时器0IE|=0x2;}四、Timer0中断:voidTimer0_ISR(void)interrupt1{TH0=(-SYSCLK/1000)8;TL0=-SYSCLK/1000;if(Count1ms)Count1ms--;if(Count1s)Count1s--;//Count1s初值为1000else{Count1s=1000;SaveMotorCount=MotorCount;//MotorCount为测得每秒脉冲个数MotorCount=0;SD=SaveMotorCount/2-SetSpeed;//常量SetSpeed的值为转速的预设值,单位为转/秒SaveMotorCount*=30;//转/分if(SD){if((SD5)||(SD-5))iDAC0-=SD*4;elseiDAC0-=SD;DAC0=iDAC0;}}}五、外部0中断:voidInt0_ISR(void)interrupt0{MotorCount++;}软件仿真调试方法:(1)观察DAC0的窗口,改变DAC0的数值观察电机转速的变化(2)使用示波器观察CKMOT的频率计算出电机的转速与七段数码管显示的数值比较,比较速度测量的准确性(3)改变常量SetSpeed的值(转速的预设值),观察速度稳定后七段数码管的数值(4)可将断点设在外部中断INT0的入口和T0中断的入口运行程序观察程序运行是否正常。结束语:由于C8051F020的高集成度,因此只需少量外围电路。另外,C8051F020内核与普通51系列兼容,且指令简单易学,可缩短系统开发周期。实践证明,本控制系统精度高,稳定性好,硬件简单且工作可靠,具有很好的推广价值。

1 / 5
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功