没有合适的资源?快使用搜索试试~ 我知道了~
用单片机控制步进电机课程设计.doc
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 8 浏览量
2022-07-08
12:11:17
上传
评论
收藏 273KB DOC 举报
温馨提示
试读
27页
用单片机控制步进电机课程设计
资源推荐
资源详情
资源评论
用
单
片
机
控
制
步
进
电
机
2006-4-9 http://www.mcustudio.com 平凡
步进电机是机电控制中一种常用的执行机构,它的用途是将电脉冲转化为角位移,通俗地说:当步
进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。通过控
制脉冲个数即可以控制角位移量,从而达到准确定位的目的;同时通过控制脉冲频率来控制电机转动的速度
和加速度,从而达到调速的目的。
一、步进电机常识
常见的步进电机分三种:永磁式(PM),反应式(VR)和混合式(HB),永磁式步进一般为两相,
转矩和体积较小,步进角一般为 7.5 度 或 15 度;反应式步进一般为三相,可实现大转矩输出,步进角一
般为 1.5 度,但噪声和振动都很大。在欧美等发达国家 80 年代已被淘汰;混合式步进是指混合了永磁式和
反应式的优点。它又分为两相和五相:两相步进角一般为 1.8 度而五相步进角一般为 0.72 度。这种步进电
机的应用最为广泛。
二、永磁式步进电机的控制
下面以电子爱好者业余制作中常用的永磁式步进电机为例,来介绍如何用单片机控制步进电机。
图 1 是 35BY 型永磁步进电机的外形图,图 2 是该电机的接线图,从图中可以看出,电机共有四组
线圈,四组线圈的一个端点连在一起引出,这样一共有 5 根引出线。要使用步进电机转动,只要轮流给各引
出端通电即可。将 COM 端标识为 C,只要 AC、 C、BC、 C,轮流加电就能驱动步进电机运转,加电的方式
可以有多种,如果将 COM 端接正电源,那么只要用开关元件(如三极管),将 A、 、B、 轮流接地。
下表列出了该电机的一些典型参数:
表 1 35BY48S03 型步机电机参数
型号 步距角 相数 电压 电流 电阻 最大静转距 定位转距 转动惯量
35BY48S03 7.5 4 12 0.26 47 180 65 2.5
有了这些参数,不难设计出控制电路,因其工作电压为 12V,最大电流为 0.26A,因此用一块开路
输出达林顿驱动器(ULN2003)来作为驱动,通过 P1.4~P1.7 来控制各线圈的接通与切断,电路如图 3 所示。
开机时,P1.4~P1.7 均为高电平,依次将 P1.4~P1.7 切换为低电平即可驱动步进电机运行,注意在切换之前
将前一个输出引脚变为高电平。如果要改变电机的转动速度只要改变两次接通之间的时间,而要改变电机的
转动方向,只要改变各线圈接通的顺序。
图 1 35BY48S03 型步进电机外形图
图 2 35BY48S03 型步进电机的接线图
图 3 单片机控制 35BY48S03 型步进电机的电路原理图
三、步进电机的驱动实例
要求:控制电路如图 3 所示,开机后,电机不转,按下启动键,电机旋转,速度为 25 转/分,按下
加 1 键,速度增加,按下减 1 键,速度降低,最高速度为 100 转/分,最低转速为 25 转/分,按下停止键,
电机停转。速度值要求在数码管上显示出来。
1.要求分析
按上面的分析,改变转速,只要改变 P1.0~P1.3 轮流变低电平的时间即可达到要求,这个时间不应
采用延时来实现,因为会影响到其他功能的实现。这里以定时的方式来实现。下面首先计算一下定时时间。
按要求,最低转速为 25 转/分,而上述步进电机的步距角为 7.5,即每 48 个脉冲为 1 周,即在最低转速时,
要求为 1200 脉冲/分,相当于 50ms/脉冲。而在最高转速时,要求为 100 转/分,即 48000 脉冲/分,相当于
12.5ms/脉冲。可以列出下表
表 1 步进电机转速与定时器定时常数关系
速度 单步时间(us) TH1 TL1 实际定时(us)
25 50000 76 0 49996.8
26 48077 82 236 48074.18
27 46296 89 86 46292.61
28 44643 95 73 44640.155
… … … … …
100 12500 211 0 12499.2
表中不仅计算出了 TH1 和 TL1,而且还计算出了在这个定时常数下,真实的定时时间,可以根据这
个计算值来估算真实速度与理论速度的误差值。
表中 TH1 和 TL1 是根据定时时间算出来的定时初值,这里用到的晶振是 11.0592M。有了上述表格,程序就不
难实现了,使用定时/计数器 T1 为定时器,定时时间到后切换输出脚即可。
2.程序实现
定义 DSB-1A 实验板的 S1 为启动键,S2 为停止键,S3 为加 1 键,S4 为减 1 键,程序如下:
StartEnd bit 01H ;起动及停止标志
MinSpd EQU 25 ;起始转动速度
MaxSpd EQU 100 ;最高转动速度
Speed DATA 23H ;流动速度计数
DjCount DATA 24H ;控制电机输出的一个值,初始为 11110 111
Hidden EQU 10H ;消隐码
Counter DATA 57H ;显示计数器
DISPBUF DATA 58H ;显示缓冲区
ORG 0000H
AJMP MAIN
ORG 000BH
JMP DISP
ORG 001BH
JMP DJZD
ORG 30H
MAIN:
MOV SP,#5FH
MOV P1,#0FFH
MOV A,#Hidden
MOV DispBuf,A
MOV DispBuf+1,A
MOV DispBuf+2,A
MOV DjCount,#11110111B
MOV SPEED,#MinSpd ;起始转动速度送入计数器
CLR StartEnd ;停转状态
MOV TMOD,#00010001B ;
MOV TH0,#HIGH(65536-3000)
MOV TL0,#LOW(65536-3000)
MOV TH1,#0FFH;
MOV TL1,#0FFH
SETB TR0
SETB EA
SETB ET0
SETB ET1
LOOP: ACALL KEY ;键盘程序
JNB F0,m_NEXT1 ;无键继续
ACALL KEYPROC ;否则调用键盘处理程序
m_NEXT1:
MOV A,Speed
MOV B,#10
DIV AB
MOV DispBuf+5,B ;最低位
MOV B,#10
DIV AB
MOV DispBuf+4,B
MOV DispBuf+3,A
JB StartEnd,m_Next2
CLR TR1 ;关闭电机
JMP LOOP
ORL P1,#11110000B
m_Next2:
SETB TR1 ;启动电机
AJMP LOOP ;主程序结束
;---------------------------------------
D10ms:
……
;---------延时程序,键盘处理中调用
KEYPROC:
MOV A,B ;获取键值
JB ACC.2,StartStop ;分析键的代码,某位被按下,则该位为 1
JB ACC.3,KeySty
JB ACC.4,UpSpd
JB ACC.5,DowSpd
AJMP KEY_RET
StartStop:
SETB StartEnd ;启动
AJMP KEY_RET
KeySty:
CLR StartEnd; ;停止
AJMP KEY_RET
UpSpd:
INC SPEED;
MOV A,SPEED
CJNE A,#MaxSpd,K1 ;到了最多的次数?
DEC SPEED ;是则减去 1,保证下次仍为该值
K1:
AJMP KEY_RET
DowSpd:
DEC SPEED
MOV A,SPEED
CJNE A,#MAXSPD,KEY_RET ;不等(未到最大值),返回
MOV SPEED,#MinSpd;
KEY_RET:
RET
KEY:
……获取键值的程序
RET
DjZd: ;定时器 T1 用于电机转速控制
PUSH ACC
PUSH PSW
MOV A,Speed
SUBB A,#MinSpd ;减基准数
MOV DPTR,#DjH
MOVC A,@A+DPTR
MOV TH1,A
MOV A,Speed
SUBB A,#MinSpd
MOV DPTR,#DjL
MOVC A,@A+DPTR
剩余26页未读,继续阅读
资源评论
omyligaga
- 粉丝: 54
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于Python的高德地图+58租房(源码+使用文档)
- C语言文件读写代码.docx
- python的概要介绍与分析
- module-0982.SyncTensorsGraph.9515.sm-8.0-gpu-after-optimizations
- ChromeSetup20220804.exe
- 讲解记录 基于Java的小区物业管理系统
- module-0004.SyncTensorsGraph.7578.sm-8.0-gpu-after-optimizations
- python39.dll
- 【Matlab 六自由度机器人】Fixed Angles(固定角度) 和 Euler Angles(欧拉角) 之间的区别
- STLINK下载器调试过程中常见问题排查
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功