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仿真电路和测试程序打包下载连接如下: