兩相4線步進(jìn)電機(jī)驅(qū)動(dòng)
前段時(shí)間在出去買東西的時(shí)候經(jīng)過(guò)一個(gè)廢品收購(gòu)站,看到一位阿姨正在從一臺(tái)什么機(jī)器上面拆零件。具體是什么機(jī)器我也不認(rèn)識(shí),我突然看到她拆下來(lái)一個(gè)圓圓的東西,走進(jìn)一看原來(lái)是一個(gè)電機(jī),有四根線,我當(dāng)時(shí)想肯定是一個(gè)步進(jìn)電機(jī)。雖然年份久遠(yuǎn)但是質(zhì)量看起來(lái)還不錯(cuò),我當(dāng)時(shí)就很喜歡。問(wèn)阿姨這個(gè)多少錢我想買下來(lái)。阿姨說(shuō)十塊錢,一分也不能少。沒(méi)有辦法我就發(fā)十塊錢買下這個(gè)“鐵塊子“!由于時(shí)間的關(guān)系一直沒(méi)有機(jī)會(huì)折騰。今天有點(diǎn)時(shí)間所以就拿出來(lái)研究一下。
經(jīng)過(guò)測(cè)量這是一個(gè)兩項(xiàng)四線的步進(jìn)電機(jī),步進(jìn)角為1.8度。有兩種工作方式。一種是4拍的方式,一種是8拍的方式,4拍方式的時(shí)序如下:
a~ 和b~ 表示反向電流。
ab - a~b - a~b~ - ab~ 為一個(gè)轉(zhuǎn)向。
ab - ab~ - a~b~ - a~b 為反向。
8拍方式的時(shí)序如下:
A B C D E F G H(時(shí)序)
A 1 1 0 0 0 0 0 1
A- 0 0 0 1 1 1 0 0
B 0 1 1 1 0 0 0 0
B- 0 0 0 0 0 1 1 1
我這里用的是8拍的方式。程序:
/***
*******************************************************************
**程序功能:
**芯片型號(hào):STC11F16XE
**晶振頻率:22.1184M
**編寫日期:2010年10月日
**編寫人員:wang QQ:349259818 Email:hongfadg@163.com
**備注說(shuō)明:
*******************************************************************/
//以下為所需的頭文件
//#includeabsacc.h>
//#includestring.h>
//#includestdio.h>
//#include INTRINS.H>
#include reg52.H>
//定義關(guān)鍵字方便使用
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
/*
sbit p10=P1^0;//第一組電機(jī)
sbit p11=P1^1;
sbit p12=P1^2;//第一組使能
sbit p13=P1^3;//第二組電機(jī)
sbit p14=P1^4;
sbit p15=P1^5;//第二組使能
*/
uchar step[]={0x25,0x2d,0x2c,0x2e,0x26,0x36,0x34,0x35};//時(shí)序參數(shù)表
/* 延時(shí)函數(shù)
*******************************************************************
**函數(shù)原型: void delay(void)
**函數(shù)功能:延時(shí)函數(shù)
**輸入?yún)?shù):無(wú)
**輸出參數(shù):無(wú)
**備注說(shuō)明:
*******************************************************************/
void delay(void)
{
unsigned char a,b,c;
for(c=18;c>0;c--)
for(b=19;b>0;b--)
for(a=23;a>0;a--);
}
/* 主函數(shù)
*******************************************************************
**函數(shù)原型:main()
**函數(shù)功能:
**輸入?yún)?shù):無(wú)
**輸出參數(shù):無(wú)
**備注說(shuō)明:完成程序的主要功能
*******************************************************************/
main()
{
unsigned char c;
while(1) //主循環(huán)
{
for(c=0;c8;c++)
{
P1=step[c]; //電機(jī)驅(qū)動(dòng)
delay(); //延時(shí)
}
}
}
評(píng)論