基于单片机的步进电机控制器设计Word格式文档下载.docx

上传人:b****3 文档编号:7088107 上传时间:2023-05-07 格式:DOCX 页数:40 大小:514.71KB
下载 相关 举报
基于单片机的步进电机控制器设计Word格式文档下载.docx_第1页
第1页 / 共40页
基于单片机的步进电机控制器设计Word格式文档下载.docx_第2页
第2页 / 共40页
基于单片机的步进电机控制器设计Word格式文档下载.docx_第3页
第3页 / 共40页
基于单片机的步进电机控制器设计Word格式文档下载.docx_第4页
第4页 / 共40页
基于单片机的步进电机控制器设计Word格式文档下载.docx_第5页
第5页 / 共40页
基于单片机的步进电机控制器设计Word格式文档下载.docx_第6页
第6页 / 共40页
基于单片机的步进电机控制器设计Word格式文档下载.docx_第7页
第7页 / 共40页
基于单片机的步进电机控制器设计Word格式文档下载.docx_第8页
第8页 / 共40页
基于单片机的步进电机控制器设计Word格式文档下载.docx_第9页
第9页 / 共40页
基于单片机的步进电机控制器设计Word格式文档下载.docx_第10页
第10页 / 共40页
基于单片机的步进电机控制器设计Word格式文档下载.docx_第11页
第11页 / 共40页
基于单片机的步进电机控制器设计Word格式文档下载.docx_第12页
第12页 / 共40页
基于单片机的步进电机控制器设计Word格式文档下载.docx_第13页
第13页 / 共40页
基于单片机的步进电机控制器设计Word格式文档下载.docx_第14页
第14页 / 共40页
基于单片机的步进电机控制器设计Word格式文档下载.docx_第15页
第15页 / 共40页
基于单片机的步进电机控制器设计Word格式文档下载.docx_第16页
第16页 / 共40页
基于单片机的步进电机控制器设计Word格式文档下载.docx_第17页
第17页 / 共40页
基于单片机的步进电机控制器设计Word格式文档下载.docx_第18页
第18页 / 共40页
基于单片机的步进电机控制器设计Word格式文档下载.docx_第19页
第19页 / 共40页
基于单片机的步进电机控制器设计Word格式文档下载.docx_第20页
第20页 / 共40页
亲,该文档总共40页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于单片机的步进电机控制器设计Word格式文档下载.docx

《基于单片机的步进电机控制器设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于单片机的步进电机控制器设计Word格式文档下载.docx(40页珍藏版)》请在冰点文库上搜索。

基于单片机的步进电机控制器设计Word格式文档下载.docx

2.1.1确定步进电机型号及其参数本设计选择型号为36BF003反应式步进电机,其参数如表2-1所示:

表2-136BF003反应式步进电机技术数据

型号

相数

步距角

(/度)

电压

/V

相电流

/A

最大静转矩

(N.m

空载起动频率

/(步

/s)

绕组电阻/Ω

分配方式

外形尺寸/mm

重量/Kg

外径

长度

轴径

36BF003

3

1.5/3

27

1.5

0.078

3100

1.6

三相六拍

36

43

40.2

2

2.1.2电机驱动电路原理

由表2-1可知电机的额定电压是27V,本设计采用单电源功率放大电路驱动步进电机,电路原理图如图2-1所示。

电路中由单片机AT89S51分配的控制脉冲从P0口的P0.0~P0.7输出,经74LS125反相后控制光电开关,光电隔离后,由功率管TIP122将脉冲信号进行电压和电流放大,驱动步进电机的各相绕组。

使步进电机随着不同的脉冲信号分别作正转、反转、加速、减速和停止等动作。

W1、W2、W3分别为电机三相绕阻,RL为绕组内阻,阻值为1.6Ω,100Ω电阻(R1、R2、R3)是一外接电阻,起限流作用,也是一个改善回路时间常数的元件。

VD1、VD2、VD3为续流二极管,使电机绕组产生的反电动势通过续流二极管(VD1、VD2、VD3)而衰减掉,从而保护了功率管TIP122不受损坏。

在100Ω外接电阻(R1、R2、R3)上并联一个200μF电容,可以改善注入步进电机绕组的电流脉冲前沿,提高了步进电机的高频性能。

与续流二极管串联的200Ω电阻(R10、R11、R12)可减小回路的放电时间常数,使绕组中电流脉冲的后沿变陡,电流下降时间变小,也起到提高高频工作性能的作用。

2.3单片机选择及其电路设计

2.3.1单片机的选用

(1)本设计采用AT89S51,它是低功耗、高性能的单片机,其特性如下:

(2)4KB可编程的Flash存储器(可经受1000次的擦除/写入);

(3)全静态工作:

0Hz~24Hz;

(4)1288字节的内存RAM;

(5)32可编程I/O线;

(6)2个16位的定时/计数器;

(7)编程串行通道;

(8)片内振荡器。

2.3.2单片机工作电路设计

(1)电压选择

单片机的工作电压范围为2.7~5.5V,在本设计中的单片机的工作电压是5V。

(2)复位电路

AT89S52单片机的RESET引脚为复位信号输入端,高电平有效,,当振荡器工作时,在此引脚上出现两个机器周期以上的高电平,就可以使单片机复位。

本设计采用TPS3824处理

器监控电路复位,电路原理图如图2-2所示。

TPS3824是一个带有看门狗功能的监控器,在上电期间,监控器REST端向单片机复位引脚(RESET)发出一个复位信号,然后,其内部定时器每延时时间td向单片机发出一个复位信号,因此,在单片机正常工作期间,单片机P0.3口需要在时间t≤td时定期向监控器WDI引脚发出一个正跳变或负跳变以触发监控器定时器复位,以防止单片机被误复位。

当单片机死机无法正常工作时,P0.3无法输出触发监控器定时器复位信号,监控器则向单片机发出复位信号使系统复位,所以,使用TPS3824监控器复位电路具有系统死机自动复位功能。

(3)时钟电路

本系统运行程序不多,速度要求不高,采用外部时钟脉冲,选用ZPA(稳定度为1~9x10-4普通石英晶体振荡器)型12MHz石英晶体振荡器。

其电路原理图如图2-3所示。

如图2-3,时钟电路连接单片机引脚XTAL1和XTAL2向单片机提供时钟脉冲,电路中的电容C1和C2称为负载电容,也可以理解为谐振电容的一部分,两电容并串在电路中取值相同,一般为数pF至数十pF,这里选择30pF。

(4)键盘输入电路

键盘是一组按键的集合,它是最常用的单片机输入设备.操作人员可以通过键盘输入数据或者命令,实现简单的人机通信。

单片机的键盘设计方式有独立式和矩阵式两种,由于本系统键盘由0~9号数字键、正转控制键、反转控制键、停止控制键、加速键和减速键15个按键组

成,通过键盘可以输入电机运行步数、控制电机正转/反转/停止和速度。

系统按键数量较多,为节省I/O口,简化电路,降低成本,本设计采用标准的4*4矩阵式由P1号接入单片机。

电路原理如图2-4所示。

电路中四个电阻起上拉电阻作用。

 

(5)显示电路

本设计采用七个八段数码管显示电机步数,显示步数范围是0~9999999步,由步进电机

原理可知,步数x步距角为电机转角。

一个八段数码管显示速度,编程设定显示范围是1~9,

倍率是100,即实际转速为显示数x100,例如,速度显示1,则电机转速为100r/min。

为简化电路,降低成本,八个八段显示数码管的阳极位段选线并联在一起,由一个8位的P2口控制,形成段选线多路复用。

而各位的共阴极分别8位的P3口控制,实现各位的分时选通,构成一个动态显示器,如图2-5所示。

图中右七个数码管显示步数,左一个数码管显示转速,74LS125为集成四个非门的芯片。

三、软件设计

3.1控制地址分配为方便程序检查和修改,在设计程序之前应对所用到或使用较多数据存储地单元命名标号,本程序数据储存地址命名如表3-1所示。

表3-1数据储存地址命名标号表

名称

号标

地址单元

地址

单元

步数

B

G

H

WB

6

S

1

4

D

7

K

8

Q

Z

9

A

5

量变间中态状下按键

L

3.2主程序设计

为节省单片机程序扫描时间,使用定时器T0中断方式转入控制电机运行,定时器T0定时时间为电机运转“拍数”切换时间,即控制电机的脉冲切换时间,根据步进电机控制原理,改变此定时器定时时间可改变电机转速。

由此定时器定时时间未到时不断进行键盘扫描的输出显示。

时间初值查询表SD_TAB见程序所用到的查询表及其说明部分表4-1;

主程序流程图如图3-1所示。

LOOP:

SB

EQU40H

定义步数百位存储单元

BB

EQU

40H

定义步数千位存储单元

QB

定义步数万位存储单元

定义步数十万位存储单元

SWB

定义步数百万位存储单元

BWB

定义步数个位存储单元

SD

定义电机转速表查询偏移量存储单元

JK

定义电机控制表偏移量存储单元

KONZ

定义输入口按键按下状态暂存单元

KBL

定义输入口按键按下状态中间变量存储单元

SD_TAB:

DB72H,54H,05H,C5H,42H,95H,CEH,FDH,20H,3CH

DBF6H,FBH,FCH,FDH,FEH,FEH,FEH,FEH,FFH,FFH

3.2键盘录入子程序实现功能:

通过扫描键盘,判断是否有键按下,若有键按下则改变相应控制地址单元的内容,为后面的显示和电机控制做准备。

键盘数据录入子程序流程图如图3-2所示;

输入键键号查询表IN_TAB见程序所用到的查询表及其说明部分表4-2;

电机启/停控制和显示段选

码表SRDS_TAB见程序所用到的查询表及其说明部分表4-3;

键盘扫描子程序流程图如图3-2所示。

键盘扫描方法:

由硬件设计可知,键盘是4*4的行、列结构设计,行由P1.0~P1.3口输入,列由P1.4~P1.7口输入,其中行线通过上拉电阻接+5V,平时无按键动作时,行线处于高电平状态,而当有按键按下时,则对应的行线和列线短接,行线电平状态将由与此行线相连的列线电平决定。

因此,其扫描方法是:

先令P1.4列线为低电平,其余三根列线为高电平,读行线状态。

如果行线都为高电平,则这一列线上没有键闭合,接着使下一列线P1.5为低电平,其余列线为高电平,用同样方法检查P1.5列上没无键闭合,依次类推,直到最后一列扫描完成。

KE_LOOP1:

LCALL

KUNM_SUB

再次调用键盘扫描程序

ORL

A,#0FH

键盘输入状态高四位置1

CJNE

A,#0FFH,KE_LOOP1

若(A)=0FFH,键已释放,执行去抖动,否

则转KE_LOOP1再次判断

MOV

R7,#10

延时10ms去抖动

DEL_SUB

调用延时1ms程序

DJNZ

R7,KE_NEXT1

DPTR,#IN_TAB

DPTR指向键号查询表首地址

R7,#0

从0号键开始扫描

KE_LOOP2:

A,R7

取键号

MOVC

A,@A+DPTR

查表取出相应键号状态码

A,KONZ,KE_NEXT2

与输入状态相比较,若

LJMP

KE_NEXT3

相等,则为该号键按下,转取键号

KE_NEXT2:

INC

R7

否则取下一键号

KE_LOOP2

转再次扫描

KE_NEXT3:

取按下键键号

A,#9,KE_NEXT4

若键号=9,转设置步数

B_SET

否则转判断是否<9

KE_NEXT4:

JCB_SET

若键号<9,转设置步数,否则顺序判断

CJNEA,#12,KE_NEXT5

若键号≠12,

LJMPDJ_SET

KE_NEXT5:

否则转电机控制设置

JCDJ_SET

若键号<12,转电机控制设置,否则继续判断

CJNEA,#13,KE_NEXT7

若键号≠13,转减速设置,

则顺序设置加速

MOVA,SD

取当前速度

CJNEA,#7,KE_NEXT6

若当前速度≠7,转速度加1档

LJMPKE_NEXT

否则当前速度为最大值,转子程序返回

KE_NEXT6:

当前速度增加1档

KE_NEXT

转子程序返回

KE_NEXT7:

A,SD

A,#0,KE_NEXT8

若当前速度≠0,转速度减1档

否则当前速度为最小值,转子程序返回

KE_NEXT8:

DEC

当前速度减1档

B_SET:

BWB,SWB

步数十万位移至百万位

SWB,WB

步数万位移至十万位

WB,QB

步数千位移至万位

QB,BB

步数百位移至千位

BB,SB

步数十位移至百位

SRDS_TAB:

DBC0H,F9H,A4H,B0H,99H,92H

DB82H,F8H,80H,90H,1,2,3;

电机启/停控制和显示段选码表

键盘扫描程序代码:

KUNM_SUB:

P1,#0FFH

键盘输入口置1

CLR

P1.4

扫描第一列

A,P1

读入输入状态

SETB

关闭扫描第一列

P1.5

扫描第二列

关闭扫描第二列

P1.6

扫描第三列

关闭扫描第三列

扫描第四列

关闭扫描第四列

RET

子程序返回

3.3显示程序

实现功能:

根据转速控制单元SD和步数控制单元GB(个位)、SB(十位)、BB(百位)、QB(千位)、WB(万位)、SWB(十万位)、BWB(百万位)的内容查询SRKS_TAB取相应显示段码送相应显示位显示。

电机启/停控制和显示段选码表SRDS_TAB见程序所用到的查询表及其说明部分表4-3;

程序流程图如图3-4所示;

8位八段数码管显示方法:

由硬件结构可知,步数显示7位八段数码管和速度显示1位数码管的段选线并联在一起由单片机P2口控制,而各位的共阴极点分别由相应的P3口控制,实现各位的分时选通,构成8位的动态显示。

根据实际情况,每位显示的字符不同,因此软件设计必须采用扫描显示方式,即在每一个瞬间只使某一位显示相应字符。

在此瞬间,段选码由控制P2口输出需显示的段码,位选P3口输出位选码选通该位显示相应字符。

如此轮流,使每一位显示该应显示的字符,并延时一段时间,这里延时3ms,以造成视觉暂留效果。

显示代码如下:

DISP_SUB:

显示子程序

P2,#0FFH

P3,#00H

关显示

R7,#8

设置显示位数

R0,GB

取步数个位显示数字

DPTR,#SRDS_TAB

DPTR指向控制与显示段码表首地址

A,#01H

取步数位显示控制字

PUSH

ACC

保护步数位显示控制字

A,@R0

取步数显示数字

取显示段码

P2,A

送显示

POP

取出位显示控制字

P3,A

打开位显示

DLOOP2:

R6,#3

延时3ms

LCALLDEL_TAB;

DJNZR6,DLOOP2;

判断时是否到,未到刚返回延时,否则往下执行

RLA;

取下一位显示控制字

INCR0;

R0;

指向下一位显示数字存储地址

DJNZR7,DLOOP1;

若(R7)-1=0,八位显示完成,往下执行,否则转显示下一位MOVP2,#0FFH;

MOVP3,#00H;

RET;

DBC0H,F9H,A4H,B0H,99H,92HDB82H,F8H,80H,90H,1,2,3;

电机启/停控制和显示段选码表

3.4电机控制程序

根据地址单元JK的内容控制电机的正转、反转和停止。

单片机输出控制字查询表MQ_TAB见程序所用到的查询表及其说明部分表4-4;

程序流程图如图3-5所示:

电机控制程序代码如下:

KT0_INT:

电机控制程序中断服务程序

DPTR,#SD_TAB

DPRT指向转速查询表首地址

A,SD

取转速查询表偏移量

A,@A+DPTR

取定时器低位初值

TL0,A

装入定时器低位初值

ADD

A,#10

调整转速查询表偏移量,为取T0高位做准备

DA

十进制数调整

取定时器高位初值

TH0,A

装入定时器高位初值

R7,#7

循环7次,分别判断7位步数是否为0

R0,#GB

R0指向步数个位

KLOOP1:

取位步数

A,#0,KNEXT1

若位步数=0,判断下一位,否则转判断电机控制状态

R0

R0指向步数下一位地址

R7,KLOOP1

若(R7)-1=0,则步数每一位均为0,转

KNEXT

程序返回

KNEXT1:

A,JK

取电机控制状态

A,#1,KNEXT2

若电机控制状态=1,电机正转,否则判断是否反转

KNEXT2:

ZZKZ

A,#2,KNEXT

A,KZ

A,#0,KNEXT3

A,#5

KNEXT6;

转电机正转控制

若电机控制状态≠2,电机处于停止状态,

转返回,否则电机

取上一次电机控制表偏移量;

若上一次电机控制表偏移量为不;

则电机控制表偏移量取5

0,转减1,若为0,

KNEXT3:

电机控制表偏移量减1

DNEXT5

转取脉冲输出

ZZKZ:

取上一次电机控制表偏移量

A,#5,KNEXT4

若上一次电机控制表偏移量为不

5,转加1,若为5,

A,#0

则电机控制表偏移量取0

KNEXT5

KNEXT4:

电机控制表偏移量加1

KNEXT5:

KZ,A

保存当前电机控制表偏移量

DPTR,#MQ_TAB

DPTR指向电机控制表首地址

取输出脉冲

P0,A

输出脉冲

R7,#6

步数减1循环6次

R0指向步数个位储存单元

KLOOP2:

A,@R0

A,#0,KNEXT6

若位步数≠0,转位步数-1,否则

@R0,#9

往该位步数存9

R0指向下一位

R7,DLOOP2

若(R7)-1=0,六位判断完成,

百万位减1,否则继

续判断

百万位减1

转程序返回

KNEXT6:

位步数

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2