标题: 怎样用51单片机接两相步进电机驱动器来控制步进电机? [打印本页]

作者: 违规用户名32492    时间: 2017-8-3 13:01
标题: 怎样用51单片机接两相步进电机驱动器来控制步进电机?
怎样用51单片机接两相步进电机驱动器来控制步进电机?
我现在是ENA+ DIR+ PUL+ 共阳接+5v     ENA- DIR- PUL-每个接一个单片机IO口就行吗    然后这三个口分别怎么编程控制呢


作者: suxin1412    时间: 2017-8-3 20:47
接的没问题
PUL端口给步进电机脉冲,一个脉冲能让步进电机转过一个步进角
DIR端口给高低电平,电平不一样使电机转动方向不一样

作者: long1990    时间: 2017-8-4 09:54
我也是类似的接法,也想学一下怎么编程控制。
作者: long1990    时间: 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;                         
        }
}
作者: long1990    时间: 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;                         
        }
}
作者: 违规用户名32492    时间: 2017-8-6 12:51
long1990 发表于 2017-8-4 10:30
我用的是89c52单片机,没接ENA,简单编了一下,能在一个方向上转动。
代码:
#include "reg52.h"                       

嗯 我发现确实不用接ENA 不知道为什么  我用的57  脉冲最长延时1ms,再短它就好像反应不过来了,也有点发热
作者: 违规用户名32492    时间: 2017-8-6 12:52
suxin1412 发表于 2017-8-3 20:47
接的没问题
PUL端口给步进电机脉冲,一个脉冲能让步进电机转过一个步进角
DIR端口给高低电平,电平不一样 ...

ENA呢  我发现ENA不用接就行 这是为啥呢 为什么还要有个这个接口呢
作者: 流觞曲水    时间: 2018-5-24 23:42
楼主还在吗?请问DIR- 和 DIR+分别接什么?51单片机的两个针脚吗?
作者: 流觞曲水    时间: 2018-5-24 23:48
long1990 发表于 2017-8-4 10:30
我用的是89c52单片机,没接ENA,简单编了一下,能在一个方向上转动。
代码:
#include "reg52.h"                       

请问 motoA 和 motoB 分别是DIR 和 PUL 吗?
作者: 流觞曲水    时间: 2018-5-26 09:37
违规用户名32492 发表于 2017-8-6 12:52
ENA呢  我发现ENA不用接就行 这是为啥呢 为什么还要有个这个接口呢

这个是脱机选项,接和不接不影响电机运动。接了就多一个功能。
作者: zl2168    时间: 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案例,用于仿真实验操作,电路与程序真实可靠可信可行。书中电路和程序设计有详细说明,程序语句条条有注解。

作者: LWSZ    时间: 2018-8-21 21:48
也想学一下怎么编程控制
作者: izumisakai1    时间: 2018-9-7 15:49
long1990 发表于 2017-8-4 10:05
我没连接ENA,现在只会简单编写了一下,能转动起来。
代码:
#include "reg52.h"

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

作者: izumisakai1    时间: 2018-9-7 15:50
请问楼主的公共正端接的是单片机的IO接口么 如果是的话 任意个IO口都行么
作者: 111252    时间: 2018-9-16 09:57
long1990 发表于 2017-8-4 10:05
我没连接ENA,现在只会简单编写了一下,能转动起来。
代码:
#include "reg52.h"

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

作者: 顾佳健    时间: 2019-6-14 17:27
long1990 发表于 2017-8-4 09:54
我也是类似的接法,也想学一下怎么编程控制。

你会了吗
作者: suncat0504    时间: 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);
  }
}
作者: 3567    时间: 2020-5-18 22:52
suncat0504 发表于 2019-6-15 18:31
我发一个实际测试过的,使用的是stc89C52,驱动使用的是uln2003。看程序代码,应该能看懂的。

#include
...

这不是4相的m
作者: 飞天芭蕾    时间: 2021-11-10 09:37
zl2168 发表于 2018-5-26 18:41
实例99  驱动二相步进电机
先Proteus仿真一下,确认有效。
以上摘自张志良编著《80C51单片机仿真设计实例 ...

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




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1