打印

步进电机的实现

[复制链接]
3354|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
步进电机将电脉冲信号转变成角位移,实质上是一种数字/角度转换器。
步进电机区别于其他控制电机电大的特点是:它是通过输入脉冲信号来进行控制的,即电机的总转动角度由输入脉冲数决定,而电机的转速由脉冲信号频率决定。电路图如下
一:步进电机系统单片机及键盘部分电路图

步进电机系统脉冲分配与驱动部分电路图

程序流程图
[localimg=168,150]3[/localimg]
程序
******************************************************************************
程序功能为通过按键控制步进电机转动控制,按键的识别采用行列扫描,51单片机的P2口用于对步进电机驱动芯片STK672-0的控制以及模式设定。四个按键功能分别为
*******************************************************************************
//位定义
M1  BIT  P2.0                               ;相激励位
M2  BIT  P2.1
M4  BIT  P2.2                               ;转向轨迹位
M5  BIT  P2.3
EN   BIT  P2.4                              ;电机脱机位
CWB  BIT  P2.5                              ;转向位
RET  BIT  P2.6                              ;归零位
CLK  BIT  P2.7                              ;时钟位
CNTER0  DATA  30H                       ;20ms软件延时用变量
CNTER1  DATA  31H
KEYCODE DATA  32H                       ;按键代码值存放单元
SCANCODE DATA  33H                      ;按键扫描代码值存放单元
ORG  0000H
LJMP  MAIN                                 
ORG  000BH
LJMP  T0
;主程序开始,,以下为程序中变量的初始化设定
MAIN: MOV  SP,#60H
         MOV  CNTER0,100            ;软件延时变量赋初值
         MOV  CNTER1, 10
         MOV  TMOD,#01H            ;定时器0方式0工作
         SETB  EA                      ;定时器中断设定
         SETB  ET0
         CLR   M1                      ;两相激励
         CLE   M2
         SETB  M4                      ;环形转向轨迹
         SETB  M5
         CLR   EN                      ;切断驱动输出,步进电机脱机
         CLR   RET                     ;归位输入无效
         SETB  CWB                     ;初始设定电机顺时针方向转动
;START程序段为一个循环过程,通过按键判断,电机按照相应按键确定的轨迹运行。
START: LCALL  KEYSCAN              ;调用键盘扫描函数
         MOV  A, KEYCODE            ;获得键值
         CJNE  A, #11H,NEXT1         ;启动键判断,否则另行判断
         SETB  EN                       ;启动键子程序
         SETB  TR0                              
         LJMP  EXIT
NEXT1: CJNE  A, #21H,NEXT2        ;停止键判断,否则另行判断
         CLR   TR0
         CLR   EN
         LJMP  EXIT
NEXT2: CJNE  A, #41H,NEXT3         ;转向键判断,否则另行判断
         CPL   CWB
         LJMP  EXIT
NEXT3: CJNE  A,#81H, EXIT           ;归位键判断,否则转回START
         SETB  RET
         LCALL  DELAY
CLR  RET
EXIT:   LJMP   START
         
;键盘扫描子程序
KEYSCAN:
        MOV  P1,#0F0H                     ;P1口低四位拉低扫描键盘
MOV  A,P1                    ;读取键盘状态
ANL  A, #0F0H
CJNE A, #0F0H, RESCAN       ;判断有无键按下,有键按下则延时去抖动再扫
MOV  KEYCODE,#0FFH                    ;没有按键按下,返回
LJMP EXIT002
RESCAN:LCALL DELAY300                       ;延时去抖动
MOV A ,P1
ANL A, #0F0H
CJNE A, #0F0H, KEYPROC                    ;转到判断按键
MOV  KEYCODE,#0FFH                    ;是抖动,返回
LJMP EXIT002
;按键处理函数
KEYPROC:MOV R4, #04H            ;
MOV SCANCODE, #0FEH
MOV A, SCANCODE
REKEYPROC:                      ;四次行扫描
MOV P1, A
MOV A, P1
ANL A, SCANCODE
CJNE A, SCANCODE, KEYVALUE
MOV A, SCANCODE
RL  A
MOV SCANCODE, A
DJNZ R4, REKEYPROC
RET
KEYVALUE:                 ;获得按键代码值
CPL  A  
MOV KEYCODE , A
RET
EXIT002:RET
;定时器0中断服务子程序                       
;定时10ms,产生20ms周期时钟,50Hz
TIMER0:MOV  TH0, #0D8H            ;重装定时初值
         MOV   TL0, #0F0H
        CPL  CLK                       ;CLK翻转
;软件延时,用于消除按键抖动
DELAY:                                ;软件延时约20ms
DJNZ CNTER0,DELAY300
MOV CONTER0,100
DJNZ CNTER1,DELAY300
MOV CNTER1,10
RET

相关帖子

沙发
tianli1980| | 2012-4-13 16:45 | 只看该作者
实际工作中的步进电机要考虑到速度的控制,楼主能不能给简单介绍一下。

使用特权

评论回复
板凳
jayy| | 2012-4-13 18:37 | 只看该作者
过来看下 谢谢楼主分享

使用特权

评论回复
地板
jayy| | 2012-4-13 18:37 | 只看该作者
楼主资料蛮多的

使用特权

评论回复
5
YULINGLONG0555| | 2012-5-3 15:34 | 只看该作者
刚开始学习。感谢楼主

使用特权

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

本版积分规则

个人签名:好好学习,天天向上!

519

主题

4195

帖子

31

粉丝