各位前辈,我想写一个用单片机控制步进电机的程序,驱动芯片是ULN2003,步进电机型号是SMR55-4806-A

两个按钮控制,实现的功能是,当一个按钮按下时正转90度,在第一个按钮接通的情况下另一个按钮按下反转90度。不要求转速,但是功能要实现,或者帮我改改程序嘛,谢谢了
#include<reg51.h>
sbit S1=P1^0;
sbit S2=P1^1;
sbit PA=P1^4;
sbit PB=P1^5;
sbit PC=P1^6;
sbit PD=P1^7;
sbit PF=P1^2;

void main()
{
if(S1==0&&S2==1 )

{
PF=0;
PA=1;
PB=1;
PC=0;
PD=0; //P0 口低四位脉冲1100
motor_delay();
PA=1;
PB=0;
PC=0;
PD=1; //P0 口低四位脉冲1001
motor_delay();
PA=0;
PB=0;
PC=1;
PD=1; //P0 口低四位脉冲0011
motor_delay();
PA=0;
PB=1;
PC=1;
PD=0; //P0 口低四位脉冲0110
motor_delay();

}

if(S2==0)
{

PF=1;
PA=0;
PB=1;
PC=1;
PD=0; //P0 口低四位脉冲0110
motor_delay();
PA=0;
PB=0;
PC=1;
PD=1; //P0 口低四位脉冲0011
motor_delay();
PA=1;
PB=0;
PC=0;
PD=1; //P0 口低四位脉冲1001
motor_delay();

}

}

我现在也在搞步进电机驱动的问题。呵呵,希望大家一起交流下。
我现在就是没用驱动芯片,直接用的是3极管驱动的,但是还没成功。
我这个现在的步进电机是A+,A-,B+,B-,就四个脚,其余没什么脚,正在尝试呢。

还有看了你程序,你那PA ,PB,PC,PD,可以直接用P0端口驱动啊! 不要写那么多。

还有开关,按下的时候给个适当延时,比如给个for(i=0;i<20000;i++);这样效果会更好。追问

恩,都差不多了,我写的这个程序不知道哪有问题,在Proteus里面第一个按钮按下后正转了90度,第二个按钮按下后反转了90度,但是如果第一个按钮是闭合的情况再按第二个按钮反转了,但放开过后又正转回去了,不知道是怎么回事,我的步进电机是六个脚的,两根公共端,四根信号线

追答

那不错啊! 有空指导我下! 谢谢!

追问

我还想你指导我下呢

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-05-26
刚做过步进电机的驱动 ,驱动芯片也是ul2003。不用单独写每一个P0管脚,直接赋值给P0就行了,最好先写正反转的编码表,P0的值从编码表里取就行了。

讨个步进电机的程序
有了这些参数,不难设计出控制电路,因其工作电压为12V,最大电流为0.26A,因此用一块开路输出达林顿驱动器(ULN2003)来作为驱动,通过P1.4~P1.7来控制各线圈的接通与切断,电路如图3所示。开机时,P1.4~P1.7均为高电平,依次将P1.4~P1.7切换为低电平即可驱动步进电机运行,注意在切换之前将前一个输出引脚变为高电平。如...

如果用单片机控制ULN2003连接5V直流电机,使其正传和反转,这样的电路图...
ULN2003是单极性的,不能控制正反转,只能控制开合,你可以用三极管焊接一个驱动电路。也可以选择电机驱动芯片比如L293D或者L298N都可以。红外传感器不行,必须选择人体释热传感器,输出就是高低电平。直接接单片机IO口就行。

ULN2003与单片机相连
一般来说,只有 P0 口需要加上上拉电阻。但是,驱动 2003 时,需要单片机输出的高电平电流,已经超出了单片机引脚自身的能力。所以,在连接 2003 的引脚,都必须加上上拉电阻。

步进电机可以直接用单片机驱动吗,还是必须通过驱动器
步进电机一般不可以直接用单片机驱动,原因是单片机端口驱动能力不够。也不一定要用专用驱动器才可以,自己根据使用的步进电机的具体参数做电流和\/或电压扩展也中。

一个单片机可以驱动几个步进电机?
控制5个步进电机是小意思了,原则上单片机的一个I\/O脚就可以控制一个步进电机的一个线圈。5个步进电机,看是n相的。需要的I\/O脚就是5n个。但是单片机引脚是不能直接控制电机的,至少需要ULN2003(7路)或NLUN2803(8路)来驱动,比较合理的电路是单片机先接74HC240(8路反相器),再由74HC240...

如何用单片机实现对四个步进电机的速度控制呢
推荐你使用表控,型号TPC4-4TD就可以满足你的要求。表控可以同时控制4个步进电机,对于你说的速度控制讲解如下:上图是表控的表格设置界面,省去了麻烦的编程,轻松实现步进电机控制。图中,第2行工作模式设置为“脉冲”模式,光标在脉冲模式的第2行时,脉冲频率项及脉冲个数输入项分别显示脉冲个数的...

单片机选型
IO扩展,一般用74HC595就可以了,用三个IO口可以扩展出 NX8个输出口,如果你的单片机自带有SPI功能,程序也会好写的很多。300多个LED,电流不小,你最好再加个ULN2003或者ULN2803来进行驱动,当然,你也可以用三极管驱动,只要需要的比较多。另外,300多个LED,看你电路怎么连接,我假设你是400个LED吧,...

如何使用单片机精确控制步进电机?
如何用单片机控制步进电机 步进电机是机电控制中一种常用的执行机构,它的用途是将电脉冲转化为角位移,通俗地说:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。通过控制脉冲个数即可以控制角位移量,从而达到准确定位的目的;同时通过控制脉冲频率来控制...

如何用单片机控制步进电机步数
如何用单片机控制步进电机 步进电机是机电控制中一种常用的执行机构,它的用途是将电脉冲转化为角位移,通俗地说:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。通过控制脉冲个数即可以控制角位移量,从而达到准确定位的目的;同时通过控制脉冲频率来控制...

如何控制k60使两个步进电机的步数相同
如何用单片机控制步进电机 步进电机是机电控制中一种常用的执行机构,它的用途是将电脉冲转化为角位移,通俗地说:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。通过控制脉冲个数即可以控制角位移量,从而达到准确定位的目的;同时通过控制脉冲频率来控制...

相似回答