步进电机的驱动L298 L297与PROTEUS仿真
基于Proteus的步进电机控制系统仿真设计最终版 -精品

计算机控制技术课程设计报告《基于Proteus的步进电机控制系统仿真设计》专业及班级______ 09自动化(1)班_________ 姓名_____ 吴红田坤王林指导老师_______ 丁健______________完成时间_______ _ 2012-6-17__________________一、步进电机原理、控制技术及其特点 (3)(1)换相顺序的控制 (3)(2)步进电机的换向控制 (3)(3)步进电机的速度控制 (3)(4)步进电机的起停控制 (4)(5)步进电机的加减速控制 (4)(6)步进电机的换向控制 (4)二、元器件介绍 (5)(1)步进电机 (5)(2)89C51单片机 (7)(3)L297介绍 (7)(4)L298简介 (11)三、方案论证 (13)四、硬件设计 (14)(1)控制电路 (14)(2)驱动电路 (15)(3)显示模块 (16)(4)总体电路图 (16)五、软件设计 (17)(2)定时中断设计 (17)(3)外部中断设计 (17)六、源程序代码 (19)七、总结 (23)基于protues的步进电机控制系统设计摘要:步进电机是一种进行精确步进运动的机电执行元件,它广泛应用于工业机械的数字控制,为使系统的可靠性、通用性、可维护性以及性价比最优,根据控制系统功能要求及步进电机应用环境,确定了设计系统硬件和软件的功能划分,从而实现了基于8051单片机的四相步进电机的开环控制系统。
控制系统通过单片机存储器、I/O接口、中断、键盘、LED显示器的扩展、步进电机的环形分频器、驱动及保护电路、人机接口电路、中断系统及复位电路、单电压驱动电路等的设计,实现了四相步进电机的正反转,急停等功能。
为实现单片机控制步进电机系统在数控机床上的应用,系统设计了两个外部中断,以实现步进电机在某段时间内的反复正反转功能,也即数控机床的刀架自动进给运动,随着单片机技术的不断发展,单片机在日用电子产品中的应用越来越广泛,自六十年代初期以来,步进电机的应用得到很大的提高。
L297_L298芯片混合式步进电机驱动器设计原理图及例程

【简要说明】一、尺寸:长71mmX宽43mmX高28mm二、主要芯片:L297、L298N三、工作电压:控制信号直流4.5~5.5V;电机电压直流5V~30V四、最大工作电流:2A五、额定功率25W六、特点:1、具有电源指示。
2、转速可调3、抗干扰能力强4、具有续流保护和过电流保护5、可单独控制一台步进电机6、可控制两相和四相步进电机7、可控制直径在42mm内的任何,两相和四相步进电机适用场合:单片机学习、电子竞赛、产品开发、毕业设计。
【标注图片】【步进电机控制接线图】步进电机的控制实例步进电机是数字控制电机,它将脉冲信号转变成角位移,即给一个脉冲信号,步进电机就转动一个角度,因此非常适合于单片机控制。
步进电机可分为反应式步进电机(简称VR)、永磁式步进电机(简称PM)和混合式步进电机(简称HB)。
一、步进电机最大特点是:1、它是通过输入脉冲信号来进行控制的。
2、电机的总转动角度由输入脉冲数决定。
3、电机的转速由脉冲信号频率决定。
二、步进电机的驱动电路根据控制信号工作,控制信号由单片机产生。
(或者其他信号源)三、控制步进电机的速度如果给步进电机发一个控制脉冲,它就转一步,再发一个脉冲,它会再转一步。
两个脉冲的间隔越短,步进电机就转得越快。
调整单片机发出的脉冲频率,就可以对步进电机进行调速。
(注意:如果脉冲频率的速度大于了电机的反应速度,那么步进电机将会出现失步现象)。
四、此板驱动步进电机测试程序说明:以AT89S52单片机控制单元,C语言编程!【接线图】【测试程序】/********************************************************************汇诚科技实现功能:正转_反转_减速_加速程序使用芯片:AT89S52 或者STC89C52晶振:11.0592MHZ编译环境:Keil作者:zhangxinchun淘宝店:汇诚科技【声明】此程序仅用于学习与参考,引用请注明和作者信息!*********************************************************************/ #include<reg52.h>#define uchar unsigned char#define uint unsigned intuchar Y=1; //初始化速度/********************************************************控制位定义********************************************************/sbit shi_neng=P1^0; // 使能控制位sbit fang_shi=P1^1; // 工作方式控制位sbit fang_xiang=P1^2;// 旋转方向控制位sbit mai_chong=P1^3; // 脉冲控制位sbit zheng_zhuan=P2^0; // 正转sbit fan_zhuan=P2^1; // 反转sbit jia_su=P2^2; // 加速sbit jian_su=P2^3; // 减速/********************************************************延时函数********************************************************/ void delay(uchar i)//延时函数{uchar j,k;for(j=0;j<i;j++)for(k=0;k<180;k++);}/********************************************************加速函数********************************************************/ void jia(){Y=Y-1;if(Y<=1){Y=1;}//如果速度值小于等于1,值保持不变}/********************************************************减速函数********************************************************/ void jian(){Y=Y+1;if(Y>=100){Y=100;}}/********************************************************主函数********************************************************/main(){shi_neng=1; // 使能控制位fang_shi=1; // 工作方式控制位fang_xiang=1;// 旋转方向控制位mai_chong=1; // 脉冲控制位while(1){if(zheng_zhuan==0){fang_xiang=1;}if(fan_zhuan==0){fang_xiang=0;}if(jia_su==0){delay(10);while(!jia_su);jia();}if(jian_su==0){delay(10);while(!jian_su);jian();}mai_chong=~mai_chong; //输出时钟脉冲delay(Y); //延时(括号内数值越小,电机转动速度越快)}}/********************************************************结束********************************************************/【应用原理图】L297_L298芯片混合式步进电机驱动器元件清单序号名称标注名型号封装备注1 电阻R1、R3 1K 贴片0805封装2 电阻R2 3.9K 贴片0805封装3 电阻R4、R5 0.5欧姆直插2W4 电阻R6 22K 贴片0805封装5 电容C1 25V0.22uf 直插电容6 电阻C2 50V100UF 电解电容7 发个二极管DS1 红色二极管区分正负极8 整流二极管D1~D8 IN40079 芯片U1 L297 20P直插10 芯片U2 L29811 排针P1 6针12 端子6针【图片展示】/********************************************************实现功能:正转程序使用芯片:AT89S52晶振:11.0592MHZ编译环境:Keil********************************************************/#include<reg52.h> //库文件#define uchar unsigned char //字符型宏定义#define uint unsigned int //整型宏定义uchar tt; //定时器计数初值定义uint sec; //速度值定义uchar Y=30; //初始化速度/********************************************************控制位定义********************************************************/sbit shi_neng=P1^0; // 使能控制位sbit fang_shi=P1^1; // 工作方式控制位sbit fang_xiang=P1^2;// 旋转方向控制位sbit mai_chong=P1^3; // 脉冲控制位sbit zheng_zhuan=P2^0; // 正转sbit fan_zhuan=P2^1; // 反转sbit jia_su=P2^2; // 加速sbit jian_su=P2^3; // 减速/********************************************************************延时函数*********************************************************************/ void delay(uchar t){uchar i,j;for(i=0;i<t;i++){for(j=13;j>0;j--);{ ;}}}/********************************************************************定时中断服务函数*********************************************************************/ void t0(void) interrupt 1 using 0 //定时中断服务函数{tt++; //每过250ust tt 加一if(tt==1) //当tt满足条件时{tt=0; //计满重新再计sec++;if(sec==Y) //括号内数值越小,电机转动速度越快{sec=0; //计满重新再计mai_chong=~mai_chong; //脉冲输出}}}/********************************************************初始化********************************************************/ void init(){TMOD=0x02; //定时器工作在方式2ET0=1;EA=1;TH0=0xFF; //对TH0 TL0 赋值TL0=0xFE;TR0=1; //开始定时sec=0;mai_chong=1; // 脉冲控制位}/********************************************************加速函数********************************************************/ void jia(){Y=Y-2;if(Y<=1){Y=2;}//如果速度值小于等于1,值保持不变}/********************************************************减速函数********************************************************/ void jian(){Y=Y+2;if(Y>=100){Y=100;}}/********************************************************主函数********************************************************/main(){init(); //程序初始化shi_neng=0; // 使能控制位fang_shi=1; // 工作方式控制fang_xiang=1;// 控制方向为正转while(1){if(zheng_zhuan==0){delay(100);shi_neng=1;fang_xiang=0;}if(fan_zhuan==0){delay(100);shi_neng=1;fang_xiang=1;}if(jia_su==0){delay(10);while(!jia_su);jia();}if(jian_su==0){delay(10);while(!jian_su);jian();}}}/********************************************************结束********************************************************/keil参考程序正转_反转_加速_减速_高速#include<reg52.h>#define uchar unsigned char#define uint unsigned intuchar Y=1; //初始化速度/********************************************************控制位定义********************************************************/sbit shi_neng=P1^0; // 使能控制位sbit fang_shi=P1^1; // 工作方式控制位sbit fang_xiang=P1^2;// 旋转方向控制位sbit mai_chong=P1^3; // 脉冲控制位sbit zheng_zhuan=P2^0; // 正转sbit fan_zhuan=P2^1; // 反转sbit jia_su=P2^2; // 加速sbit jian_su=P2^3; // 减速/********************************************************延时函数********************************************************/void delay(uchar i)//延时函数{uchar j,k;for(j=0;j<i;j++)for(k=0;k<180;k++);}/********************************************************加速函数********************************************************/ void jia(){Y=Y-1;if(Y<=1){Y=1;}//如果速度值小于等于1,值保持不变}/********************************************************减速函数********************************************************/ void jian(){Y=Y+1;if(Y>=100){Y=100;}}/********************************************************主函数********************************************************/main(){shi_neng=1; // 使能控制位fang_shi=1; // 工作方式控制位fang_xiang=1;// 旋转方向控制位mai_chong=1; // 脉冲控制位while(1){if(zheng_zhuan==0){fang_xiang=1;}if(fan_zhuan==0){fang_xiang=0;}if(jia_su==0){delay(10);while(!jia_su);jia();}if(jian_su==0){delay(10);while(!jian_su);jian();}mai_chong=~mai_chong; //输出时钟脉冲delay(Y); //延时(括号内数值越小,电机转动速度越快)}}AVR系列单片机控制参考程序#include <iom16v.h>#include <macros.h>/**********************************************************************函数数据类型说明**********************************************************************/ #define uchar unsigned char#define uint unsigned int/**********************************************************************延时函数**********************************************************************/ void delay(uint MS){uint i,j;for( i=0;i<MS;i++)for(j=0;j<80;j++); //1141是在8MHz晶振下,通过软件仿真反复实验得到的数值}/**********************************************************************主函数**********************************************************************/ void main(){ uint i;i=10;//改变变量i 的大小可以改变速度,i越大速度越慢DDRB=0XFF;//PORTC=0XFF;PORTB|=BIT(0);//00000001 使能控制开PORTB|=BIT(1);//00000010 四拍工作方式PORTB|=BIT(2);//00000100 正方向旋转while(1){PORTB|=BIT(3);//00001000 脉冲输出delay(i);PORTB&=~BIT(3);delay(i);}}/**********************************************************************结束**********************************************************************/。
基于Proteus的步进电机控制系统仿真设计

L297和L298N驱动电路及步进电机的基本原理与功能

网易新闻微博邮箱闪电邮相册有道手机邮印像派梦幻人生更多博客博客首页博客话题热点专题博客油菜地找朋友博客圈子博客风格手机博客短信写博邮件写博博客复制摄影摄影展区每日专题窗体顶端年12月17日STC89C51单片机,L297和L298N驱动电路及步进电机的基本原理与功能默认分类2008-12-11 14:43:53 阅读8201 评论6 字号:大中小订阅摘要:本设计首先介绍了STC89C51单片机,L297和L298N驱动电路及步进电机的基本原理与功能;其次,设计步进电机实现起停、转向、速度、位置变化的控制方案;再次,在这些器件功能与特点的基础上,拟出设计思路,构建系统的总体框架;最后利用PROTEL软件绘出电路图,同时写出设计系统的运行流程和相关程序。
整个系统通过写入单片机中的程序分配好控制字的存储单元以及相应的内存地址赋值;启动系统后,从单片机的I/O口输出控制脉冲,经过L297、L298N驱动电路对脉冲进行处理,输出能直接控制步进电机的脉冲信号。
在此基础上,重新分配I/O资源,同时增加驱动芯片L297、L298N的个数,在负载能力范围允许内,就能实现多台步进电机独立起停、转向、速度、位置变化的控制。
关键字:STC89C51单片机;L297; L298N; 步进电机前言步进电机是一种将电脉冲信号转换成相应角位移的控制电机。
目前,数字技术、计算机技术和永磁材料的迅速发展,推动了步进电机的发展。
本设计针对目前各个领域对自动化的需要,采用STC89C51单片机与L297,L298N驱动芯片驱动多台步进电机同时独立工作,将它应用于各种复杂的控制领域,能使许多半自动控制的系统完全成为真正的全自动,特别是用在机器人等领域,能极大的提高生产力和降低劳动强度。
由于步进电机具有快速启动、精确步进和定位等特点,因而在数控机床,绘图仪,打印机以及光学仪器中得到广泛的应用。
STC89C51单片机的特点STC89C51系列单片机是宏晶科技推出的新一代超强抗干扰/高速/低功耗的单片机,是MCS-51系列单片机的派生产品;它们在指令系统中、硬件系统和片内资源与标准的8052单片机完全兼容,DIP-40封装系列与8051为pin-to-pin兼容,指令代码是与8051完全兼容的单片机。
用L297L298组成步进电机驱动电路

供精确的角位置信息,并且比较容易控制。市场上有很
多现成的步进电机驱动机构,但价格都偏高,用MI—
CROELECTRONICS公司出产的L297,L298两种芯
片配合使用,可以用相对很便宜的价格组成一个性能
不错的步进电机驱动电路。
2硬件电路
L297是步进电机控制器,适用于双极性两相步进 电机或单极性四相步进电机的控制,可有半步、整步和 波状三种驱动模式。片内PWM斩波电路允许开关式 控制绕组电流。该器件的一个显著特点是仅需时钟、方 向和模式输入信号。步进电机所需相位由电路内部产 生,大大减轻了CPU的负担。
论文研究了双光束分光光度计的工作原理,及紫外可见光分光光度计的光学特点和紫外可见光的波长范围;介绍了嵌入式单板机、步进电机、光电 倍增管及数据通讯的工作原理;分析了测控系统各部分的要求,并在此基础上选择所需器件。
构建了以基于PC\104总线的嵌入式单板机(SBC84500)和单片机(89C51F020)为硬件控制核心的主从分布式数据采集控制系统,实现了嵌入式单板机与 单片机间的通信、测量过程的自动控制及测量过程中光电信号的采集与处理。为了使测控系统中的几个步进电机可以同时运行,提出了多路定时器中断 方案,同时采用智能速度控制方式,达到系统实时控制的目的。为了保证测量的准确性和稳定性,设计了带自动增益控制的信号放大电路,把得到的电 信号放大成A/D的近满度值,从而充分利用A/D的位数提高运算精度。
Abstract This article introduces how to use L297 and L298 building a stepper motor driver circuit,this design
can make the hardware simple,software easy and the cost low.
proteus中四相步进电机连接方法

proteus中四相步进电机连接方法
在Proteus中,可以使用L298N电机驱动模块来连接四相步进电机。
以下是连接步骤:
1.将L298N电机驱动模块拖放到Proteus的工作区中。
2.连接电源和地线:
o将Vcc引脚连接到5V电源。
o将GND引脚连接到地线。
3.连接步进电机:
o将步进电机的四个线连接到L298N的OUT1、OUT2、OUT3、OUT4引脚上,具体连接顺序根据你所使用步
进电机的引脚排列而定。
4.连接控制信号:
o将步进电机的ENABLE引脚连接到L298N的ENA引脚上。
o将步进电机的控制信号(例如DIR和PUL)连接到L298N的相应引脚上。
DIR引脚用于控制步进电机的
旋转方向,PUL引脚用于控制步进电机的步进脉冲。
5.连接电源:
o将电源引脚(如B+和B-)连接到合适的电源供应器上,以提供足够的电流来驱动步进电机。
6.完成连接后,你可以通过在Proteus中模拟信号输入来测
试步进电机的运行情况。
需要注意的是,具体的连接方法可能因使用的步进电机和驱动模块而有所不同。
在进行实际连接时,请参考步进电机和L298N电机驱动模块的规格和数据手册,以确保正确连接并避免任何意外情况。
基于Proteus的步进电机闭环控制仿真

本科毕业设计论文题目基于Proteus的步进电机闭环控制仿真毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。
尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。
对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。
作者签名:日期:指导教师签名:日期:使用授权说明本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。
作者签名:日期:学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。
除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。
对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。
本人完全意识到本声明的法律后果由本人承担。
作者签名:日期:年月日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。
本人授权大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。
涉密论文按学校规定处理。
作者签名:日期:年月日导师签名:日期:年月日注意事项1.设计(论文)的内容包括:1)封面(按教务处制定的标准封面格式制作)2)原创性声明3)中文摘要(300字左右)、关键词4)外文摘要、关键词5)目次页(附件不统一编入)6)论文主体部分:引言(或绪论)、正文、结论7)参考文献8)致谢9)附录(对论文支持必要时)2.论文字数要求:理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。
用proteus学习步进电机

用proteus学习步进电机步进电机是一种将电脉冲转化为角位移的执行机构。
通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。
您可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时您可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
2.步进电机分哪几种?步进电机分三种:永磁式(PM),反应式(VR)和混合式(HB)永磁式步进一般为两相,转矩和体积较小,步进角一般为7.5度或15度;反应式步进一般为三相,可实现大转矩输出,步进角一般为1.5度,但噪声和振动都很大。
在欧美等发达国家80年代已被淘汰;混合式步进是指混合了永磁式和反应式的优点。
它又分为两相和五相:两相步进角一般为1.8度而五相步进角一般为0.72度。
这种步进电机的应用最为广泛。
上面是我在网上搜到的,重复的事情就不要做了,所以我直接给粘过了,我简单的解释一下,步进电机了,一般有,二相的,三相的,五相的,所谓的的相,就是电机里面推动电机的转的东西,叫绕组,二相的了,就是有两个绕组,如果说分A,B的话,A转一下,B再转一下,一圈了是360度,一个可以转1.8度,算一算,就是20次,AB它们就像接力一样,你推着轴转一些,我在接着转。
很显然,如果有三项,或是五项的话,那么就会比较精细,也就是说,每次转度的角度,可以更小,可以更精确的控制,反正就是这么回事。
上图。
一开始,我看了这个MOTOR的线不知道怎么接,有6根,其实,中间的两根是接电源的,上面的两根,下面的两根,分别接单片机的IO口。
驱动步进电机的,用的是ULN2003 还有L297/L298 我问下朋友,他们说L297/298现在用的多些,今天先用ULN2003联下,有时间再用L297/L298试下,另我买的开发板是个两相的,是用H式三极管来驱动的,很有意思,for(i=0;i<speed;i++){}}void main(){uint j,count= 20;uint speed = 2000;while(1){for(j=0;j<count;j++){P1=0x03;//4个引脚轮流转动delay(speed);P1=0x06;delay(speed);P1=0x0c;delay(speed);P1=0x09;delay(speed);}}}步进电动机(Step Motor)是一种数字控制电动机,它能将数字脉冲信号转换成角位移,即向其输出一个脉冲信号,步进电机就转动一个角度或者直线位移一步,所以称其为步进电机。