摘要:在步进电机的实际教学中,学生们通常都是在教师的指导下进行理论的学习来获得抽象认识以及通过实际模型的拆解、认知与操作实践来获得感性认识。然而,实际教学中,由于成本问题,很多实践环节实施起来较为困难且耗时较长。本文采用近几年大热的跨平台编程语言python及在其基础上二次开发的Vpython来对教学用简单结构的步进电机进行3D动态建模,该模型可以变换角度,任意放大与缩小,使其内部结构与外部样式均可以详细观察与教学。该电子模型可易传波建模过程简单易学,可扩充学生基础的几何知识,为解决教学过程中的经济与时间成本问题提供了一个思路,并在文末附上了源代码。
关键词:python;模拟;步进电机
步进电机既是广大科学类、电子技术类专业所要学习的重要内容,又是现代工业中广泛应用的基本工具。因此,其在各大高等院校的相关专业教学中都是处于核心地位。而对于步进电机的教学,其难点之一就是如何更加形象的传达其原理[1]。因此,建立一个尽可能贴近现实并且构建过程不过于复杂且体现其运作规律的3D模型势在必行。为了达到此目标,经过多年的教学与对比,在对本文选用近几年比较热门的跨平台、多用途的编程语言python来对步进电机进行模拟仿真,以辅助教学。
1 步进电机原理简介
步进电机是根据电磁脉冲信号来改变角位移或线位移的开环控制电机,是现代数字程序控制系统中的主要执行元件,应用极为广泛[2]。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,称为“步距角”,即式(1),
m代表定子转速,Z代表转子齿数,C通电方式。它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
步进电机可以作为一种控制用的特种电机,利用其没有积累误差 (精度为 100%) 的特点,广泛应用于各种开环控制。现在比较常用的步进电机如图1,包括反应式步进电机( VR)、永磁式步进电机(PM )、混合式步进电机(HB)和单相式步进电机等[3]。
2 Vpython简介
Vpython曾经的名字叫visual,是基于python的一个多功能模块,该模块由卡内基梅隆大学的David Scherer最初于2000年编写。其整合了数学、3D的图形功能,使得python在3D模型的编程领域进一步扩展。
如今其更名为Vpython,整合了更多的功能和一些相关模块,并将python纳入旗下,摇身一变成为一款独立的编程软件。
因此,完整的Vpython现在包括三部分,其一是python;其二是visual模块;其三是IDE,即相应的配置环境。
3 设计思路及过程
根据图2所示,步进电机的详细结构可以简单拆分为圆环、圆柱、矩形、3D螺旋状线条。
因此,我们可以直接从Vpython里的3D object功能中选取圆环结构、锥形结构、螺旋结构进行建模。建模结果如下图3所示。动态的源文件见代码。
4 源代码
#以下代码适用于python2.7版本
from visual import *
print("Click to pause or restart.")
scene.autocenter=True
scene.width=1024
scene.height=768
mfrm=frame(axis=(0,0,1))#Motor Frame
rfrm=frame(frame=mfrm)#Rotor Frame
material=materials.rough,frame=rfrm)
#Create contactor soldering tips,same as above
g2=shapes.circle(radius=1.4)
ns=24
sphs=[]
for i in range(ns):
t=shapes.rectangle(pos=(1.2*cos(i*2*pi/ns),1.2*sin(i*2*pi/ns)),width=2.1,height=0.2,rotate=i*2*pi/ns)
g2=g2-t
sldr=sphere(frame=rfrm,pos=(1.195*cos(i*2*pi/ns+pi/ns),1.195*sin(i*2*pi/ns+pi/ns),2.2),radius=0.1,material=materials.shiny)
#add solders
sphs.append(sldr)
g2=g2-shapes.circle(radius=0.6)#Subtract a wider circle to enable soldering
#Finally extrude to get soldering surfaces
ge2=extrusion(pos=[(0,0,2),(0,0,2.4)],shape=g2,color=(1,0.5,0.3),
material=materials.rough,frame=rfrm)
#Add shaft insulator material
#Define a circular ring of thickness=0.05
sc=shapes.circle(radius=0.5,thickness=0.05)
#Extrude the ring to get a thin hollow cylinder insulator over the shaft
sce=extrusion(pos=[(0,0,-0.5),(0,0,9.5)],shape=sc,color=(1,0,0),
material=materials.plastic,frame=rfrm)
#The Rotor Shaft,defined by a simple cylinder
shaft=cylinder(frame=rfrm,pos=(0,0,-1.5),axis=(0,0,12),radius=0.495,
material=materials.blazed)
#Add a piece of gear at one end of the shaft
#Use the gear shape to define the shape,note radius,addendum,dedendum sizes
gr=shapes.gear(n=9,radius=0.455,addendum=0.04,dedendum=0.06,fradius=0.01)
#Obtain rotor core profile
g3=g3-shapes.circle(radius=0.495)#Subtract rotor shaft area
#Connect power cables
angl=pi/400
run=True
#Turn on the motor
while True:
rate(100)
if run:
rfrm.rotate(angle=angl,axis=(0,0,1))
if scene.mouse.events:
m=scene.mouse.getevent()
if m.click=='left':
run=not run
5 结束语
模拟的结果表明,只要设计合理,符合步进电机的实际,那么所构建的模型既可见其内部结构,又可多角度调整,观察其运动规律。总之,用3D建模的方式来模拟实际的步进电机教学,可以起到降低经济成本,提高教学效率。
参考文献
[1]郝欣伟,袁皓,刘云秋,翟志强.两相混合式步进电机细分驱动器设计[J].电子世界,2019(02):113-115.
[2]唐立.步进电机细分驱动系统设计[J].机电信息,2017(27):90-91.
[3]力兴文.步进电机在模拟瞳孔上的应用[J].电子技术与软件工程,2018(14):98-99.
论文作者:杨阳
论文发表刊物:《科学与技术》2019年第11期
论文发表时间:2019/10/24
标签:步进电机论文; 脉冲论文; 建模论文; 模型论文; 结构论文; 位移论文; 模块论文; 《科学与技术》2019年第11期论文;