在51单片机中,如何用一个按键实现步进电机的正反转?驱动芯片用的是ULN2003A

//实现功能:开发板上电时电机不转,按一下按键SW20时正转,在按一下按键SW20时反转
#include<reg52.h>
sbit key=P1^4;
unsigned char i=0;

void delay1(unsigned int z)//去抖动的延时函数
{
unsigned int x,y;
for(x=z;x;x--)
for(y=110;y;y--);
}

void delay(void)//电机的延时函数
{
int k;
k=220;//转速比较快
while(k--);
}

void scan()
{
if(key==0)
{
delay1(5);
if(key==0)
{
while(!key);
i++;
}
}
return;
}
void main()
{
P1=0xff;
P0=0xff;
while(1)
{
scan();
if(i==1)
{
P0=0x00;
delay1(2);

P0=0xfc;
delay();
P0=0xf9;
delay();
P0=0xf3;
delay();
P0=0xf6;
delay();
}
if(i==2)
{
i=0;
P0=0x00;
delay1(2);

P0=0xfc;
delay();
P0=0xf6;
delay();
P0=0xf3;
delay();
P0=0xf9;
delay();
}
}
}
这是我写的程序,实现不了,希望大家帮助

第1个回答  2011-02-25
在程序里定义一个位变量flag,按下按键时对它取反,若flag为1则正转,为0则反转,就可以了追问

电机老转着转着卡住了,怎么个情况啊

追答

驱动时序对了吗?速度是不是太快了?驱动电路有没有问题?又或者是程序的问题....

追问

void delay(void)//电机的延时函数
{
int k;
k=220;//转速比较快
while(k--);
}
就是这个频率啊,不知道啊,我想问问,步进电机的初始化,给P0口初始化是些P0=0xff,还是P0=0x00啊

追答

QQ278915600

本回答被提问者采纳

在51单片机中,如何用一个按键实现步进电机的正反转?驱动芯片用的是ULN2...
在程序里定义一个位变量flag,按下按键时对它取反,若flag为1则正转,为0则反转,就可以了

ULN2003A 是什么芯片?ULN2003A 芯片工作原理,一文全部带你搞定_百度...
ULN2003A应用于多种场景,例如作为步进电机驱动器,连接继电器,或作为继电器驱动器。在步进电机驱动器中,连接2个端口电压是5Volt和12V以及四个电阻,一个齐纳二极管。ULN2003(高压大电流达林顿晶体管阵列)\/MC1413的四线连接是一个7位50V500mA TTL输入NPN达林顿驱动器,这足以控制诸如KP4M4-001之类的四相...

我的一个51单片机 ULN2003A驱动5线4相的步进电机 找了半天还是不知道哪...
电机驱动有讲究的,最好的办法就是用示波去去跟踪脉冲,看你是想走八拍的,如果你没做过,可以先走4拍试试,如果有脉冲,你就看一下是不是频率太高了,来不及反应。

能跟我说下ULN2003A的详细工作原理吗?
回过头再看一下当ULN2003A的输入电压是高电平时,由于OUT相当于是接地,因此步进电机的的驱动部分的电是接到了地。输入电压按一定方式的交替变化,可实现步进电机的转动。从3、4两点来看,可以把ULN2003A理解为一个开关,使步进电机根据输入IN脚的电压,决定是否与地相连。至于COM管脚的作用,它并不是为OU...

ULN2003A可不可以驱动小功率步进电机(四相五线),其原理是什么?
可以的。ULN2003内部是达林顿管结构,进行电流放大。最高电压50V,最大电流500MA,一般用来驱动继电器、步进电机。没有什么原理了,里面就是三极管的。你在输入送低电平,输出就是高电平。相当于非门。2003是7个通道的,如果不够可以选2803,它是8个通道的,电气参数一样。

顺日半导体: ULN2003A-达林顿驱动芯片
顺日半导体的ULN2003A是一款独特的达林顿驱动芯片,集成七个独立的达林顿管驱动单元,适用于高耐压和大电流应用。电路内含续流二极管,适合驱动继电器、步进电机等电感性负载,单个达林顿管提供500mA的集电极电流,串联多个可达更高输出能力。此芯片广泛用于继电器驱动、照明驱动、显示屏驱动(LED)及步进电机驱动...

用单片机控制步进电机,用的是芯片ULN2003A,单机可以运转,但电路方面还...
4mA的电流,是很难让电机转动的。如果你写程序有点功底的话就取消R1--R4,假若你软件功底一般的话就把R1--R4改为30欧姆左右。(此电路中单片机出高电平时对应的绕组得电,你的软件要与之对应)

『单片机毕业设计』「斯塔克电子」基于51单片机三层电梯控制系统-仿真...
独立按键(9个)用于控制电梯门开关和楼层选择;供电电路为系统提供电源。输出部分包括五部分:ULN2003A四项步进电机及驱动模块模拟电梯门开关;另一组ULN2003A四项步进电机及驱动模块模拟电梯上下行;数码管显示当前楼层;LED指示灯指示电梯上下行状态;蜂鸣器在重量超过设定值时进行报警。

电机驱动电路用L298N和ULN2003A有什么不同呢?哪个更好一些呢?
正反转的选择引脚,这些引脚可以用TTL信号来驱动,也就是说可以用单片机来控制。Uln2003A是一个达林顿管阵列,有7对输入输出,可以放大信号,将单片机输出的TTL信号放大到可以驱动马达转动的电流强度。综合两种都应该配合单片机用。至于电压的大小问题,建议你到网上下载相应IC的规格书看,很详细。

请问能用ULN2003A控制24V的步进电机吗???控制器是AT889S52单片机。步进...
完全可以的哦 不用耦合的 ULN2003的 IN端接单片机的引脚 OUT步进电机 2003的公共端COM接到24v 这样就可以控制了的 2003本来是个复合的达林顿管子 内部就相当于耦合了 专门可以用来驱动低于50V的负载的 你找个ULN的数据手册看看典型应用就知道怎么用了 ...

相似回答