OpenEdv-开源电子网

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

STM32驱动步进电机在特定范围内往返摆动

[复制链接]

3

主题

4

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2023-4-20
在线时间
3 小时
发表于 2023-7-26 19:18:59 | 显示全部楼层 |阅读模式
我想问下用STM32F103通过DM542驱动器控制57步进电机在一定角度范围内旋转时,对于旋转延时delay有什么要求,我按照公式计算出来在特定频率下旋转一定角度所用的时间然后延时,先正转再反转,但是它就是不能实现来回转,要么直接旋转一周,要么无法旋转所需角度范围,只有当角度范围小于30度才行,大于30度就不行了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

245

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1221
金钱
1221
注册时间
2014-11-25
在线时间
173 小时
发表于 2023-7-27 15:27:51 | 显示全部楼层
回复 支持 反对

使用道具 举报

3

主题

4

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2023-4-20
在线时间
3 小时
 楼主| 发表于 2023-7-27 15:56:54 | 显示全部楼层

//摆动所需时间计算函数
float Delay(float angle)
{
        time=angle*1000/0.1125/500;         //适用于PWM(200,720) (2000,72)
        time+=20;
        delay_ms(time);
}

//摆动函数//
float Angle_Cover(float a,float b)
{
         delay_ms(2);       
         Motor_Run(1,b-a);
         Delay(b-a);
        Motor_Run(0,b-a);
         Delay(b-a);
   }

//主函数//
int main(void)
{
        delay_init();
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
        LED_Init();
        uart_init(115200);
        fw_init();
        while(1)
        {               
                fw_task();
                delay_ms(10);
              if(Angle_buff[1]!=0)  Angle_Cover(Angle_buff[0],Angle_buff[1]);
         }
}

//控制电机旋转函数//
void Motor_Run(uint32_t dir,float angle)  //步进电机角度控制
{
        if(dir==1)
        {
                GPIO_SetBits(GPIOA, GPIO_Pin_5);               
        }
       
        if(dir==0)
        {
                GPIO_ResetBits(GPIOA, GPIO_Pin_5);                       
        }
        a=angle/0.1125;
        TIM_Cmd(TIM2, ENABLE);       
}

//定时器中断函数//
void TIM2_IRQHandler(void)   //TIM2中断
{
        if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET) //检查指定的TIM中断发生与否:TIM 中断源
                {
                  TIM_ClearFlag(TIM2, TIM_IT_Update);//清除TIMx的中断待处理位:TIM 中断源
                        n+=1;
                        if(n>=a)
                        {
                                TIM_Cmd(TIM2, DISABLE);
                                n=0;
                        }
                       
                }
}
回复 支持 反对

使用道具 举报

9

主题

245

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1221
金钱
1221
注册时间
2014-11-25
在线时间
173 小时
发表于 2023-8-15 10:13:32 | 显示全部楼层
贺yyycccc 发表于 2023-7-27 15:56
//摆动所需时间计算函数
float Delay(float angle)
{

波形量了没,是不是倒转的时序
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-24 01:51

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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