本帖最后由 腾腾 于 2010-5-20 14:49 编辑
http://user.qzone.qq.com/906436233/blog/1274263473
基于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仿真电路和测试程序打包下载见附件。
|