微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 直流电机的启动与停止程序,大家有什么思路吗?

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

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

你这个要求不高吧~这是一般得加上编码器,测量转速,然后控制启动的加速度和速度,在加上pid进行闭环控制。没有的话,就让pwm的占空比逐步增大,逐步减小。也是可以的

暂时没有测速。怎么让按按键时逐步增大,松开按键逐步减小。

按下按键时占空比逐步增加可以,我弄了个占空比自加到设定值的程序,但是松开按键的不懂写,因为一松开按键就是跳停转函数了,跟pwm波无关,直接就停了,这个过程应该是松开按键电机还在慢慢减速转动才对。

也许可以在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}这个信号就立马停了的

用个定时器,定时去控加减PWM占空比。

最近也在准备这个,看看人家怎么回答的

这个比较好办。可以借鉴呼吸灯的程序段即可。若觉得好清采纳,谢谢!

我去找找

老师也是这么说的,就是那时听了一脸懵逼不懂怎么写

可以使用这继电器吧。

应该在起步和停止处做加减速算法。典型的梯形曲线比较好实现~

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top