OpenEdv-开源电子网

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

谁用过stm32控制过步进电机,有思路的都进来指导一下,求程序(库函数)

[复制链接]

1

主题

5

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2014-5-6
在线时间
0 小时
发表于 2014-5-6 14:55:33 | 显示全部楼层 |阅读模式
5金钱
本人初学stm32,要用stm32控制步进电机转动,完全无思路,求大神自导

最佳答案

查看完整内容[请看2#楼]

回复【5楼】科学小子: --------------------------------- 你这个都带驱动器了,使用起来非常简单. 给脉冲,就走,不给就停. 脉冲和度数之间有固定的关系,非常好驱动的.
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-5-6 14:55:34 | 显示全部楼层
回复【5楼】科学小子:
---------------------------------
你这个都带驱动器了,使用起来非常简单.
给脉冲,就走,不给就停.
脉冲和度数之间有固定的关系,非常好驱动的.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

80

主题

931

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3348
金钱
3348
注册时间
2013-5-28
在线时间
468 小时
发表于 2014-5-6 15:19:49 | 显示全部楼层
............步进,顾名思义,只要你让步进的电源线得到信号按序列变化就可以一点点的前进或者后退,基本上只要你程序的跑马灯跑起来就没问题。
比如正向序列
(000,001,010,011,100,101,110,111)
那逆向就是
(111,110,101,100,011,010,001,000)
只要你接法没错,然后把这些数字按它需要的顺序给他,那他就会一点点前进或者后退


当然,别忘了STM芯片不可以直接控制步进电机,必须通过驱动电路,以免烧毁STM32
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2014-5-6
在线时间
0 小时
 楼主| 发表于 2014-5-6 15:45:10 | 显示全部楼层
回复【2楼】聚东风:
---------------------------------
我买的是57步进电机,驱动器和电源都买了,现在想让他动,驱动器就相当于驱动电路吧?但是不知道怎么编程,我想应该要用到pwm、timer等,但是具体细节没有思路,你驱动过步进电机吗
回复

使用道具 举报

8

主题

90

帖子

0

精华

初级会员

Rank: 2

积分
146
金钱
146
注册时间
2012-7-27
在线时间
1 小时
发表于 2014-5-6 15:47:48 | 显示全部楼层
回复【3楼】科学小子:
---------------------------------
买的那个驱动器是什么样的,能不能通过内部脉冲直接驱动电机?
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2014-5-6
在线时间
0 小时
 楼主| 发表于 2014-5-6 16:03:01 | 显示全部楼层
我想是可以的,直接用stm32发脉冲就可以驱动电机转动,

我上传一下图片给你看,
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2014-5-6
在线时间
0 小时
 楼主| 发表于 2014-5-7 15:37:11 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
原子给个库函数的程序参考一下,我刚学stm32,不太会!谢谢了!
回复

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
24
金钱
24
注册时间
2013-11-20
在线时间
0 小时
发表于 2014-5-7 19:10:45 | 显示全部楼层
我先马克下,以后也会用的啊
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2014-5-6
在线时间
0 小时
 楼主| 发表于 2014-5-8 10:55:31 | 显示全部楼层
回复【8楼】女神不美:
---------------------------------
继续求程序
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2014-5-8
在线时间
1 小时
发表于 2014-5-8 11:20:51 | 显示全部楼层
stm32没玩过,8051试过

我给个C51的

#include <REG51.H>

unsigned char code trunCode[8] = {0xE,0xC,0xD,0x9,0xB,0x3,0x3,0x7,0x6}

voide delay()  //这里软件延时,也可以用定时器
{
unsigned int i = 200; 
while(i--);
}

void main()
{
unsigned char t;
unsigned char index=0;

while(1)
{
t=P1;
t=t&0xF0;
t = t | trunCode[index];
P1 = t;
index++
index = index & 0x07;
delay();
}

回复

使用道具 举报

2

主题

3

帖子

0

精华

新手入门

积分
31
金钱
31
注册时间
2014-6-4
在线时间
0 小时
发表于 2014-6-4 09:15:03 | 显示全部楼层
void run(void)
{
int i=0;

GPIO_SetBits(GPIOD,GPIO_Pin_7);//方向
for(i=0;i<6400;i++)
{

 GPIO_SetBits(GPIOG,GPIO_Pin_12);
 delay_us(500);
 GPIO_ResetBits(GPIOG,GPIO_Pin_12);
}

}
 int main(void)
 {
delay_init();     //延时函数初始化  
LED_Init();   //初始化与LED连接的硬件接口
while(1)
{
run();
}

 }
用一个AM26LS31差分芯片驱动就好了,stm32的输出是3.3v脉冲,方向和脉冲控制步进电机,将一个IO一直置高,另一个IO通过for循环置高置低,这样脉冲信号经过差分芯片后形成差分信号,形成4个差分信号,一直置高的IO出来的差分信号就是方向信号,for循环置高置低的差分信号就是脉冲信号,这样就可以驱动步进电机了,伺服电机也可以按这种方法驱动。


回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-7 13:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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