ULN2803是8路NPN达林顿连接晶体管系列,特别适用于低逻辑电平数字电路,如:TTL,COMS或PMOS/NMOS,和较高的电压/电流要求之间的接口,广泛应用与计算机、打印机、继电器、灯等类似负载中。所有器件具有集电极开路输出和续流箱位二极管,用于抑制跃变。ULN2803的设计与标准TTL系列兼容。
28BYJ48是一款五线四相八拍步进电机,可以采用4-1-2相驱动。电压为DC5V—DC12V。当对步进电机施加一系列连续不断的控制脉冲时,它可以连续不断地转动。每一个脉冲信 号对应步进电机的某一相或两相绕组的通电状态改变一次,也就对应转子转过一定的角度(一个步距角)。当通电状态的改变完成一个循环时,转子转过一个齿距。 四相步进电机可以在不同的通电方式下运行,常见的通电方式有单(单相绕组通电)四拍(A-B-C-D-A。。。),双(双相绕组通电)四拍(AB-BC- CD-DA-AB-。。。),八拍(A-AB-B-BC-C-CD-D-DA-A。。。)
具体驱动方式如下表,红色为电源引脚,始终接电源
橙 |
黄 |
粉 |
蓝 |
十六制 |
1 |
0 |
0 |
0 |
0x08 |
1 |
1 |
0 |
0 |
0x0c |
0 |
1 |
0 |
0 |
0x04 |
0 |
1 |
1 |
0 |
0x06 |
0 |
0 |
1 |
0 |
0x02 |
0 |
0 |
1 |
1 |
0x03 |
0 |
0 |
0 |
1 |
0x01 |
1 |
0 |
0 |
1 |
0x09 |
电机和驱动板连接示意图:
AVR范例程序如下:
芯片使用ATMega16,晶振使用12M
#include
unsigned char key=0; //按键控制步进电机的方向
unsigned char speed=5; //步进电机的转速
//八拍方式驱动,顺序为A AB B BC C CD D DA
unsigned char clockWise[]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};
void delay(unsigned char z)
{
unsigned char x;
unsigned int y;
for(x=0;x {
for(y=0;y<750;y++)
{
}
}
}
void main(void)
{
unsigned char i;
DDRA=0xff;
PORTA=0xff;
DDRD = 0xff;
PORTD = 0xff;
DDRB = 0xfe;
PINB = 0xff;
key = 1;
PORTA = 0x00;
PORTD = 0x00;
while(1)
{
for(i=0;i<8;i++)
{
key=PINB&0x01;
if(key) //按键未按下,正转
{
PORTA = clockWise;
PORTD = clockWise;
delay(speed);
}
else //按键按下,反转
{
PORTA = clockWise[8-i];
PORTD = clockWise[8-i];
delay(speed);
}
}
}
}
AVR和51的完整源代码可以在附件中下载。
用户447500 2013-10-12 17:09
用户132188 2012-12-20 10:57
用户425037 2012-9-18 18:31