文档库 最新最全的文档下载
当前位置:文档库 › 温控步进电机的实现

温控步进电机的实现

温控步进电机的实现
温控步进电机的实现

基于Proteus的单片机温控步进电机电路及程序仿真设计

一.课设目的:

1.通过本设计,使学生综合运用《单片机原理及应用》及电子技术等课程的内容,为以后从事基于单片机的检测与控制工作奠定一定的基础。

2.主要掌握芯片DS18B20、ULN2803等器件的使用,掌握步进电机的使用。

3.学会用Keil C51语言编写一个完整的程序。

4.掌握单片机应用开发的全过程:分析需求、设计原理图、选用元器件、布线、编程、调试、撰写报告等步骤。

5.掌握Proteus软件的应用。

二.课设内容:

采用单片机内部定时器,设计1s定时,每秒检查一次由温度传感器输入的当前温度。设置温度的上限(t2)和下限(t1),假定当前温度为t。由此可知:

若t≥t2,则控制步进电机顺时针旋转;

若t≤t1,则控制步进电机逆时针旋转;

若t1<t<t2,步进电机停止转动。

三.问题分析及设计思路:

由设计要求可知,需要通过由温度传感器采集的温度来控制步进电机的转动,因此可以在源程序中加入相应的语句加以实现。电路原理图的设计思路如下:

1.单片机P1.0接温度传感器DS18B20,采集外界的当前温度。DS18B20的电源和地线分别接VCC和GND。

2.单片机P2.0~P2.3接74LS04,74LS04的输出接ULN2803,ULN2803的输出通过电阻接步进电机。

3.设计程序每秒检查一次由温度传感器输入的当前温度,根据设置的温度控制步进电机转动的方向或停止步进电机。

四.电路原理图:

N

五. 程序流程图:

Y 初始化 读取数据aa 显示温度aa 电机正转 延时

aa<=0x20 aa>=0x25 Y N 电机反转

六.实验源程序:

#include

#define uchar unsigned char

#define uint unsigned int

uchar code fortab[9]={0x0e,0x0c,0x0d,0x09,0x0b,0x03,0x07,0x06,0x00};

uchar code revtab[9]={0x0e,0x06,0x07,0x03,0x0b,0x09,0x0d,0x0c,0x00};

int time=500;

void disp(uchar cc);

void dsend(uchar bb);

void dmsec (unsigned int count);

void tmreset (void);

void tmpre (void);

bit tmrbit (void);

unsigned char tmrbyte (void);

void tmwbyte (unsigned char dat);

void tmstart (void);

uchar tmrtemp (void);

void dfor(void);

void drev(void);

rom();

//对调用的函数进行初始化定义

uchar code temper_tab[100]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09, 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x20,0x21,0x22,0x23,

0x24,0x25,0x26,0x27,0x28,0x29,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,

0x38,0x39,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x50,0x51,

0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x60,0x61,0x62,0x63,0x64,0x65,

0x66,0x67,0x68,0x69,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,

0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x90,0x91,0x92,0x93,

0x94,0x95,0x96,0x97,0x98,0x99

}; //定义温度范围,0到100度

uchar code dis_code[10]={0x03,0x9F,0x25,0x0D,0x99,0x49,0x41,0x1F,0x01,0x09};

//0 1 2 3 4 5 6 7 8 9

sbit TMDAT = P1^0; //根据实实际情况设定

uchar TMP; //读取后温度值存于TMP中,将其除以2即可得出实际温度;

uchar f; //结果是否为负温,“0”为正温,“1”为负温。

//正转子程序

void dfor(void)

{

uchar i;

uint j;

for(i=0;i<=8;i++)

{

P2=fortab[i];

for(j=0;j

}

}

//中断服务子程序(反转)

void drev(void) //interrupt 1 using 0

{

uchar i;

uint j;

for(i=0;i<=8;i++)

{

P2=revtab[i];

for(j=0;j

}

}

void disp(uchar cc)

{

uchar temp1,bb;

temp1=cc;

bb=temp1&0x0F;

dsend(bb);

bb=temp1>>4;

dsend(bb);

}

void dsend(uchar bb)

{

uchar i=bb;

SBUF=dis_code[i];

while(TI==0);TI=0;

}

////////////////////////////////////////延时部分////////////////////////// void dmsec (unsigned int count) // { // unsigned int i; //

while (count) //

{ //

i = 115; //

w hile (i>0) i--; //

c ount--; // } // } // ////////////////////////////////////////////////////////////////////////// /////////////////////////////////////// 发送复位////////////////////////// voi

d tmreset (void) // { // unsigned int i; //

TMDAT = 0; //

i = 103; //

while (i>0) i--; // 延时 900 uS(11.0592Mhz时) //

TMDAT = 1; //

i = 4; //

while (i>0) i--; // } // ////////////////////////////////////////////////////////////////////////// //判断DS1820是否存在的子程序。最好不要用,因为当器件不存在时将会进入死循环////////////////////////////////////// 等待存在脉冲/////////////////////// //void tmpre (void) //判断器件是否存在 // //{ // // unsigned int i; // // while (TMDAT); // // while (~TMDAT); // // i = 4; while (i>0) i--; // // } // ////////////////////////////////////////////////////////////////////////// ///////////////////////////////////// 读一位////////////////////////////// bit tmrbit (void) // { // unsigned int i; //

bit dat; //

TMDAT = 0; i++; //

TMDAT = 1; i++; i++; //微量延时 //

dat = TMDAT; //

i = 8; while (i>0) i--; // 延时 //

return (dat); //

} //

//////////////////////////////////////////////////////////////////////////

//////////////////////////////////////// 读一个字节/////////////////////// unsigned char tmrbyte (void) // { // unsigned char i,j,dat; //

dat = 0; //

for (i=1;i<=8;i++) //

{ //

j = tmrbit (); //

d at = (j << 7) | (dat >> 1); //

} //

return (dat); //

} //

//////////////////////////////////////////////////////////////////////////

/////////////////////////////////////// 写一个字节//////////////////////// void tmwbyte (unsigned char dat) // { // unsigned int i; //

unsigned char j; //

bit testb; //

for (j=1;j<=8;j++) //

{ //

t estb = dat & 0x01; //

d at = dat >> 1; //

i f (testb) //

{ // TMDAT = 0; // 写0 //

i++; i++; //

TMDAT = 1; //

i = 8; while (i>0) i--; //

} //

e lse //

{ // TMDAT = 0; // 写0 //

i = 8; while (i>0) i--; //

TMDAT = 1; //

i++; i++; // } //

} // } // //////////////////////////////////////////////////////////////////////////

/////////////////////////////////发送ds1820 开始转换////////////////////// void tmstart (void) // { // tmreset (); //复位 //

//tmpre (); //等待存在脉冲 //

dmsec (1); //延时 //

tmwbyte (0xcc); //跳过序列号命令 //

tmwbyte (0x44); //发转换命令 44H, //

} //

//////////////////////////////////////////////////////////////////////////

/////////////////////////////////// 读取温度////////////////////////////// uchar tmrtemp (void) // { // unsigned char l,h,i; //

tmreset (); //复位 //

//tmpre (); //等待存在脉冲 //

dmsec (1); //延时 //

tmwbyte (0xcc); //跳过序列号命令 //

tmwbyte (0xbe); //发送读取命令 //

l = tmrbyte (); //读取低位温度 //

h = tmrbyte (); //读取高位温度 //

TMP=l>>4; //

if((l>>3)&0x01==0x01) //

TMP=TMP+1; //

TMP=((h&0x07)<<4)|TMP; //

i=TMP; //

TMP=temper_tab[i]; //

// return(TMP) ; //

} //

//////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////

void main(void) //

{ uchar aa,i; // do{ //

t mstart(); //

d msec(100); //如果是不断地读取的话可以不延时 //

aa=tmrtemp(); //读取温度,执行完毕温度将存于TMP中 //

d isp(aa); //

if(aa<=0x20) //

d for(); //对读取温度进行判断,若小于等于20度则电机正转 //

else if(aa>=0x25) //

d rev(); //若读取温度大于等于25度则电机反转 //

e lse; //若读取温度在20度与25度之间,则电机停止转动 //

for(i=0;i<100;i++); //

}while(1); //

} //

//////////////////////////////////////////////////////////////////////////

七.遇到的问题及解决方法:

1.在使用Proteus软件绘制电路图时,遇到的器件名称不唯一的问题。

解决方法:在绘制电路图时,必须保证器件名称唯一,否则就会仿真时就会提示出错。需进行修改使其唯一。

2.绘制电路图时,器件的安放及线路连接问题。

解决方法:由于该电路涉及的功能模块比较多,故器件排布及线路连接有些复杂。在进行了多次修改之后,确定了比较合理的布局方式,使电路图看起来较为整洁有条理。

3.在编写源程序时,出现的某些函数无法进行调用的问题。

解决方法:在对老师所给的代码进行分析之后,发现若需要在主程序中对函数进行调用,则应该在代码前面对其进行声明,否则编译时会出现错误。

八.仿真结果:

1.若读取的温度大于20度且小于25度,则电机停止转动:

2.若读取的温度大于等于25度,则电机反转:

3.若读取的温度小于等于20度,则电机正转:

九.课设小结:

通过本次课设,熟悉了proteus软件的使用方法,了解了Keil C51语言编写程序的相关知识。在老师的指导下,解决了课设过程中出现的一些问题,加深了自己对有关知识的理解。特别是使用proteus软件绘制电路图时的一些收获,让我觉得受益匪浅,也对该软件的使用变得更加熟练。在使用Keil C51语言编写程序时,也学习了对单片机源程序编写的一些技巧。在编写单片机源程序时,要设计好各个功能模块,以及延时子程序、相关芯片的复位、显示等。在对各个功能函数进行调用之前,需对其进行初始化。通过本次课设,也对之前学习的知识有了一个回顾和总结,收获很多。

单片机基于80C51单片机的步进电机控制系统

中国地质大学长城学院 本科课程设计题目:基于80C51单片机的步进电机控制系统 系别信息工程系 学生姓名 专业电气工程及其自动化 学号 指导教师 职称讲师 2014 年6 月11 日

摘要 本文研究基于51系列单片机的步进电机控制系统设计,该系统包括以下几个部分:数据采集、数据处理、终端接收,该系统以汇编语言为单片机的驱动程序语言,单片机控制步进电机,主要任务是把二进制数变成脉冲序列,按相序输入脉冲以实现电机转动方向控制,利用单片机实现对步进电机的远距离实时监控,从而达到高效、节能的控制步进电机工作的目的,该系统具有成本低、控制方便的特点。使用单片机驱动四相步进电机,控制步进电机以四相八拍的方式运行,来实现步进电机正向/反向旋转,P1.0~P1.3分别控制步进电机;P1.5~P1.7分别控制步进电机的停止、正转、反转。 关键词:51单片机;步进电机;数据采集;汇编语言;

目录 摘要 0 1 设计目的 (1) 2设计内容与要求 (1) 3 总体设计方案 (1) 3.1整体方案 (1) 3.2具体方案实现 (1) 4系统硬件设计 (2) 4.1复位电路 (2) 4.2晶振电路 (2) 4.3按键电路 (3) 4.4指示灯电路 (3) 4.5驱动电路 (4) 4.6步进电机 (4) 5程序软件设计 (5) 5.1程序流程图 (5) 5.2源程序 (6) 6系统调试与仿真 (7) 7总结 (8)

1设计目的 1.掌握单片机控制步进电机的硬件接口电路。 2.掌握步进电机驱动程序的设计和调试方法。 3.熟悉步进电动机的工作特性。 2设计内容与要求 1.查阅资料,了解步进电机的工作原理。 2.通过单片机给定参数控制电机转动。 3.通过按钮控制正转、反转和停止。 3总体设计方案 3.1整体方案 本系统主要是由AT89C51,步进电机控制器ULN2004,步进电机,通过单片机编程,实现步进电机控制的脉冲分配,使电机实现正转,反转以及停止等功能 3.2具体实现方案 根据系统要求画出单片机控制步进电机的控制框图,见下图。系统包括单片机、按键、驱动电路和步进电机。 键盘80c51单片机 步进电机 驱动电路

用单片机控制步进电机

用单片机控制步进电机 步进电机是机电控制中一种常用的执行机构,它的用途是将电脉冲转化为角位移,通俗地说:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。通过控制脉冲个数即可以控制角位移量,从而达到准确定位的目的;同时通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。 一、步进电机常识 常见的步进电机分三种:永磁式(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切换为低电平即可驱动步进电机运行,注意在切换之前将前一个输出引脚变为高电平。如果要改变电机的

基于单片机的步进电机控制系统的设计_毕业设计

本科毕业设计 基于单片机的步进电机控制系统的设计

摘要 随着自动控制系统的发展和对高精度控制的要求,步进电机在自动化控制中扮演着越来越重要的角色,区别于普通的直流电机和交流电机,步进电机可以对旋转角度和转动速度进行高精度控制。步进电机作为控制执行元件,是机电一体化的关键组成之一,广泛应用在各种自动化控制系统和精密机械等领域。 步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。 本系统介绍了一种基于单片机的步进电机控制系统的设计,包括了硬件设计和软件设计两部分。其中,硬件设计包括单片机最小系统、键盘控制模块、LCD显示模块、步进电机驱动模块、位置检测模块共5个功能模块的设计。系统软件设计采用C语言编写,包括主程序、数字键处理程序、功能键处理程序、电机驱动处理程序、显示模块、位置采集模块。 本设计采用STC89C52单片机作为主控制器,4*4矩阵键盘作为输入,LCD1602液晶作为显示,ULN2003A芯片驱动步进电机。系统具有良好的操作界面,键盘输入步进电机的运行距离;步进电机能以不同的速度运行,可以在不超过最大转速内准确运行到任意设定的位置,可调性较强;显示设定的运行距离和实际运行距离;方便操作者使用。关键词:单片机步进电机液晶显示键盘驱动

Design of the Stepping Motor Control System Based on SCM Qiu Haizhao (College of Engineering, South China Agricultural University, Guangzhou 510642,China) Abstract:With the development of automatic control system and the requirements of high-precision control, stepping motor control in automation is playing an increasingly important role, different from the common DC and AC motor, stepper motor rotation angle and rotational speed can be high-precision controlled. Stepper motor as a control actuator is a key component of mechanical and electrical integration, widely used in a variety of automated control systems and precision machinery and other fields. Stepper motor is the open-loop control components changing electric pulse signals into angular displacement or linear displacement .In the case of non-overloaded, the motor speed, stop position depends only on the pulse frequency and pulse number, regardless of load changes, that is, to add a pulse motor, the motor is turned a step angle. This system introduces a design of stepper motor control system based on single chip microcomputer, including hardware design and software design in two parts. Among them, the hardware design, including single chip minimal system, keyboard control module, LCD display module, the stepper motor drive module, position detection module five functional modules. System software design using C language, including the main program, process number keys, the key of function processes, motor driver handler, the display module, position acquisition module. This design uses STC89C52 microcontroller as the main controller, 4 * 4 matrix keyboard as an input, LCD1602 LCD as a display, ULN2003A chip as stepper motor driver. System has a good user interface, keyboard input stepper motor running distance; Stepper motor can run at different speed, and run to any given position accurately in any speed without exceeding the maximum speed, with a strong adjustable ; Display the running distance and the actual running distance, which is more convenient for the operator to use. Key words: SCM stepper LCD keyboard driver

基于Proteus的步进电机加减速控制辅助设计方法

表4钎杆改进前后的数据对比 总结点数总单元数 最大应力值(MPa )最小应力值(MPa )最大位移值(mm ) 原始模型3346105225027.150.112986改进模型 3654 10940 549 5.910.096754 4.3其他改进方面 除有限元分析的机械性能有改善之外,改进后的模型在轻量化、经济性上也有些许进步。 原始模型耗费材料的体积为(1.0644054×107)mm 3 ,质量为76.5kg ,改进后耗费材料体积为(1.0066225×107)mm 3 ,质量为72.757kg ,分别减 少5.43%和4.89%,此外,由于去除了上缸套、中缸套、下缸套,减少了合金钢原材料的使用并降低了加工成本,而增加体积较多的上缸体 所使用材料是经济性较好的球墨铸铁,可见,在制造成本上改进后的模型也取得了较好的效果。 5结论 在各项技术指标和基本工作原理不变的前提下,对液压破 碎锤零部件进行改进设计,并利用Pro/E 软件建立其机械本体和控制元件的三维模型,利用ANSYS 软件对液压破碎锤主要易损部件—冲击活塞、钎杆进行应力分析。通过对YC70液压破碎锤的建模和分析,改进后的模型在机械性能、经济性、轻量化等方面都取得了满意的结果,达到了改进的目的。 参考文献 [1]王雪,龚进,邹湘伏.液压冲击器的研究状况和发展趋势[J ].凿岩机械 气动工具,2006(3):19-23. [2]许同乐,夏明堂.液压破碎锤的发展与研究状况[J ].机械工程师,2005 (6):20-21.[3]范思源.液压破碎锤计算机仿真与实验研究[D ]:[硕士学位论文].上海:上海交通大学,2008. [4]杨国平.全液压独立无级调频调能液压冲击器的研究[D ]:[博士学位 论文].长沙:中南大学,2001. [5]谢良喜,陶平.液压破碎锤工作状态下活塞的力学模型与应力分析[J ].工程机械,2007(38):44-46. [6]博弈工作室.ANSYS9.0经典产品基础教程与实例详解[M ].北京:中国 水利水电出版社,2006.基于Proteus 的步进电机加减速控制辅助设计方法* 张利君张吉堂 (中北大学机械工程与自动化学院,太原030051 )Aided design methods for accelerating and decelerating control of step motor based on proteus ZHANG Li-jun ,ZHANG Ji-tang (School of Mechanical Engineering &Automatization ,North University of China ,Taiyuan 030051,China ) 文章编号:1001-3997(2011)05-0043-03 【摘要】研究利用Proteus 中的各种微控制器仿真模块实现步进电机加减速控制算法仿真,并且可以 在Proteus 中完成步进电机控制系统的硬件电路设计, 同时再结合软件程序设计进行仿真,最后通过Proteus 中的虚拟仪器记录分析仿真数据,从而实现了为设计步进电机加减速控制系统提供了一条快速、高效且低成本的设计途径。举例采用单片机AT89C52作为微控制器,通过高级仿真图表导出仿真数据,并利用Matlab 处理这些数据得到了预想的加减速曲线,证明方法在步进电机的加减速控制系统设计中可行性。 关键词:Proteus ;步进电机;加减速;仿真 【Abstract 】It studies the algorithm simulation for stepper motor accelerating and decelerating control by applying various micro-controller simulation module in Proteus software.It could complete the hardware cir -cuit design for control system of the step motor ,and simulate the design program with the software in Proteus . Thus ,the simulation data is recorded and analyzed through virtual instruments in Proteus so as to Provide a fast ,efficient and low-cost design approach for stepper motor accelerating and decelerating control system.For example ,it takes the single-chip computer AT89C52as the micro-controller which shall induct the simulation data through the advanced simulation chart , then the acceleration and deceleration curves expected shall be obtained after processing these data through the Matlab ,which shows us it is feasible to design the control system of the step motor in this method. Key words :Proteus ;Stepper motor ;Acceleration and deceleration ;Simulation 中图分类号:TH16 文献标识码:A *来稿日期:2010-07-04*基金项目:山西省科技攻关项目(20100321056-02) 1引言 步进电机是一种将电脉冲转换为机械角位移的机电执行元件,它的角位移量和输入脉冲的个数严格成正比,在时间上与输 入脉冲同步,非常适合于开环控制系统中,而且价格低廉,因此在工程中得到了广泛的应用。但不同的工程应用场合,其控制要求不同,需要的控制硬件和控制软件也不同,怎样快速地设计出符 ********************************************* Machinery Design &Manufacture 机械设计与制造 第5期 2011年5月 43

步进电机驱动及控制专业技术解答

步进电机驱动及控制技术解答 1.步进电机为什么要配步进电机驱动器才能工作? 步进电机作为一种控制精密位移及大范围调速专用的电机, 它的旋转是以自身固有的步距角角(转子与定子的机械结构所决定)一步一步运行的, 其特点是每旋转一步,步距角始终不变,能够保持精密准确的位置。所以无论旋转多少次,始终没有积累误差。由于控制方法简单,成本低廉,广泛应用于各种开环控制。步进电机的运行需要有脉冲分配的功率型电子装置进行驱动, 这就是步进电机驱动器。它接收控制系统发出的脉冲信号,按照步进电机的结构特点,顺序分配脉冲,实现控制角位移、旋转速度、旋转方向、制动加载状态、自由状态。控制系统每发一个脉冲信号, 通过驱动器就能够驱动步进电机旋转一个步距角。步进电机的转速与脉冲信号的频率成正比。角位移量与脉冲个数相关。步进电机停止旋转时,能够产生两种状态:制动加载能够产生最大或部分保持转矩(通常称为刹车保持,无需电磁制动或机械制动)及转子处于自由状态(能够被外部推力带动轻松旋转)。步进电机驱动器必须与步进电机的型号相匹配。否则将会损坏步进电机及驱动器。 2.什么是驱动器的细分?运行拍数与步距角是什么关系? “细分”是针对“步距角”而言的。没有细分状态,控制系统每发一个步进脉冲信号,步进电机就按照整步旋转一个特定的角度。步进电机的参数,都会给出一个步距角的值。如110BYG250A型电机给出的值为0.9°/1.8°(表示半步工作时为0.9°、整步工作时为1.8°),这是步进电机固有步距角。通过步进电机驱动器设置的细分状态,步进电机将会按照细分的步距角旋转位移角度,从而实现更为精密的定位。以110BYG250A电机为例,列表说明: 可以看出,细分数就是指电机运行时的真正步距角是固有步距角(整步)的几分指一。例如,驱动器工作在10细分状态时,其步距角只有步进电机固有步距角的十分之一。当驱动器工作在不细分的整步状态时,控制系统每发一个步进脉冲,步进电机旋转1.8°;而用细分驱动器工作在10细分状态时,电机只转动了0.18°。其实,细分就是步进电机按照微小的步距角旋转,也就是常说的微步距控制。当然,不同的场合,有不同的控制要求。并不是说,驱动步进电机必须要求细分。有些步进电机的步距角设计为3.6°、7.5°、15°、36°、180°,就是为了加大步距角,以适应特殊的工况条件。细分功能,只由驱动器采用精确控制步进电机的相电流方法,与步进电机的步距角无关,而与步进电机实际工作状态相关。 运行拍数与驱动器细分的关系是:运行拍数指步进电机运行时每转一个齿距所需的脉冲数。例如:110BYG250A电机有50个齿,如果运行拍数设置为160,那么步进电机旋转

步进电机驱动控制系统设计(有程序)

目录 一前言 (1) 二总体方案设计 (1) 1工作原理 (1) 2方案选择 (1) 2.1时钟脉冲 (1) 2.2脉冲分配器 (1) 2.3驱动器 (1) 3 总的框架 (2) 三单元模块设计 (2) 1单片机模块 (2) 1.1复位控制 (3) 1.2单片机频率 (3) 2接口 (3) 3驱动器ULN2003 (4) 4按键模块 (5) 5步进电机 (5) 5.1工作原理 (5) 5.2 28BYJ48型四相八拍 (7) 四整机调试与技术指标测量 (8) 五设计总结 (8) 参考文献 (9) 附录1电路原理图 (10) 附录2 源程序 (11)

一、前言 步进电动机是一种将电脉冲信号转换成机械位移的机电执行元件,是机电一体化的关键产品之一, 广泛应用在各种自动化控制系统中。随着微电子和计算机技术的发展,步进电机的需求量与日俱增,在各个国民经济领域都有应用。 二、总体方案设计 1、工作原理 步进电机是一种将电脉冲转化为角位移的执行机构。通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。您可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时您可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。 2、方案选择 (1)时钟脉冲 通常有两种方法实现: 方案一直接有硬件组成如:多谐振荡器 LC 等。 方案二用软件的方式形成优点便于随时更改,调整。 为了方便我们选用软件方式有单片机实现。 (2)脉冲分配器 方案一硬件环形分配器:由计数器等数字电路组成的。有较好的响应速度,且具有直观、维护方便等优点。 方案二软件环分:由计算机接口电路和相应的软件组成的。受到微型计算机运算速度的限制,有时难以满足高速实时控制的要求。由软件完成脉冲分配工作,不仅使线路简化,成本下降,而且可根据应用系统的需要,灵活地改变步进电机的控制方案。 考虑到硬件设备的有限和对步进电机的控制我们选择软件环分可以有单片机实现。 (3)驱动器 方案一使用功率场效应管的单电压功放电路。

51单片机驱动步进电机的方法(详解)

51单片机驱动步进电机的方法2019.02 这款步进电机的驱动电压12V,步进角为7.5度. 一圈360 度, 需要48 个脉冲完成!!! 该步进电机有6根引线,排列次序如下:1:红色、2:红色、3:橙色、4:棕色、5:黄色、6:黑色。 采用51驱动ULN2003的方法进行驱动。 ULN2003的驱动直接用单片机系统的5V电压,可能力矩不是很大,大家可自行加大驱动电压到12V。 ;****************************************************************************** ;*************************步进电机的驱动*************************************** ; DESIGN BY BENLADN911 FOSC = 12MHz 2005.05.19

;--------------------------------------------------------------------------------- ; 步进电机的驱动信号必须为脉冲信号!!! 转动的速度和脉冲的频率成正比!!! ; 本步进电机步进角为7.5度. 一圈360 度, 需要48 个脉冲完成!!! ;--------------------------------------------------------------------------------- ; A组线圈对应P2.4 ; B组线圈对应P2.5 ; C组线圈对应P2.6 ; D组线圈对应P2.7 ; 正转次序: AB组--BC组--CD组--DA组(即一个脉冲,正转7.5 度) ;---------------------------------------------------------------------------------- ;----------------------------正转-------------------------- ORG 0000H LJMP MAIN ORG 0100H MAIN: MOV R3,#144 正转3 圈共144 脉冲 START: MOV R0,#00H START1: MOV P2,#00H MOV A,R0 MOV DPTR,#TABLE MOVC A,@A+DPTR JZ START 对A 的判断,当A = 0 时则转到START MOV P2,A LCALL DELAY INC R0 DJNZ R3,START1 MOV P2,#00H LCALL DELAY1 ;-----------------------------反转------------------------ MOV R3,#144 反转一圈共144 个脉冲 START2: MOV P2,#00H

基于单片机的步进电机控制系统

编号: 综合智能电子 实训 (论文)说明书题目: 院(系):使用科技学院 专业:电子信息工程 学生姓名: 学号: 指导教师: 2010年 1 月 6 日

目录 引言 第1章简介 1.1 步进电机 第2章步进电机原理 2.1 步进电机的工作原理 2.1.1结构及基本原理 2.1.2 电机的步进顺序 第3章系统的硬件设计 3.1 系统设计方案 3.2 主从机硬件部件介绍 3.2.1A T89S51简介 3.2.2 TGI2864E简介 3.2.3MAX485 串行通信 3.2.4TIP122 3.2.5 MOC70T2 3.3 LCD显示电路设计 3.4 电机驱动模块设计 第4章系统的软件实现 4.1 系统软件主流程图 4.2 系统初始化流程图 4.3 部分子程序 第五章总结 致谢 参考文献 摘要:本文使用单片机、步进电机驱动芯片、字符型LCD和键盘阵列,构建了集步进电机控制器和驱动器为一体的步进电机控制系统。二维工作台作为被控对象通过步进电机驱动滚珠丝杆在X/Y轴方向联动。文中讨论了一种以最少参数确定一条圆弧轨迹的插补方法和步进电机变频调速的方法。步进电机控制系统的开发采用了软硬件协同仿真的方法,可以有效地减少系统开发的周期和成本。最后给出了步进电机控制系统的使用实例。

关键词:步进电机控制系统,插补算法,变频调速,软硬件协同仿真 In this paper, microcontroller, stepper motor driver chips, character LCD and keypad array, build a set of stepper motor controller and driver as one of the stepping motor control system. Two-dimensional table as a charged object by stepper motor drive ball screw in X / Y axis linkage. This paper discusses a minimum of parameters to determine the trajectory of a circular interpolation method and the method of frequency control stepper motor. Stepper motor control system has been developed using the software and hardware co-simulation method, can effectively reduce the system development cycle and cost. Finally, the stepper motor control system application examples.

51单片机控制步进电机的转动,加减速,停止,反转

#include sbit inc=P3^2; sbit dec=P3^3; sbit zhzhd=P3^6; sbit fazhd=P3^7; bit flag=1; unsigned char t=0x00; //表正反速度 void delay(unsigned int t); void motor_ffw(); unsigned char code led7code[]= {0x81,0xe7,0x92,0xc2,0xe4,0xc8,0x88,0xe3,0x00,0xc0}; unsigned int num=0; unsigned char code FFW[8]={0x40,0x60,0x20,0x30,0x10,0x18,0x08,0x48}; unsigned char code FFZ[8]={0x48,0x08,0x18,0x10,0x30,0x20,0x60,0x40}; //反转 void main() { EA=1; IT0=1; EX0=1; IT1=1; EX1=1; TMOD=0x06; TL0=0xff; TH0=0xff; TR0=1; ET0=1; P3=0x3f; P0=led7code[num%10]; while(1) { motor_ffw(); } } void motor_ffw() /* 步进电机驱动*/ // {

unsigned char i; int j; while(1) { for(j=0;j<12;j++) //12个周期转一圈 { for (i=0; i<8; i++) //一个周期转30度 { if(flag==1) P2 = FFW[i]; //取数据 else P2 = FFZ[i]; delay(t); //t调节转速 } } } } void int0(void) interrupt 0 { EX0=0; delay(10); if(inc==0) { num++; P0=led7code[num%10]; if(num%10!=0&&flag){zhzhd=0;fazhd=1;} else if (num%10==0){zhzhd=0;fazhd=0;} else {zhzhd=1;fazhd=0;} switch(num%10) { case 0:t=0x00;break; case 1:t=0x12;break; case 2:t=0x11;break; case 3:t=0x10;break; case 4:t=0x09;break; case 5:t=0x08;break; case 6:t=0x07;break; case 7:t=0x06;break; case 8:t=0x05;break; case 9:t=0x04;break;

步进电机驱动器控制信号接口说明

. .. 步进电机驱动器控制信号接口说明 驱动器是把计算机控制系统提供的弱电信号放大为步进电机能够接受的强电流信号,控制系统提供给驱动器的信号主要有以下三路: 1.步进脉冲信号CP:这是最重要的一路信号,因为步进电机驱动器的原理就是要把控制系统发出的脉冲信号转化为步进电机的角位移, 或者说:驱动器每接受一个脉冲信号CP,就驱动步进电机旋转一步距角, CP的频率和步进电机的转速成正比, CP的脉冲个数决定了步进电机旋转的角度。这样,控制系统通过脉冲信号CP就可以达到电机调速和定位的目的。 2.方向电平信号 DIR:此信号决定电机的旋转方向。比如说,此信号为高电平时电机为顺时针旋转,此信号为低电平时电机则为反方 向逆时针旋转。此种换向方式,我们称之为单脉冲方式。另外,还有一种双脉冲换向方式:驱动器接受两路脉冲信号(标注为CW和CCW),当其中一路(如CW)有脉冲信号时,电机正向运行,当另一路(如CCW)有脉冲信号时,电机反向运行。用户使用何种方式,由拨位开关设定。 3.使能信号EN:此信号在不连接时默认为有效状态,这时驱动器正常工作。当此信号回路导通时,驱动器停止工作,这时电机处于无力矩状态(等同于本公司SH系列驱动器的FREE信号),此信号为选用信号。 为了使控制系统和驱动器能够正常的通信,避免相互干扰,我们在驱动器内部采用光耦器件对输入信号进行隔离,三路信号的内部接口电路相同,常用的连接方式为①共阳方式:把CP+、DIR+和EN+接在一起作为共阳端接外部系统的+5V,脉冲信号接入CP-端,方向信号接入DIR-端,使能信号接入EN-端;②共阴方式:把CP-、DIR-和EN-接在一起作为共阴端接外部系统的GND,脉冲信号接入CP+端,方向信号接入DIR+端,使能信号接入EN+端;③差动方式:直接连接。 驱动器输入信号内部接口示意图 如果驱动器输入信号为电压信号,要求:3.6V≤高电平≤5.5V; -5.5V≤低电平≤0.3V,最常用的为TTL电平。 如果驱动器输入信号为电流信号,要求:7mA≤高电流≤18mA; -18mA≤低电流≤0.2mA。 不管是电压信号还是电流信号,最终转化为光耦器件的输入电流以达到信号传输的目的(参考上图),如果电压信号的幅值超出以上要求的范围须在外部另加限流电阻R,保证给驱动器内部光耦提供7-18mA的驱动电流,参见下图和下表。 步进电机的运行是由脉冲信号控制的,步进电机在脉冲信号的有效沿到来的时刻移动一个步距角,本系列驱动器的有效沿是指:脉冲信号电流“由小到大”的时刻,或者说脉冲电平“由低到高”的时刻,或者说是驱动器内部光耦“由截止到打开”的时刻。 脉冲信号的频率要求不大于200KHz; 脉冲信号的宽度要求不小于2μS。 脉冲信号的驱动电流要求为7-18mA 电机换向时,一定要在电机降速停止后再换向。换向信号要求在前一个方向的最后一个脉冲有效沿结束至少5μS以上才能改变换向信号,且不滞后下一个脉冲信号的有效沿。 如果使用双脉冲CW/CCW方式,则要求下一个方向的第一个脉冲(如CCW)在前一个方向的最后一个脉冲(CW)有效沿后至少5μs才能有效。

步进电机工作原理、驱动控制系统与选型

步进电机工作原理、驱动控制系统与选型 一、感应子式步进电机工作原理 (一)反应式步进电机原理 由于反应式步进电机工作原理比较简单。下面先叙述三相反应式步进电机原理。 1、结构: 电机转子均匀分布着很多小齿,定子齿有三个励磁绕阻,其几何轴线依次分别与转子齿轴线错开。0、1/3て、2/3て,(相邻两转子齿轴线间的距离为齿距以て表示),即A与齿1相对齐,B与齿2向右错开1/3て,C与齿3向右错开2/3て,A'与齿5相对齐,(A'就是A,齿5就是齿1)下面是定转子的展开图: 2、旋转: 如A相通电,B,C相不通电时,由于磁场作用,齿1与A对齐,(转子不受任何力以下均同)。 如B相通电,A,C相不通电时,齿2应与B对齐,此时转子向右移过1/3て,此时齿3与C偏移为1/3て,齿4与A偏移(て-1/3て)=2/3て。 如C相通电,A,B相不通电,齿3应与C对齐,此时转子又向右移过1/3て,此时齿4与A偏移为1/3て对齐。 如A相通电,B,C相不通电,齿4与A对齐,转子又向右移过1/3て。 这样经过A、B、C、A分别通电状态,齿4(即齿1前一齿)移到A 相,电机转子向右转过一个齿距,如果不断地按A,B,C,A……通电,

电机就每步(每脉冲)1/3て,向右旋转。如按A,C,B,A……通电,电机就反转。 由此可见:电机的位置和速度由导电次数(脉冲数)和频率成一一对应关系。而方向由导电顺序决定。 不过,出于对力矩、平稳、噪音及减少角度等方面考虑。往往采用A-AB-B-BC-C-CA-A这种导电状态,这样将原来每步1/3て改变为1/6て。甚至于通过二相电流不同的组合,使其1/3て变为1/12て,1/24て,这就是电机细分驱动的基本理论依据。 不难推出:电机定子上有m相励磁绕阻,其轴线分别与转子齿轴线偏移1/m,2/m……(m-1)/m,1。并且导电按一定的相序电机就能正反转被控制——这是步进电机旋转的物理条件。只要符合这一条件我们理论上可以制造任何相的步进电机,出于成本等多方面考虑,市场上一般以二、三、四、五相为多。 3、力矩: 电机一旦通电,在定转子间将产生磁场(磁通量Ф)当转子与定子错开一定角度产生力 F与(dФ/dθ)成正比 其磁通量Ф=Br*S ;Br为磁密;S为导磁面积; F与L*D*Br成正比;L为铁芯有效长度;D为转子直径;Br=N·I/RN·I为励磁绕阻安匝数(电流乘匝数)R为磁阻。 力矩=力*半径力矩与电机有效体积*安匝数*磁密成正比(只考虑线性状态) 因此,电机有效体积越大,励磁安匝数越大,定转子间气隙越小,电机力矩越大,反之亦然。 (二)感应子式步进电机

基于单片机的步进电机控制器 毕业设计论文

基于单片机的步进电机控制器毕业设计论文 目录 第1章绪论 (3) 1.1引言 (3) 1.2步进电机常见的控制方案与驱动技术简介 (5) 1.2.1常见的步进电机控制方案 (5) 1.2.2步进电机驱动技术 (7) 1.3本文研究的内容 (9) 第2章步进电机概述 (10) 2.1步进电机的分类 (10) 2.2步进电机的工作原理 (11) 2.2.1结构及基本原理 (11) 2.2.2两相电机的步进顺序 (11) 2.3 步进电机的工作特点 (14) 2.4本章小结 (16) 第3章系统的硬件设计 (17) 3.1系统设计方案 (17) 3.1.1系统的方案简述与设计要求 (17) 3.1.2系统的组成及其对应功能简述 (17) 3.2单片机最小系统 (19) 1

3.2.1AT89S51简介 (19) 3.2.2单片机最小系统设计 (24) 3.2.3单片机端口分配及功能 (25) 3.3串口通信模块 (25) 3.4数码管显示电路设计 (26) 3.4.1共阳数码管简介 (26) 3.4.2共阳数码管电路图 (27) 3.5电机驱动模块设计 (28) 3.5.1L298简介 (28) 3.5.2电机驱动电路设计 (29) 3.6驱动电流检测模块设计 (31) 3.6.1OP07芯片简介 (31) 3.6.2ADC0804芯片简介 (33) 3.6.3电流检测模块电路图 (36) 3.7独立按键电路设计 (37) 3.8本章小结 (37) 第4章系统的软件实现 (38) 4.1系统软件主流程图 (38) 4.2系统初始化流程图 (39) 4.3按键子程序 (40) 结论 (44) 2

单片机步进电机控制实训报告.doc

单片机课程设计——步进电动机系统实训报告 李会民 电子工程系应用电子高职(3)08-1班 二00九年十二月

步进电机控制实训报告 一、实验要求 利用P0输出脉冲序列,74LS244输入开关量,开关K2-K8控制步进电机转换(分6挡).K0,K1控制步进电机转向.必须要K2-K8中一开关和K0,K1中一开关同时为‵1′时步进电机才启动,其他情况步进电机不工作. 步进电机驱动原理是通过对它每线圈中的电流的顺序切换来使电机作步进式旋转.驱动电路由脉冲信号来控制,所以调节脉冲信号的频率便可改变步进电机的转速.微电脑控制电机步进电机最合适. 二、实验目的 (a)了解步进电机控制的基本原理 (b)掌握控制步进电机转动编程方法 三、单片机控制原理及电路连线 单片机是用来为步进电机进行控制的,给电机提供时序脉冲,让电机以某一种方式进行运转。硬件部分设计 AT89C51 外围电路设计包含有三部分的设计:键盘模块,晶振模块及复位模块。 通过按键的输入,单片机作为控制的中心决定步进电机的正转,反转,启动及停止等操作。同时通过单片机实现电子时钟控制步进电机。 键盘设计。考虑有两种方式:需要上拉电阻的方式和不需要上拉电阻的方式。由于单片内部设有小的上拉电阻,当外围电路很小时,是可以不考虑前一种方式的。我们的键盘只是起到输入时序的作用,并没有外带大的电路,所以我们选择第二种方式: 当K_1按下时:步进电机处于启动状态; 当K_2按下时:步进电机处于停止状态; 当K_3按下时:步进电机处于正向状态; 当K_4按下时:步进电机处于反向状态; 基于AT89C51的步进电机驱动器控制系统电路原理可以表示为如下图:

步进电机加速 减速方法

不需要专门的延迟。但是软件中应该做到使速度是连续的渐变,而不是突变。 类似物理里面我们分析的“上抛物体”的运动一样:先按匀减速运动,速度减到零后就变成反方向的匀加速运动了。 不要有从某个速度“突变”为静止,或由静止“突变”为某个速度的操作。这种“突变”自然会产生冲击振动。 至于这个“匀加速度”、“匀减速度”的加速度大小,则可以根据步进电机的性能和负载的惯性大小来确定。 通常,步进电机都会给出一个“最大力矩”的参数。根据这个最大力矩,和负载的惯性(包括步进电机的转子和传动机构的惯性在内)大小,可以计算出加速度不应该超过多少。实际设计时,还应该比最大允许值再留出相当的余地。 当然,我上面说的“速度”、“加速度”都是一个连续的理论值,实际的步进电机是一步一步离散的操作的,和理论规律总会有差别。但是只要这种“量化误差”不超过一定限度,就可以有满意的效果了。 最理想的是,这个误差的累计值不超过0.5步。也就是说,假如按照上述“匀加速”、“匀减速”的理论计算,在时刻t的时候应该走到x步(有小数)的位置,而真实的执行效果是:走到的位置总是等于x的四舍五入取整的值。这是最理想的。 如果算法设计不好,这个累积误差可能会大些。但最坏的情况下,这个误差的累计值不要超过半个相位周期。例如,您的脉冲分配如果是“四相八拍制”,那么,累积误差就必须小于4步。 超出的话,就会发生步进电机的“失步”。 上面说的道理,对于采用不采用“细分”,道理是一样的。只是采用细分后的每一个“步”(“细步”)比原来小了,容易做到比较均匀。 例如上面说的“四相八拍制累积误差就必须小于4步”,如果采用了“16细分”,那么只要小于64“细步”就可以,显然软件里处理起来更容易一些。 但是,只要软件考虑设计仔细一些,不采用细分也是可以做到的。 【看了“广州一丁”兄的回答后,再补充说明一点】 上面“广州一丁”兄说的“减速时间长点,加速时间同时也长点”,就相当于我这里说的“匀加速运动”和“匀减速运动”段中,加速度的绝对值再小一些。 原则上说,这个加速度的绝对值,只要不超过上面说的根据电机性能和负载惯性算出来的允许值就可以。当然,更小一点冲击更小。 我只是担心,您是否没有按“匀加速”、“匀减速”设计,而是直接由静止突变为某个速度,或由某个速度突变为静止。如果是那样,问题就比较大了。 一般来说,一个方向的运动,应该分为至少两个阶段,或者还需要三个阶段。开始是由静止开始的匀加速度段,后段是匀减速段(直到速度减为零)。如此,中间的速度最高。假如最高的速度超出了电机或者我们的设备允许的值,那么还应该限制。于是,中间又多出一个段:匀速段。这就成了三个段。 这种控制原理上应该是清楚的。但是实现时的算法,则根据需求不同,有可能需要特别安排。

相关文档
相关文档 最新文档