查看: 1848  |  回复: 1
智能小车编码器检测出来的速度,如何和PWM输出匹配 ??
风也温柔
1
主题
1
回复
发表于2024-02-03 17:36:25 | ip属地:湖南 | 显示全部楼层
1# 电梯直达

之前做过一次平衡车,没有深究知识细节。


这一次做智能小车,一步一步搞清楚相关知识点,最近有一个疑问:

通过定时器编码器功能检测出来的电机速度,如何匹配驱动电机的PWM值?

目前代码的设置如下:

1.主频200MHZ

2.编码器定时器TIM2: 分频1,周期65536

3.PWM驱动定时器TIM8:分频1,周期65536

4.基础定时器TIM5:分频200,周期10000, 也就是10MS循环一次。

然后我通过M法计数方式,PWM值给定32768,然后算出来得出:



extern int Read_Encoder_Value(uint8_t Timer)        ;
float MotorCurSpeed = 0.0;
void BSP_TIMER_IRQHANDLER(void)
{
      /* 这里是定时器中断 */
    if(timer_interrupt_flag_get(BSP_TIMER,TIMER_INT_FLAG_UP) == SET)
       {
               timer_interrupt_flag_clear(BSP_TIMER,TIMER_INT_FLAG_UP);  // 清除中断标志位
               /* 执行功能 */
               MotorCurSpeed = Read_Encoder_Value(1)/MOTOR_RATIO/0.01 ;  // M 法计数
               printf("MotorCurSpeed = %f\r\n",MotorCurSpeed );
       }
}



MotorCurSpeed = 1.893939

MotorCurSpeed = 1.893939

MotorCurSpeed = 1.969697

MotorCurSpeed = 1.818182

MotorCurSpeed = 1.969697


请教一下各位大佬!同时也相互交流一下!!!

风也温柔
1
主题
1
回复
发表于2024-02-21 16:39:38   |  ip属地:湖南  |  显示全部楼层
2#

问题解决了; 

复习了PID算法控制,PID的输入输出是没有绝对关系的;

 两者依靠这PID算法来维持。



主题

回复
  • 温馨提示: 标题不合格、重复发帖、发布广告贴,将会被删除帖子或禁止发言。 详情请参考: 社区发帖规则
  • 您当前输入了 0 个文字。还可以输入 8000 个文字。 已添加复制上传图片功能,该功能目前仅支持chrome和火狐

禁言/删除

X
请选择禁言时长:
是否清除头像:
禁言/删除备注:
昵 称:
 
温馨提示:昵称只能设置一次,设置后无法修改。
只支持中文、英文和数字。

举报

X
请选择举报类型:
请输入详细内容:

顶部