采用的是外部中断倍频测速。
这个方法测出来的值是B相或者A相的高低电平变化,再给到一个定时器去定时清空存储的数据,就是初始速度值,但是加pid去控制电机旋转时,会发现,输入的这个值和输出的占空比会有很大的差,pid没有意义,会直接拉满。
所以要进行速度转换,但是计算太复杂也会导致精度误差太大。可以直接对原始输入值进行放大或减小相应倍数。对最后输出也是。
//LF
// if (GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_1))
// {
// encoder_LF++;
// }
// else if (!GPIO_ReadInputDataBit(GPIOE, GPIO_Pin_1))
// {
// encoder_LF--;
// }
// //RF
// if (GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_3))
// {
// encoder_RF++;
// }
//
// else if (!GPIO_ReadInputDataBit(GPIOE, GPIO_Pin_3))
// {
// encoder_RF--;
// }
// //LB
// if (GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_5))
// {
// encoder_LB++;
// }
//
// else if (!GPIO_ReadInputDataBit(GPIOE, GPIO_Pin_5))
// {
// encoder_LB--;
// }
// //RB
// if (GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_0))
// {
// encoder_RB++;
// }
//
// else if (!GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_0))
// {
// encoder_RB--;
// }
点个关注,一起学习提升~