9、电机控制——hall自学习

1、Hall 自学习的引入

  • 问题总结

    • 3 个 hall 间隔并非理想的 120°,有可能有的相差115°,有的相差125°等;但我们并不知道它们之间的精确间隔

    • 速度、电角度计算模型按照:3 个 hall 之间依次间隔 120°,每个 hall 状态依次相差 60° 进行处理

    • 因此导致电角度计算不精确

  • 核心原因

    • 尝试过一些方法,最终都离不开测量 / 基准电角度与计算电角度之间的校正,只是校正方法不同,如:每个 hall 状态都较正,一个电角度周期校正 1 次,以及其它一些方法,但在测量电角度有误差的情况下,怎么校正总也不那么理想

    • 问题核心:不知道 3 个 hall 的精确间隔 或 3 个 hall 的精确位置

  • 解决方案

    • 采用合适的方法,比如 IF 控制,不需要任何传感器,通过自主生成电角度来间接得到近似真实的电角度

    • 让电机平滑的转起来,自然会触发每个 hall 状态,记录下此时的电角度,就是每个 hall 状态相对精确的位置

    • 有了每个 hall 状态相对精确的位置后,再通过插值、校正就可以输出平滑、准确的电角度

    • 以上我们称之为 "hall 自学习"!--- 学习 "三个 hall 的准确位置"

2、方案要点

  • 方案概述

    • 采用合适的方法,比如IF 控制 ,不需要任何传感器,通过自主生成电角度来间接得到近似真实的电角度

    • 让电机平滑转动,自然会触发每个 hall 状态,记录下此时的电角度,就是每个 hall 状态相对精确的位置

    • 有了每个 hall 状态相对精确的位置后,再通过插值、校正就可以输出平滑、准确的电角度

  • 如何实现?

    • 核心:IF 控制自主生成电角度来间接得到近似真实的电角度

    • 实现要点:先给出结论

      • 空载

      • 相对较大的电流

      • 合适的参考转速、电流,让电机平滑转动

3、IF控制原理

基于虚拟的坐标去生成虚拟的电角度,无法保证转矩角位二分之π,所以输出转矩并不是最大的;

4、hall自学习控制方式与目标

在无位置传感器控制(如 hall 自学习的 IF 控制)中,需要通过虚拟电角度θe_ref​ 来近似转子的真实电角度θe​。当qv轴和 d 轴接近时,转矩角β很小,此时满足θe_ref​+2π​≈θe​,从而可以通过虚拟电角度推导得到转子真实位置。

虚拟坐标系(dv−qv轴)由θe_ref​定义,用于生成控制所需的虚拟电流分量(idv​=0,iqv​=A)。

真实转子的 d 轴由永磁体磁场方向决定,是电机电磁转矩生成的基准轴。

当qv轴与 d 轴接近时,虚拟磁场和真实转子磁场的相对位置关系被 "校准",使得虚拟电角度和真实电角度的偏差可忽略,进而实现从虚拟角度到真实角度的近似推导,为无位置传感器的电流控制、转矩控制提供准确的位置依据。

5、IF自主生成的电角度 与真实电角度的关系

转矩角就是qv与d轴的夹角;

电流为0.1A是转矩角过大,显然无法带动电机运转;

增大电流,缩小转矩角,再次测试,符合预期

保持电流不变,增大负载,再次测试,此时转矩角增大,不符合预期

继续增大电流,转矩角变小,但是转速波动较大

综上所示,并非转矩角越小越好,并非电流越大越好,应根据测试情况选取合适的电流值,及推算出的转矩角;

6、hall自学习的实现

  • 将每个 hall 状态、对应电角度存入缓冲区;只要有一个 hall 状态捕获次数达到 16 次,自学习完成

  • 对每个 hall 状态多次捕获的电角度求平均值,得到每个 hall 状态最终的电角度,写入 hall 状态表 /hall 状态角度表,存入 FLASH

hall自学习与非霍尔自学习对比

  • 非自学习:在 hall 相位偏移基础上,按 3 个 hall 依次间隔 120° 为每个 hall 状态赋予测量电角度

  • 自学习:直接为每个 hall 状态赋予自学习得到的电角度,这是绝对电角度,无需单独考虑 hall 相位偏移

hall自学习在IF控制模式下进行自学习,把hall电角度存入数组里,到速度电流双闭环控制时,调用初始化hall函数,对hall电角度进行查表操作;

因为是边缘捕获,对每个电角度都加上30度,使其出于扇区的中间位置;

7.hall自学习的优点

更加精准、平滑的电角度输出。学习得到每个 hall 状态绝对电角度,已经包含了 hall 相位偏移:无需单独测量 hall 相位偏移角

hall 信号线 Ha,Hb,Hc 顺序随便接,或者叫 hall 信号线自适应。

hall 自学习应用时。输入上次、当前捕获的 hall 状态:同 hall 状态表 /hall 状态角度表中的次序对比,可以得到当前的转动方向。输入当前捕获的 hall 状态,从之前记录的 hall 状态表 /hall 状态角度表中可得到当前状态对应的电角度。hall 自学习执行时:记录了每个 hall 状态及其对应的电角度,记录的 hall 状态次序和电机正转时 hall 状态的捕获次序相同,具体是什么,我们不关心,也不需要关心

仿真对比

相关推荐
鱼子星_1 小时前
【C++】类和对象(下)——初始化列表,类型转换,static成员,友元,内部类,匿名对象,编译器的优化拓展
c语言·c++·笔记
千寻xun9 小时前
一、理论篇-NVME协议学习笔记
笔记·学习·fpga开发·nvme ssd·nvme协议
researcher-Jiang10 小时前
高性能计算之OpenMP——超算习堂学习1
android·java·学习
MartinYeung514 小时前
[论文学习]大语言模型安全综述:攻击、防御、对齐、度量与护栏的深度解析
学习·安全·语言模型
Piko61415 小时前
锐捷 VSU 虚拟化堆叠配置
运维·网络·笔记
AOwhisky15 小时前
Python 学习笔记(第三期)——流程控制:条件判断与循环结构
运维·笔记·python·学习·云原生·流程控制·循环
心中有国也有家15 小时前
AtomGit Flutter 鸿蒙客户端:白噪音场景的视觉设计
学习·flutter·华为·harmonyos
心中有国也有家15 小时前
AtomGit Flutter 鸿蒙客户端:呼吸练习的完整生命周期
学习·flutter·华为·harmonyos
Zeeland16 小时前
构建护城河:自学习 Agent
学习
尼米棕熊16 小时前
大模型学习8上-推理部署框架llama.cpp与Ollama使用指北
学习·llama