OpenEdv-开源电子网

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

步进电机加减速定位

[复制链接]

5

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2016-5-27
在线时间
14 小时
发表于 2017-7-27 19:27:58 | 显示全部楼层 |阅读模式
感谢论坛对我的帮助,写了一个步进电机控制代码,用的TB6600驱动器
(1)电机的转速与脉冲频率成正比,所以控制脉冲频率可以精确调速,控制脉冲数就可以精确
定位。

(2)加速减速用的定时器1
定位用的TIM2,TIM3(主从模式),代码参考了论坛帖子
//来自阿mo大牛的解释,仅供参考
// STM32 实现可变频率固定脉冲个数输出方法.
//原理:1.使用两个定时器,一个定时器用于PWM输出(定时器2),一个定时器用于计数(定时器1)。
//      2.两个定时器都工作在从模式。//注:代码用的是一个在主模式,一个在从模式
//      3.定时器1工作于PWM门控模式(占空比50%),只有定时器1的OC1REF低电平时,启动定时器。定时器3的脉冲输出口OC1作为外部触发信号。
//      4.定时器2工作外部时钟,单脉冲脉冲输出模式,选择TIM2的触发输入作为计数脉冲(当计数值达到设定值时,OC1,变为高电平,
//        定时器1停止PWM脉冲输出.

(3)
//DIR   -->PC2
//PUL  -->PA8
//ENA   空接

使用方法:
(1)步进电机加减速:DIR   -->PC2   PUL  -->PA8   ENA   空接  重启开发板 默认执行此部分代码
(2)步进电机定位  :DIR   -->PC2   PUL  -->PC6   ENA   空接  按下按键KEY0,转动固定角度

步进电机加减速定位.rar

285.26 KB, 下载次数: 1833

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

使用道具 举报

0

主题

7

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2017-7-29
在线时间
7 小时
发表于 2017-7-31 15:06:42 | 显示全部楼层
回复 支持 反对

使用道具 举报

0

主题

7

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2017-7-29
在线时间
7 小时
发表于 2017-8-1 17:12:57 | 显示全部楼层
结果引脚后,没有反应啊电机不转

回复 支持 反对

使用道具 举报

0

主题

7

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2017-7-29
在线时间
7 小时
发表于 2017-8-1 17:13:33 | 显示全部楼层
求原因
回复 支持 反对

使用道具 举报

10

主题

55

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
350
金钱
350
注册时间
2017-7-26
在线时间
43 小时
发表于 2017-8-1 20:37:53 | 显示全部楼层
请问注释里的1,2,3,4是STM32 实现可变频率固定脉冲个数输出的4个独立方法吗?
回复 支持 反对

使用道具 举报

5

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2016-5-27
在线时间
14 小时
 楼主| 发表于 2017-8-6 11:28:04 | 显示全部楼层
chensong 发表于 2017-8-1 17:12
结果引脚后,没有反应啊电机不转

需要带驱动器的步进电机哦
回复 支持 反对

使用道具 举报

5

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2016-5-27
在线时间
14 小时
 楼主| 发表于 2017-8-6 11:32:56 | 显示全部楼层
凯爷儿 发表于 2017-8-1 20:37
请问注释里的1,2,3,4是STM32 实现可变频率固定脉冲个数输出的4个独立方法吗?

这是四个步骤   两个定时器实现输出固定脉冲个数,用  主函数中的Motor_Control(1000,300); //1000us,300个脉冲   调节
回复 支持 反对

使用道具 举报

5

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2016-5-27
在线时间
14 小时
 楼主| 发表于 2017-8-6 11:35:26 | 显示全部楼层

可能有多种原因造成不转,不好直接判断
回复 支持 反对

使用道具 举报

2

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
109
金钱
109
注册时间
2017-7-12
在线时间
29 小时
发表于 2017-8-10 11:08:52 | 显示全部楼层
本帖最后由 SHISHI67 于 2017-8-10 11:10 编辑

//      3.定时器1工作于PWM门控模式(占空比50%),只有定时器1的OC1REF低电平时,启动定时器。定时器3的脉冲输出口OC1作为外部触发信号。
//      4.定时器2工作外部时钟,单脉冲脉冲输出模式,选择TIM2的触发输入作为计数脉冲(当计数值达到设定值时,OC1,变为高电平,
//        定时器1停止PWM脉冲输出.
大神,请问这样做的目的是什么呢?
回复 支持 反对

使用道具 举报

2

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
109
金钱
109
注册时间
2017-7-12
在线时间
29 小时
发表于 2017-9-20 09:46:41 | 显示全部楼层
兄弟,用了你的程序,请问可以实现正反转吗?         设置了GPIO_ResetBits(GPIOC,GPIO_Pin_2);//顺时针转动    GPIO_SetBits(GPIOC,GPIO_Pin_2); //逆时针转动,为啥它还是只朝一个方向转动呢?
回复 支持 反对

使用道具 举报

0

主题

43

帖子

0

精华

高级会员

Rank: 4

积分
685
金钱
685
注册时间
2018-4-17
在线时间
104 小时
发表于 2018-4-19 10:26:39 | 显示全部楼层
正在做PIC16f877的步进电机速度控制,卡在了加减速问题上,参考下,多谢。。。

回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2018-4-21
在线时间
5 小时
发表于 2018-4-21 11:07:38 | 显示全部楼层
请问楼主程序中PC6端口是怎样配置的?可以更改吗
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2018-4-21
在线时间
5 小时
发表于 2018-4-21 11:08:27 | 显示全部楼层
pc6口怎末配置 的?
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2018-4-24
在线时间
3 小时
发表于 2018-5-8 14:03:03 | 显示全部楼层
SHISHI67 发表于 2017-9-20 09:46
兄弟,用了你的程序,请问可以实现正反转吗?         设置了GPIO_ResetBits(GPIOC,GPIO_Pin_2);//顺时针转动    G ...

同问,只能朝一个方向转动。
回复 支持 反对

使用道具 举报

0

主题

7

帖子

0

精华

新手入门

积分
5
金钱
5
注册时间
2020-6-25
在线时间
1 小时
发表于 2020-6-25 17:27:22 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-17 03:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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