- >>兩相步進電機
- >>無刷電機
- >>三相步進電機
- >>行星減速機
- >>直流無刷電機
- >>兩相步進驅(qū)動器
- >>直流無刷驅(qū)動器
- >>三相步進驅(qū)動器
- >>直流無刷伺服驅(qū)動器
- >>韓國GGM電機減速機

深圳市東么川伺服控制技術(shù)有限公司
電話:13316379101
郵箱:1355229533@qq.com
地址:深圳市龍華區(qū)民治街道樟坑社區(qū)青創(chuàng)城A棟B502
步進電機控制之啟停正反轉(zhuǎn)與調(diào)速
發(fā)布時間:2020-11-20 06:25:55
步進電機控制之啟停正反轉(zhuǎn)與調(diào)速

/*設(shè)計說明:步進電機采用四相四拍的工作方
式;Proteus不支持八拍工作模式,該程序在
Keil5下運行,低版本需修改頭文件為:
#include
/*調(diào)試過程:按加速按鍵k1矩形波周期變短,
即輸入步進電機繞組的脈沖變快,電機加速。*/
/*設(shè)計思路:(1)采用對標志位flag1、flag2
的奇偶性判斷啟停與正反轉(zhuǎn);(2)根據(jù)進入定
時器中斷的時間長短實現(xiàn)加減速調(diào)節(jié);(3)中
斷時間長短由按鍵在中斷外對定時時間加減實現(xiàn);
(4)根據(jù)進入定時器中斷的次數(shù)實現(xiàn)對步進電機
單四拍節(jié)拍設(shè)計。*/
#include
#define uint unsigned int
#define uchar unsigned char
sbit k1=P3^4;//加速
sbit k2=P3^5;//減速
bit flag1,flag2;
uchar code tab1[]={0X01,0X02,0X04,0X08};
uchar code tab2[]={0X08,0X04,0X02,0X01};
uint a=3000;
uchar j;
void init_t0();
void init_exint();
void delay_ms(uint z);
void key_scan();
void main()
{
init_t0();
init_exint();
while(1)
key_scan();
}
void init_t0()
{
TMOD=0X01;
TH0=(65536-a)/256;
TL0=(65536-a)%256;
EA=1;
ET0=1;
TR0=1;
}
void init_exint()
{
EA=1;
EX0=1;
EX1=1;
IT0=1;
IT1=1;
}
void delay_ms(uint z)
{
uchar i;
while(z--)
for(i=0;i<120;i++);
}
void key_scan()
{
if(k1==0)
{
delay_ms(5);
if(k1==0)
{
if(a>=1000)
{
a=a-200;
while(!k1);
}
}
}
if(k2==0)
{
delay_ms(5);
if(k2==0)
{
if(a<=5000)
{
a=a+200;
while(!k2);
}
}
}
}
void exint0() interrupt 0
{
flag1=~flag1;
}
void exint1() interrupt 2
{
flag2=~flag2;
}
void timer() interrupt 1
{
TR0=0;
TH0=(65536-a)/256;
TL0=(65536-a)%256;
if(flag1==1)
{
if(flag2==0)
P0=tab1[j];
else
P0=tab2[j];
}
j++;
if(j==4)
j=0;
TR0=1;
}
產(chǎn)品推薦:兩相步進電機
產(chǎn)品推薦:無刷電機
產(chǎn)品推薦:兩相步進驅(qū)動器
產(chǎn)品推薦:直流無刷驅(qū)動器