打印

单片及驱动步进电机出现了点问题请指教

[复制链接]
2243|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
许世霞|  楼主 | 2007-12-19 19:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg51.h> 
#include<intrins.h> 
typedef unsigned char  BYTE;
typedef unsigned int   WORD;
typedef bit            BOOL;
#define M_PORT   P1
code  BYTE MCW[]={1,2}; //{1,3,2}
code  BYTE MCCW[]={2,1}; //{2,3,1}
Delay(WORD ms)
{BYTE i;
 while(ms--)
  {for(i=0;i<100;i++)
   {_nop_();
   }
  }
}
main()
{BOOL Direction;
 BYTE i;
   while(1)
   {if(Direction=1)
      for(i=0;i<2;i++) 
     {M_PORT=MCW;
      Delay(50);
      }
    else
     for(i=0;i<2;i++) 
     {M_PORT=MCCW;
      Delay(50);}
   }
}
硬件电路:单片机的P1.0 P1.1加在ULN2003的一侧,另一侧接两相的步进电机。12V供电。现在问题是我把程序下进去,只是振动,不转动。我的软件仿真没有问题呀。请高手指点

相关帖子

沙发
许世霞|  楼主 | 2007-12-20 16:16 | 只看该作者

帮个忙看过的给点意见

我用的是AT89S52 单片机,我是个新手,很多地方有不明白的地方,现在进行不下去了! 我也不知哪里出现了问题! 有个高手说我的延时有问题我就把延时设置大了!没想到连振都不振了。 按说是很简单的。可是对于新手来说就是感觉比较难的

使用特权

评论回复
板凳
sdqiang| | 2007-12-20 16:33 | 只看该作者

步数不对.

使用特权

评论回复
地板
许世霞|  楼主 | 2007-12-20 18:21 | 只看该作者

哪里不对了!请指出来吧!

身在庐山的人一般都不知道庐山的真面目呀!我就是觉得没有问题呀

使用特权

评论回复
5
他乡人| | 2007-12-21 01:59 | 只看该作者

两相的步进电机,只是振动,不转动

硬件电路:单片机的P1.0 P1.1加在ULN2003的一侧,另一侧接两相的步进电机。22V供电。现在问题是我把程序下进去,只是振动,不转动。我的软件仿真没有问题呀。请高手指点小弟谢了.
主程序如下
org 00h
stop: orl p1,#0ffh ; 步进电机停止
loop:jnb p3.0,for2 ; 如果p3.2按下正转
jnb p3.1,rev2 ; 如果p3.3按下反转
jnb p3.2,stop1 ; 如果p3.4按下停止
jmp loop ;反复监测键盘
for: mov r0,#00h ;正转到tab取码指针初值
for1:mov a,r0 ;取码
mov dptr,#tabla ;
movc a,@a+dptr                              ;10
jz for ;是否到了结束码00h
cpl a ;把acc反向
mov p1,a ;输出到p1开始正转
jnb p3.2,stop1 ; 如果p3.4按下停止
jnb p3.1,rev2 ; 如果p3.3按下反转
call delay ;转动的速度
inc r0 ;取下一个码
jmp for1 ;继续正转
rev:mov r0,#00h ;反转到tab取码指针初值
revs:mov a,r0                              ;20
mov dptr,#tabla ;取码
movc a,@a+dptr
jz rev ;是否到了结束码00h
cpl a ;把acc反向
mov p1,a ;输出到p1开始反转
jnb p3.2,stop1 ; 如果p3.4按下停止
jnb p3.1,rev2 ; 如果p3.3按下反转
call delay ;转动的速度
inc r0 ;取下一个码
jmp revs ;继续反转                        30
stop1:call delay ; 按p3.4的消除抖动
jnb p3.2,$ ; p3.4放开否?
call delay ;放开消除抖动
jmp stop

for2:call delay ; 按p3.2的消除抖动
jnb p3.0,$ ; p3.2放开否?
call delay ;放开消除抖动
jmp for
rev2:call delay ; 按p3.3的消除抖动
jnb p3.1,$ ; p3.3放开否?
call delay ;放开消除抖动
jmp rev

delay:mov r1,#255;步进电机的转速20ms
d1:mov r2,#255
djnz r2,$
djnz r1,d1
ret
tabla:
db 01,02 ;正转表
db 00 ;正转结束
db 02,01 ;反转
db 00 ;反转结束
end

使用特权

评论回复
6
soso| | 2007-12-21 08:10 | 只看该作者

可能的几种状况

  1、驱动频率太高,现象:电机啸叫;
  2、电机相序接线错误,现象:进一步退一步;
  3、烂电机。

使用特权

评论回复
7
tuwen| | 2007-12-21 13:29 | 只看该作者

两相步进电机不能这样驱动

你的硬件方案就是错误的。
两相步进电机的线圈需要有双极性的驱动电流,也就是要有正、反向的驱动电流。一般需用H桥电路。
如果能换四相步进电机,就可以用你这样的方案,只是单片机要再多占用两个口线。

使用特权

评论回复
8
awey| | 2007-12-21 13:59 | 只看该作者

没记错的话四相步进电机其实也是两相的

只是两相6线,驱动电路简单点,可以不用H桥

使用特权

评论回复
9
许世霞|  楼主 | 2007-12-21 14:16 | 只看该作者

7楼8楼注意了!再帮我看看!

我用的步进电机是混合式步进电机57BYG007 网址是www.czxmt.com.你们帮我看看它的接线图我有点不明白我觉得它可以做4相的步进电机使用的! 我没有见过这样的接线圈!当时买的时候就在贺么一种了!所以就买了!以为两相和四相没有太的区别了!一定要帮个忙呀。

使用特权

评论回复
10
tuwen| | 2007-12-21 14:38 | 只看该作者

57BYG007是四相的



 
上面的A图,黑白两线接+12V,其它四根线接ULN2003。
它也可以当成两相的用,但必须要双极性驱动。
 

使用特权

评论回复
11
许世霞|  楼主 | 2007-12-21 16:53 | 只看该作者

谢谢了好心人

使用特权

评论回复
12
龙飞天下| | 2007-12-26 00:18 | 只看该作者

我希望你不要到处分贴。

一件事情在一个贴子里面说。

使用特权

评论回复
13
cwh| | 2007-12-26 23:42 | 只看该作者

欢迎浏览我的步进电机博客

欢迎浏览我的步进电机博客
http://blog.gongkong.com/Index.Asp?Id=12094

使用特权

评论回复
14
cby981541| | 2007-12-31 14:27 | 只看该作者

同意7楼的意见,6楼的意见一般是针对驱动器没有问题的回答

LZ使用2003驱动57系列电机,电源电压又只取了12V。如果电路和程序本身没有问题,这个方案成功的可能性也不大。其原因有:(1)电机工作时需要提供比较大的功率,57系列电机通常工作在DC40V是比较常见的,工作电压高时电机的高频驱动特性和加速特性都比较好;(2)2003作驱动时电流太小,电机驱动器的电压满足正常工作时,如果驱动电流太小也不会转动;(3)同意7楼的说法,正规的步进电机驱动器设计时通常采用H桥(或带H桥的集成模块)驱动,很少采用单片机教材上讲的2003之类驱动方案(这种方案是小孩子做着玩的,其设计出来的方案不能当作产品使用);(4)驱动器一般都带有各种电流电压反馈控制环路,以完成电机可靠运行;(5)如果电机驱动功率较大(50W以上),通常要作散热处理。。。

使用特权

评论回复
15
lhz10213| | 2009-6-24 18:14 | 只看该作者
有没有做电视的遇上这样的问题呀?上怎么解决的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

440

主题

3783

帖子

4

粉丝