找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 12657|回复: 18
打印 上一主题 下一主题
收起左侧

怎样用51单片机接两相步进电机驱动器来控制步进电机?

  [复制链接]
跳转到指定楼层
楼主
怎样用51单片机接两相步进电机驱动器来控制步进电机?
我现在是ENA+ DIR+ PUL+ 共阳接+5v     ENA- DIR- PUL-每个接一个单片机IO口就行吗    然后这三个口分别怎么编程控制呢

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:224519 发表于 2017-8-3 20:47 | 只看该作者
接的没问题
PUL端口给步进电机脉冲,一个脉冲能让步进电机转过一个步进角
DIR端口给高低电平,电平不一样使电机转动方向不一样
回复

使用道具 举报

板凳
ID:224266 发表于 2017-8-4 09:54 | 只看该作者
我也是类似的接法,也想学一下怎么编程控制。
回复

使用道具 举报

地板
ID:224266 发表于 2017-8-4 10:05 | 只看该作者
我没连接ENA,现在只会简单编写了一下,能转动起来。
代码:
#include "reg52.h"

typedef unsigned int u16;
typedef unsigned char u8;

sbit motoA=P1^1;
sbit motoB=P1^2;

void delay(u16 i)
{
        while(i--);       
}

void main()
{       
    while(1)
        {
                motoA=0;
                delay(10);
            motoA=1;
                delay(10);
                motoB=1;                         
        }
}
回复

使用道具 举报

5#
ID:224266 发表于 2017-8-4 10:30 | 只看该作者
我用的是89c52单片机,没接ENA,简单编了一下,能在一个方向上转动。
代码:
#include "reg52.h"                       

typedef unsigned int u16;
typedef unsigned char u8;

sbit motoA=P1^1;
sbit motoB=P1^2;


void delay(u16 i)
{
        while(i--);       
}

void main()
{       
    while(1)
        {
                motoA=0;
                delay(10);
            motoA=1;
                delay(10);
                motoB=1;                         
        }
}
回复

使用道具 举报

6#
ID:222001 发表于 2017-8-6 12:51 | 只看该作者
long1990 发表于 2017-8-4 10:30
我用的是89c52单片机,没接ENA,简单编了一下,能在一个方向上转动。
代码:
#include "reg52.h"                       

嗯 我发现确实不用接ENA 不知道为什么  我用的57  脉冲最长延时1ms,再短它就好像反应不过来了,也有点发热
回复

使用道具 举报

7#
ID:222001 发表于 2017-8-6 12:52 | 只看该作者
suxin1412 发表于 2017-8-3 20:47
接的没问题
PUL端口给步进电机脉冲,一个脉冲能让步进电机转过一个步进角
DIR端口给高低电平,电平不一样 ...

ENA呢  我发现ENA不用接就行 这是为啥呢 为什么还要有个这个接口呢
回复

使用道具 举报

8#
ID:337729 发表于 2018-5-24 23:42 | 只看该作者
楼主还在吗?请问DIR- 和 DIR+分别接什么?51单片机的两个针脚吗?
回复

使用道具 举报

9#
ID:337729 发表于 2018-5-24 23:48 | 只看该作者
long1990 发表于 2017-8-4 10:30
我用的是89c52单片机,没接ENA,简单编了一下,能在一个方向上转动。
代码:
#include "reg52.h"                       

请问 motoA 和 motoB 分别是DIR 和 PUL 吗?
回复

使用道具 举报

10#
ID:337729 发表于 2018-5-26 09:37 | 只看该作者
违规用户名32492 发表于 2017-8-6 12:52
ENA呢  我发现ENA不用接就行 这是为啥呢 为什么还要有个这个接口呢

这个是脱机选项,接和不接不影响电机运动。接了就多一个功能。
回复

使用道具 举报

11#
ID:111634 发表于 2018-5-26 18:41 | 只看该作者
本帖最后由 zl2168 于 2018-5-26 18:43 编辑

实例99  驱动二相步进电机
Proteus仿真一下,确认有效。
实例99 二相步进电机.rar (36.2 KB, 下载次数: 133)

以上摘自张志良编著《80C51单片机仿真设计实例教程——基于Keil CProteus》清华大学出版社ISBN 978-7-302-41682-1内有常用的单片机应用100案例,用于仿真实验操作,电路与程序真实可靠可信可行。书中电路和程序设计有详细说明,程序语句条条有注解。
回复

使用道具 举报

12#
ID:104760 发表于 2018-8-21 21:48 | 只看该作者
也想学一下怎么编程控制
回复

使用道具 举报

13#
ID:395049 发表于 2018-9-7 15:49 | 只看该作者
long1990 发表于 2017-8-4 10:05
我没连接ENA,现在只会简单编写了一下,能转动起来。
代码:
#include "reg52.h"

请问你的公共正端接的5V 是单片机的IO接口么? 如果是的话 任意一个IO都行么
回复

使用道具 举报

14#
ID:395049 发表于 2018-9-7 15:50 | 只看该作者
请问楼主的公共正端接的是单片机的IO接口么 如果是的话 任意个IO口都行么
回复

使用道具 举报

15#
ID:382600 发表于 2018-9-16 09:57 来自手机 | 只看该作者
long1990 发表于 2017-8-4 10:05
我没连接ENA,现在只会简单编写了一下,能转动起来。
代码:
#include "reg52.h"

可以看一下线路是怎么连接的吗?  
回复

使用道具 举报

16#
ID:514573 发表于 2019-6-14 17:27 | 只看该作者
long1990 发表于 2017-8-4 09:54
我也是类似的接法,也想学一下怎么编程控制。

你会了吗
回复

使用道具 举报

17#
ID:517466 发表于 2019-6-15 18:31 | 只看该作者
我发一个实际测试过的,使用的是stc89C52,驱动使用的是uln2003。看程序代码,应该能看懂的。

#include <reg52.h>

unsigned int code F_Rotation[4]={0x01,0x02,0x04,0x08};//正转表格
unsigned int code B_Rotation[4]={0x08,0x04,0x02,0x01};//反转表格

void Delay(unsigned int i)//延时
{
while(i--);
}

main()
{

unsigned int i;
unsigned int count;

count = 0;
while(1)
{
   
   for(count=0;count<2400;count++) {
          for(i=0;i<4;i++)      //4相
             {
             P1=F_Rotation[i];  //输出对应的相 可以自行换成反转表格
             Delay(200);        //改变这个参数可以调整电机转速
                 }
          }
          Delay(20000);
          for(count=0;count<2400;count++) {
              for(i=0;i<4;i++)      //4相
             {
                 P1=B_Rotation[i];  //输出对应的相 可以自行换成反转表格
                 Delay(200);        //改变这个参数可以调整电机转速
                 }
          }
          Delay(20000);
  }
}
回复

使用道具 举报

18#
ID:755259 发表于 2020-5-18 22:52 | 只看该作者
suncat0504 发表于 2019-6-15 18:31
我发一个实际测试过的,使用的是stc89C52,驱动使用的是uln2003。看程序代码,应该能看懂的。

#include
...

这不是4相的m
回复

使用道具 举报

19#
ID:637608 发表于 2021-11-10 09:37 | 只看该作者
zl2168 发表于 2018-5-26 18:41
实例99  驱动二相步进电机
先Proteus仿真一下,确认有效。
以上摘自张志良编著《80C51单片机仿真设计实例 ...

请问这些文件在哪下载呀,想学习学习
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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