步進(jìn)電機(jī)控制實(shí)驗(yàn)
一、實(shí)驗(yàn)?zāi)康?/h2>
1、學(xué)習(xí)步進(jìn)電機(jī)驅(qū)動(dòng)原理;
2、掌握通過CPU控制步進(jìn)電機(jī)的方法。
二、實(shí)驗(yàn)內(nèi)容
1、了解步進(jìn)電機(jī)的運(yùn)行控制;
2、了解步進(jìn)電機(jī)運(yùn)行速度的控制方法;
3、了解步進(jìn)電機(jī)運(yùn)行方向的控制方法。
三、實(shí)驗(yàn)設(shè)備DM2410B十實(shí)驗(yàn)系統(tǒng);PC機(jī);JTTAG仿真器;串口線。
2、軟件:
PC機(jī)操作系統(tǒng)(WINDOWS 2000);
Multi-ICE V2.2.5;
DNW 2410(或超級終端)。
程序解析:
本實(shí)驗(yàn)系統(tǒng)使用5302410的工/0口的GPF的0, 4, 5, 6四個(gè)端口。對應(yīng)的驅(qū)動(dòng)如下:
///////////////////////////////////////////////////////////////////////////////////
// GPF4 GPF0 GPF5 GPF6
//
//A 1 0 0 0
//
//AB 1 1 0 0
//
//B 0 1 0 0
//
//BC 0 1 1 0
//C 0 0 1 0
//CD 0 0 1 1
//D 0 0 0 1
//DA 1 0 0 1
/////////////////////////////////////////////////////////////////
下面的程序段是對各步驅(qū)動(dòng)的設(shè)置:
void Avoid)
{
rGPFDAT= rGPFDAT|0x10;//GPF4=1
rGPFDAT= rGPFDAT&0xfe;//GPF0=0
rGPFDAT= rGPFDAT&0xdf;//GPF5=0
rGPFDAT= rGPFDAT&0xbf;//GPF6=0
}
void B(vvid)
{
rGPFDAT=rGPFDATI0xef;//GPF4=0
rGPFDAT=rGPFDAT|0x1;//GPF0=1
rGPFDAT=rGPFDAT&0xdf;//GPF5=0
rGPFDAT=rGPFDAT&0xbf;//GPF6=0
}
void C(void)
{
rGPFDAT=rGPFDAT&0xfe;//GPF0=0
rGPFDAT=rGPFDAT&0xef;//GPF4=0
rGPFDAT=rGPFDAT|0x0;//GPF5=1
rGPFDAT=rGPFDAT&Oxbf;//GPF6=0
}
void D(void)
{
rGPFDAT=rGPFDAT&0xfe;//GPF0=0
rGPFDAT=rGPPDAT&0xef;//GPF4=0
rGPFDAT=rGPFDAT&0xdf;//GPF5=0
rGPFDAT=rGPFDAT|0x40://GPF6=1
void AB(void)
{
rGPFDAT=rGPFDATI0x10;//GPF4=1
rGPFDAT=rGPFDATI0x1;//GPF0=1
rGPFDAT=rGPPDAT&0xdf;//GPF5=0
rGPFDAT=rGPFDAT&0xbf;//GPF6=0
}
void BC(void)
{
rGPFDAT=rGPFDAT&0xef;//GPF4=0
rGPFDAT=rGPFDATI0x1;//GPF0=1
rGPFDAT=rGPFDATI0x20;//GPF5=1
rGPFDAT=rGPFDAT&Oxbf://GPF6=0
}
Void BC(void)
{
rGPFDAT=rGPFDAT&0xfe;//GPF4=0
rGPFDAT=rGPFDAT&0xef; //GPF0=1
rGPFDAT=rGPFDAT|0x20;//GPF5=1
rGPFDAT=rGPFDAT|0x40;//GPF6=0
}
void DA(void)
{
rGPFDAT=rGPFDATI0x10;//GPF4=l
rGPFDAT=rGPFDAT&0xfe;//GPF0=0
rGPFDAT=rGPFDAT&0xdf;//GPF5=1
rGPFDAT=rGPFDAT|0x40;//GPF6=l
}
下面的程序段通過調(diào)用上面的函數(shù)實(shí)現(xiàn)8拍的驅(qū)動(dòng):
void Moter_ Test(void)
{int z,i,j=7;
int begin,end,direction,x;//direction麥?zhǔn)巨D(zhuǎn)向左句
int time=20;1/time表示延遲時(shí)間,決定速度
Step_Ini t () ; //保護(hù)步進(jìn)電機(jī)與驅(qū)動(dòng)電路
//GPFOW GPF0 [1:0]二01:Output
//GPFOW GPF4 [1:0]二01:Output
// GPFOW GFF5 [1:01=01:Output
//GPFOW CPF6 [1:0]=01:Output
rGPFCON=INkrGPF07N&Oxd5fd;
rGPFCON=rGPFCGNI0x1501;
Uart Printf(“nINPUT DELAY TIME :1一1000:”
time=Uart_GetIntNum();
Uart Printf(“nINPUTDERECTION:I/0:”
direction=Uart _GetIntNum();
if (direction=1)
(
begin=1;
end=8;
x=1;
)
else
begin=8
end=1;
x=1:
Uart_ Printf(“nPRESSANY KEY功STOP.”);
wh ile(!Uart_GetKey())//被PC機(jī)上的任意鍵停止
{
i=begin;
while(!(i=end+x))//是否完成一個(gè)相位循環(huán)
{
Step_8(i);
Delay(time);
i=i十x;
}
Step_Init();//保護(hù)步進(jìn)電機(jī)與驅(qū)動(dòng)電路
Uart_ Printf(“nTEST FINISHED!!”);
}
//*********************************************
//功能:step_8
//名稱:確定各拍的相位
//參數(shù):s
//返回值:void
//**********************************************
void Step_8(int s)//4褶8者
[switch(s)
f
case(1):A(); break;
case(2):AB();break;
case(3):B(); break;
case(4):BC();break;
case(5):C(); break;
case(6):CD();break;
case(7):D(); break;
case(8):DA();break;
注意:不同于使用專用驅(qū)動(dòng)芯片驅(qū)動(dòng)步進(jìn)電機(jī),我們?yōu)榱搜菔掘?qū)動(dòng)步驟采用了通用驅(qū)動(dòng)芯片L293D,同時(shí)驅(qū)動(dòng)的CPU引腳是復(fù)用的。這樣存在一個(gè)問題:當(dāng)步進(jìn)電機(jī)不處在驅(qū)動(dòng)狀態(tài)時(shí)有可能在某一個(gè)相位長時(shí)間加上驅(qū)動(dòng)電流,因?yàn)椴竭M(jìn)電機(jī)沒有旋轉(zhuǎn),阻抗極小,非常容易損壞驅(qū)動(dòng)電路和步進(jìn)電機(jī)。為此,我們在擴(kuò)展板上設(shè)置了步進(jìn)電機(jī)控制開關(guān),進(jìn)行其它實(shí)驗(yàn)時(shí)應(yīng)確保開關(guān)處在。FF的位置,僅當(dāng)驅(qū)動(dòng)步進(jìn)電機(jī)的程序運(yùn)行后才可撥至ON的位置。
四、實(shí)驗(yàn)步驟
1、仔細(xì)閱讀實(shí)驗(yàn)說明部分,熟悉步進(jìn)電機(jī)的原理及驅(qū)動(dòng)機(jī)制;
2、將實(shí)驗(yàn)系統(tǒng)光盤中“ADS實(shí)驗(yàn)指導(dǎo)步進(jìn)電機(jī)驅(qū)動(dòng)實(shí)驗(yàn)”目錄拷貝到本地硬盤,用ADS組件中的CodeWarrior for ARM Developer Suite S具軟件打開其中的MOTER.mcp T -程文件。用實(shí)驗(yàn)一中的方法選用相對地址中的:cat. scf文件;
3、在DebugRel目標(biāo)路徑下編譯源文件。(詳見實(shí)驗(yàn)一),分析并熟悉程序。
4、按實(shí)驗(yàn)二的方法正確連接硬件并打開”Multi-ICE Server“和”AXDDebugger”對CPU進(jìn)行初始化,導(dǎo)入本地硬盤上“ADS實(shí)驗(yàn)指導(dǎo)步進(jìn)電機(jī)驅(qū)動(dòng)實(shí)驗(yàn)”中“MOTERDatalDehugRellmoter.axf“文件或光盤上的實(shí)驗(yàn)項(xiàng)目文件。(詳見實(shí)驗(yàn)一);
5、打開DNW2410. exe并建立PC機(jī)與實(shí)驗(yàn)系統(tǒng)的連接(見實(shí)驗(yàn)二)。運(yùn)行程序并根據(jù)DNW241D.exe串口終端提示進(jìn)行操作。運(yùn)行中首先輸入延遲時(shí)間以決定旋轉(zhuǎn)時(shí)間,然后輸入數(shù)字1或0決定旋轉(zhuǎn)方向。實(shí)驗(yàn)中的運(yùn)行界面如圖14-7:
五、實(shí)驗(yàn)心得與體會(huì)
此次實(shí)驗(yàn)讓我了解了如何使用C語言編程驅(qū)動(dòng)步進(jìn)電機(jī),。掌握通過CPU控制步進(jìn)電機(jī)的方法,步進(jìn)電機(jī)的運(yùn)行控制,步進(jìn)電機(jī)運(yùn)行速度的控制方法,了解步進(jìn)電機(jī)運(yùn)行方向的控制方法。通過看指導(dǎo)書,也讓我熟悉了步進(jìn)電機(jī)的驅(qū)動(dòng)原理,熟悉了ADS實(shí)驗(yàn)環(huán)境的操作流程。
評論
查看更多