OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2333|回复: 2

关于梯形加减速例程测试出的问题反馈

[复制链接]

3

主题

9

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
232
金钱
232
注册时间
2019-6-18
在线时间
87 小时
发表于 2023-7-11 15:51:44 | 显示全部楼层 |阅读模式
1金钱
按照原子哥的 梯形加减速例程测试出有一个问题。我给步进电机走一步,实际上是走了2步,仿真发现中断总共进了4次,第一次不进  if(i == 2),
第二次进用于走一步,
第三次不进,
第四次进用于停止电机,

那么就会造成IO口翻转了至少3次,步进电机不就走了2步吗

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

31

主题

2183

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
14287
金钱
14287
注册时间
2018-8-3
在线时间
1147 小时
发表于 2023-7-11 15:51:45 | 显示全部楼层
  1. case DECEL:
  2.                     step_count++;                               /* 步数加1 */
  3.                     g_add_pulse_count++;
  4.                     if(g_srd.dir == CW)
  5.                     {
  6.                         g_step_position++;                      /* 绝对位置加1 */
  7.                     }
  8.                     else
  9.                     {
  10.                         g_step_position--;                      /* 绝对位置减1 */
  11.                     }
  12.                     g_srd.accel_count++;
  13.                     new_step_delay = g_srd.step_delay - (((2 * g_srd.step_delay) + rest)/(4 * g_srd.accel_count + 1));  /* 计算新(下)一步脉冲周期(时间间隔) */
  14.                     rest = ((2 * g_srd.step_delay)+rest)%(4 * g_srd.accel_count + 1);                                   /* 计算余数,下次计算补上余数,减少误差 */

  15.                     /* 检查是否为最后一步 */
  16.                     if(g_srd.accel_count >= 0)                  /* 判断减速步数是否从负值加到0是的话 减速完成,直接在此关闭定时器输出以及中断 */
  17.                     {
  18.                         step_count = 0;                         /* 清零步数计数器 */
  19.                         rest = 0;                               /* 清零余值 */
  20.                         /* 关闭通道*/
  21.                         HAL_TIM_OC_Stop_IT(&g_atimx_handle, ATIM_TIMX_PWM_CH3);
  22.                         ST3_EN(EN_OFF);
  23.                         g_motion_sta = 0;                       /* 电机为停止状态  */
  24.                     }
  25.                     break;
复制代码


啊哈~加油!!
回复

使用道具 举报

31

主题

2183

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
14287
金钱
14287
注册时间
2018-8-3
在线时间
1147 小时
发表于 2023-7-12 09:47:29 | 显示全部楼层
嗯嗯 实测了下 一步时会输出2个脉冲,已修改,只需要将减速段状态当g_srd.accel_count >= 0成立,直接关闭中断以及定时器输出即可
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 04:18

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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