|
用上位机给STM32直流驱动板发指令,STM32完成上位机指令后,但由于编码器计数未清零,指令不能连续发送,该怎么办?
- s32 pwm;
- extern s16 dAngle;
- //s16 Now_position;
- void Speed_control(s16 set_Position,s16 set_Speed)
- {
- pwm+=PID(set_Speed,dAngle); //速度换PID,PWM作为速度控制量
- if(pwm>10000)
- pwm=9000;
- if(pwm<0)
- pwm=500;
- // TIM1->CCR1=pwm;
-
- if(set_Position==TIM2->CNT)
- {
- TIM1->CCR1=0x0000;
- TIM1->CCR2=0x0000;
- // delay_ms(1000);
- // flag=1;
- }
- else if(set_Position>TIM2->CNT)
- {
- TIM1->CCR1=pwm;
- TIM1->CCR2=0x0000;
- }
- else if(set_Position<TIM2->CNT)
- {
- TIM1->CCR1=0x0000;
- TIM1->CCR2=pwm;
- }
- }
复制代码
用TIM2进行编码器计数,通过电脑串口设置set_Position(位置),set_Speed(速度)
设置转9000个脉冲,但由于电机惯性,编码器计数显示9231个脉冲,怎么让误差减小?
当驱动板完成指令电机停止后,怎么让编码器的计数清零,为下一次指令接收做好准备? |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|