直流电机的启动与停止程序,大家有什么思路吗?

2019-07-15 11:16发布

     采用占空比可调pwm波控制正反转的电机,初始转动设定30%占空比,怎么让我在按下启动按键时让这个占空比从0开始上升到30%,并且松开按键停止时先减速再停止?现在的程序是一按按键直接以30%占空比启动,停止一样瞬间停。这样减速电机(250W轮椅电机)齿轮磨损很厉害并且卡得齿轮声音很大,特别是高速时。
     大家有什么思路的说一下吧,我去试试,谢谢。

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
zeng10119
1楼-- · 2019-07-15 22:29
776830702 发表于 2017-4-19 16:36
你这个要求不高吧~这是一般得加上编码器,测量转速,然后控制启动的加速度和速度,在加上pid进行闭环控制。没有的话,就让pwm的占空比逐步增大,逐步减小。也是可以的

按下按键时占空比逐步增加可以,我弄了个占空比自加到设定值的程序,但是松开按键的不懂写,因为一松开按键就是跳停转函数了,跟pwm波无关,直接就停了,这个过程应该是松开按键电机还在慢慢减速转动才对。
1030402679
2楼-- · 2019-07-15 22:45
也许可以在pwm产生函数中加个增速减速判断  也就是俩函数  1的时候是增速函数   0的时候是减速函数
zeng10119
3楼-- · 2019-07-16 00:15
本帖最后由 zeng10119 于 2017-4-19 19:11 编辑
1030402679 发表于 2017-4-19 18:08
也许可以在pwm产生函数中加个增速减速判断  也就是俩函数  1的时候是增速函数   0的时候是减速函数
  1. /******************************************************************/
  2. /* 右电机调速 */
  3. void pwm_out_right_moto(void)
  4. {
  5. if(Right_moto_stop)
  6. {
  7. if(pwm_val_right<=push_val_right)
  8. {
  9. Right_moto_pwm=1;
  10. }
  11. else
  12. {
  13. Right_moto_pwm=0;
  14. }
  15. if(pwm_val_right>11)
  16. pwm_val_right=0;
  17. }
  18. else
  19. {
  20. Right_moto_pwm=0;
  21. }
  22. }
  23. /********************************************************/

  24. /***************************************************/
  25. ///*TIMER1中断服务子函数产生PWM信号*/
  26. void timer1()interrupt 3
  27. {
  28.      TH1 = 0x0FF;
  29.     TL1 = 0x0FA;
  30. pwm_val_left++;
  31. pwm_val_right++;
  32. pwm_out_left_moto();
  33. pwm_out_right_moto();
  34. }
复制代码
这就是我的pwm啦,里边push_val_left就是占空比,15Khzpwm波应该是这样的吧,0~11调速等级。怎么加一个判断,我是要按按键,电机启动时让占空比慢慢上,这块能做到。就是不懂停的时候慢慢降下来。因为电机一接收到{IN1=0,IN2=0}这个信号就立马停了的
pasum
4楼-- · 2019-07-16 06:11
用个定时器,定时去控加减PWM占空比。
我的水墨嗳丹青
5楼-- · 2019-07-16 09:03
 精彩回答 2  元偷偷看……
houjue
6楼-- · 2019-07-16 14:30
这个比较好办。可以借鉴呼吸灯的程序段即可。若觉得好清采纳,谢谢!

一周热门 更多>