线性霍尔测量电机角度

使用线性霍尔传感器测量电机角度

相关文章:

线性霍尔传感器测量电机电角度的问题分析 - 道客巴巴 (doc88.com)

相关论文:

基于线性霍尔传感器的直线电机位置检测及控制技术_赵欣涛

基于线性霍尔传感器的直线电机位置检测方法研究_潘顺平

Math相关

atan2函数

描述

C 库函数 double atan2(double y, double x) 返回以弧度表示的 y/x 的反正切。y 和 x 的值的符号决定了正确的象限。

声明

下面是 atan2() 函数的声明。

double atan2(double y, double x)

参数

  • x -- 代表 x 轴坐标的浮点值。
  • y -- 代表 y 轴坐标的浮点值。

返回值

该函数返回以弧度表示的 y/x 的反正切,弧度区间为 [-pi,+pi]。

\[[ \begin{align*} x &= r \cdot \cos(\theta) \ y &= r \cdot \sin(\theta) \end{align*} ] \]

Clark变换

Clark变换将三相系统(在 abc 坐标系中)的时域分量转换为正交静止坐标系 (αβ) 中的两个分量。

简单来说就是将三相变成两相用于方便计算

相关资料:

派克变换 - 维基百科,自由的百科全书 (wikipedia.org)

Clark变换的几何意义->非常重要

img

解算方法

利用基变换来实现三相坐标系(abc)到两相正交坐标系(αβ)

已知三相坐标系的相位依次相差120°且αβ为正交坐标系。

将α轴与a轴重叠,将向量a沿着原点O的方向延长做一条辅助线,∠boe和∠coe等于60°。

计算向量b和向量c到α轴的投影长度:

\[be = \sin(∠boe) = \sin(60°) = \frac{\sqrt{3}}{2} \\ ce = -\sin(∠coe) = -\sin(60°) = -\frac{\sqrt{3}}{2} \]

因为向量c在α轴的下方所以投影为负

计算向量b和向量c到β轴的投影长度:

\[ bg = -\cos(∠boe) = -\cos(60°) = -\frac{1}{2} \\ ch = -\cos(∠coe) = -\cos(60°) = -\frac{1}{2} \]

因为向量b和向量c在β轴的左侧所以投影为负

组合出基变换矩阵

根据上面的投影可以得到a,b,c三个向量的坐标:向量

\[a=[1, 0] \]

,向量

\[b=[-\frac{1}{2},\frac{\sqrt{3}}{2}] \]

,向量

\[c=[-\frac{1}{2},-\frac{\sqrt{3}}{2}] \]

所以基变换矩阵为:

\[A = \left[ \begin{matrix} 1 & -\frac{1}{2} & -\frac{1}{2} \\ 0 & \frac{\sqrt{3}}{2}& -\frac{\sqrt{3}}{2} \end{matrix} \right] \]

坐标转换公式为:

\[\left[ \begin{matrix} i\alpha \\ i\beta \end{matrix} \right] = \left[ \begin{matrix} 1 & -\frac{1}{2} & -\frac{1}{2} \\ 0 & \frac{\sqrt{3}}{2}& -\frac{\sqrt{3}}{2} \end{matrix} \right] \left[ \begin{matrix} ia \\ ib \\ ic \end{matrix} \right] \]

\[i\alpha = ia - \frac{1}{2}ib - \frac{1}{2}ic \\ i\beta = \frac{\sqrt{3}}{2}ib - \frac{\sqrt{3}}{2}ic \]

角度求解方法

适用条件:

两个线性霍尔传感器,分别输出两个正弦波,相位为120度(就是要求两个霍尔电机呈120度放置)

使用Math方法:

Clark变换 -> atan2函数

这里只对一个周期内的角度进行解算(这里4个周期才是360度,即一个周期才90度)

实际输入数据

霍尔电机得到的数据为相位差相差120度的正弦波形

期望输出数据

线性的,连续的,一维的角度数据

思路

  • (选用)将120度相位转化为90度相位,再运用atan2解算角度
  • 将两个相位进行反三角函数,对折线进行分段函数映射

具体实现

  1. 将得到的双相ADC数据进行移动和变幅
    • ->得到以X轴为中心震荡的振幅为1的单位双相正弦波数据
  2. 依据调整过的双线正弦波数据得到三相的正弦波数据
    • 三相的和应该为0,因此可以得到第三相的数据
  3. 将三相数据进行Clark变换,得到相位差为90度的两相数据
  4. 将得到的两相数据扔到atan2中得到角度
posted @ 2025-05-07 12:27  c17VV  阅读(225)  评论(0)    收藏  举报