OpenEdv-开源电子网

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

绕线机,用STM32控制两个步进电机步数

[复制链接]

2

主题

7

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2015-5-10
在线时间
0 小时
发表于 2015-5-10 20:47:02 | 显示全部楼层 |阅读模式
5金钱
哪位给个参考下吧,控制两个电机步数,就是写不出来
目的:对变压器线圈进行绕制
要求:一个主电机(绕线机),一个辅电机(排线机),主电机控制比较单一,就是通过PWM让它一直按照一定的速度转动。(tim2的1通道)
         辅电机,通过每次改变PWM的

从而改变速度,同时当接受一定的PWM波之后,电机自动进行正反转。(辅电机用的tim2的2通道)
        其实简单的说,就是控制两个步进电机,根据第一个的速度,根据一定的公式转换,每次改变辅电机接收的PWM从而改变辅电机速度,同时控制正反转次数。就是对一个线包,一层层的绕。
          之前第一次发帖子描述清楚些,但是居然发失败了,这次自己都不知道描述清楚没,但愿有哪位大哥做过,能给点参考程序。
其中一个驱动电机图。


      

绕线机子程序:

void tim2_config(void)

{

tim_timebaseinittypedef tim2_timebasestructure;

tim_ocinittypedef tim2_ocinitstrure;

gpio_inittypedef gpio_initstructure;

RCC_apb2periphclockcmd(rcc_apb2periph_gpio|rcc_apb2periph_afio,enable);

rcc_apb1periphclockcmd(rcc_apb1periph_tim2,enable);

gpio_initstructure.gpio_pin=gpio_pin_0;

gpio_initstructure.gpio_mode=gpio_mode_af_pp;

gpio_initstructure.gpio_speed=gpio_speed_50Mhz;

gpio_init(gpioa,&gpio_initstructure);

tim2_timebasetructure.tim_period=1000-1;

tim2_timebasetructure.tim_prescaler=72-1;

tim2_timebasetructure.tim_countermode=tim_countermode_up;

tim_timebaseinit(tim2,&tim2_timebasestructure);

tim2_ocinittructure.tim_ocmode_pwm1;

tim2_ocinittructure.tim_ocpolarity=tim_ocpolarity_high;

tim2_ocinittructure.tim_outputstate=tim_outputstate_enable;

tim2_ocinittructure.tim_pulse=200;

tim_oc1init(tim2,&tim2_ocinitstructure);

tim_oc1preloadconfig(tim2,tim_ocpreload_enable);

tim_arrpreloadconfig(tim2,enable);

Tim_clearitpendingbit(tim2,tim_it_cc1);

Tim_itconfig(tim2,tim_it_cc1,enable);

tim_cmd(tim2,disable);

}

viod nvic_config();

{

nvic_inittypedef nvic_initstructure;

nvic_prioritygroupconfig(nvic_prioritygroup_2);

nvic_initstructure.nvic_irqchannel=tim2_irqn;

nvic_initstructure.nvic_irqchannelpreemptionpriority=1;

nvic_initstructure.nvic_irqchannelsubpriority=0;

nvic_initstructure.nvic_irqchannelcmd=enable;

nvic_init(&nvic_initstructure);

}

viod tim2_irqhandler(void)

{

if(tim_getitstatus(tim2,tim_it_cc1)!=reset)

{

tim_clearitpendingbit(tim2,tim_it_cc1);

step1++;

if(step1==800)

{

stepa1++;

}

if(stepa1==n1)

{

stepa0++;

stepa1=0;

}

if(stepa0==n0)

{

tim_cmd(tim2,disable);

}

}

}
其中自己用到的自己定义的变量

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2015-5-10 22:23:56 | 显示全部楼层
回复

使用道具 举报

2

主题

7

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2015-5-10
在线时间
0 小时
 楼主| 发表于 2015-5-11 14:37:18 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
谢谢帮顶
config
回复

使用道具 举报

11

主题

64

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2014-8-4
在线时间
14 小时
发表于 2015-5-11 15:08:32 | 显示全部楼层
楼主你好请问用了插补算法了吗这个得需要插补算法,绕线机我也正在研究,楼主有硬件电路图吗想参考一下,我们目前用的方案是绕线机是伺服电机,排线机是步进电机,绕线机加编码器
生命不息,学习不止
回复

使用道具 举报

2

主题

7

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2015-5-10
在线时间
0 小时
 楼主| 发表于 2015-5-12 19:45:58 | 显示全部楼层
回复【4楼】liuzhenwei2014:
---------------------------------
你说的那个应该做的复杂些吧,我这个比较简单的。用编码器的我好像在哪篇文章上看见过
config
回复

使用道具 举报

11

主题

64

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2014-8-4
在线时间
14 小时
发表于 2015-5-12 20:00:30 | 显示全部楼层
回复【5楼】张扬果儿:
---------------------------------
这种两个轴配合的都得用插补算法,就是在误差允许的范围内先x轴先走一截,即一个脉冲当量,然后y轴再走一个脉冲当量,这种叫做直线插补。不然两个电机同时运行的不可能配合的那么好的。我们曾拆开过过一个两轴控制器,里面是用407做,就是将407封装好了再通过u盘往里写入G代码,我们分析就是把407就是一个解释G代码的引擎,不过这个控制器是个通用控制器不光做绕线机,还能完成其他的东西,咱们做的话可以直接用c语言控制单片机就行了。楼主有兴趣咱们合作吗
生命不息,学习不止
回复

使用道具 举报

2

主题

7

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2015-5-10
在线时间
0 小时
 楼主| 发表于 2015-5-12 20:39:38 | 显示全部楼层
回复【6楼】liuzhenwei2014:
---------------------------------
楼主很笨的啊,你说的那个配合,可以通过机械结构的张力控制,让排线的本身有一定滞后,然后也能一直紧密排线啊
config
回复

使用道具 举报

2

主题

7

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2015-5-10
在线时间
0 小时
 楼主| 发表于 2015-5-12 20:40:56 | 显示全部楼层
回复【6楼】liuzhenwei2014:
---------------------------------
我还在研究程序怎么写中。。。。
config
回复

使用道具 举报

11

主题

64

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2014-8-4
在线时间
14 小时
发表于 2015-5-13 08:30:27 | 显示全部楼层
回复【7楼】张扬果儿:
-------------------------------
我的意思是两个电机不能同时动作
生命不息,学习不止
回复

使用道具 举报

2

主题

7

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2015-5-10
在线时间
0 小时
 楼主| 发表于 2015-5-13 14:01:09 | 显示全部楼层
回复【9楼】liuzhenwei2014:
---------------------------------
你说的硬件电路我这有,但是现在还不方便分享出来
config
回复

使用道具 举报

2

主题

13

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2015-4-24
在线时间
0 小时
发表于 2015-5-13 20:06:22 | 显示全部楼层
正在进行步进电机驱动学习,帮顶……
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2016-4-19
在线时间
5 小时
发表于 2016-4-19 12:29:39 | 显示全部楼层
楼主,能给个完整的硬件电路图和控制程序吗?
回复

使用道具 举报

0

主题

6

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2018-2-19
在线时间
9 小时
发表于 2018-2-22 21:00:01 | 显示全部楼层
正在步进电机驱动学习中,帮顶
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-8 10:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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