[STM32F3] 用STM32做直流电机驱动板,出现问题了

[复制链接]
2525|9
 楼主| 心染红尘 发表于 2015-11-1 08:49 | 显示全部楼层 |阅读模式
用上位机给STM32直流驱动板发指令,STM32完成上位机指令后,但由于编码器计数未清零,指令不能连续发送,该怎么办?
  1. s32 pwm;
  2. extern s16 dAngle;
  3. //s16 Now_position;

  4. void Speed_control(s16 set_Position,s16 set_Speed)
  5. {                
  6.         pwm+=PID(set_Speed,dAngle);                                  //速度环PID控制,输出PWM控制量
  7.         if(pwm>10000)
  8.                 pwm=9000;
  9.         if(pwm<0)
  10.                 pwm=500;
  11. //        TIM1->CCR1=pwm;
  12.        
  13.         if(set_Position==TIM2->CNT)
  14.         {
  15.     TIM1->CCR1=0x0000;
  16.                 TIM1->CCR2=0x0000;
  17. //                  delay_ms(1000);
  18. //                  flag=1;
  19.   }
  20.         else if(set_Position>TIM2->CNT)
  21.         {
  22.                 TIM1->CCR1=pwm;
  23.                 TIM1->CCR2=0x0000;       
  24.   }
  25.         else if(set_Position<TIM2->CNT)
  26.         {
  27.                 TIM1->CCR1=0x0000;
  28.                 TIM1->CCR2=pwm;
  29.         }       
  30. }
用TIM2进行编码器计数,通过电脑串口设置set_Position(位置),set_Speed(速度)




设置转9000个脉冲,但由于电机惯性,编码器计数显示9231个脉冲,怎么让误差减小?

当驱动板完成指令电机停止后,怎么让编码器的计数清零,为下一次指令接收做好准备?
IMG_20151031_220829.jpg
mmuuss586 发表于 2015-11-1 10:13 | 显示全部楼层
误差减小只能调PID参数了;
或者你计数到8000的时候,开始减速啊;
sail8498 发表于 2015-11-1 11:10 | 显示全部楼层
PWM想要精确控制直流电机,就要用PID算法。
既然你有编码器为什么不跟据编码器结果控制PWM输出呢?
不要直接用上位机信号,要在STM32上做个关环控制。
每一定的时间检测编码器读数,跟据编码器读数调整PWM。

请参考:https://bbs.21ic.com/icview-910382-1-1.html
 楼主| 心染红尘 发表于 2015-11-1 11:23 | 显示全部楼层
本帖最后由 心染红尘 于 2015-11-1 11:26 编辑
mmuuss586 发表于 2015-11-1 10:13
误差减小只能调PID参数了;
或者你计数到8000的时候,开始减速啊;

还有就是当驱动板完成指令电机停止后,怎么让编码器的计数清零,为下一次指令接收做好准备?比如我让电机转9000个脉冲,当完成9000个脉冲之后,编码器计数未清零,那么下次发送电机转9000个脉冲指令时,电机是不会转动的。
 楼主| 心染红尘 发表于 2015-11-1 19:31 | 显示全部楼层
sail8498 发表于 2015-11-1 11:10
PWM想要精确控制直流电机,就要用PID算法。
既然你有编码器为什么不跟据编码器结果控制PWM输出呢?
不要直 ...

对于电机的位置,如何实现精确控制
xuyaqi 发表于 2015-11-1 20:00 | 显示全部楼层
心染红尘 发表于 2015-11-1 19:31
对于电机的位置,如何实现精确控制

越接近电机要求的位置,应该转得越慢,这样电机的惯量小过冲才会小。
sail8498 发表于 2015-11-1 21:21 | 显示全部楼层
心染红尘 发表于 2015-11-1 19:31
对于电机的位置,如何实现精确控制

以抛物线形状跟据编码器读数调速PWM的加减速比率,
slm342107 发表于 2015-11-2 08:58 | 显示全部楼层
实际就是一种超调,解决超调的办法还是不少的,分段加减速,上下区间控制等
 楼主| 心染红尘 发表于 2015-11-2 15:46 | 显示全部楼层
slm342107 发表于 2015-11-2 08:58
实际就是一种超调,解决超调的办法还是不少的,分段加减速,上下区间控制等 ...

您有这方面的资料吗?
slm342107 发表于 2015-11-3 20:32 | 显示全部楼层
这里有一篇论文,有点大  直接给你网址 你看看有没有帮助吧    http://www.doc88.com/p-94657551776.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

36

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部