
0. 前言 1
1. 电路基本理论 1
2. 方案设计 2
3. 硬件电路的工作原理 2
3.1步进电机模块 3
3.2 控制模块 3
3.3 LCD显示模块 3
4. 软件编程 4
4.1 程序流程图 4
4.2 MCS-51单片机引脚功能 5
4.3 源程序 6
5. 系统调试和结果分析 9
5.1 电机正转运行 9
5.2 电机反转运行 10
5.3 电机停止转动 10
6. 结论及进一步设想 11
参考文献 12
附录1 元件清单 13
课设体会 14
基于单片机和proteus的步进电机控制
摘 要
单片机以其较小的体积、低成本、高可靠性、高附加值等优点实现了过去一个很复杂的电路所能实现的功能,因而被广泛的应用,也取代了经典的控制系统;步进电机是一种将电脉冲转变为角位移的执行机构,可通过控制脉冲数来控制角位移量,从而达到准确的定位目的,也可通过控制脉冲的频率来控制电机的转速和加速度;本文通过proteus的单片机仿真来实现其功能,并且能够在仿真中看见十分近似于真实的结果。
关键词:单片机;proteus;步进电机
0. 前言
步进电机是一种将电脉冲转变为角位移的执行机构,通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度。可通过控制脉冲数来控制角位移量,从而达到准确的定位目的,也可通过控制脉冲的频率来控制电机的转速和加速度;从而达到调速的目的。
本文通过对步进电机的软件设计和硬件设计包括步进电机的结构、原理及应用,根据原理和硬件的设计利用c语言编写程序,经过反复运行和调试,实现单片机对步进电机的控制。
1. 电路基本理论
步进电机是机电控制中一种常用的执行机构,它的用途是将电脉冲转化为角位移,它的的驱动电路根据控制信号工作,控制信号由单片机产生。当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,控制换相顺序,即通电控制脉冲必须严格按照一定顺序分别控制各相的通断。通过控制脉冲个数即可以控制角位移量,从而达到准确定位的目的。控制步进电机的转向,即给定工作方式正序换相通电,步进电机正转,若按反序通电换相,则电机就反转。控制步进电机的速度,即给步进电机发一个控制脉冲,它就转一步,再发一个脉冲,它会再转一步,两个脉冲的间隔越短,步进电机就转得越快。同时通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
2. 方案设计
基于单片机和proteus的步进电机控制电路的基本组成如图1所示。
图1 基于单片机和proteus的步进电机控制电路的原理框图
根据设计要求,采用的方案如下。硬件部分实现电机转动和速度显示功能,包括控制开关模块;电机转动模块和速度显示模块。软件部分实现对步进电机的控制功能,主要设计思想通过控制台控制程序的开关来控制电机的转动,由电机反馈回来的数据经单片机控制显示器显示数据.。
3. 硬件电路的工作原理
3.1步进电机模块(如图2所示)
图2 步进电机
功能:单片机输出的程序通过转换器和电机驱动器给步进电机一个脉冲信号,使步进电机实现正转与反转。
3.2 控制模块(如图3所示)
图3 控制模块
功能:通过控制台实现对单片机程序的开与关。
3.3 LCD显示模块(如图4所示)
图4 LCD显示器
功能:通过单片机输出的电机反馈信号使LCD显示器显示出步进电机的转动状态。
4. 软件编程
4.1 程序流程图:
图5:程序流程图
4.2 MCS-51单片机引脚功能:(如图6所示)
图6:单片机引脚图
1 电源线:
VCC:+5 V电源。VSS:地线。
2 RST:复位信号线。
当输入的复位信号延续两个机器周期以上的高电平时即为有效,用以完成单片机的复位初始化操作。
3 信号引脚介绍
P0.0 ~ P0.7: P0口8位双向口线。
P1.0 ~ P1.7 :P1口8位双向口线。
P2.0 ~ P2.7 :P2口8位双向口线。
P3.0 ~ P3.7 :P3口8位双向口线。
4 XTAL1和XTAL2:外接晶振引脚。当使用外部振荡器时,外部振荡信号应直接加到XTAL1,而XTAL2悬空。
5 控制引脚:
ALE/-PROG、-PSEN、-EA/Vpp组成了MSC-51的控制总线。
(1) -EA/Vpp(31脚):外部程序存储器地址允许输入端。
第二功能:固化编程电压输入端。
(2) ALE/-PROG(30脚):地址锁存允许信号端。
第二功能:编程脉冲输入端。
(3) -PSEN(29脚):程序存储允许输出信号端。
4.3 源程序:
#include #define uc unsigned char #define ui unsigned int sbit KEY=P3^3; sbit P1_0=P1^0; sbit P3_0=P3^0; sbit P3_1=P3^1; sbit P3_5=P3^5; sbit P3_6=P3^6; sbit P3_7=P3^7; uc Flag; uc code fan[]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09}; uc code zheng[]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01}; ui speed=1000,time; void delay(ui t) { while(t--); } void xianshi(uc f) //显示转向 { P1_0=0;P0=f; delay(5); } void Speedup()//加速 { time=speed; time=time-100; if(time<100) time=100; } void Speeddown()//减速 { time=speed; time=time+100; if(time>2000) time=2000; } void main() { uc i; EX1=1; //外部中断1开 IT1=1; //边沿触发 EA=1; //全局中断开 P0=0xff; while(1) { while(Flag==0) { for(i=0;i<7;i++) { xianshi(0x5b);//显示 Z 标示正转 P2=zheng[i]; delay(speed); } } while(Flag==1) { for(i=0;i<7;i++) { xianshi(0x71);//显示 F 标示反转 P2=fan[i]; delay(speed); } } while(Flag==2) //停止 { P2=0; xianshi(0x6D);// 显示 S } } } void ISR_Key() interrupt 2 { delay(500); if(!KEY) { if(P3_5==0) Flag=0; if(P3_6==0) Flag=1; if(P3_7==0) Flag=2; if(P3_0==0) Speedup(); if(P3_1==0) Speeddown(); } } 5.系统调试和结果分析 5.1 电机正转运行(如图7所示) 图7:电机正转结果图 5.2 电机反转运行(如图8所示) 图8:电机反转结果图 5.3 电机停止转动(如图9所示) 图9:电机停止转动 6. 结论及进一步设想 本设计采用51单片机ATC51(晶振频率为12MHZ)对四相六线制步进电机(内阻33欧,步进1.8度,额定电压12V)进行控制。通过I/O口输出的具有时序的方波作为步进电机的控制信号,信号经过芯片ULN2003驱动步进电机。ULN2003 是高耐压、大电流达林顿陈列,由七个硅NPN 达林顿管组成。ULN2003 的每一对达林顿都串联一个2.7K 的基极电阻,在5V 的工作电压下它能与TTL 和CMOS 电路直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。ULN2003 工作电压高,工作电流大,灌电流可达500mA,并且能够在关态时承受50V 的电压,输出还可以在高负载电流并行运行。通过ULN2003构成步进电机的驱动电路,电路图如图1所示。51的25-28口接ULN2003的1-4输入端。另外,用键盘来对电机的状态进行控制,并用数码管显示电机的转速,采用74LS1作为2位单个数码管的显示驱动。74LS1带锁存,使用串行接法可以节约I/O口资源。其电路图如图2所示。通过51的TXD和RXD口对CLK和DATA发送数据参考文献 设计的步进电机基本能实现预期目标,经过调试和修改,但还是存在问题,比如按开关的时候会出现不稳定情况,转速有时比较乱,显示有时也有些不理想,后面的工作就是在软件和硬件等方面进行修改,以完全达到预期目标。 参 考 文 献 [1] 刘复华. 单片机及其应用系统. 北京:清华大学出版社,1992 [2] 李斌,董慧颖. 可重组机器人研究和发展现状. 沈阳工业学院学报,2000,19(4):23-27 [3] 李朝清,单片机原理及接口技术[M].北京:北京航空航空航天大学出版社,1999 [4] 刘文涛,MCS-51单片机培训教程[M].北京:北京工业出版社,2005:141-145 [5] 李仁定. 电机的微机控制. 机械工业出版社,1999 [6] 李铁才,杜坤梅. 电机控制技术. 哈尔滨工业大学出版社, 2000 [7] 宁爱华. 步进电机的微机控制方法与高速特性分析. 西南民族大学学报(自然科学版) , 2003 附录1 元件清单 本次毕业设计能够实现步进电机的启停、正反转以及速度的调节,通过本次毕业设计加强了我对软件编程和硬件设计的掌握。步进电机在控制系统中具有广泛的应用。它可以把脉冲信号转换成角位移,并且可用作电磁制动轮、电磁差分器、或角位移发生器等,所以说步进电机有着广阔的市场和远大的发展前景。 在设计的过程中,学会了很多东西,熟悉了步进电机控制系统的整体运行过程和总体布局,掌握了该硬件电路的设计方法,掌握了步进电机控制系统程序的设计和调试,最大的收获便是学会了如何把C语言应用于单片机得编程上,避免了汇编的低效率的缺点。 本次课程设计虽然结束了,但是它留给我的印象是不可磨灭的。无论我以后是否涉及到此方面的研究,我想,至少我掌握了一种系统的研究方法,学习的目的就在于运用。万事相通,本次课程设计必将为我以后的学习与工作奠定坚实的基础,课程设计中锻炼出来的能力是终身受益的。我真心的感谢本次课程设计,它教会我很多。
课设体会元件名称 型号 数量 单片机 DIL40 1 LED显示器 7SEGCOMK 1 上拉电阻 RESPACK-8 1 电阻 ANALOG 2 逻辑与 AND_5 1 按键 6 电容器 30pF 2 驱动器 ULN2803 1 晶振 CRYSTAL 1 直流电源 VCC 3
