【matlab编程代做】步进电机控制器设计
利用DSP实现的步进电机控制器的设计

利用DSP实现的步进电机控制器的设计数字信号处理(Digital Signal Processing,简称DSP)是一门涉及许多学科而又广泛应用于许多领域的新兴学科。
20世纪60年代以来,随着计算机和信息技术的飞速发展,数字信号处理技术应运而生并得到迅速的发展。
数字信号处理是一种通过使用数学技巧执行转换或提取信息,来处理现实信号的方法,这些信号由数字序列表示。
在过去的二十多年时间里,数字信号处理已经在通信等领域得到极为广泛的应用。
德州仪器、Freescale等半导体厂商在这一领域拥有很强的实力。
TMS320LF2407是TI公司主推的一种高性能、低价格DSP处理器,其处理速度达到30 MIPS,片内处理集成RAM、Flash及定时器外,还集成了A/D转换器、PWM控制器及CAN总线控制器等模块,特别适合于电机、电源变换等实时要求高的控制系统。
但是通常设计DSP程序的方法是,在DSP的集成开发环境CCS中用C语言设计,需要花费大量的时间用来编写和输入程序代码。
在Matlab中用图形化的方式设计DSP的程序,能够缩短产品的开发时间。
本文所介绍的是一种基于TMS320LF2407实现的步进电机控制系统的设计。
1 系统硬件构成整个系统分为五个部分组成:DSP中央控制器TMS320LF2407,步进电机及驱动,光电编码器,键盘及液晶显示部分,以及整个系统的外围电源电路及看门狗复位电路组成,。
在这个系统设计中,由键盘设定给定转速(位置),通过中央控制器TMS320LF2407来产生PWM脉冲信号来控制步进电机的转速(位置),可以采用光电编码器对步进电机的转速(位置)进行采样检测实现闭环控制,也可以采用开环控制无需转速(位置)信号,以上过程中的多个变量、参数可以在液晶显示屏上得到直观地反映。
整个硬件结构简单直观,中央控制器TMS320LF2407还剩余丰富的I/O及中断资源,在此设计基础上具有一定的扩展空间。
基于MATLAB的步进电机PID闭环控制系统仿真

度,
限幅模块 控制电机的转 速。在不同PID参数下 位置仿真 输}f {如图 5所示萁 中PI D控制 系统的 响,相t 间为4s.这是山于在起始阶段J PJD控制 器的 KP使得 步进 电机以 较高速 度向 期单位 置
参 考文献
【l 】李维波.MATIAB在电气工程中的应用呻北
京:中 国电力出版社2 009.
f 21 史敬灼.步进电机伺服控制技彳qMI 北京:科学 出版社2 006
【3惆尊派正弦波细分步进电机微步驱动器LI l 微 特电机1 997.
作者简介:石建飞,09 7¨,男,哈尔滨理工 大学硕士毕业。讲师,现主要从事电力电子与电 力传 动方面 的研究 ,
形式。这样可以更好地降低电机的低频振荡现
o■一’=一…“ 淑 毋 白|
同
L=}
圹卜《争—坚—日—矾k
图2 细分 子模块
图3细分前后电机输出角位移 2 PID控制系统仿真 由f 细分控制仪仅采用电流闭环,故叮以 将其作为位置闭环控制的一个内环加入到步进 电机PI I ) 控制系统中。如此可以将开环步进电 机控制系 统改造为闭环 系统,步进电机 PI D控 制系统结构框图如图4所示。
一10一
中国新技术新产品
l PID与细 分模块 在工业 过程控制中, PI D控制 系统是应用 最广泛的,其具有原理简单、无需精确数学模 型、应朋面宽等优点。PI D调节足根据系统的误 差,按偏差的比例( P) 、积分m和微分0) ) 进行控制 的,存被控对象的结构与参数不能完全掌握域 得不列精确的数q' 4 葜- 型等情况下.叮以通过PI D 闭环控制来有效提高控制系统的精度和性能。 随着i f .算机技术的快速发展.1,I D控制器都通 过数 字控制 来实现 并且利用 计算机 的强大 功 能,不断改进数字PI D控制规律’朝着更加灵活 和智能化 的方向发展, 其中增域式PID算法在 实际 中就 多被 采用 ,其算 法如 F:
MATLAB语言控制系统分析与设计电机位置控制系统设计与仿真

电机位置控制系统设计与仿真一、简介直流电机是控制系统中常用的执行机构,它可以直接提供旋转运动,或和轮子、滚筒和皮带等耦合提供运动的传递。
电机的原理框图如图1所示。
图1 电机结构框图电机的物理参数由电机生产厂家和实验获得。
电机转动惯量J =3.2284⨯10-6 kg.m 2/s 2;机械阻尼系数b=3.5077⨯10-6 Nms ;机电常数K=Ke=Kt=0.0274 Nm/Amp ;电枢电阻R=4ohm ;电枢电感L=2.75⨯10-6 H 。
输入信号电枢电压V ,输出信号为轴的位移θ。
假定转子和轴均为刚性。
1.电机数学模型的建立分析电机工作原理,可根据基尔霍夫定理和牛顿定理建立电机的数学模型:dt d K V Ri dt di L iK dt d b dtd Je t θθθ-=+=+22 (1)将式1-1取拉氏变换整理后可得电机的传递函数:]))([(2K R Ls b Js s K V +++=Θ (2) 如选择电机位置、速度和电枢电流作为状态变量,可建立其状态空间模型为:[]⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-+⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡---=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡i y Vi i L L R L K J K J b θθθθθθ00100000101 (3)2.设计目标希望能精确控制电机的位置,即要求电机的稳态误差为零,同时希望因扰动引起的稳态误差也能为零。
对于动态性能的要求,希望电机能较快且平稳,期望调节时间T s 为40ms ,超调量小于16%。
根据时域和频域指标的关系,可将时域性能指标转换为频率响应的约束条件。
如系统的带宽与闭环系统自然振荡频率ωn 和阻尼比ζ有关,而ζωn 与调节时间有关。
相角裕度PM 和阻尼比ζ有关,进而与超调量相关。
()()244214 24421242242+-+-=+-+-=ζζζζζζζωωS n bw T (4)zeta = -log(.16)/sqrt(pi^2+(log(.16))^2); PM = 100*zeta;wbw = (4/(0.04*zeta))*sqrt((1-2*zeta^2)+sqrt(4*zeta^4-4*zeta^2+2));得 ζ>0.503,PM>50.3 deg ,wbw>252 rad/sec 3.校正前电机开环频率响应首先用MATLAB 描述电机模型,并观察电机的开环频率特性。
电机设计matlab程序

电机设计matlab程序⒈简介此文档旨在介绍如何使用MATLAB进行电机设计。
我们将会详细讨论各个步骤,包括电机设计理论、MATLAB代码编写、数据分析和结果可视化。
⒉系统要求在开始之前,确保您的计算机满足以下系统要求:- MATLAB软件(最新版本)- 电机设计所需的相关工具包⒊电机设计理论⑴电机基本原理在此章节中,我们将介绍电机的基本工作原理,如电磁感应、电磁力和转矩产生等。
⑵电机设计参数在此章节中,我们将讨论影响电机设计的主要参数,包括电流、电压、磁场强度等。
⒋MATLAB编程基础在设计电机之前,您需要熟悉MATLAB编程语言。
在此章节中,我们将介绍MATLAB的基础知识和编程技巧。
⒌电机设计步骤⑴电机建模在此步骤中,我们将介绍如何使用MATLAB进行电机建模,包括电路图、绕组和铁芯设计。
⑵参数计算在此步骤中,我们将介绍如何使用MATLAB计算电机设计所需的参数,如电感、电阻和磁通量等。
⑶性能分析在此步骤中,我们将使用MATLAB进行性能分析,包括电机效率、转矩和功率输出等。
⒍数据分析与结果可视化在此章节中,我们将介绍如何使用MATLAB对电机设计的数据进行分析和结果可视化。
⒎结论通过使用MATLAB进行电机设计,我们可以得出一系列数据和结果。
在此章节中,我们将总结这些结果,并讨论其意义和应用。
附件:本文档附带以下附件,以辅助电机设计:- 电路图示例文件- MATLAB代码示例文件- 数据集示例文件法律名词及注释:⒈版权:著作权法对原创作品的权益保护。
⒉商标:商标法对特定商标的注册和使用进行规范。
⒊许可证:指定条件下的合法许可使用。
⒋法律责任:法律规定的违法行为的责任。
步进电机控制系统设计(个人制作)

目录第一章步进电机控制系统设计........................................................................... - 1 -1.1 设计目的................................................................................................... - 1 -1.2 设计任务................................................................................................... - 1 -1.3 设计要求................................................................................................... - 1 -1.3.1 基本功能......................................................................................... - 1 - 第二章系统方案设计和工作原理....................................................................... - 2 -2.1 系统方案设计........................................................................................... - 2 -2.2 工作原理................................................................................................... - 2 - 第三章硬件电路设计........................................................................................... - 4 -3.1 驱动电路的设计....................................................................................... - 4 -3.1.1 脉冲分配器..................................................................................... - 5 -3.1.2 功率驱动单元................................................................................. - 5 -3.2 显示电路和控制按键............................................................................... - 5 - 第四章软件设计流程........................................................................................... - 6 -4.1 主程序设计............................................................................................... - 6 -4.2 调速程序设计........................................................................................... - 6 -4.2.1 电机的启动/停止控制 ................................................................... - 6 -4.2.2 电机正反转控制............................................................................. - 6 -4.2.3 电机加减速控制............................................................................. - 7 - 第五章系统仿真、调试结果及性能分析........................................................... - 8 -5.1 系统仿真................................................................................................... - 8 -5.2 调试结果................................................................................................. - 11 -5.3 性能分析................................................................................................. - 11 - 第六章实验心得................................................................................................. - 12 - 参考文献................................................................................................................. - 13 - 附录1 系统完整原理图...................................................................................... - 14 - 附录2 源程序...................................................................................................... - 15 -摘要步进伺服是一种用脉冲信号进行控制,并将脉冲信号转换成相应的角位移的控制系统。
基于Matlab的步进电机闭环建模与仿真

-k - G ai n3 -k - G ai n410 G ai n1× P r o duc t 1++ 1 1 E× d u /d t 20 D er iv ativ e1 G ai n2O u t+ A dd1 P r o duc t 2 F u zzy Lo g i c 1Co n tr o ll er-k - G ai n5sI nte g r ato r1×P r o duc t 3t 10=T 姨 姨姨t 11= T t = T s姨 姨 姨姨 姨 姨 姨 姨 姨 姨 姨doi:10.13436/j.m kjx.201403016基于 M atlab 的步进电机闭环建模与仿真陈 翔, 崔志琴, 徐兆华(中北大学 机电工程学院, 太原 030051)摘 要: 通过综合运用模糊 PID 控制算法、空间电压矢量脉宽调制方法(SVPWM )与矢量转换 技术,搭建了一种包括速度闭环与电流矢量闭环的二相混合步进电机双闭环的控制系统,并借助于 MATLAB/Sim ulink 强大的建模仿真功能,对步进电机双闭环控制系统进行了仿真分析。
相关仿 真结果表明,该控制系统具有较好的控制性能与动态响应能力。
关键词: 模糊 PID ; SVPWM ; 步进电机; 闭环仿真 中图分类号: TP273文献标志码: A文章编号: 1003 - 0794(2014)03 - 0035 - 02Closed-Loop Modeling and Simulation of Stepper Motor Based onM atlabCHEN Xi an g , CUI Zhi -qi n , XU Z hao-hua(College of M echanical and Electrical Engineering , North University of China, Taiyuan 030051, China)A b s trac t: A control system of double close d -loop f or two -pha se hybrid ste ppe r motor whic h including spee d close d -loop a nd curre nt close d -loop is esta blishe d base d on f uzzy -P ID control algorithm , spac e vector pulse width modulation (SVPWM ) method a nd space vec tor conversion, and the pe rforma nce of the doubled close d -loop control syste m of steppe r motor is analyze d by the powerful mode lling and sim ula tion f unc tion of MATLAB/Sim ulink. The simula tion results show tha t the control system has f a vora ble control perform ance and dynam ics c ha rac te ristic.K e y w ord s : f uzz y-P ID ; SVPW M ; ste ppe r motor ; c los ed-L oop sim ula tion 0 引言在传统的步进电机闭环控制中,控制器常采用 的算法为 PID 或模糊控制方法。
MATLAB电机控制综合仿真实验

MATLAB电机控制综合仿真实验一、他励直流电机单闭环调速仿真实验要求:利用Simpowersystem里面自带的DC电机模块,完成他励直流电机单闭环调速仿真,速度调节用PI控制方法,要求封装PI模块,给定速度100rad/s,负载由空载到1s时跳变到20N。
调节不同的PI参数,观察仿真结果总结速度波形、转矩波形的变化规律(PI参数和超调量、稳定时间、稳态误差、振荡次数)。
另外要求将scope图中的4条曲线参数导出到工作空间,并用subplot和plot 函数画在同一个窗口中,每个子图加上对应的标题。
电机相关参数的设置图:仿真原理图:在仿真试验中需要按照实验要求对PI控制器子系统进行封装,然后更改Kp、Ki参数值的大小。
封装PI模块图如下:Plot绘图程序:>>subplot(411)>> plot(t,W,'r'),title('转速')>> subplot(412)>> plot(t,Ia,'b'),title('电枢电流')>> subplot(413)>> plot(t,Te,'g'),title('转矩')>> subplot(414)>> plot(t,If,'y'),title('励磁电流')速度调节用PI控制方法,给定速度100rad/s,负载由空载到1s 时跳变到20N,调节不同的PI参数,从PI模块封装中调节,修改不同的参数Ki 、Kp观察仿真结果。
Ki=100, Kp=5;050100w (r a d /s )00.51 1.52 2.53 3.54 4.55-2000200I a (A )-202I f (A )-1000100T e (N .m )Ki=2, Kp=1;w (r a d /s)I a (A)00.51 1.52 2.53 3.54 4.55I f (A)00.51 1.52 2.53 3.54 4.55T e (N .m )二、 他励直流电机闭环调速系统仿真实验要求:利用Simulink 基本模块搭建他励直流电机闭环调速系统直流电机子模块,根据以下电机数学模型搭建:电磁转矩公式:e M a T C I =Φ 动力学平衡方程:e L m d T T B J dtωω--=电机模块要求封装,参数20.05kg m J =⋅,0.02N m s m B =⋅⋅,165m C =,0.01Wb f Φ=,恒定负载T L =20N 点击封装模块时输入。
Matlab在电机设计与控制中的应用方法总结

Matlab在电机设计与控制中的应用方法总结一、引言电机设计与控制是电力系统领域的重要研究方向。
随着计算机技术的发展,Matlab作为一种强大的数学软件工具,成为电机设计与控制中不可或缺的工具。
本文将总结Matlab在电机设计与控制中的应用方法,并探讨其在该领域的优势和潜力。
二、电机设计1. 参数计算与仿真电机设计的第一步是参数计算和仿真。
Matlab提供了丰富的数学计算和仿真工具,可用于电机参数的计算和模拟。
例如,可以通过Matlab的符号计算功能,快速且准确地计算电机各种参数,如电机的电感、电阻、转速等。
同时,Matlab的仿真工具Simulink可以方便地建立电机的仿真模型,并进行系统级的仿真分析,有助于优化电机设计。
2. 磁场建模与优化Matlab在磁场建模与优化方面具有强大的功能。
通过使用Matlab,可以建立电机的二维和三维磁场模型,并进行电磁场分析。
同时,Matlab还提供了各种优化算法,如遗传算法和粒子群算法,可以在电机设计中应用,以寻找最优的设计方案。
三、电机控制1. 控制算法设计与仿真Matlab提供了丰富的控制算法工具箱,可以用于电机控制系统的算法设计和仿真。
例如,PID控制器是电机控制中常用的算法之一,通过使用Matlab中的控制系统工具箱,可以方便地设计和调试PID控制器,并进行闭环仿真分析。
此外,Matlab还支持其他高级控制算法,如模糊控制和自适应控制,可以根据实际需求选择适用的控制算法。
2. 控制系统性能评估Matlab可以用于电机控制系统性能的评估。
通过分析系统的响应曲线和频率特性,可以评估系统的稳定性、响应时间、抗干扰能力等性能指标。
Matlab提供了强大的信号处理和频谱分析工具,可以对电机控制系统的信号进行分析,以评估系统性能。
四、应用案例以一台直流电机的设计与控制为例,介绍Matlab的应用方法。
1. 参数计算与仿真首先,使用Matlab的符号计算功能,计算直流电机的电感、电阻等参数。
基于MATLAB的步进电机模糊PID控制器设计

基于MATLAB的步进电机模糊PID控制器设计
薛艳
【期刊名称】《西安职业技术学院学报》
【年(卷),期】2013(006)002
【摘要】步进电机多为开环控制,并且具有失步、振荡等缺点,在分析比较传统HD控制方式的基础上设计了步进电机闭环模糊HD控制器,在MATLAB/Simulink仿真环境下,建立了步进电机闭环控制模型并进行了详细的仿真分析.结果表明,加入模糊HD策略后,减小了步进电机开环控制下的失步、丢步现象,加快了系统的响应速度,提高了系统的稳定性.
【总页数】7页(P43-49)
【作者】薛艳
【作者单位】西安职业技术学院机电工程系,陕西西安710077
【正文语种】中文
【中图分类】TP273.4
【相关文献】
1.基于MATLAB的模糊PID控制器的设计与研究 [J], 李瑞;刘明生;李燕
2.基于MATLAB的参数自整定模糊PID控制器的两种设计方法 [J], 杨璐;雷菊阳
3.基于Matlab的模糊PID控制器的设计和仿真 [J], 赵永娟;孙华东
4.基于Matlab的模糊PID控制器设计与仿真研究 [J], 何鹏
5.基于MATLAB\\Simulink的挖掘机动力匹配技术的模糊PID控制器设计 [J], 缪秋莲;杜盼成;宋良永;林文
因版权原因,仅展示原文概要,查看原文内容请购买。
利用Matlab进行电机控制和驱动系统设计

利用Matlab进行电机控制和驱动系统设计电机控制和驱动是现代工业中非常重要的一环。
对于电机的控制和驱动系统设计,好的方法和工具可以提高控制系统的性能和效率。
在这方面,Matlab是一种被广泛使用且功能强大的工具。
本文将探讨如何利用Matlab进行电机控制和驱动系统设计。
1. 电机控制基础知识在开始讨论Matlab的应用之前,我们先来简要介绍一些电机控制的基础知识。
电机控制系统的目标是控制电机的速度、位置或者转矩等参数,以满足特定的要求。
最常见的电机控制方法包括电阻性、矢量控制、磁场定向控制等。
此外,电机控制还需要考虑诸如速度和位置传感器、控制器硬件等外部环境因素。
2. Matlab在电机控制中的应用Matlab作为一种功能强大的数学计算工具和编程环境,可以帮助工程师完成电机控制和驱动系统的设计和仿真。
在电机控制中,Matlab的应用主要分为以下几个方面:2.1 仿真建模Matlab提供了丰富的仿真工具和函数,可以对不同类型的电机进行仿真建模。
用户可以根据电机的参数和特性,利用Matlab构建电机控制系统的模型,并进行仿真分析。
仿真结果可以帮助工程师评估不同控制策略的性能,并优化系统设计。
2.2 控制算法设计Matlab中的控制系统工具箱提供了多种控制算法的设计和调试功能。
用户可以利用这些工具箱设计电机控制系统的控制算法,包括传统的PID控制、模型预测控制、自适应控制等。
Matlab还提供了控制系统分析的函数和工具,以评估设计算法的稳定性和鲁棒性。
2.3 码中断和实时控制对于一些实时控制应用,例如电机控制系统中的编码器中断等,Matlab提供了相应的函数和工具箱来处理这些实时数据。
用户可以通过Matlab编写程序,实现电机控制系统的实时数据采集和处理,并实时调整控制参数。
2.4 驱动系统设计除了控制系统的设计,Matlab还可用于电机驱动系统的设计。
通过Matlab的仿真和建模功能,用户可以评估不同的驱动系统设计方案,包括不同的功放电路、驱动器拓扑结构等。
基于MATLABSIMULINK的混合动态模拟线性步进电机

基于MATLAB/SIMULINK的混合动态模拟线性步进电机Szabó Loránd1 – Ioan-Adrian Viorel2 – Józsa János3摘要:直线电机的主要优点是,他们不把电能转换为旋转运动,而直接转换为线性运动。
发动机的电枢负载直接耦合,提供了另外几个优势的性能,高速度,高精度,无隙,高刚度,快速响应和时间稳定。
在这种情况下,它是对新型的高性能混合线性直接驱动步进电机的模块化的一种研究。
用MATLAB / Simulink ®环境对计算机模拟得到的结果仿真,并对电机的配置进行研究。
1.引言线性电机由旋转音圈电机和负荷直接刚性连接的。
不用的有滚珠、齿轮、皮带、和滑轮。
所有这些创造出优势是简单、高效、定位精度。
特别是加速度,可以显著的从这些旋转的直线运动发动机和传统的转换发动机比较中看出。
通过一些众所周知的文献和广泛的利用中也发现了线性步进电动机的一些缺点。
在任何一个位置原动机中的一个极都会引起很大的破坏力,减少了切向力。
这种方式,其总体的效率是降低了。
此外磁通量通过原动机和在两个电枢之间两极的滚筒通过引起了很强的法向力之间的吸引力。
最大的法向力是上述两个相同电极发生破坏力所产生的。
为了消除这些不足,提出了一种模块化混合式直线步进电动机。
这种电动机的横截面图已经给出了(图1)。
电机的先行者的讨论是建立了四个独立的模块,被四分之一的XX所取代。
每个模块有两个磁极,永久磁铁和线圈的命令。
该命令线圈放在核心分支平行于永久磁铁。
模块的两极间距在仿佛一极的牙齿与牙齿的排列方式压板,比另一极的牙齿也与滚筒的牙齿对齐。
滚筒是等距离的,从高渗透冷轧钢板制作任何长度的齿列。
在两个转子的齿结构具有相同音高的罚款牙齿。
空气轴承系统维护所需的两个转子之间的航空期间动议人的旅行沿着滚筒的差距,在低分辨率提供直,僵硬,齿轮,自由运动,保证了电机的寿命几乎无限像古典混合线性步进电机,这种电机的变体也正在变磁阻组合原则和永磁电动机运行[4]。
毕业设计论文基于matlab的步进电机转速控制仿真(论文)

毕业设计论文基于matlab的步进电机转速控制仿真(论文)摘要一般电动机都是连续旋转而步进电动却是一步一步转动的故叫步进电动机每输入一个冲信号该电动机就转过一定的角度有的步进电动机可以直接输出线位移称为直线电动机因此步进电动机是一种把脉冲变为角度位移或直线位移的执行元件数字控制系统的发展步进电动机的应用逐渐扩大仿真环境下建立了步进电机模型不仅仿真结果与实物仿真一致而且其仿真方法简单仿真时间大大缩短是一种理想的步进电机仿真研究方法关键词仿真ABSTRACTGeneral Motors is a continuous rotation while the step is electric rotating step by step so called stepper motors Each input of a red signal the motor will turn a certain angle some stepper motors can be directly output line displacement known as the linear motor Therefore the stepper motor is a pulse into the point of displacement or linear displacement of the implementation of the components With the development of digital control systems stepper motor application gradually expanding Although the stepper motor has been widely used but the stepper motor does not like a normal DC motor AC motor used in the routine It must be double-ring pulsesignal drive circuit composed of control before useUsed in the product forming the beginning of Shang Ruoli simulation software circuit simulation is an important study of its Indispensable want of means to control program simulation environment for debugging not only without actually hardware better Bufen meet the engineering requirements Matlab language is a science and engineering calculations for high-level language which combines scientific computing automatic control signal processing neural networks image processing and other functions into one is an advanced mathematical analysis and computation software can be used as dynamic Modeling and Simulation MATLAB-Simulink simulation environment based on the establishment of a stepping motor under the model simulation results not only consistent with the physical simulation and the simulation method is simple the simulation time is shortened it is an ideal stepping motor simulation methodsKEY WORDS Stepper motor matlab simulation前言步进电机问世以后很快确定了自己的应用场合为开环高分辨率的定位系统工业应用发展到今已有约30年的历史目前还没有更适合的取代它的产品而且已经发展成为除直流和交流电机外的第三大类电动机产品但毕竟发展历史不长人们从应用的角度看仍有不成熟的感觉步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件在非超载的情况下电机的转速停止的位置只取决于脉冲信号的频率和脉冲数而不受负载变化的影响即给电机加一个脉冲信号电机则转过一个步距角这一线性关系的存在加上步进电机只有周期性的误差而无累积误差等特点使得在速度位置等控制领域用步进电机来控制变的非常的简单摘要 1ABSTRACT 2前言 3第1章引言 511步进电机概述 512系统仿真技术概述713仿真软件的发展状况与应用 7第2章 MATLAB概要821 MATLAB概述822 概述10第3章步进电机基本原理 1131 典型结构和工作原理1132 旋转通电方式1233 小步距角步进电机1434 其他型式的步进电动机16com步进电动机1635 步进电机的控制方式21com机的开环控制21com 步进电机的闭环控制22第4章混合式步进数学模型及其建模2341 混合式步进数学模型2342 混合式步进电机的建模 27第5章步进电动机的驱动电源3051混合式步进电机的绕组通电方式305.2 两相双四拍环形分配器32第6章步进电机控制方式仿真结果3561 PID控制器 35comID控制器35参考文献38致谢40第1章引言步进电机最早是在1920年代由英国人所开发1950年代后期晶体管的发明也逐渐应用在步进电机上对于数字化的控制变得更为容易往后经过不断改良使得今日步进电机已广泛运用在需要高定位精度高分解能高响应性信赖性等灵活控制性高的机械系统中在生产过程中要求自动化省人力效率高的机器中我们很容易发现步进电机的踪迹尤其以重视速度位置控制需要精确操作各项指令动作的灵活控制性场合步进电机用得最多11步进电机概述步进电机依其构造上的差异可分为三大类可变磁阻式VR型转子以软铁加工成齿状当定子线圈不加激磁电压时保持转矩为零故其转子惯性小响应性佳但其容许负荷惯性并不大其步进角通常为15°永久磁铁式PM型转子由永久磁铁构成其磁化方向为辐向磁化无激磁时有保持转矩依转子材质区分其步进角有45°90°及75°1125°15°18°等几种混和式HB型转子由轴向磁化的磁铁制成磁极做成复极的形式其乃兼采可变磁阻式步进电机及永久磁铁式步进电机的优点精确度高转矩大步进角度小目前市场上所使用的工业用步进电机以混和式HB型最为普遍步进电机的特征步进电机最大特征即是能够简单的做到高精度的定位控制以5相步进电机为例其定位基本单位分辨率为072°全步级036°半步级是非常小的停止定位精度误差皆在±3分±005°以内且无累计误差故可达到高精度的定位控制步进电机的定位精度是取决于电机本身的机械加工精度置及速度控制步进电机在输入脉冲信号时可以依输入的脉冲数做固定角的回转进而得到灵活的角度控制位置控制并可得到与该脉冲信号周波数频率成比例的回转速度具定位保持力步进电机在停止状态下无脉波信号输入时仍具有激磁保持力故即使不依靠机械式的刹车也能做到停止位置的保持动作灵敏步进电机因为加速性能优越所以可做到瞬时起动停止正反转之快速频繁的定位动作开回路控制不必依赖传感器定位步进电机的控制系统构成简单不需要速度感应器ENCODER转速发电机及位置传感器SENSOR就能以输入的脉波做速度及位置的控制也因其属开回路控制故最适合于短距离高频度高精度之定位控制的场合下使用中低速时具备高转矩步进电机在中低速时具有较大的转矩故能够较同级伺服电机提供更大的扭力输出高信赖性使用步进电机装置与使用离合器减速机及极限开关等其它装置相较步进电机的故障及误动作少所以在检查及保养时也较简单容易小型高功率步进电机体积小扭力大尽管于狭窄的空间内仍可顺利做安装并提供高转矩输出12系统仿真技术概述系统是由客观世界中实体与实体间的相互作用和相互依赖关系构成的具有某种特定功能的有机整体系统的分类方法是多种多样的习惯上依照其应用范围可以将系统分为工程系统和非工程系统工程系统的含义是指由相互关联部件组成的一个整体以实现特定的目的例如电机驱动自动控制系统是由执行部件功率转换部件检测部件所组成用它来完成电机的转速位置和其他参数控制的某个特定目标非工程系统的定义范围很广大至宇宙小至原子只要存在着相互关联相互制约的关系形成一个整体实现某种目的的均可以认为是系统如果想定量地研究系统地行为可以将其本身的特性及内部的相互关系抽象出来构造出系统的模型系统的模型分为物理模型和数学模型由于计算机技术的迅速发展和广泛应用数学模型的应用越来越普遍系统的数学模型是描述系统动态特性的数学表达式用来表示系统运动过程中的各个量的关系是分析设计系统的依据从它所描述系统的运动性质和数学工具来分又可以分为连续系统离散时间系统离散事件系统混杂系统等还可细分为线性非线性定常时变集中参数分布参数确定性随机等子类系统仿真是根据被研究的真实系统的数学模型研究系统性能的一门学科现在尤指利用计算机去研究数学模型行为的方法计算机仿真的基本内容包括系统模型算法计算机程序设计与仿真结果显示分析与验证等环节13仿真软件的发展状况与应用早期的计算机仿真技术大致经历了几个阶段20世纪40年代模拟计算机仿真50年代初数字仿真60年代早期仿真语言的出现等80年代出现的面向对象仿真技术为系统仿真方法注入了活力我国早在50年代就开始研究仿真技术了当时主要用于国防领域以模拟计算机的仿真为主70年代初开始应用数字计算机进行仿真[4]随着数字计算机的普及近20年以来国际国内出现了许多专门用于计算机数字仿真的仿真语言与工具如CSMPACSL SIMNOM MATLAB MatrixSystem Build CSMP-C等第2章 MATLAB概要21 MATLAB概述MATLAB是国际上仿真领域最权威最实用的计算机工具它是MathWork公司于1982年推出的一套高性能的数值计算和可视化数学软件被誉为巨人肩上的工具MATLAB是一种应用于计算技术的高性能语言它将计算可视化和编程结合在一个易于使用的环境中此而将问题解决方案表示成我们所熟悉的数学符号其典型的使用包括数学计算运算法则的推导模型仿真和还原数据分析采集及可视化科技和工程制图开发软件包括图形用户界面的建立MATLAB是一个交互式系统它的基本数据元素是矩阵且不需要指定大小通过它可以解决很多技术计算问题尤其是带有矩阵和矢量公式推导的问题有时还能写入非交互式语言如C和Fortran等MATLAB的名字象征着矩阵库它最初被开发出来是为了方便访问由LINPACK 和EISPAK开发的矩阵软件其代表着艺术级的矩阵计算软件MATLAB在拥有很多用户的同时经历了许多年的发展时期在大学环境中它作为介绍性的教育工具以及在进阶课程中应用于数学工程和科学在工业上它是用于高生产力研究开发分析的工具之一MATLAB的一系列的特殊应用解决方案称为工具箱toolboxes作为用户不可缺少的工具箱它可以使你学习和使用专门技术工具箱包含着M-file集它使MATLAB可延展至解决特殊类的问题在工具箱的范围内可以解决单个过程控制系统神经网络模糊逻辑小波仿真及其他很多问题经过几十年的完善和扩充它已发展成线形代数课程的标准工具在美国MATLAB是大学生和研究生必修的课程之一美国许多大学的实验室都安装有MATLAB供学习和研究之用它集数值分析矩阵运算信号处理和图形显示于一体构成了一个方便的界面友好的用户环境其包含的SIMULINK是用于在MATLAB下建立系统框图和仿真环境的组件其包含有大量的模块集可以很方便的调取各种模块来搭建所构想的试验平台同时SIMULINK还提供时域和频域分析工具能够直接绘制系统的Bode图和Nyquist图MATLAB系统可分为五个部分MATLAB语言这是一种高级矩阵语言其有着控制流程状态功能数据结构输入输出及面向对象编程的特性它既有小型编程的功能快速建立小型可弃程序又有大型编程的功能开发一个完整的大型复杂应用程序MATLAB的工作环境这是一套工具和设备方便用户和编程者使用MATLAB它包含有在你的工作空间进行管理变量及输入和采集数据的设备同时也有开发管理调试 profiling M-files MATLABs applications Bessel功能和快速傅立叶变换MATLAB应用程序编程界面这是一个允许你在MATLAB界面下编写C和Fortran程序的库它方便从MATLAB中调用例程即动态链接使MATLAB成为一个计算器用于读写MAT-files22 概述是用于仿真建模及分析动态系统的一组程序包它支持线形和非线性系统能在连续时间离散时间或两者的复合情况下建模系统也能采用复合速率也就是用不同的部分用不同的速率来采样和更新提供一个图形化用户界面用于建模用鼠标拖拉块状图表即可完成建模在此界面下能像用铅笔在纸上一样画模型相对于以前的仿真需要用语言和程序来表明不同的方程式而言有了极大的进步拥有全面的库如接收器信号源线形及非线形组块和连接器同时也能自己定义和建立自己的块模块有等级之分因此可以由顶层往下的步骤也可以选择从底层往上建模可以在高层上统观系统然后双击模块来观看下一层的模型细节这种途径可以深入了解模型的组织和模块之间的相互作用在定义了一个模型后就可以进行仿真了用综合方法的选择或用的菜单或MATLAB命令窗口的命令键入菜单的独特性便于交互式工作当然命令行对于运行仿真的分支是很有用的使用scopes或其他显示模块就可在模拟运行时看到模拟结果进一步可以改变其中的参数同时可以立即看到结果的改变仿真结果可以放到MATLAB工作空间来做后处理和可视化模型分析工具包括线性化工具和微调工具它们可以从MATLAB命令行直接访问同时还有很多MATLAB的toolboxes中的工具因为MATLAB和是一体的所以可以仿真分析修改模型在两者中的任一环境中进行小结综上所述利用MATLAB来仿真步进电机的运行情况可以帮助研究者更好更方便的了解步进电机的特性以便进一步改善其效率第3章步进电机基本原理31 典型结构和工作原理一般电动机都是连续旋转而步进电动却是一步一步转动的故叫步进电动机每输入一个冲信号该电动机就转过一定的角度有的步进电动机可以直接输出线位移称为直线电动机因此步进电动机是一种把脉冲变为角度位移或直线位移的执行元件步进电动机的转子为多极分布定子上嵌有多相星形连接的控制绕组由专门电源输入电脉冲信号每输入一个脉冲信号步进电动机的转子就前进一步由于输入的是脉冲信号输出的角位移是断续的所以又称为脉冲电动机随着数字控制系统的发展步进电动机的应用将逐渐扩大步进电动机的种类很多按励磁可分为反应式永磁式和感应子式按相数分则可分为单相两相和多相三种其中反应式步进电机用得比较普遍结构也比较简单所以以反应式步进电机为例介绍步进电机的工作原理反应式步进电动机的工作原理与反应式同步电机一样也是利用凸极转子横轴磁阻与直轴磁阻之差所引起的反应转矩而转动的为了便于理解先以一个简单的三相步进电动机为例图 3-1是反应式步进电动机结构示意图它的定子具有均匀分布的六个磁极磁极上绕有绕组两个相对的磁极组成一组联法如图所示图 3-1 三相反应式步进电动机的结构电机转子均匀分布着很多小齿定子齿有三个励磁绕阻其几何轴线依次分别与转子齿轴线错开 013て23て相邻两转子齿轴线间的距离为齿距以て表示即A 与齿1相对齐B与齿2向右错开13てC与齿3向右错开23てA与齿5相对齐A 就是A齿5就是齿132 旋转通电方式图 3-2 三相单三拍运行转子位置步进电动机的工作原理其实就是电磁铁的工作原理定子由若干相控制绕组构成每相依次通入直流电磁通具有力图沿磁阻最小路径通过的特点如A相通电BC相不通电时由于磁场作用齿1和齿3与A A对齐如图3-2a所示如B相通电AC相不通电时齿2应与B对齐此时转子向右移过13て此时齿3与C偏移为13て齿4与A偏移て-13て 23て如图3-2b所示如C相通电AB相不通电齿3应与C对齐此时转子又向右移过13て此时齿4与A偏移为13て对齐如图3-2c所示如A相通电BC相不通电齿4与A对齐转子又向右移过13て这样经过ABCA 分别通电状态齿4即齿1前一齿移到A相电机转子向右转过一个齿距如果不断地按A-B-C-A通电电机就每步每脉冲13て向右旋转如按A-C-B-A通电电机就反转这种按A-B-C-A方式运行的称为三相单三拍运行所谓三相是指步进电动机具有三相定子绕组单是指每次只有一相绕组通电三拍指三次换接为一个循环第四次换接重复第一次情况除了这种运行方式外三相步进电动机还可以以三相六拍和三相双三拍运行三相六拍运行的供电方式是A-AB-B-BC-C-CA-这时每一循环换接6次总共有6种通电状态这6种通电状态中有时只有一相绕组通电如A相有时有两相绕组同时通电如A相和B相图3-3表示这种方式对控制绕组供电时转子位置和磁通分布的图形开始时先单独接通A相这时与单三拍的情况相同转子齿1和3的轴线与定子极轴对齐如图3-3a所示当A和B两相同时通电时转子稳定位置将会停留在AB两定子磁极对称的中心位置上依此类推如果下面继续按照BC-C-CA-A的顺序使绕组换接那末步进电动机就不断按顺时针方向旋转当顺序顺序改为A-AC-C-CB-B-BA-A时步进电动机就反响即按逆时针方向旋转图 3-3 三相六拍运行aA相通电bAB相通电cB相通电dBC相通电可见单双六拍运行时步距角为15°比三拍通电方式时减小一半因此同一台步进电动机采用不同的通电方式可以有不同的拍数对应运行时的步距角也不同此外六拍运行方式每一拍也总有一相控制绕组持续通电也具有电磁阻尼作用电机工作也比较平稳33 小步距角步进电机以上这种结构形式的反应式步进电动机它的步距角较大常常满足不了系统精度的要求所以大多数采用如图3-4所示的定子磁极上带有小齿转子齿数很多的反应式结构其步距角可以做得很小下面进一步说明它的工作原理图3-4所示的是最常见的一种小步距角的三相反应式步进电动机定子每个图3-4 三相反应式步进电动机的结构极面上有5个齿转子上均匀分布40个齿定转子的齿宽和齿距都相同当A相控制绕组通电时转子受到反应转矩的作用使转子齿的轴线和定子AA′极下齿的轴线对齐因转子上共有40个齿其齿距角为定子每个极距所占的齿数为不是整数如图3-5所示因此当定子A相极下定转子齿对齐时定子B相极和C相极下的齿和转子齿依次有 13 齿距的错位即3°同样当A相断电B相控制绕组通电时反应转矩的作用下子按逆时针方向转过3°转子齿的轴线和定子B相极下齿的轴线对齐这时定子C相极和A相极下的齿和转子齿又依次错开 13 齿距依次类推若继续按单三拍的顺序通电转子就按逆时针方向一步一步地转动步距角为3°当然改变通电顺序即按A-C-B-A 电机按顺时针方向反转图3-5转子展开图 A相绕组通电若采用三相单双六拍的通电方式运行时和前面分析的道理完全一样步距角也减小一半为15°通过以上分析可知转子的齿数不能任意选取因为在同一相的几个磁极下定转子齿应同时对齐或同时错开才能使几个磁极的作用相加产生足够的反应转矩所以转子齿数应是定子磁极的偶数倍另外在不同相的磁极下定转子相对位置应依次错开 1m 齿距这样才能在连续改变通电状态下获得连续不断的运动否则当某一相控制绕组通电时转子齿都将处于磁路的磁阻最小的位置上各相绕组轮流通电时转子将一直处于静止状态电动机不能正常运行为此要求两相邻相磁极轴线之间转子的齿数应为整数加或减 1m 即3-1式中K 为正整数Zr 为转子的齿数2p 为一相绕组通电时在圆周上形成的磁极数图 3-5定转子展开图A相绕组通电如果以 N 表示步进电动机运行的拍数则转子经过 N 步将转过一个齿距每转一圈即360°机械角需要走NZr 步步距角为3-2N Cm式中C 为通电状态系数当采用单拍或双拍方式时C 1而采用单双拍方式时C 2由此可见增加拍数和转子的齿数可以减小步距角有利于提高控制精度增加电机的相数可以增加拍数也可以减小步距角但相数越多电源及电机的结构越复杂造价也越高反应式步进电动机一般做到六相个别的也有八相或更多相增加转子的齿数是减小步进电动机步距角的一个有效途径目前所使用的步进电动机转子的齿数一般很多对相同相数的步进电动机既可采用单拍方式也可采用单双拍方式所以同一台电机可有两个步距角如 3°15° 15°075° 12°06°等当通电脉冲的频率为时由于转子每经过 NZr 个脉冲旋转一周故步进电动机每分钟的转速为3-3式中的单位为 HZ可见反应式步进电动机的转速与拍数 N转子齿数 Zr 及脉冲的频率有关当转子齿数一定转速与输入脉冲的频率成正比改变脉冲的频率可以改变电机的转速34 其他型式的步进电动机com步进电动机图3-6是永磁式步进电动机的结构原理图定子为凸极式装有两相或多相绕组转子为凸极式星形磁钢其极对数与定子每相绕组的极对数相同图中定子为两相集中绕组AO BO 每相为两对极所以转子也是两对极即 p 2当定子绕组按 A-B –A - –B -A 的次序轮流通电时转子将按顺时针方向每次转过45°即步距角为45°永磁式步进电动机的步距角3-4用电弧度表示则有3-5式中p 为转子极对数图 3-6 永磁式步进电机由上可知永磁式步进电机要求电源供给正负脉冲否则不能运行这就使电源的线路复杂化了这个问题可通过在同一相的极上绕两套绕向相反的绕组电源只供给正脉冲的方法来解决这样做虽然增加了用铜量和电机尺寸但却简化了对电源的要求此外还有两相双四拍通电方式即AB-B –A - –A –B - –B A-AB永磁式步进电动机的特点是①大步距角例如②启动和运行频率较低通常为几十到几百赫兹但转速不一定低但它所需的③控制功率较小效率高④在断电情况下具有定位转矩⑤有强的内阻力矩主要用于新型自动化仪表com步进电动机混合式步进电动机也称为感应子式步进电动机这是一种十分流行的步进电动机它的定子铁心与反应式步进电动机相同也是两相集中绕组每项为两极对按A-B –A - –B -A次序轮流通以正负脉冲转子的结构与永久磁钢的电磁减速式同步电动机相同它既有反应式步进电动机小步距角的特点又有永磁式步进电动机的高效率绕组电感比较小的特点常常也作为低速同步电动机运行一两相混合式步进电动机的结构图3-7为两相混合式步进电动机的轴向剖视图定子的结构与反应式步进电动机基本相同沿着圆周有若干个凸出的磁极极面上有小齿极身上有控制绕组控制绕组的接线如图3-8所示转子由环形磁钢和两段铁芯组成环形磁钢在转子中部轴向充磁两段铁芯分别装在磁钢的两端转子铁芯上也有小齿两段铁芯上的小齿相互错开半个齿距定转子的齿距和齿宽相同齿数的配合与单段反应式步进电动机相同图3-7混合式步进电动机轴向剖视图图3-8混合式步进电动机轴向剖视图二两相混合式步进电动机的工作原理混合式步进电动机作用在气隙上的磁动势有两个一个是由永久磁钢产生的磁动势另一个是由控制绕组产生的磁动势这两个磁动势有时是相加的有时是相减的视控制绕组中电流方向而定这种步进电动机的特点是混入了永久磁钢的磁动势故称为混合式步进电动机1零电流时工作状态各相控制绕组中没有电流通过这时气隙中的磁动势仅由永久磁钢的磁动势决定如果电机的结构完全对称各个定子磁极下的气隙磁动势将完全相等电动机无电磁转矩因为永磁磁路是轴向的从转子B端到定子的B端轴向到定子的A端转子的A端经磁钢闭合在这个磁路上总的磁导与转子位置无关这一方面由于转子不论处于什么位置每一端的不同极下磁导有的大有的小但总和不变另一方面由于两段转子的齿错开了半个齿距所以即使在一个极的范围内看当B端磁导增大时A端必然减小也使总磁导在转子位置不同时保持不变。
步进电机控制代码

步进电机控制代码基于单片机的步进电机控制系统设计软件程序代码:#include#define uchar unsigned char //宏定义"uchar"代替"unsigned char"。
#define uint unsigned int //宏定义"uint"用来定义无符号整型数。
//数码管段选定义0 1 2 3 4 5 6 7 8 9 uchar code smg_du[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90, // A B C D E F 不显示0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff}; //断码sbit A1=P2^1; //定义步进电机连接端口sbit B1=P2^2;sbit C1=P2^3;sbit D1=P2^4;sbit LED_Z = P2^7; //正转指示灯sbit LED_F = P2^6; //反转指示灯sbit LED_Q = P1^6; //启动指示灯sbit key1 = P3^5; //启动sbit key2 = P3^4; //暂停sbit key3 = P3^3; //正转sbit key4 = P3^2; //反转sbit key5 = P3^1; //速度加sbit key6 = P3^0; //速度减#define Coil_A1 {A1=1;B1=0;C1=0;D1=0;}//A相通电,其他相断电#define Coil_B1 {A1=0;B1=1;C1=0;D1=0;}//B相通电,其他相断电#define Coil_C1 {A1=0;B1=0;C1=1;D1=0;}//C相通电,其他相断电#define Coil_D1 {A1=0;B1=0;C1=0;D1=1;}//D相通电,其他相断电#define Coil_OFF {A1=0;B1=0;C1=0;D1=0;}//全部断电unsigned char StopFlag = 1; //启动/停止标志bit ZXflag = 0 ; //转向标志unsigned char sudu = 5; //速度变量/************************************************************** ******* 名称 : delay_1ms()* 功能 : 延时1ms函数* 输入 : q* 输出 : 无*************************************************************** ********/ void delay_1ms(uchar q){uint i,j;for(i=0;i<q;i++)< p="">for(j=0;j<110;j++);}/*------------------------------------------------定时器初始化子程序------------------------------------------------*/void Init_Timer0(void){TMOD |= 0x01; //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响//TH0=0x00; //给定初值//TL0=0x00;TH0=(65536-1000)/256; //重新赋值 1msTL0=(65536-1000)%256; EA=1; //总中断打开ET0=1; //定时器中断打开TR0=1; //定时器开关打开PT0=1; //优先级打开}void key() //独立按键程序{if(key1 == 0) // 启动按键{delay_1ms(10); //按键消抖动{if (key1 == 0)while(!key1);StopFlag = 0 ;LED_Q = 0;}}if(key2 == 0) //暂停按键{delay_1ms(10); //按键消抖动{if (key2 == 0)while(!key2);StopFlag = 1;LED_Q = 1;}}if(key3 == 0) //正转{delay_1ms(10); //按键消抖动{if (key3 == 0)while(!key3);ZXflag = 0;LED_Z = 0; //正转指示灯LED_F = 1; //反转指示灯}}if(key4 == 0) //反转{delay_1ms(10); //按键消抖动{if (key4 == 0)while(!key4);ZXflag = 1;LED_Z = 1; //正转指示灯LED_F = 0; //反转指示灯}}if(key5 == 0) //速度加{delay_1ms(30); //按键消抖动{if (key5 == 0)sudu++ ;if(sudu>=9)sudu = 9;P0 =smg_du[sudu]; //数码管显示速度等级while(!key5);}if(key6 == 0) //速度减{delay_1ms(30); //按键消抖动{if (key6 == 0)sudu-- ;if(sudu<=1)sudu = 1;P0 =smg_du[sudu]; //数码管显示速度等级while(!key6);}}}/************************************************************* *******/*------------------------------------------------*/void main(){StopFlag = 1; //默认停止LED_Q = 1; //启动指示灯灭ZXflag = 0; //默认正转LED_Z = 0; //正转指示灯亮LED_F = 1; //反转指示灯灭sudu = 5; //默认速度为5P0 =smg_du[sudu]; //数码管显示速度等级Init_Timer0(); //定时器初始化while(1){key(); //按键扫描}/*------------------------------------------------定时器中断子程序------------------------------------------------*/ void Timer0_isr(void) interrupt 1{static unsigned char times,i;TH0=(65536-1000)/256; //重新赋值 1msTL0=(65536-1000)%256;if(!StopFlag) //启动/暂停控制{if(times==(11-sudu))//速度控制{times=0;if( ZXflag == 0) //转向选择{switch(i){case 0:Coil_A1; i++;break;case 1:Coil_B1; i++;break;case 2:Coil_C1; i++;break;case 3:Coil_D1; i=0;break;default:break;}}else{switch(i){case 0:Coil_D1; i++;break; case 1:Coil_C1; i++;break; case 2:Coil_B1; i++;break; case 3:Coil_A1; i=0;break; default:break;}}}times++;}}</q;i++)<>。
步进电机多轴运动控制系统的研究

步进电机多轴运动控制系统的研究随着现代工业技术的不断发展,多轴运动控制系统在各种自动化设备中的应用越来越广泛。
步进电机作为一种重要的运动控制元件,具有精度高、响应快、可靠性高等优点,因此被广泛应用于多轴运动控制系统中。
本文将围绕步进电机多轴运动控制系统的研究展开讨论,主要分为以下几个部分:系统架构、控制算法研究、实验验证和结论。
步进电机多轴运动控制系统主要由主板、从板和驱动板三部分组成。
主板主要负责整个系统的协调和控制,包括各轴运动参数的设定、运动程序的编制以及与上位机的通讯等。
从板主要负责将主板的指令传达给各轴的驱动器,同时还将各轴的运行状态反馈给主板。
驱动板则是负责将电力供应给步进电机,同时根据从板传达的指令控制电机的运动。
在步进电机多轴运动控制系统中,位置控制、速度控制和电流控制是三个关键的方面。
位置控制方面,采用矢量控制算法,通过调整电机的旋转角度来控制物体的位置。
速度控制方面,采用速度反馈控制算法,根据电机的实时转速进行调整,以保证运动的平稳性。
电流控制方面,采用电流反馈控制算法,根据电机的实时电流进行调整,以保证电机运行的可靠性。
为了验证所设计的步进电机多轴运动控制系统的可行性和有效性,我们进行了以下实验:设备搭建:根据系统架构,搭建了包含主板、从板、驱动板的实验平台,并选择了合适的步进电机进行连接。
数据采集和处理:利用编码器等传感器采集电机的位置、速度等数据,同时通过上位机实时监控各轴的运动状态。
算法验证:分别对位置控制、速度控制和电流控制算法进行验证,通过改变电机运动参数的方式观察各轴的运动情况,以检验算法的有效性。
实验结果表明,我们所设计的步进电机多轴运动控制系统具有良好的可行性和有效性。
在位置控制方面,电机能够准确到达指定的位置;在速度控制方面,电机转速稳定,能够满足大多数应用场景的需求;在电流控制方面,电机运行过程中电流稳定,保证了电机的可靠运行。
本文对步进电机多轴运动控制系统进行了深入研究,主要取得了以下成果:设计了包含主板、从板和驱动板的步进电机多轴运动控制系统架构,并明确了各部分的作用和连接方式。
Matlab技术在控制器设计中的应用

Matlab技术在控制器设计中的应用控制器设计是现代自动控制领域的核心内容之一。
随着科技的不断发展,控制器设计也得到了极大的发展和应用。
Matlab作为一种功能强大的数学建模和仿真工具,在控制器设计中起着重要的作用。
本文将探讨Matlab技术在控制器设计中的应用,并介绍一些经典的控制器设计方法和案例。
一、Matlab在控制器设计中的基本功能Matlab是一种基于数值计算的软件工具,提供了丰富的数学函数库和编程语言。
在控制器设计过程中,Matlab可以用来进行系统的数学建模、信号处理、动态仿真、参数优化与辨识等一系列关键步骤,为工程师提供了全方位的技术支持。
下面将详细介绍Matlab在控制器设计中的基本功能。
1.系统建模与分析在控制器设计之前,我们需要对待控制的对象进行系统建模与分析。
Matlab 提供了丰富的系统建模工具,如系统传递函数、状态空间模型和频域模型等,可以方便地对系统进行描述和分析。
通过Matlab,我们可以使用这些模型进行系统特性分析、稳定性判断和性能评估。
2.控制算法设计与优化控制算法是控制器设计中的核心内容之一。
Matlab提供了多种常见的控制算法函数,如PID控制、模糊控制和神经网络控制等,可以方便地进行控制算法的设计和仿真。
此外,Matlab还提供了参数优化和辨识工具,可以帮助我们对控制器进行更精细的调整和优化。
3.动态仿真与实时测试在控制器设计过程中,动态仿真和实时测试是非常重要的环节。
Matlab提供了强大的仿真和测试工具,可以模拟实际工程中的场景,并进行控制系统的动态响应测试。
通过Matlab的仿真和测试功能,我们可以评估控制系统的性能、稳定性和鲁棒性,为系统调试和验证提供有力支持。
4.数据可视化与结果分析控制器设计完成后,我们需要对设计结果进行数据可视化和结果分析。
Matlab提供了丰富的绘图和分析函数,可以方便地对控制系统的输入输出信号进行可视化和分析。
通过Matlab的数据可视化和结果分析功能,我们可以直观地了解控制系统的性能和稳定性,为后续改进和调整提供参考。
基于MATLAB的步进电机自动化测试系统

基于MATLAB的步进电机自动化测试系统肖东岳;李英堂;周强;陈居现【摘要】@@%MATLAB软件具有简洁的文本编程模式和直观友好的图形化编程模式,特别适合于构建快速、简洁的自动化测试系统.本文根据工程需要,采用MATLAB的两种编程模式设计了一种步进电机的测试系统:针对一款带有编码器和控制器的的一体化步进电机,使用串口通信方式,应用串口服务器将4台步进电机系统连接在测试计算机上,完成了基于MATLAB的测试软件,实现了整个测试系统的构建和自动化测试.本测试系统的构建和研究经验表明,MATLAB软件适用于设备测试领域,具有开发简便,功能强大,方式灵活等明显优势,能高效地完成测试任务.【期刊名称】《制造业自动化》【年(卷),期】2012(034)017【总页数】3页(P30-31,47)【关键词】一体化步进电机;测试系统;MATLAB;GUI;串口【作者】肖东岳;李英堂;周强;陈居现【作者单位】南阳理工学院,南阳473004;中国科学院近代物理研究所,兰州730000;山东省胜利油田胜利发电厂,东营257087;南阳理工学院,南阳473004【正文语种】中文【中图分类】TP310 引言应用于工程领域的设备必须先经过较长时间的各种工作模式的测试,以便及早发现设备故障,避免造成工程中的重大损失,本文针对将应用于工程领域的多台一体化步进电机,需要设计在实验室环境下的自动化测试系统,该测试系统需要满足多设备、多模式、长时间、自动化的测试要求。
MATLAB软件具有文本编程模式和GUI图形化编程模式,编程方便,功能强大,虽然在矩阵计算和系统仿真中使用普遍,但在设备测试领域却鲜有应用,该软件所具有的强大测试功能并未得到充分认识和发掘,本文尝试将MATLAB软件应用于步进电机的测试系统中,构建相应的自动化测试系统,完成测试任务。
1 步进电机测试系统方案步进电机作为一种重要的运动执行机构逐渐出现了与编码器和控制器融合为一体化的形式,如图1所示。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
步进电机控制器设计报告1.绪言在本次EDA课程设计中,我们组选择了做一个步进电机驱动程序的课题。
对于步进电机我们以前并未接触过,它的工作原理是什么,它是如何工作的,我们应该如何控制它的转停,这都是我们迫切需要了解的。
步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。
在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。
这一线性关系的存在,加上步进电机只有周期性的误差而无累积误差等特点。
使得在速度、位置等控制领域用步进电机来控制变的非常的简单。
步进电机及驱动电源是互相联系的整体。
步进电机驱动电源框图如图1所示。
变频信号源产生频率可调的脉冲信号,调节步进电机的速度。
脉冲分配器则根据要求把脉冲信号按一定的逻辑关系加到脉冲放大器上,使步进电机按确定的运行方式工作。
感应子式步进电机以相数可分为:二相电机、三相电机、四相电机、五相电机等。
以机座号(电机外径)可分为:42BYG(BYG 为感应子式步进电机代号)、57BYG、86BYG 、110BYG 、(国际标准),而像70BYG 、90BYG 、130BYG 等均为国内标准。
1.1 驱动控制系统组成使用、控制步进电机必须由环形脉冲,功率放大等组成的控制系统。
1.1.1 脉冲信号的产生脉冲信号一般由单片机或CPU 产生,一般脉冲信号的占空比为0.3-0.4 左右,电机转速越高,占空比则越大。
1.1.2 信号分配感应子式步进电机以二、四相电机为主,二相电机工作方式有二相四拍和二相八拍二种,具体分配如下:二相四拍为,步距角为1.8 度;二相八拍为,步距角为0.9 度。
四相电机工作方式也有二种,四相四拍为AB-BC-CD-DA-AB,步距角为1.8 度;四相八拍为AB-B-BC-C-CD-D-AB,(步距角为0.9 度)。
2.课题要求2.1 步进电机控制器设计要求: (1) start为”1”时,步进电机转动。
start为”0”时,步进电机停转。
(2) 预设step_in为常数,当clk为上升沿,load和start为”1’加载时,电机开始转动,转动step_in次后,停止转动。
当下次符合此要求时将再次转动。
(3) 通过load,,step_in同步或异步载入steps值。
示意图如下:图2如图2所示,为步进电机控制器的输入输出示意图。
其中:load为加载信号start为步进电机启动信号en为使能信号reset为置位清零信号clk为时钟信号step_in[15..0]表示输入的十六位二进制数,其数值范围用十进制数表示为0-65535。
Coil_out[3..0]表示输出,共有A,B,A′,B′四种状态。
A,B,A′,B′四种转动状态可用图3表示,电机按下图A- B- A′- B′- A循环转动,每转过一次变换90度。
当Coil_out[3..0]=“1000”,指针指向A;当Coil_out[3..0]=“0100”,指针指向B;当Coil_out[3..0]=“0010”,指针指向A′;当Coil_out[3..0]=“0001”,指针指向B′;当Coil_out[3..0]=“0000”,电机不工作。
图32.2 通过网络上收集资料,图书馆查阅书本,我们逐步了解了步进电机,了解它的基本工作原理后我们我们逐渐形成了一些驱动程序的基本构思,我们决定利用状态机的工作方式去编写步进电机的驱动。
3.方案设计与论证3.1状态机关于状态机的一个极度确切的描述是它是一个有向图形,由一组节点和一组相应的转移函数组成。
状态机通过响应一系列事件而“运行”。
每个事件都在属于“当前”节点的转移函数的控制范围内,其中函数的范围是节点的一个子集。
函数返回“下一个”(也许是同一个)节点。
这些节点中至少有一个必须是终态。
当到达终态,状态机停止。
包含一组状态集(states)、一个起始状态(start state)、一组输入符号集(alphabet)、一个映射输入符号和当前状态到下一状态的转换函数(transition function)的计算模型。
当输入符号串,模型随即进入起始状态。
它要改变到新的状态,依赖于转换函数。
在有限状态机中,会有有许多变量,例如,状态机有很多与动作(actions)转换(Mealy机)或状态(摩尔机)关联的动作,多重起始状态,基于没有输入符号的转换,或者指定符号和状态(非定有限状态机)的多个转换,指派给接收状态(识别者)的一个或多个状态等等。
传统应用程序的控制流程基本是顺序的:遵循事先设定的逻辑,从头到尾地执行。
很少有事件能改变标准执行流程;而且这些事件主要涉及异常情况。
“命令行实用程序”是这种传统应用程序的典型例子。
另一类应用程序由外部发生的事件来驱动——换言之,事件在应用程序之外生成,无法由应用程序或程序员来控制。
具体需要执行的代码取决于接收到的事件,或者它相对于其他事件的抵达时间。
所以,控制流程既不能是顺序的,也不能是事先设定好的,因为它要依赖于外部事件。
事件驱动的GUI应用程序是这种应用程序的典型例子,它们由命令和选择(也就是用户造成的事件)来驱动。
3.2 设计论证利用状态机的工作原理来设计步进电机的控制程序。
本课题要求需要输出五种状态,其中有四种转动状态,电机即按照此四种状态旋转,还有一种状态是用于保护电机,避免电机因通电过长而烧坏。
3.3最初设计:按照由易及难的原则,即将steps值固定,使电机转动步数恒定,每次触发旋转则按照固定steps值转,转动steps值后停转。
二次修改:在设计好最初的目标程序后,我们有对程序进行改进,即增加了steps预设功能,在进行波形仿真的时候,可修改输入信号step_in的值(16位二进制数),从而改变步进电机的转动步数。
更高要求:(1)在电机停转之后,应使输出为零,即保持电机的电路电流为零,从而达到保护电机不被烧毁的目的。
(2)在电机停转之后,若再次启动旋转,则从上次停止的位置继续旋转,这是符合实际情况的仿真。
(3)在电机停转之后,利用PWM技术对电路进行控制。
3.4鉴于以上要求,我们组经过一周左右时间利用VHDL语言设计出了符合课题要求的步进电机控制器程序(见附录)。
如下图4所示,为步进电机控制仿真波形图:图4图4中显示的是step_in值分别为10,8,12三种情况(16进制表示)时,Coil_out的输出情况,结果表明波形仿真与设计要求相符。
4. 总结与体会在编写程序的过程中我们出现了很多这样那样的困难,但我们并没有气馁,而是认真的探讨研究,终于将其一一解决。
在编程的开始我们就遇到了麻烦,输入端口step_in是输入了一个16位的二进制数,为了下面计数简单一点需要将其转换为十进制数。
开始我们打算用数据类型转换函数TO_INTEGER将STD_LOGIC_VECTOR转换成INTEGER,这需要调用DATAIO库,可在编译的时候提示找不到DATAIO库,我们只有放弃这一思路,另谋出入。
在一次翻阅图书馆资料的时候我无意中发现了一个新思路,就是在实体的说明语句中直接将step_in定义为step_in:IN INTEGER RANGE 65535 TO 0,这样电脑可以将输入的二进制自动转换为十进制的。
步进值输入了,那就要开始计数,本来我们想用加法从0开始计数,但在编程实现这一想法的时候我们发现这样做需要考虑的因素太多了,实现起来也比较困难。
所以有人提议我们试着用减法计数,我们照着做了,结果发现这样编确实很简单,而且程序也简洁明了。
在老师检查我们的程序的时候,老师发现了一个严重的漏洞,就是在转动steps停转后电机仍保持着当前状态,这样长时间通电会导致电机烧坏。
我们思考了一会决定给状态机增加一个状态,就是停转的时候不给电机通电,在停转的时候给电机这样一个状态可以起到保护的作用。
在第二次给检查的时候,老师又发现了要改进的地方,那就是在转了一个步进值之后又给电机一个加载信号,使电机进行二次工作,此时应紧接着上一次的状态继续工作,而我们的却从“1000”状态重新开始的。
经过反复思考,我们决定增加一个变量before_state,使之保留当前状态,即当current_state处于s0状态时,next_state<=s1,before_state〈=s0。
这样我们就解决了这一问题。
在这次编程中还有一个最令人头痛的问题,我们这个课题有很多的输入,要使电机转动有很多的条件,这就用到很多的if语句,可是在嵌套使用的过程中总是有问题,电脑显示太复杂,经过无数次的调整,最后也被我们克服了。
在这次课程设计中,我们学到了关于EDA的很多其他知识点,对EDA有了更深的认识,扩展了知识面。
同时我们也有很多的体会,课程设计是四人一组的,这就需要我们有着良好的团队合作意识,正是我们四个人的通力合作才顺利完成了本次课程设计,每个人在这次课程设计中都扮演着重要的角色,每段程序都凝结着我们智慧的结晶,正所谓“三个臭皮匠顶上一个诸葛亮”。
我们遇到困难时,并没有退却,而是勇敢的面对,正是这种不怕困难的精神克服了一个又一个难点。
老师在选题时曾说过,步进电机是比较有难度的,但这并未成为我们的阻力,反而成了我们不断超越的动力!总而言之,本次课程设计让我们受益匪浅!5.参考文献5.1 VHDL电路设计技术王道宪主编。
5.2 电子技术基础实验陈大钦等著。
5.3 EDA技术及应用(第二版)谭会生、张昌凡编著。
附录:VHDL源程序代码LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY stepmotor ISPORT(reset,clk,load,en,start:IN STD_LOGIC;step_in:IN INTEGER RANGE 65535 TO 0;coil_out:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END stepmotor;ARCHITECTURE ART OF stepmotor ISTYPE FWM1 IS(s0,s1,s2,s3,s4);SIGNAL current_state,next_state,before_state:FWM1;BEGINPROCESS(load,clk,en,start)ISV ARIABLE count:INTEGER RANGE 65535 TO 0;BEGINIF(load='1')THENcount:=step_in+1;ELSIF(reset='1')THENcurrent_state<=s4;ELSIF(CLK'EVENT AND CLK='1')THENIF(count>0 AND start='1')THENcount:=count-1;IF(en='1')THENcurrent_state<=next_state;END IF;IF(count=0)THENcurrent_state<=s4;END IF;END IF;END IF;END PROCESS;PROCESS(current_state)IS BEGINCASE current_state ISWHEN s0=>coil_out<="1000"; next_state<=s1;before_state<=s0;WHEN s1=> coil_out<="0100"; next_state<=s2;before_state<=s1;WHEN s2=>coil_out<="0010"; next_state<=s3;before_state<=s2;WHEN s3=> coil_out<="0001"; next_state<=s0;before_state<=s3;WHEN s4=> coil_out<="0000"; next_state<=before_state;END CASE;END PROCESS;END ART;。