stm32无刷电机控制_滑膜观测器更改电机如何调整?

article/2025/7/18 6:28:00

        这个教程是针对KY_Motor的无刷电机开发板,滑膜观测器反正切的补充教程,大家比较关注现有的程序如何适配到自己的电机上,因此我们团队推出了如下教程,让大家在学习的过程中有迹可循。

开发板链接:开发板

1. 电机电气参数

        电机的定子电阻 Rs 和定子电感 Ls 是影响电机控制的重要参数,不同电机的这两个参数可能会有较大差异。需要参考新电机的规格书获取这些参数,并更新到代码中。

积分系数 Ki

  • 文件位置:Userconfig.h 和 Sensorless_SMO.h
  • 修改方法
    // Userconfig.h
    #define  Motor_Rs   新电机定子电阻值f  // 根据新电机规格书修改
    #define  Motor_Ls   新电机定子电感值f  // 根据新电机规格书修改// Sensorless_SMO.h
    typedef struct{float  Rs;                // 定子电阻,更新为新电机的定子电阻float  Ls;                // 定子电感,更新为新电机的定子电感// 其他参数...
    } SMO_Motor;#define SMO_Motor_DEFAULTS {新电机定子电阻值, 新电机定子电感值, 0.0, 0.0, 0.0, 0, 0, 0.0, 0.0}

    2. 电机极对数

  • 电机的极对数 POLES 也会影响电机的控制,不同电机的极对数可能不同。需要根据新电机的规格书更新该参数。
  • 文件位置:Userconfig.h 和 Sensorless_SMO.h
  • // Userconfig.h
    #define  Motor_Pn   新电机极对数  // 根据新电机规格书修改// Sensorless_SMO.h
    typedef struct{// 其他参数...uint32_t   POLES;         // 电机极对数,更新为新电机的极对数// 其他参数...
    } SMO_Motor;#define SMO_Motor_DEFAULTS {0.0, 0.0, 0.0, 0.0, 0.0, 新电机极对数, 0, 0.0, 0.0}

    3. 速度设定值

  • 新电机的最大和最小转速可能与原电机不同,需要调整最大速度 MAXSpeed 和最小速度 MinSpeed,以及速度参考函数 SPEEDREF
  • 文件位置:Userconfig.h
  • // Userconfig.h #define MAXSpeed 新电机最大转速 // 根据新电机规格书修改#define MinSpeed 新电机最小转速 // 根据新电机规格书修改 #define SPEEDREF(X) ((MAXSpeed - MinSpeed)/4096.0*X + MinSpeed)

    4. 对齐和开环运行电压设定值

  • 电机的对齐和开环运行阶段的电压设定值 UD_AlignUQ_AlignUD_Open 和 UQ_Open 可能需要根据新电机的特性进行调整。
  • 文件位置:Userconfig.h
  • // Userconfig.h
    #define UD_Align               _IQ(新的对齐阶段d轴电压值)  // 根据新电机特性调整
    #define UQ_Align               _IQ(新的对齐阶段q轴电压值)  // 根据新电机特性调整
    #define UD_Open                _IQ(新的开环运行阶段d轴电压值)  // 根据新电机特性调整
    #define UQ_Open                _IQ(新的开环运行阶段q轴电压值)  // 根据新电机特性调整

    5. PI 控制器参数

  • PI 控制器用于控制电机的电流和速度,不同电机的动态特性可能不同,需要调整 PI 控制器的参数 Kp 和 Ki
  • 文件位置:PI_Controler.c
  • 修改方法
    • // PI_Controler.c
      void PI_init(void)
      {/*******d轴电流PI控制器参数**************/pi_id.Kp   = _IQ(新的d轴电流Kp值);  // 根据新电机特性调整pi_id.Ki   = _IQ(新的d轴电流Ki值);  // 根据新电机特性调整// 其他参数.../*******q轴电流PI控制器参数**************/pi_iq.Kp   = _IQ(新的q轴电流Kp值);  // 根据新电机特性调整pi_iq.Ki   = _IQ(新的q轴电流Ki值);  // 根据新电机特性调整// 其他参数.../*******速度PI控制器参数**************/pi_spd.Kp   = _IQ(新的速度Kp值);  // 根据新电机特性调整pi_spd.Ki   = _IQ(新的速度Ki值);  // 根据新电机特性调整// 其他参数...
      }

              更换电机后,需要重点关注电机的电气参数(电阻、电感、极对数)、速度设定值、对齐和开环运行电压设定值以及 PI 控制器参数。在修改参数时,应参考新电机的规格书,确保参数的准确性。同时,在修改程序后,需要进行充分的测试,以确保电机能够正常运行。

  • 电机的对齐和开环运行阶段的电压设定值 UD_Align、UQ_Align、UD_Open 和 UQ_Open 可能需要根据新电机的特性进行调整,那么这几个参数怎么改?

  • UD_AlignUQ_AlignUD_Open 和 UQ_Open 这些参数在电机的对齐和开环运行阶段起着关键作用,它们分别代表 d 轴和 q 轴的电压设定值。更换电机后,由于新电机的电气特性(如电阻、电感、极对数等)可能与原电机不同,这些参数需要根据新电机的特性进行调整。以下是调整这些参数的详细步骤:

  • 对齐阶段(UD_Align 和 UQ_Align
  • UD_Align:d 轴电压主要用于建立电机的磁场。一般来说,可以先将 UD_Align 设置为一个较小的正值,例如 _IQ(0.05) 或 _IQ(0.1)。如果电机在对齐阶段无法正常对齐,可以适当增加 UD_Align 的值。
  • UQ_Align:q 轴电压用于产生转矩。在对齐阶段,通常希望电机静止,因此可以将 UQ_Align 设置为 0,即 _IQ(0.0)
  • 开环运行阶段(UD_Open 和 UQ_Open
  • UD_Open:在开环运行阶段,d 轴电压通常用于维持电机的磁场。可以根据电机的额定电流和电阻来估算 d 轴电压的大小。一般来说,可以将 UD_Open 设置为一个较小的正值,例如 _IQ(0.0) 或 _IQ(0.05)
  • UQ_Open:q 轴电压用于产生转矩,控制电机的转速。可以根据电机的额定功率和转速来估算 q 轴电压的大小。可以从一个较小的电压值开始,逐渐增加 UQ_Open 的值,观察电机的转速变化,直到达到所需的转速。
  • PI参数调整
  • PI 控制器用于控制电机的电流和速度,不同电机的动态特性可能不同,需要调整 PI 控制器的参数 Kp 和 Ki 这个参数应该怎么更改
  • #include "PI_Controler.h"/************电流 - 速度控制器初始化**************/PI_CONTROLLER pi_id = PI_CONTROLLER_DEFAULTS; //d轴电流控制器
    PI_CONTROLLER pi_iq = PI_CONTROLLER_DEFAULTS; //q轴电流控制器
    PI_CONTROLLER pi_spd = PI_CONTROLLER_DEFAULTS; //速度控制器void PI_init(void)
    {/*******d轴电流控制器**************/pi_id.Kp   = _IQ(新的d轴比例系数值);pi_id.Ki   = _IQ(新的d轴积分系数值);pi_id.Umax = _IQ(0.4);pi_id.Umin = _IQ(-0.4); pi_id.Kslf = _IQ(0.1057073975);   // 低通滤波系数 _IQ(0.1057073975); pi_id.ui = 0;pi_id.i1 = 0; /*******q轴电流控制器**************/pi_iq.Kp   = _IQ(新的q轴比例系数值);pi_iq.Ki   = _IQ(新的q轴积分系数值); pi_iq.Umax = _IQ(0.8);pi_iq.Umin = _IQ(-0.3);pi_iq.Kslf = _IQ(0.1057073975);  // 低通滤波系数 _IQ(0.1057073975); pi_iq.ui = 0;pi_iq.i1 = _IQ(0.15); /*******速度控制器**************/  pi_spd.Kp   = _IQ(新的速度比例系数值);pi_spd.Ki   = _IQ(新的速度积分系数值); pi_spd.Umax = _IQ(0.65);pi_spd.Umin = _IQ(-0.65);pi_spd.ui = 0;pi_spd.i1 = _IQ(0.15);  
    }

     具体调整方法

  • 比例系数 Kp
  • 作用Kp 决定了控制器对误差的响应速度。Kp 值越大,控制器对误差的响应越迅速,系统的动态响应速度越快,但可能会导致系统出现较大的超调甚至不稳定。
  • 调整方法:可以先将 Kp 设置为一个较小的值,例如 _IQ(0.1),然后逐渐增加 Kp 的值,观察电机的响应。如果电机的响应速度较慢,可以适当增加 Kp 的值;如果电机出现超调或不稳定的情况,需要减小 Kp 的值。
  • 作用Ki 用于消除系统的稳态误差。Ki 值越大,积分作用越强,系统消除稳态误差的速度越快,但可能会导致系统出现积分饱和现象,使系统的动态性能变差。
  • 调整方法:在调整 Ki 之前,需要先将 Kp 调整到一个合适的值。可以先将 Ki 设置为 0,然后逐渐增加 Ki 的值,观察电机的稳态误差。如果电机存在稳态误差,可以适当增加 Ki 的值;如果电机出现积分饱和现象,需要减小 Ki 的值。
  • pi_id.Kslf = _IQ(0.1057073975); // 低通滤波系数 _IQ(0.1057073975); 这个低通滤波参数是怎么确定?
  • 在电机控制中,pi_id.Kslf 这样的低通滤波系数用于对信号进行平滑处理,减少噪声和高频干扰的影响,以提高系统的稳定性和控制精度。确定这个低通滤波系数通常可以采用理论计算、经验取值和实验调整等方法,下面详细介绍:
  • 1. 理论计算方法

    低通滤波器常用一阶惯性环节来表示,其传递函数为:

  •  

    要通过理论计算确定 Kslf,可以按以下步骤进行:

  • 确定时间常数 T:根据电机系统的特性和需要滤除的噪声频率范围来选择合适的时间常数 T。例如,如果需要滤除较高频率的噪声,可以选择较小的 T 值;如果希望对信号的变化响应较慢,可以选择较大的 T 值。
  • 确定采样周期 \(T_s\):采样周期 \(T_s\) 由控制系统的硬件和软件决定,通常是固定的。在你的代码中,Control_Ts = 0.000080f 表示采样周期为 \(80\ \mu s\)。
  • 计算滤波系数 \(\alpha\):将 T 和 Ts 代入公式 中,计算得到滤波系数 α。

2. 经验取值方法

        在实际应用中,也可以根据经验来选择低通滤波系数。一般来说,滤波系数的取值范围在 0 到 1 之间,取值越大,滤波器对输入信号的响应越快,但对噪声的抑制能力越弱;取值越小,滤波器对噪声的抑制能力越强,但对输入信号的响应越慢。

以下是一些常见的经验取值范围:

  • 当需要快速响应信号变化时,可以选择较大的滤波系数,例如 0.2 到 0.5。
  • 当需要较强的噪声抑制能力时,可以选择较小的滤波系数,例如 0.05 到 0.2。

        代码中,pi_id.Kslf = _IQ(0.1057073975) 就是一个经验取值,这个值相对较小,说明滤波器对噪声的抑制能力较强,但对信号的响应较慢。

        还可以通过仿真的方式获取,方法有很多种,每个人选择的也不同,有人擅长计算,有人经验丰富,有人运气好,随便拿个参数,电机就能运转正常。

以上都是大家比较关注的问题,后续有问题我会在总结,继续更新教程。


http://www.hkcw.cn/article/WUilaNjHVM.shtml

相关文章

Vad-R1:通过从感知到认知的思维链进行视频异常推理

文章目录 速览摘要1 引言2 相关工作视频异常检测与数据集视频多模态大语言模型具备推理能力的多模态大语言模型 3 方法:Vad-R13.1 从感知到认知的思维链(Perception-to-Cognition Chain-of-Thought)3.2 数据集:Vad-Reasoning3.3 A…

【Doris基础】Doris中的Tablet详解:核心存储单元的设计与实现

目录 1 Tablet基础概念 1.1 什么是Tablet 1.2 Tablet的核心特性 1.3 Tablet与相关概念的关系 2 Tablet的架构设计 2.1 Tablet的整体架构 2.2 Tablet的存储结构 3 Tablet的生命周期管理 3.1 Tablet的创建流程 3.2 Tablet的数据写入流程 3.3 Tablet的压缩与合并 4 Ta…

因泰立科技:镭眸T51激光雷达,打造智能门控新生态

在高端门控行业,安全与效率是永恒的追求。如今,随着科技的飞速发展,激光雷达与TOF相机技术的融合,为门控系统带来了前所未有的智能感知能力,开启了精准守护的新时代。因泰立科技的镭眸T51激光雷达,作为这一…

Delphi读写Mifare Desfire Ev1 Ev2 EV3卡修改AES密钥源码

本示例使用的发卡器:https://item.taobao.com/item.htm?spma21dvs.23580594.0.0.52de2c1b3bN1Vu&ftt&id917152255720 unit Unit2;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls,declaredl…

第T10周:数据增强

import matplotlib.pyplot as plt import numpy as np #隐藏警告 import warnings warnings.filterwarnings(ignore)from tensorflow.keras import layers import tensorflow as tf gpus tf.config.list_physical_devices("GPU")if gpus:tf.config.experimental.set…

Python_day40

昨天我们介绍了图像数据的格式以及模型定义的过程,发现和之前结构化数据的略有不同,主要差异体现在2处 1. 模型定义的时候需要展平图像 2. 由于数据过大,需要将数据集进行分批次处理,这往往涉及到了dataset和dataloader来规范代码…

MSTNet:用于糖尿病视网膜病变分类的多尺度空间感知 Transformer 与多实例学习方法|文献速递-深度学习医疗AI最新文献

Title 题目 MSTNet: Multi-scale spatial-aware transformer with multi-instance learning for diabetic retinopathy classification MSTNet:用于糖尿病视网膜病变分类的多尺度空间感知 Transformer 与多实例学习方法 01 文献速递介绍 糖尿病视网膜病变&#…

Linux上安装MongoDB

目录 一、在Linux系统安装MongoDB服务器 1、下载MongoDB 2、上传MongoDB并解压 3、创建必要目录 4、配置环境变量 5、创建配置文件 6、启动命令 7、验证安装 二、在Linux系统安装MongoDB客户端Shell 1、下载MongoDB Shell 2、上传MongoDB Shell并解压 3、配置环境变…

muduo库的初步认识和基本使用,创建一个简单查询单词服务系统

小编在学习完muduo库之后,觉得对于初学者,muduo库还是有点不好理解,所以在此,小编来告诉大家muduo库的初步认识和基本使用,让初学者也可以更快的上手和使用muduo库。 Muduo由陈硕大佬开发,是⼀个基于 非阻塞…

格恩朗超声波水表 助力农业精准灌溉与振兴​

在农业现代化的征程中,水资源的精准利用至关重要,而这离不开高精度计量设备的支持。大连格恩朗品牌积极响应国家全面推进乡村振兴、加快农业农村现代化的号召,精心打造的超声波水表,凭借其超高精度,成为绿色灌溉领域的…

Nginx进阶篇(静态资源的缓存处理、Nginx中与浏览器缓存相关的指令、Nginx的跨域问题、静态资源防盗链)

文章目录 1. 静态资源的缓存处理1.1 什么是缓存1.2 什么是Web缓存1.3 Web缓存的种类1.3.1 客户端缓存1.3.2 服务端缓存 1.4 为什么要用浏览器缓存1.5 浏览器缓存的执行流程1.6 浏览器强缓存和弱缓存的区别1.6.1 强缓存(Strong Cache)1.6.2 弱缓存&#x…

云游戏混合架构

云游戏混合架构通过整合本地计算资源与云端能力,形成了灵活且高性能的技术体系,其核心架构及技术特征可概括如下: 一、混合架构的典型模式 分层混合模式‌ 前端应用部署于公有云(如渲染流化服务),后端逻辑…

Origin教程010:Origin绘制同心圆图

文章目录 10、绘制同心圆弧图1、同心圆弧图绘制2、调整绘图顺序3、设置标签内容、样式4、指引线设置5、添加图形标题6、练习数据10、绘制同心圆弧图 本节要点: 同心圆弧图的绘制调整绘图顺序(对象管理器)设置标签内容、样式指引线设置添加图形标题1、同心圆弧图绘制 1️⃣拖…

rs485/232转profinet网关与长陆-UNI800称重显示控制仪通讯

rs485/232转profinet网关与长陆-UNI800称重显示控制仪通讯 在现代工业自动化系统中,RS485转Profinet网关作为一种关键的通信接口设备,其重要性不言而喻。它能够将传统的RS485接口设备接入先进的Profinet网络,实现不同协议之间的无缝转换和数…

【速通RAG实战:进阶】20、改进RAG检索质量有哪些诀窍?

一、数据层优化:构建高质量检索基础 (一)动态语义分块技术 传统固定长度分块易切断完整语义,采用基于相似度的动态分块策略可显著提升上下文连贯性。通过LangChain的SemanticChunker实现语义边界检测,当相邻文本相似度低于0.4时自动切分,避免将“设备型号-参数-操作步骤…

Nginx网站服务:从入门到LNMP架构实战

🏡作者主页:点击! Nginx-从零开始的服务器之旅专栏:点击! 🐧Linux高级管理防护和群集专栏:点击! ⏰️创作时间:2025年5月30日14点22分 前言 说起Web服务器&#xff0c…

早发现=早安心!超导心磁图如何捕捉早期病变信号?

随着生活节奏的加快,心血管疾病已成为威胁人们健康的“隐形杀手”。据国家心血管病中心发布的《中国心血管健康与疾病报告2022》显示,我国心血管病现患者人数已高达3.3亿,每5例死亡中就有2例死于心血管病。这一数据触目惊心,提醒我…

AI感知与行动:考拉悠然发布空间智能世界模型,让AI走进物理世界

本文转自:《封面新闻》 5月,2025福布斯中国人工智能科技企业TOP50评选结果发布,成都考拉悠然科技有限公司成功入选,成为榜单中唯一专注“空间智能”的企业。 ,时长02:55 而在近日,考拉悠然发布了面向空间…

Arduino学习-跑马灯

1、效果 2、代码 /**** 2025-5-30 跑马灯的小程序 */ //时间间隔 int intervaltime200; //初始化函数 void setup() {// put your setup code here, to run once://设置第3-第7个引脚为输出模式for(int i3;i<8;i){pinMode(i,OUTPUT);} }//循环执行 void loop() {// put you…

CAD多边形密堆积2D插件

插件介绍 CAD多边形密堆积2D插件可在AutoCAD内建立模拟重力堆积状态的随机多边形颗粒及界面过渡区&#xff08;ITZ&#xff09;模型。 模型可分为多边形颗粒、界面过渡区&#xff08;ITZ&#xff09;、长方形试件三部分&#xff0c;各部分在CAD内分图层绘制&#xff0c;可批…