標題: 步進電機細分問題,求大神指點迷津 [打印本頁]

作者: Talent    時間: 2015-8-7 21:33
標題: 步進電機細分問題,求大神指點迷津

請問這細分表是怎么來的:?????
unsigned char TableA[] = { 0XF7,0XFB,0XF3};         //A線圈細分表
unsigned char TableB[] = { 0XeF,0XdF,0XcF};         //B線圈細分表

程序如下;


*************************************************************************************
*  標題:  步進電機試驗四(采用2細分)                                                                                         *
*                                                                                                                                                                          *
*    通過本例程了解步進馬達使用及驅動程序編寫                                                                                 *
*;   單相四拍通電驅動時序:                                                          *
*;   正轉: 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 38
//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;
                                     
unsigned char TableA[] = { 0XF7,0XFB,0XF3};         //A線圈細分表
unsigned char TableB[] = { 0XeF,0XdF,0XcF};         //B線圈細分表

void delay(int time);

/***************************************
函數功能:產生單相四拍脈沖控制步進機 2細分
**************************************/
void Go()
{        char i ,temp;
     //A
    PH1 = 0;  //PH1為0 則A線圈為反向電流
        for(i = 0; i<3; i++)
        {  temp = P1;
           P1 = TableA[i];
           P1 = P1&temp;
           delay(1);
         }
       

        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線圈為正電流
        for(i = 0; i<3; i++)
        {  temp = P1;
           P1 = TableB[i];
           P1 = P1&temp;
           delay(1);
         }

        delay(speed);
        //B
        PH1 = 1;   //PH1為1 則A線圈為正向電流
        for(i = 0; i<3; i++)
        {  temp = P1;
           P1 = TableA[i];
           P1 = P1&temp;
           delay(1);
         }

        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線圈為反向電流
        for(i = 0; i<3; i++)
        {  temp = P1;
           P1 = TableB[i];
           P1 = P1&temp;
           delay(1);
         }
        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();  //步進電機運行
       
  }

}



作者: Talent    時間: 2015-8-7 21:34
求大神幫忙
作者: Talent    時間: 2015-8-7 22:38
我還想問問,多級細分怎么分??原理是什么??
作者: ludaijin    時間: 2015-11-13 16:42
本論壇真是高手如云啊,讓我們這些新長見識了
作者: minikuba    時間: 2016-1-13 11:57
最近也在看這個代碼。沒有高手能解釋一下嗎??
作者: 3310mad2    時間: 2016-12-5 22:14
我也想知道,高手來幫忙解釋一下




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1