if (PWM_duty_left>0) //电机1正转
{ zz();
if(PWM_duty_left>300) {PWM_duty_left=300;}
TIM_SetCompare1(TIM3,PWM_duty_left+0); //tm3 ch1
}
else //电机1反转
{
if(PWM_duty_left<-300) PWM_duty_left=-300;
PWM_duty_left=-PWM_duty_left;
fz();
TIM_SetCompare1(TIM3,PWM_duty_left+0);
}
if (PWM_duty_right>0) //电机2正转
{
if(PWM_duty_right >300) PWM_duty_right =300;
zz();
TIM_SetCompare2(TIM3,PWM_duty_right-0);
}
else //电机2反转
{
if(PWM_duty_right <-300) PWM_duty_right = -300;
PWM_duty_right=-PWM_duty_right;
fz();
TIM_SetCompare2(TIM3,PWM_duty_right-0);
}
}
这个是平衡小车的两个电机控制程序,其中语句 TIM_SetCompare1(TIM3,PWM_duty_left+0);和TIM_SetCompare2(TIM3,PWM_duty_right-0); 就能实现电机的正反转,这是为什么?按这个语句的说法就是用TIM3的通道1 2 这个两个口来控制的电机的,但是我就搞不明白了 控制电机不是有IN 1-4吗 IN12控制一个电机 IN1和IN2的PWM差别越大不是速度越快吗?这样的话应该用四个通道(口)来控制两个电机,而他只用了两个通道(口)。顺便说一句我的电机是直流电机。 |