OpenEdv-开源电子网

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

pwm控制步进电机怎么加速

[复制链接]

1

主题

4

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2017-6-21
在线时间
2 小时
发表于 2017-6-21 22:12:05 | 显示全部楼层 |阅读模式
1金钱
pwm控制步进电机怎么加速,用2个定时器级联。怎么改变频率,望大神指点

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

使用道具 举报

3

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2017-5-21
在线时间
27 小时
发表于 2017-6-21 22:18:51 | 显示全部楼层
本帖最后由 glmyc 于 2017-6-21 22:24 编辑

通过修改ARR的值 达到修改目的
如我的程序里通过以下改变频率和占空比

//变速函数
//设置TIM11CH1和T3CH1通道的频率和占空比
//compare:修改的ARR值和占空比值
void TIM_SetCompare(TIM_HandleTypeDef *htim,u32 compare)
{
        if(htim->Instance == TIM11){                                //TIM11的时钟为216MHz
                htim->Instance->ARR = 2 * compare -1;                //T2-T5是108MHz改变重装的数值的参数,就是频率改变
                htim->Instance->CCR1 =(int)2 * compare/2;         //改变PWM点空比的参数为ARR的一半
        }else{        //TIM2-5时钟为108MHZ
                htim->Instance->ARR = compare -1;                //改变重装的数值的参数,就是频率改变               
                htim->Instance->CCR1 =(int)compare/2;         //改变PWM点空比的参数为ARR的一半
        }
}


回复

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2017-6-21
在线时间
2 小时
 楼主| 发表于 2017-6-21 22:25:25 | 显示全部楼层
glmyc 发表于 2017-6-21 22:18
通过修改ARR的值 达到修改目的

我也知道改变ARR的值就改变频率了,但就是不知道在哪改变,何时改变,我现在能控制脉冲的个数,但就是不能平滑加速到目标速度
回复

使用道具 举报

3

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2017-5-21
在线时间
27 小时
发表于 2017-6-21 22:28:04 | 显示全部楼层
你要通过写一个函数来改变,如我就是写了一个加减速函数,实现加速和减速以及加减速的快慢
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2017-6-21
在线时间
2 小时
 楼主| 发表于 2017-6-21 22:31:04 | 显示全部楼层
glmyc 发表于 2017-6-21 22:18
通过修改ARR的值 达到修改目的
如我的程序里通过以下改变频率和占空比

//*******************************************************************

void Time5_set(u32 freq,u32 duty)
{
          
          TIM5->ARR = (168000000/2/init_psc/freq)-1;
    TIM5->CCR1 = (TIM5->ARR+1)*duty/100;
   
}
我是这样改变频率,但是加速是个问题
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2017-6-21
在线时间
2 小时
 楼主| 发表于 2017-6-21 22:34:07 | 显示全部楼层
glmyc 发表于 2017-6-21 22:28
你要通过写一个函数来改变,如我就是写了一个加减速函数,实现加速和减速以及加减速的快慢

能不能学习一下加减速函数
回复

使用道具 举报

3

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2017-5-21
在线时间
27 小时
发表于 2017-6-21 22:38:47 | 显示全部楼层
既然会了加减速,这么简单的问题其它有什么困难吗?怎么不运动脑子怎么解呢?

看看我的吧

//******************************************************************************
//电机加减变速函数
//参数说明:
//startspeed开始速度取值范围135-1000,越小越快,135时电机转速达到2866转
//endspeed结束速度取值范围135-1000
//加速快慢:kuaiman取值范围10-1000,取值越小越快达到目标
//******************************************************************************
void ChangeSpeed(u16 startspeed,u16 endspeed,u16 fast_or_slow)
{
  u16 i = 0;
  startspeed = startspeed < MaxSpeed ? MaxSpeed : startspeed;        //如果需要加速的开始速度比最大速度都大,用最大速度
  endspeed = endspeed < MaxSpeed ? MaxSpeed : endspeed;                        //如果需要减速的结束速度比最大速度都大,用最大速度
  //如果电机尚未启动,则不能起始速度大于终结速度,应该先启动到指定速度
  if (HAL_GPIO_ReadPin(GPIOD, GPIO_PIN_4) && HAL_GPIO_ReadPin(GPIOD, GPIO_PIN_6)) {
    if (startspeed > endspeed) {
      for (i = startspeed; i > endspeed; i--) {
        TIM_SetCompare(&TIM11_Handler, i); //修改定时器11比较值,修改频率或占空比
        TIM_SetCompare(&TIM3_Handler, i);  //修改定时器 3比较值,修改频率或占空比
        delay_ms(fast_or_slow);
      }
    } else {
      for (i = startspeed; i < endspeed; i++) {
        TIM_SetCompare(&TIM11_Handler, i); //修改定时器11比较值,修改频率或占空比
        TIM_SetCompare(&TIM3_Handler, i);  //修改定时器 3比较值,修改频率或占空比
        delay_ms(fast_or_slow);
      }
    }
  } else {
    ServeMotor_L_EN_ON;        //HAL_GPIO_WritePin(GPIOD, GPIO_PIN_11, GPIO_PIN_SET); //使能左电机
    ServeMotor_R_EN_ON;        //HAL_GPIO_WritePin(GPIOD, GPIO_PIN_5, GPIO_PIN_SET);  //使能右电机

    for (i = StartSpeed; i > endspeed; i--) {
      TIM_SetCompare(&TIM11_Handler, i); //修改定时器11比较值,修改频率或占空比
      TIM_SetCompare(&TIM3_Handler, i);  //修改定时器 3比较值,修改频率或占空比
      delay_ms(fast_or_slow);
    }
  }
  speed = i ;
}
回复

使用道具 举报

28

主题

171

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
437
金钱
437
注册时间
2017-2-13
在线时间
110 小时
发表于 2017-10-9 14:56:56 | 显示全部楼层
你好,楼主能发一下pwm脉冲数控制的程序吗。我的不能控制脉冲数,shubaoj@foxmail.com,谢谢了
回复

使用道具 举报

62

主题

903

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3565
金钱
3565
注册时间
2016-1-8
在线时间
543 小时
发表于 2017-10-9 15:07:55 | 显示全部楼层
加速和减速不是调频率!!!!频率控制的是电机的适用程度,不同电机有自己的频率,不同频率会有不同程度的占空比失调,直流电机速度调节占空比
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-18 19:52

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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