欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2529|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)驅(qū)動(dòng)步進(jìn)電機(jī)實(shí)驗(yàn)程序設(shè)計(jì)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:559031 發(fā)表于 2019-6-10 16:02 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
步進(jìn)電動(dòng)機(jī)基本原理實(shí)驗(yàn)
一、實(shí)驗(yàn)要求
1、  編制程序,利用單片機(jī)P1口產(chǎn)生驅(qū)動(dòng)步進(jìn)電動(dòng)機(jī)運(yùn)轉(zhuǎn)的脈沖信號(四相單四拍、四相雙四拍、四相八拍)。
2、  編制程序,實(shí)現(xiàn)步進(jìn)電動(dòng)機(jī)自鎖功能。
3、  編制程序,演示步進(jìn)電動(dòng)機(jī)的步距角。
二、實(shí)驗(yàn)?zāi)康?br /> 1、  了解步進(jìn)電動(dòng)機(jī)的基本結(jié)構(gòu)和工作原理。
2、  掌握步進(jìn)電動(dòng)機(jī)驅(qū)動(dòng)程序的設(shè)計(jì)方法。
3、  掌握外部開關(guān)數(shù)據(jù)的讀入方法。
三、實(shí)驗(yàn)電路及連線
圖4—1
1.機(jī)電平臺的選擇開關(guān)打在步進(jìn)電機(jī)位置。
2.實(shí)驗(yàn)板上的K0~K3 控制運(yùn)行方式(初始K5~K0全置‘0’)。
3.實(shí)驗(yàn)板上P10~P13內(nèi)部已接機(jī)電平臺步進(jìn)電機(jī)的A、B、C、D。
4.開關(guān)部分的電原理圖見實(shí)驗(yàn)板的有關(guān)說明。
四、實(shí)驗(yàn)說明
步進(jìn)電動(dòng)機(jī)又稱為脈沖電機(jī),是工業(yè)過程控制和儀表中一種能夠快速啟動(dòng)、反轉(zhuǎn)和制動(dòng)的執(zhí)行元件。其功用是將電脈沖轉(zhuǎn)換為相應(yīng)的角位移或直線位移。步進(jìn)電動(dòng)機(jī)的運(yùn)轉(zhuǎn)是由電脈沖信號控制的,步進(jìn)電動(dòng)機(jī)的角位移量或線位移量與脈沖數(shù)成正比,每給一個(gè)脈沖,步進(jìn)電機(jī)就轉(zhuǎn)動(dòng)一個(gè)角度(步距角)或前進(jìn)/倒退一步。步進(jìn)電機(jī)旋轉(zhuǎn)的角度由輸入的電脈沖數(shù)確定,所以,也有人稱步進(jìn)電動(dòng)機(jī)為一個(gè)數(shù)字/角度轉(zhuǎn)換器。
當(dāng)某一相繞阻通電時(shí),對應(yīng)的磁極產(chǎn)生磁場,并與轉(zhuǎn)子形成磁路,這時(shí),如果定子和轉(zhuǎn)子的小齒沒有對齊,在磁場的作用下,由于磁通具有力圖走磁阻最小路徑的特點(diǎn),轉(zhuǎn)子將轉(zhuǎn)動(dòng)一定的角度,使轉(zhuǎn)子與定子的齒相互對齊,由此可見,錯(cuò)齒是促使電機(jī)旋轉(zhuǎn)的原因。
四相步進(jìn)電動(dòng)機(jī)以四相單四拍、四相雙四拍、四相八拍方式工作時(shí)的脈沖分配表如表1,表2和表3
表1  四相單四拍脈沖分配表          表2  四相雙四拍脈沖分配表
  
  
A
B
C
D






A
B
C
D
N
1
0
0
0




N
1
1
0
0
N+1
0
1
0
0




N+1
0
1
1
0
N+2
0
0
1
0




N+2
0
0
1
1
N+3
0
0
0
1




N+3
1
0
0
1
表3  四相八拍脈沖分配表
  
  
A
B
C
D
N
1
0
0
0
N+1
1
1
0
0
N+2
0
1
0
0
N+3
0
1
1
0
N+4
0
0
1
0
N+5
0
0
1
1
N+6
0
0
0
1
N+7
1
0
0
1
如步進(jìn)電動(dòng)機(jī)每一相均停止通電,則電機(jī)處于自由狀態(tài);若某一相一直通直流電時(shí),則電機(jī)可以保持在固定的位置上,即停在最后一個(gè)脈沖控制的角位移的終點(diǎn)位置上,這樣,步進(jìn)電動(dòng)機(jī)可以實(shí)現(xiàn)停止時(shí)轉(zhuǎn)子定位。這就是步進(jìn)電動(dòng)機(jī)的自鎖功能。當(dāng)步進(jìn)電機(jī)處于自鎖時(shí),若用手旋轉(zhuǎn)它,感覺很難轉(zhuǎn)動(dòng)。
本實(shí)驗(yàn)用撥動(dòng)開關(guān)K0~K3來確定步進(jìn)電動(dòng)機(jī)的工作方式(表4)。
表4  步進(jìn)電動(dòng)機(jī)工作方式(X代表任意邏輯)
  
  
K3
K2
K1
K0
四相單四拍
0
0
0
1
四相雙四拍
0
0
1
0
四相八拍
0
1
0
0
鎖定功能
1
0
0
0


#include <reg52.h>
#include <intrins.h>

#include "main.h"

#define        uchar        unsigned char
#define uint        unsigned int
/******************************************/
/*
sfr P1ASF     = 0x9D;  
sfr ADC_CONTR = 0xBC;
sfr ADC_RES   = 0xBD;   
sfr ADC_RESL  = 0xBE;

//                                                                7       6      5       4         3      2    1    0   Reset Value
//sfr ADC_CONTR = 0xBC;                ADC_POWER SPEED1 SPEED0 ADC_FLAG ADC_START CHS2 CHS1 CHS0 0000,0000        //AD ×a»»¿ØÖƼÄ′æÆ÷
#define ADC_OFF()        ADC_CONTR = 0
#define ADC_ON                (1 << 7)
#define ADC_90T                (3 << 5)
#define ADC_180T        (2 << 5)
#define ADC_360T        (1 << 5)
#define ADC_540T        0
#define ADC_FLAG        (1 << 4)   
#define ADC_START        (1 << 3)   
#define ADC_CH0                0
#define ADC_CH1                1
#define ADC_CH2                2
#define ADC_CH3                3
#define ADC_CH4                4
#define ADC_CH5                5
#define ADC_CH6                6
#define ADC_CH7                7
*/
#define        uchar        unsigned char
#define uint        unsigned int

uchar KEY,TC,BPC;

/**********************************************/

void Delay_Us(void)   
{_nop_(); _nop_();}                                

sfr ISP_CONTR  = 0xC7;
void ResetKey_Download()
        {
                if ((PCON & 0x10) == 0)
                {   
                     
                        PCON = PCON | 0x10;
                                ISP_CONTR = 0x60;  
                }
        else
                {
                        PCON = PCON & 0xef;
                }
        }

//---------------------


uint8_t KEY_Input(void)
{
uint8_t buffer;
DATA=0xff;
IN_EN();
Delay_Us();
Delay_Us();
buffer=DATA;
IN_NEN();
return buffer;

}

// ¶Ë¿ú 3õ ê1»ˉ
void Init(void)
{
IN_NEN();
DATA=0;                        // P0
LED_DATA_EN();
LED_DATA_NEN();
P3=0XFF;        //
P1=0XFF;        //  
P2=0X00;

}


/*******************************/

void MCU_Init(void)
{
TMOD=0x11;
EA=1;
ET0=1;
ET1=1;
TH1=0xEE;                  //5ms  (11.0592M)
TL1=0x00;
TR1=1;

}



/*******************************/
//*ËÄÏàËÄÅÄ
void D4P4()
{
    BPC++;
if (BPC==0x05) BPC=0x01;
  switch(BPC)
  {        case 0x01:  BA=1;BB=0;BC=0;BD=0;break;
        case 0x02:BA=0;BB=1;BC=0;BD=0;break;
        case 0x03:BA=0;BB=0;BC=1;BD=0;break;
        case 0x04:BA=0;BB=0;BC=0;BD=1;break;
        default: BPC=0x0;

    }
        }
/*******************************/
//*ËÄÏàË«ËÄÅÄ
void D4SP4()
{        
    BPC++;
if (BPC==0x05) BPC=0x01;
          switch(BPC)
  {        case 0x01: BA=1;BB=1;BC=0;BD=0;break;
        case 0x02:BA=0;BB=1;BC=1;BD=0;break;
        case 0x03:BA=0;BB=0;BC=1;BD=1;break;
        case 0x04:BA=1;BB=0;BC=0;BD=1;break;
        default: BPC=0x0;

    }
}
//*ËÄÏà°ËÅÄ
void D4P8()
{  
   BPC++;
   if (BPC==0x09) BPC=0x01;
  switch(BPC)
  {        case 0x01:BA=1;BB=0;BC=0;BD=0;break;
        case 0x02:BA=1;BB=1;BC=0;BD=0;break;
        case 0x03:BA=0;BB=1;BC=0;BD=0;break;
        case 0x04:BA=0;BB=1;BC=1;BD=0;break;
        case 0x05:BA=0;BB=0;BC=1;BD=0;break;
        case 0x06:BA=0;BB=0;BC=1;BD=1;break;
        case 0x07:BA=0;BB=0;BC=0;BD=1;break;
        case 0x08:BA=1;BB=0;BC=0;BD=1;break;
        default: BPC=0x0;

    }
        }

//
void LOCK()
{        BA=1;BB=0;BC=0;BD=0;}
/******************************/

void Timer1_ISR(void)interrupt 3    //f=5ms
{ TR1=0        ;
TH1=0xEE;        
TL1=0x00;
TC++;
if (TC==50)
{ TC=0x00;
  switch(KEY)
  {        case 0x01:D4P4();break;                  //K0=1 ;
        case 0x02:D4SP4();break;          //K1=1
        case 0x04:D4P8();break;                 //K2=1
        default:LOCK();               
  }
  }
TR1=1;
}

void main(void)
{ResetKey_Download();     
BPC=0x00;
Init();
MCU_Init();
while(1)
  {
   KEY=KEY_Input();
  }
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表