找回密码
 立即注册

QQ登录

只需一步,快速开始

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

求大神帮我写一个程序,很简单的控制步进电机的程序

[复制链接]
跳转到指定楼层
楼主
ID:126618 发表于 2017-5-17 14:17 来自手机 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
10黑币
就是用的这种86步进电机和驱动器,接线也是按照图上接的,共地,PUL+接p1.0,DIR+接p1.1,要求上电后延时一段时间电机以一个速度旋转数圈后,延时一段时间,再以另一个速度反向旋转数圈,然后循环以上动作,程序最好带上详细注释,我想通过修改参数达到我要的具体控制,因为自己没有学过单片机,现在工作需要,所以特来求助,希望前辈们帮帮忙,非常感谢!

我自己是学机械的,这两天也在开始学习单片机,但是路还很长
再次恳求大神帮帮忙,谢谢大家!!

Screenshot_2017-05-17-10-38-35.jpg (38.44 KB, 下载次数: 67)

Screenshot_2017-05-17-10-38-35.jpg
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:186510 发表于 2017-5-17 17:50 | 只看该作者
/*************************************************************************************
*  标题:  步进电机试验一(双极性步进电机)                                                                                         
*                                                                                                                                                                          
*    通过本例程了解步进马达使用及驱动程序编写                                                                                 
*;   单相四拍通电驱动时序:                                                         
*;   正转: A/  B  A  B/
*    反转: B/  A  B  A/                                                                                              
*   
*    UDN2916电流控制真值表:
*          I0    I1        输出电流
*          L            L                  最大
*          H                L                  最大*2/3
*          L                H                  最大*1/3
*     H     H         0                                                                                       *                                                                           
**************************************************************************************/  
#include "reg52.h"

#define speed 2
//Motor
sbit PH1 = P1^0;          //定义管脚
sbit PH2 = P1^1;
sbit I01 = P1^2;
sbit I11 = P1^3;
sbit I02 = P1^4;
sbit I12 = P1^5;



void delay(int time);

/***************************************
函数功能:产生单相四拍脉冲控制步进机
**************************************/
void Go()
{         //A
    PH1 = 0;  //PH1为0 则A线圈为反向电流
    I01 = 0;
        I11 = 0;   //以最大电流输出
       

        PH2 = 0;  //PH2为0 则B线圈为反向电流
        I02 = 1;
        I12 = 1;   //输出0

        delay(speed);
        //0
        PH1 = 0;  //PH1为0 则A线圈为反向电流
    I01 = 1;  //输出0
        I11 = 1;
       

        PH2 = 1;  //PH2为1 则B线圈为正电流
        I02 = 0;  //以最大电流输出
        I12 = 0;

        delay(speed);
        //B
        PH1 = 1;   //PH1为1 则A线圈为正向电流
    I01 = 0;   //以最大电流输出
        I11 = 0;
       

        PH2 = 1;  //PH2为1 则B线圈为正向电流
        I02 = 1;  //输出0
        I12 = 1;
                   ////
        delay(speed);
        //0
        PH1 = 1;   //PH1为1 则A线圈为正向电流
        I01 = 1;
        I11 = 1;
       

        PH2 = 0;   //PH2为0 则B线圈为反向电流
        I02 = 0;
        I12 = 0;

        delay(speed);


       
}
/*******************延时函数****************************/
void delay(int time)
{
  int i,j;

  for(j=0; j <= time; j++)
   for(i =0 ; i <= 120; i++);
}


void main()
{

  while(1)
  {

    Go();  //步进电机运行
       
  }

}

回复

使用道具 举报

板凳
ID:126618 发表于 2017-5-17 21:21 来自手机 | 只看该作者
小润龙 发表于 2017-5-17 17:50
/*************************************************************************************
*  标题:  步 ...

据我现在了解的是控制我的86电机是不需要控制ABCD线圈的吧,只需要两路,一路脉冲,一路方向,这个程序好像不是吧
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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