一、步进电机资料
二、驱动电路原理图及资料
芯片资料:ULN2003百度百科
三、代码例程(例程仅供参考)
#include <stc12C5a60s2.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
uint i,j; //定义全局变量,执行电机for循环转动时间需要用到
sbit A1 = P1^0; //定义给步进电机四相连接的IO口
sbit B1 = P1^1;
sbit C1 = P1^2;
sbit D1 = P1^3;
#define Coil_A {A1=1;B1=0;C1=0;D1=0;} //A相通电,其它相断电
#define Coil_B {A1=0;B1=1;C1=0;D1=0;} //B相通电,其它相断电
#define Coil_C {A1=0;B1=0;C1=1;D1=0;} //C相通电,其它相断电
#define Coil_D {A1=0;B1=0;C1=0;D1=1;} //D相通电,其它相断电
#define Stop {A1=0;B1=0;C1=0;D1=0;} //全部断电,停止
uchar Speed=2; //整体调速,数字越小速度越快,而力矩也越小
void Delay1ms() //@11.0592MHz
{
unsigned char i, j;
_nop_();
_nop_();
_nop_();
i = 11;
j = 190;
do
{
while (--j);
} while (--i);
}
void Delay_ms(uint timer)
{
uint i;
for(i=0; i<timer; i++)
Delay1ms();
}
void corotation(void) //正转 子程序 A——D
{
Coil_A
Delay_ms(Speed);
Coil_B
Delay_ms(Speed);
Coil_C
Delay_ms(Speed);
Coil_D
Delay_ms(Speed);
}
void reversal(void) //反转 子程序 D——A
{
Coil_D
Delay_ms(Speed);
Coil_C
Delay_ms(Speed);
Coil_B
Delay_ms(Speed);
Coil_A
Delay_ms(Speed);
}
void main() //主程序
{
Delay_ms(30); //启动前先缓冲一个30ms
while(1) //不断循环
{
for(i=0;i<500;i++) //正转1圈(大概位置,步进电机需要编码盘才能测得比较准一点)
corotation(); //调用正转子函数
Stop //停止
Delay_ms(1000); //延时1s
for(j=0;j<500;j++) //反转1圈(大概位置)
reversal(); //调用反转子函数
Stop //停止
Delay_ms(1000); //延时1s
}
}