步进电机方案完整版
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一章课程设计的目的和要求
(一)设计目的
《单片机应用基础》课程设计是学好本门课程设计的又一重要环节,课程设计的目的就是配合笨课程设计的教学和平时的实验,以达到巩固消化课程的内容,进一步加强综合应用能力及单片机应用系统开发和设计能力的训练,是以培养学生综合运用所学知识的过程,培养学生查阅相关资料撰写文档的能力和自学,科研的能力,是知识转化为能力和能力转化为工程素质的重要阶段。
(二)设计任务
根据给定的任务要求选择合适的单片机和其他电子元件,进行系统硬件电路设计和软件编程,根据系统制作并调试电路板,使之实现任务要求。有关参数选择要求符合国家标准,具体设计任务如下:
1能控制电机正反转,有正转和反转按钮。
2在一定范围内可控制转速,有加速和加速按钮。
3可在不断电源的情况下暂停,有一个暂停按钮。
4在停止、正转、反转的时候,分别有指示灯指示工作状态。
5有状态观察指示灯,可观察电动机A、B、C、D相的状态以观察电动机的旋转状态。
6通过改变程序而改变电动机的驱动方式:单四拍、双四拍、单双八拍。
(三)设计要求
1、利用proteus软件设计各模块工作原理图,并进行模拟仿真;
2、控制程序设计、调试及实现:
(1)根据要求,写出完整的程序流程图;
(2)利用proteus软件进行电路模拟仿真和调试
4、设计硬件电路并烧写程序,调试后系统能按照要求工作
第二章总体设计
1)设计思路:
使用按钮开关控制步进电机的正反转以及加速减速
因要求实现用单片机控制四相步进机的正反转以及加速减速,有很多的方法能完成这样的任务,但为了能更加方便的控制步进电机正反转以及加速减速,因此在单片机的管脚上分别接了正反转按钮,正转加速减速按钮,反转加速减速按钮以及复位按钮,当给电路通电后,就可以通过按这些按钮来实现要求的各种要求以及所要表达的信息。
2)使用L298芯片来驱动步进电机:
L298是一种高电压、大电流电机驱动芯片。采用标准逻辑电平信号控制具有两个使能控制端,在不受输入信号影响的情况下允许或禁止器件工作有一个逻辑电源输入端,使内部逻辑电路部分在低电压下工作,可以外接检测电阻,将变化量反馈给控制电路。使用L298芯片驱动电机,该芯片可以驱动两个二相电机,也可以驱动一个四相电机,可以直接通过电源来调节输出电压,并可以直接用单片机的I/O口提供信号,而且电路简单,使用比较方便。
3)设计方框图
总体设计方框图如图1所示
图1 总体设计方案框图
第三章硬件设计
1按键设计:
本设计采用的独立式非编码键盘控制步进电机。共有6个按钮,其中S2为电机正转按钮、S3为电机反转按钮,S4为正转加速按钮,S5为电机正转减速按钮,S6为电机反转加速按钮,S7为电机反转减速按钮。当按下各个按钮时,会执行各个键的功能,当按下复位按钮时,电路会恢复到初始状态。其原理图如图2所示:
图2按键控制电路
2时钟震荡电路和复位电路设计
时钟震荡电路由一个12M的晶震和两个30PF的电容组成。复位电路有一个复位按钮,两个电阻,一个带
有极性的电容做成,复位方式为手动复位。当按下复位按钮的时间超过两个机器周期,才起到复位作用。其原理理理如图3所示
图3钟震荡电路和复位电路
3步进电机驱动电路设计
本设计采用的是L298对步进电机进行驱动L298N为双全桥步进电机专用驱动芯片,内部包含4信道逻辑驱动电路,是一种二相?和四相步进电机的专用驱动器,可同时驱动2个二相或1个四相步进电机,内含二个H-Bridge的高电压、大电流双全桥式驱动器,接收标准?TTL逻辑准位信号,可驱动46V、2A以下的步进电机,且可以直接透过电源来跳电压
4步进电机时序表和时序图
步进电机时序表和时序图分别如表1和图6
、
4.程序流程图
用wave6000生成hex文件,将生成的文件导入proteus中调试运行。
第六章软件设计开始程序:
START1: MOV P2,#0FFH
JNB P0.0,Z10
JNB P0.1,F10
JNB P0.2,ZA10
JNB P0.3,ZS10
JNB P0.4,FA10
JNB P0.5,FS10
JNB P0.6,NO10
AJMP START1
Z10: LJMP ZZ
F10: LJMP FZ
ZA10: LJMP ZA
ZS10: LJMP ZS
FA10: LJMP FA
FS10: LJMP FS
NO10: LJMP START1
ZZ: LCALL DELAY ;防止按键抖动延迟JNB P0.0,$
LCALL DELAY
正转子程序:
ZX:MOV R0,#00H
ZZ1: MOV A,R0
MOV DPTR,#TABLE
MOVC A,@A+DPTR
JZ ZX
MOV P2,A
JNB P0.1,F10
JNB P0.2,ZA10
JNB P0.3,ZS10
JNB P0.4,FA10
JNB P0.5,FS10
JNB P0.6,NO10
LCALL DELAY1
INC R0
LJMP ZZ1
RET
FZ: LCALL DELAY ;按键去抖动
JNB P0.1,$
LCALL DELAY
FX: MOV R0,#05H
反转子程序:
FZ1: MOV A,R0
MOV DPTR,#TABLE
MOVC A,@A+DPTR
JZ FX
MOV P2,A
JNB P0.0,Z10
JNB P0.2,ZA10
JNB P0.3,ZS10
JNB P0.4,FA10
JNB P0.5,FS10
LCALL DELAY1
INC R0
LJMP FZ1
RET
ZA: LCALL DELAY ;按键去抖动JNB P0.2,$
LCALL DELAY
正转程序调用:
ZAX:MOV R0,#00H
ZA1: MOV A,R0
MOV DPTR,#TABLE
MOVC A,@A+DPTR
JZ ZAX
MOV P2,A
JNB P0.0,ZZ
JNB P0.1,FZ
JNB P0.3,ZS
JNB P0.4,FA
JNB P0.5,FS20
LCALL DELAY2
INC R0
LJMP ZA1
RET
ZS: LCALL DELAY ;按键去抖动JNB P0.3,$
LCALL DELAY
正转减速程序调用:
ZSX:MOV R0,#00H
ZS1: MOV A,R0
MOV DPTR,#TABLE
MOVC A,@A+DPTR
JZ ZSX
MOV P2,A
JNB P0.0,Z20
JNB P0.1,F20
JNB P0.2,ZA20
JNB P0.4,FA20
JNB P0.5,FS20
JNB P0.6,NO20
LCALL DELAY3
INC R0
LJMP ZS1
RET
Z20:LJMP ZZ
F20:LJMP FZ
ZA20:LJMP ZA
ZS20:LJMP ZS
FA20:LJMP FA
FS20:LJMP FS
NO20:LJMP START1
FA: LCALL DELAY ;按键去抖动JNB P0.4,$
LCALL DELAY
反转加速子程序:
FAX: M OV R0,#05H
FA1: MOV A,R0
MOV DPTR,#TABLE
MOVC A,@A+DPTR
JZ FAX
MOV P2,A
JNB P0.0,Z20
JNB P0.1,F20
JNB P0.2,ZA20
JNB P0.3,ZS20
JNB P0.5,FS20
JNB P0.6,NO20
LCALL DELAY2
INC R0
LJMP FA1
RET
FS: LCALL DELAY ;按键去抖动JNB P0.5,$
LCALL DELAY
;反转程序调用:
FSX:MOV R0,#05H
FS1: MOV A,R0
MOV DPTR,#TABLE
MOVC A,@A+DPTR
JZ FSX
MOV P2,A
JNB P0.0,Z20
JNB P0.1,F20
JNB P0.2,ZA20
JNB P0.3,ZS20
JNB P0.4,FA20
LNB P0.6,NO20
LCALL DELAY3
INC R0
LJMP FS1
RET
延迟程序:
DELAY: MOV R1,#20 ; 抖动延迟D1: MOV R2,#255
DJNZ R2,$
DJNZ R1,D1
RET
DELAY1: MOV R7,#68 ;正反转延迟D2: MOV R6,#255
D3: MOV R5,#10
DJNZ R5,$
DJNZ R6,D3