红果园之恋

倚天照海花无数,流水高山心自知。

L297、L298驱动步进电机及其测试程序

 

       基于ST公司的两相步进电机驱动芯片L297和L298的步进电机驱动方案,在工业应用中已经非常成熟了。通过Google和百度等搜索引擎,都能搜索到很多资料。这些资料中图文并茂,可以直接拿来使用。

        这几日,忽心血来潮,自己非想倒腾一下,并将它作为自己的技术积累。所以就动手用proteus做了一个仿真电路,用Keil C编译了个测试程序,并实际测试,让电机转了起来。

        电路图如下:



 

        图中U1为L298是为功率放大模块;U2为L297为逻辑控制模块;U3为AT89C2051为控制芯片;其他阻容元件不在赘述。此电路非常简单易用。

        测试程序如下:

 

//P1_0为方向输出端,P1_1为脉冲输出端
//本测试程序运行在8051系列单片机环境下
#include<reg51.h>
#define unit unsigned int

sbit CW=P1^0;
sbit CLK=P1^1;
unit time;
int m;

delay(){
    for(m=0;m<10000;m++){;}
    for(m=0;m<10000;m++){;}
    for(m=0;m<10000;m++){;}
    for(m=0;m<10000;m++){;}
    for(m=0;m<10000;m++){;}
}
void timer0(void) interrupt 1 using 1{
    if (time<=16000) /*脉冲数*/
    {                            
        TR0=0;
        CLK=!CLK;
        for(m=0;m<30;m++)
        {
            ;
        }
    CLK=!CLK;
    time++;
    }
    else {
        TR0=0;
        time=1;
        CW=!CW;      /*改变方向*/
        delay();
    }
    TH0=(65536-1000)/256;
    TL0=(65536-1000)%256;
    TR0=1;
}
void main(void)
{
    time=1;
    TMOD=0x01;
    CW=0;
    CLK=0;
    delay();
    TH0=(65536-1000)/256;
    TL0=(65536-1000)%256;
    EA=1;
    ET0=1;
    TR0=1;
    do {} 
    while (1);
} 

          L297、L298驱动两相步进电机的proteus仿真电路和测试程序打包下载连接如下:

http://bbs.21ic.com/attachment.php?aid=24701&k=d81a4622445286225d686eef6b44b9c3&t=1274774861&fid=32&sid=eccfyKM%2FzugbI%2F92d5kec2yttFivGQBf8VQ9owHJYR2UXVA