文档介绍:直流无刷电机实验报告
硬件电路原理简述
总体硬件电路图
图 -1总体硬件电路原理图
单片机通过霍尔传感器获得转子的位置,并以此为依据控制PWM波的通断。
霍尔元件测量值与PWM波通断的关系
图 -1霍尔元件测量值与PWM波通断的关系
软件架构
1、Components与变量定义
-1 Components列表
PWMMC是用来产生控制电机的PWM波的。添加PWMMC时会同时加入一个eFlexPWM。
PWM_Out对应的是GPIO B2口,这个口电位为高时,电压才会被加到电机上。
GPIO B3控制着一个继电器,用于防止启动时过大的冲击电流。程序开始后不久就应把B3置高。
Halla、Hallb、Hallc对应于3个霍尔传感器。依次为GPIOC3、C4、C6。
TimerInt是用于测速的。根据2次霍尔元件的中断间的时间间隔来计算转速。
电机旋转控制代码
for(;;)
{
Hall_Sensor = 0b00000000;
Halla = Halla_GetVal();
Hallb = Hallb_GetVal();
Hallc = Hallc_GetVal();
if(Halla)
Hall_Sensor |= 0b00000100;
if(Hallb)
Hall_Sensor |= 0b00000010;
if(Hallc)
Hall_Sensor |= 0b00000001;
switch(Hall_Sensor)
{
case 0b0000011:
PESL(eFPWM1_DEVICE, PWM_OUTPUT_A, PWM_SM1_ENABLE);
PESL(eFPWM1_DEVICE, PWM_OUTPUT_B, PWM_SM2_ENABLE);
break;
case 0b0000001:
PESL(eFPWM1_DEVICE, PWM_OUTPUT_A, PWM_SM1_ENABLE);
PESL(eFPWM1_DEVICE, PWM_OUTPUT_B, PWM_SM0_ENABLE);
break;
case 0b0000101:
PESL(eFPWM1_DEVICE, PWM_OUTPUT_A, PWM_SM2_ENABLE);
PESL(eFPWM1_DEVICE, PWM_OUTPUT_B, PWM_SM0_ENABLE);
break;
case 0b0000100:
PESL(eFPWM1_DEVICE, PWM_OUTPUT_A, PWM_SM2_ENABLE);
PESL(eFPWM1_DEVICE, PWM_OUTPUT_B, PWM_SM1_ENABLE);
break;
case 0b0000110:
PESL(eFPWM1_DEVICE, PWM_OUTPUT_A, PWM_SM0_ENABL