当前位置: 首页 > article >正文

2_foc闭环调试_ADC电流采样与滤波及pid数据结构

8683360ff8b81a43d1d8f8c71598d5fb.png

1、ADC电流采样

上次添加了编码器获取电角度的程序,将之前开环控制的角度进行了替换,这次再将电流采样添加进来,之后就可以利用这样一个有反馈的系统进行电流环PI控制器参数调试。

       之前写过ADC+DMA电流采样的stm32库函数程序,现在来看还是有很大缺陷的:首先当电机没有转动时,ADC采样已经有了一个数值,即是一个偏置,需要后面将其减去,这块采回来的电流理论上是一个正弦波数值。另外需要将ADC采样值转换为对应单位的电流,公式是(ADC原始值-偏置)*3.3V参考电压/4096/R欧姆/放大倍数,这个还需要进一步验证。

2、  一阶低通滤波算法    

       FirstOrder_LPF_Calc 通常用于计算一阶低通滤波器(LPF)的输出,滤波器用于平滑输入信号,消除噪声,尤其是在控制系统中处理传感器信号时。一阶滤波,又叫一阶惯性滤波,或一阶低通滤波。是使用软件编程实现普通硬件RC低通滤波器的功能。

一阶低通滤波的算法公式为:

              Y(n)=αX(n) + (1-α)Y(n-1) 

  α 越大,滤波器的响应越快,能更快跟踪输入变化,但噪声抑制效果较差。

    α越小,响应越慢,能更好地滤除噪声,但可能会导致信号滞后。

应用:

FirstOrder_LPF_Calc 可广泛应用于传感器信号滤波、电流环和速度环的噪声抑制等场景。在FOC(磁场定向控制)中,滤波器用于平滑电流和速度反馈信号,避免过大的噪声干扰控制系统的稳定性。

总结:

  通过调节 α,可以灵活控制滤波器的响应速度和噪声抑制效果。

  滤波器能有效减小信号中的高频噪声,同时保持低频成分的完整性。

       一阶滤波无法完美地兼顾灵敏度和平稳度。有时,我们只能寻找一个平衡,在可接受的灵敏度范围内取得尽可能好的平稳度。而在一些场合,我们希望拥有这样一种接近理想状态的滤波算法。即:当数据快速变化时,滤波结果能及时跟进(灵敏度优先);当数据趋于稳定,在一个固定的点上下振荡时,滤波结果能趋于平稳(平稳度优先)。

3、 pid参数数据结构

typedef struct    
{ 
float  Ref;          // Input: Reference input
float  Fdb;          // Input: Feedback input
float  Err;          // Variable: Error
float  Kp;           // Parameter: Proportional gain
float  Up;           // Variable: Proportional output
float  Ui;           // Variable: Integral output
float  Ud;           // Variable: Derivative output      
float  OutPreSat;    // Variable: Pre-saturated output
float  OutMax;       // Parameter: Maximum output
float  OutMin;       // Parameter: Minimum output
float  Out;          // Output: PID output
float  SatErr;       // Variable: Saturated difference
float  Ki;           // Parameter: Integral gain
float  Kc;           // Parameter: Integral correction gain
float  Kd;           // Parameter: Derivative gain
float  Up1;          // History: Previous proportional output
float  Ui_1;
float  OutF;
} PIDREG_T;

       先混个面熟,之后挨个调。 

f049a38a4a874874cfe23c29a445a941.png


http://www.kler.cn/news/306859.html

相关文章:

  • python 检索与该查询最相似的句子 使用库hflayers和sentence_transformers来实现遇到的问题
  • libwebsockets之日志系统
  • 【C#】vs2022 .net8
  • Leetcode 165. 比较版本号(Medium)
  • 日用放大器
  • 监控binlog日志监控表变化进行消息通知
  • Gartner发布报告揭秘微软数据安全功能和许可
  • (CVPR-2022)感知优先的扩散模型训练
  • 基于51单片机的倒计时音乐播放系统设计
  • Android libui新加接口,编译报错:error: Please update ABI references
  • 鸿蒙开发之ArkTS 基础八 联合类型
  • 搭建Eureka高可用集群 - day03
  • 智能工厂的设计软件 “程序”的完整框架
  • JAVA学习笔记02-integer
  • 二叉树算法
  • 掌握单片机,其实并不难
  • LeetCode70:爬楼梯
  • 【算法】 滑动窗口—最长无重复子串
  • iPhone手机备忘录转移到Windows电脑上的方法
  • adb devices不显示连接设备怎么解决
  • AI+教育|拥抱AI智能科技,让课堂更生动高效
  • 直播相关03-录制麦克风声音, ffmpeg 命名,使用命令行完成录音
  • 速通汇编(五)认识段地址与偏移地址,CS、IP寄存器和jmp指令,DS寄存器
  • “MIME 媒体类型“用来标识网络传输内容的格式标准
  • [Python办公]常用Python数据采集爬虫技术对比
  • java开发中间件学习记录(持续更新中~)
  • OpenCV_图像旋转超详细讲解
  • 828华为云征文 | 使用Flexus云服务器X实例部署GLPI资产管理系统
  • 计算机网络通关学习(一)
  • jmeter 录制APP脚本