导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→初学者:步进电机控制!多谢![009423]

 *第7467篇: 初学者:步进电机控制!多谢!

  
楼 主:009423 2003年1月6日20:55
 初学者:步进电机控制!多谢!
我现在需要用单片机控制步进电机,我的方案是:单片机的p0、p1控制驱动器,然后控制步
进电机,其接线方法是p0.0给驱动器一个脉冲,p0.1接驱动器的方向控制,打我无论怎样调
整脉冲的频率,步进电机总是运行的不很流畅,总是一顿一顿的运行!不能像直流电机一样
一上电就很流畅的运行?请问为什么!?还是步进电机就是这样运行的!?热切盼望高手的
回复!多谢!
  
2楼:a12345678 2003年1月6日21:32
 回复步进电机控制
估计速度过高失步,或是负载较重而驱动方式不对.
  
3楼:tm1300 2003年1月7日15:15
 我来回答你
单片机控制步进电机,首先要判断是电流驱动型电机,还是电压驱动型电机;
其次,你的电机是否需要扩展电机驱动芯片,否则,驱动能力肯定不够;
再次,给电机的脉冲频率不可过高,否则会产生失步现象。

如果都注意到了,那么,查看你的程序:在P0口和P1口切换时,你的电机磁场脉拍是否正
确。举例:A->AB->B->BA'->A'->A'B'->B'-B'A->A 整个过程中,你给电机的脉冲是否遵循
了以上规律。肯定是你在切换时给电机的脉冲出了问题。细查!

  
4楼:tm1300 2003年1月7日15:25
 重新回答
我仔细看了你的说法,你这么做肯定有问题,你这个过程中其实有个停顿过程,你将脉冲周
期变长,就会发现了。你如果是两芯驱动的话,没有方向控制的,只要把重复几个脉拍在两
个驱动引脚上交换输出就行了。
  
5楼:009423 2003年1月8日15:24
 高手请看!
你说的我知道!我的电机有配套的驱动器!详细情况在这上边也说不清!我用的电机和驱动
器都在这个网站上!  <a href=http://www.startsh.com target=_blank>    </a>  ,型号为:17s101,驱动器为:SH-2H042Ma,
我现在的问题是;我按网站所说的来控制电机,但为什么总是不能换向,往各位高手予以解
决!多谢了!我所用的程序为:       
       MOV R0, #100
       SETB    P0.1
LOOP1: CLR     P0.0
       ACALL   DEL1
       SETB    P0.0
       ACALL   DEL1
       DJNZ    R0, LOOP1
      

       MOV     R0,#100
       CLR     P0.1
LOOP:  CLR     P0.0
       ACALL   DEL1
       SETB    P0.0
       ACALL   DEL1
       DJNZ    R0,LOOP
       

DEL1:  MOV     A,#82
LOOP2: DEC     A
       JNZ     LOOP2
       RET

DEL3:  MOV     R3,#200
L1:    MOV     R4,#200
L2:    MOV     R5,#200
L3:    NOP
       NOP
       DJNZ    R5,L3
       DJNZ    R4,L2
       DJNZ    R3,L1
       RET
       END

  
6楼:microcomputer 2003年1月8日15:51
 这样试试.

       MOV R0, #100
       SETB    P0.1
LOOP1: CLR     P0.0
       ACALL   DEL1
       SETB    P0.0
       ACALL   DEL1
       DJNZ    R0, LOOP1
      

       MOV     R0,#100
       CLR     P0.1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
       ACALL   DEL1         ;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 
LOOP:  CLR     P0.0
       ACALL   DEL1
       SETB    P0.0
       ACALL   DEL1
       DJNZ    R0,LOOP
       

DEL1:  MOV     A,#82
LOOP2: DEC     A
       JNZ     LOOP2
       RET
       END

  
7楼:009423 2003年1月8日17:00
 情况是这样的!
电机先正向转了100个脉冲的距离!但反向却转了几圈,请问为什么!?还有就是如果我仅
需电机正传一次,然后翻转一次,然后电机停止运转,在程序里该加一个什么标志或命令!
我现在的情况是电机一直运转!除非断电!多谢了!
  
8楼:tm1300 2003年1月14日12:23
 这样改
不知道你的问题解决了没有,如果你是用的micro老兄的程序,那不妨这么改
START: MOV R0, #100
       SETB    P0.1
LOOP1: CLR     P0.0
       ACALL   DEL1
       SETB    P0.0
       ACALL   DEL1
       DJNZ    R0, LOOP1
      

       MOV     R0,#100
       CLR     P0.1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
       ACALL   DEL1         ;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 
LOOP:  CLR     P0.0
       ACALL   DEL1
       SETB    P0.0
       ACALL   DEL1
       DJNZ    R0,LOOP
;------------------------       
       LJMP $            ;停止运行
DEL1:  MOV     A,#82
LOOP2: DEC     A
       JNZ     LOOP2
       RET
       END
如果要继续,可以将停止语句该为:LJMP START

  
9楼:009423 2003年1月20日14:40
 请你看一下!我的电路是不是有问题?
我在程序中加入了ljmp  $,但我的步进电机是这样运行的,先正传100个脉冲,再反转100个
脉冲,有时候是几圈,但就是不停下来,一直在那儿不停的正反转,直到断掉电源!请问什
么原因?是不是和复位电路有关系!??
  
10楼:tm1300 2003年1月20日14:53
 也有可能,这么写再试试
       org 0000H
       LJMP START
 
      org 0030H
START: MOV R0, #100
       SETB    P0.1
LOOP1: CLR     P0.0
       ACALL   DEL1
       SETB    P0.0
       ACALL   DEL1
       DJNZ    R0, LOOP1
      

       MOV     R0,#100
       CLR     P0.1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
       ACALL   DEL1         ;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 
LOOP:  CLR     P0.0
       ACALL   DEL1
       SETB    P0.0
       ACALL   DEL1
       DJNZ    R0,LOOP
;------------------------       
       LJMP $            ;停止运行
DEL1:  MOV     A,#82
LOOP2: DEC     A
       JNZ     LOOP2
       RET
       END
如果要继续,可以将停止语句该为:LJMP START


>>>>>>对该主题发表你的看法

本主题贴数10,分页: [第1页]


[上一篇主题]:初学者:pcb制作

[下一篇主题]:关于62256地问题