Engee 文档
Notebook

使用霍尔效应编码器测量步进电机的角度

此示例演示如何使用霍尔效应编码器单元确定步进电机的旋转角度。

编码器单元使用均匀定位在旋转磁铁下的四个霍尔传感器模拟角位置传感器。 每个霍尔传感器输出与磁场强度成比例的输出电压。 传感器沿着旋转磁体的磁极位于并且在与测量主轴正交的磁体的不同位置处具有最大磁通密度。 因此,传感器产生四个相对于彼此偏移90°的正弦信号。 这四个信号唯一地编码传感器轴在整个360°范围内的旋转。

此示例显示两个模型。 在这两种情况下,步进电机首先从0°向上旋转到360°,然后从360°向下旋转到0°:

*在模型中 HallEffectRotaryEncoderVoltage 编码器被配置为使其输出端口输出电信号。 它们在每个霍尔传感器的输出端输出电压。

HallEffectRotaryEncoderAngle 编码器单元被配置为一次输出**测得的***角**。

模型概述

让我们打开第一个模型。

In [ ]:
cd(@__DIR__) # 转到带有示例的文件夹
engee.open("HallEffectRotaryEncoderVoltage.engee");
image.png

让我们运行模型并研究结果。:

In [ ]:
data = engee.run("HallEffectRotaryEncoderVoltage")
plot( 
    plot( data["v_x"].time, [data["v_y"].value data["v_x"].value], lw=2, title="传感器输出电压和测量角度", titlefont=font(11), guidesfont=font(8), ylabel="电压(V)", label=["V_y" "V_x"] ),
    plot( data["Angle"].time, 180/pi*data["Angle"].value, lw=2, xlabel="时间", ylabel="角度(度)", label=false, guidesfont=font(8)),
    layout=(2,1), size=(900,500)
)
Out[0]:

当电机沿不同方向旋转时,我们可以看到x和Y轴传感器上的电压如何沿正弦波变化。 当磁铁的两极与传感器的轴重合时,我们看到这个信号的最大值。 在模拟开始时,磁极与传感器对齐 xnxp. 这种重合在端口xnxp(*Vx)*处产生最大输出电压在端口ynyp(*Vy)*处产生零电压。 当轴开始旋转时,Vx减小,Vy随着北极的移动而增加 yp,而南方的是 yn.

简化模型

打开模型 HallEffectRotaryEncoderAngle.

In [ ]:
engee.open("HallEffectRotaryEncoderAngle.engee");
image.png

让我们运行模型并讨论结果。:

In [ ]:
data = engee.run("HallEffectRotaryEncoderAngle")
plot( data["Angle"].time, 180/pi*data["Angle"].value,
lw=2, xlabel="时间", ylabel="角度(度)", label=false, guidesfont=font(8), size=(900,400) )
Out[0]:

模型的结果是相当可比的。

在第二种配置中,从360中减去负角度,因此我们在零周围得到可见的跳跃。 在第一个模型中,显示负角度而不进行校正。

结论

使用几个简单的组件,可以创建一个步进电机模型和一个测量其旋转的系统,该系统可以包含在半自然模拟周期中,并由真实微控制器的虚拟模型控制。