1.电机正转反转
左电机是AIN2 = 0 AIN1 = 1 为正转,单纯电机没有一个正转反转的区分,都是相对的,所以安装好之后再定正反转
有的代码里左右电机的正反转中AIN1 AIN2 与BIN1 BIN2的电平设置正好是相反的,这与电机的安装有关
//左电机前转
void MOTOR_left_FORWARD(void)
{
GPIO_ResetBits(GPIOB,GPIO_Pin_13); //AIN1 = 0
GPIO_SetBits(GPIOB,GPIO_Pin_12); //AIN2 = 1;
}
//右电机前转
void MOTOR_right_FORWARD(void)
{
GPIO_ResetBits(GPIOB,GPIO_Pin_14); //BIN1 = 0;
GPIO_SetBits(GPIOB,GPIO_Pin_15); //BIN2 = 1;
}
//左电机后转
void MOTOR_left_BACKWARD(void)
{
GPIO_SetBits(GPIOB,GPIO_Pin_13); //AIN1 = 1;
GPIO_ResetBits(GPIOB,GPIO_Pin_12); //AIN2 = 0
}
//右电机后转
void MOTOR_right_BACKWARD(void)
{
GPIO_SetBits(GPIOB,GPIO_Pin_14); //BIN1 = 1;
GPIO_ResetBits(GPIOB,GPIO_Pin_15); //BIN2 = 0;
}
2.平衡时的电机转向
陀螺仪安装时,小车正向与陀螺仪的x正向相同,后倾斜时输出的倾角为正值,所以此时的MOTO为正值,if(moto>0)需要向后转。
3.PWM1模式、PWM2模式
最开始的时候调试不如意,结果对比发现是PWM的模式有问题,现在正确的模式是,每次PID的调节设置通道的CCR值,如果PID计算的值比之前的增大了,说明要增大CCR的值,因为现在是在PWM模式1,所以CNT < CCR的时间占比增大,就使得高电平的时间变长。