野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 284|回复: 4

智能小车编码器检测出来的速度,如何和PWM输出匹配 ??

[复制链接]
发表于 2024-2-3 17:26:31 | 显示全部楼层 |阅读模式
本帖最后由 逍暗博 于 2024-2-3 17:31 编辑

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

这一次做智能小车,一步一步搞清楚相关知识点,最近有一个疑问:
通过定时器编码器功能检测出来的电机速度,如何匹配驱动电机的PWM值?
目前代码的设置如下:
1.主频200MHZ
2.编码器定时器TIM2: 分频1,周期65536
3.PWM驱动定时器TIM8:分频1,周期65536
4.基础定时器TIM5:分频200,周期10000, 也就是10MS循环一次。
然后我通过M法计数方式,PWM值给定32768,然后算出来得出:
  1. extern int Read_Encoder_Value(uint8_t Timer)        ;

  2. float MotorCurSpeed = 0.0;

  3. void BSP_TIMER_IRQHANDLER(void)
  4. {
  5.         /* 这里是定时器中断 */
  6.   if(timer_interrupt_flag_get(BSP_TIMER,TIMER_INT_FLAG_UP) == SET)
  7.         {
  8.                 timer_interrupt_flag_clear(BSP_TIMER,TIMER_INT_FLAG_UP);  // 清除中断标志位
  9.                 /* 执行功能 */
  10.                 MotorCurSpeed = Read_Encoder_Value(1)/MOTOR_RATIO/0.01 ;  // M 法计数
  11.                 printf("MotorCurSpeed = %f\r\n",MotorCurSpeed );
  12.         }
  13. }
复制代码
  1. MotorCurSpeed = 1.893939
  2. MotorCurSpeed = 1.893939
  3. MotorCurSpeed = 1.893939
  4. MotorCurSpeed = 1.969697
  5. MotorCurSpeed = 1.818182
  6. MotorCurSpeed = 1.969697
  7. MotorCurSpeed = 1.893939
复制代码

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


回复

使用道具 举报

发表于 2024-2-4 14:06:10 | 显示全部楼层
直接是算不出的,参考电机教程和例程的有刷电机PID速度控制

野火STM32F103_拂晓开发板 — 野火产品资料下载中心 文档 (embedfire.com)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-2-17 11:53:47 | 显示全部楼层
WishWish 发表于 2024-2-4 14:06
直接是算不出的,参考电机教程和例程的有刷电机PID速度控制

野火STM32F103_拂晓开发板 — 野火产品资料下 ...

感谢大佬,资料很有帮助!
回复 支持 反对

使用道具 举报

发表于 2024-2-18 10:11:11 | 显示全部楼层
特定负载下的线性关系关系是存在的,但实际控制是变化的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-2-20 14:36:33 | 显示全部楼层
羊烊 发表于 2024-2-18 10:11
特定负载下的线性关系关系是存在的,但实际控制是变化的。

现在算是弄懂了些; PID算法的输入与输出没有直接关联;
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-4-27 17:48 , Processed in 0.126596 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表