上海交大 运动控制 直流无刷电机实验报告 2013.docx

上海交大 运动控制 直流无刷电机实验报告 2013.docx

ID:61499203

大小:162.62 KB

页数:8页

时间:2021-02-07

上海交大 运动控制 直流无刷电机实验报告 2013.docx_第1页
上海交大 运动控制 直流无刷电机实验报告 2013.docx_第2页
上海交大 运动控制 直流无刷电机实验报告 2013.docx_第3页
上海交大 运动控制 直流无刷电机实验报告 2013.docx_第4页
上海交大 运动控制 直流无刷电机实验报告 2013.docx_第5页
资源描述:

《上海交大 运动控制 直流无刷电机实验报告 2013.docx》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、直流无刷电机实验报告一、硬件电路原理简述1、总体硬件电路图图1.1-1总体硬件电路原理图单片机通过霍尔传感器获得转子的位置,并以此为依据控制PWM波的通断。1、霍尔元件测量值与PWM波通断的关系图1.2-1霍尔元件测量值与PWM波通断的关系一、软件架构1、Components与变量定义图2.1-1Components列表PWMMC是用来产生控制电机的PWM波的。添加PWMMC时会同时加入一个eFlexPWM。PWM_Out对应的是GPIOB2口,这个口电位为高时,电压才会被加到电机上。GPIOB3控制着一个继电器,用于防止启动时过大的冲击电流。程序开始后

2、不久就应把B3置高。Halla、Hallb、Hallc对应于3个霍尔传感器。依次为GPIOC3、C4、C6。TimerInt是用于测速的。根据2次霍尔元件的中断间的时间间隔来计算转速。2、电机旋转控制代码for(;;){Hall_Sensor=0b;Halla=Halla_GetVal();Hallb=Hallb_GetVal();Hallc=Hallc_GetVal();if(Halla)Hall_Sensor

3、=0b;if(Hallb)Hall_Sensor

4、=0b;if(Hallc)Hall_Sensor

5、=0b;switch(Hall_Senso

6、r){case0b:PESL(eFPWM1_DEVICE,PWM_OUTPUT_A,PWM_SM1_ENABLE);PESL(eFPWM1_DEVICE,PWM_OUTPUT_B,PWM_SM2_ENABLE);break;case0b:PESL(eFPWM1_DEVICE,PWM_OUTPUT_A,PWM_SM1_ENABLE);PESL(eFPWM1_DEVICE,PWM_OUTPUT_B,PWM_SM0_ENABLE);break;case0b:PESL(eFPWM1_DEVICE,PWM_OUTPUT_A,PWM_SM2_ENABLE);PESL

7、(eFPWM1_DEVICE,PWM_OUTPUT_B,PWM_SM0_ENABLE);break;case0b:PESL(eFPWM1_DEVICE,PWM_OUTPUT_A,PWM_SM2_ENABLE);PESL(eFPWM1_DEVICE,PWM_OUTPUT_B,PWM_SM1_ENABLE);break;case0b:PESL(eFPWM1_DEVICE,PWM_OUTPUT_A,PWM_SM0_ENABLE);PESL(eFPWM1_DEVICE,PWM_OUTPUT_B,PWM_SM1_ENABLE);break;case0b:PESL(

8、eFPWM1_DEVICE,PWM_OUTPUT_A,PWM_SM0_ENABLE);PESL(eFPWM1_DEVICE,PWM_OUTPUT_B,PWM_SM2_ENABLE);break;}for(i=0;i<6;i++)PWMC1_SetDutyPercent(i,50);PWMC1_Load();}这段代码是main函数中的for循环。不断地获取霍尔传感器中的值并依此控制PWM波的通断。获取到的霍尔传感器的值存入Hall_Sensor变量的后3位中。2、测速及调速代码以下为HallC的中断响应函数。floatRPS_C;doubleIntTim

9、esC;#pragmainterruptcalled/*Commentthislineiftheappropriate'Interruptpreserveregisters'property*//*issetto'yes'(#pragmainterruptsaveallisgeneratedbeforetheISR)*/voidHallc_OnInterrupt(void){/*placeyourHallcinterruptprocedurebodyhere*/staticboolbFirstInt=1;if(bFirstInt){bFirstInt=0

10、;IntTimesC=0;}else{RPS_C=1/(IntTimesC*0.0001)/2;IntTimesC=0;if(RPS_C>50)DutyPercent-=1;elseDutyPercent+=1;}}计时器每100微秒进入一次中断,每次计时器中断,IntTimesC都会加一。因此在HallC的中断响应函数能根据IntTimesC计算转速。RPS_C为根据2次Hallc中断间的间隔计算出的每秒转速。电机每转一圈,Hallc的中断会进入2次。Halla和Hallb的中断响应函数中也有类似的代码。下面这段代码实现了积分调节,能使转速稳定在每秒5

11、0转。if(RPS_C>50)DutyPercent-=1;elseDutyPe

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

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

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