一阶低通数字滤波

article/2025/10/19 6:56:10

一阶低通滤波算法:

3、 一阶低通滤波优缺点

一阶低通滤波数学意义:一阶低通滤波法采用本次采样值与上次滤波输出值进行加权,得到有效滤波值,使得输出对输入有反馈作用。

优缺点:滤波系数越小,滤波结果越平稳,但灵敏度越低,滤波系数越大,灵敏度越高,但滤波结果越不稳定。相位滞后,灵敏度低,滞后程度取决于a值大小;不能消除频率高于采样频率的1/2的干扰信号。

4、 C语言代码实现

/*low-pass filtering structure variables */

typedef struct

{

_iq In; /* Input: Reference input */

_iq Out; /* Output:PID output */

_iq Kflt; /* Parameter:Integral gain */

} LPF1ST;

/*******************************************************************************

* Routine: LPF_1st_calc

* Purpose: first order filter

* 传递函数:Y(s)=X(s)*1/(1+Ts)

* 离散方程:Y(k) = (1-Kflt)*Y(k-1)+Kflt*X(k)

* 滤波系数: kflt = 1/(1+T/Delt_T)=1/(1+Sam_Fre*T)

* Delt_T:采样周期 Sam_Fre=1/Delt_T:采样频率 T:时间常数

******************************************************************************/

voidLPF_1st_calc(LPF1ST *p)

{

/* Low-pass filtering to the new measured signals(p->In) */

p->Out = (p->Out - _IQmpy(p->Out, p->Kflt)) + _IQmpy(p->In, p->Kflt);

}

/*******************************************************************************/

温度采样电路及代码实现

1、 用NTC热敏电阻做温度采集

凌阳科技有关于用NTC热敏电阻做温度采集的应用文档,包括NTC特性、采集电路说明、线性插值查表算法等均有详细描述,参见网络文档《用NTC热敏电阻做温度采集》。https://wenku.baidu.com/view/80cc56956f1aff00bfd51e29.html

2、 用PTC热敏电阻做温度采集

用PTC热敏电阻做温度采集与NTC方案类似,区别在于选用的PTC为正温度系数热敏电阻,NTC为负温度系数热敏电阻,故在制作温度-ADC对应表格和线性插值查表时有所区别,具体参见代码实现。

3、 温度采集C代码实现

Eg:NTC温度采集C代码实现

/* 温度-ADC数字量对应表,温度范围: -40...100℃ */

const int16 io_adc_inverter_temperature_table[] = {

3026,3021 ,3017 ,3012 ,3007 ,3002 ,2996 ,2991 ,2985 ,2978 ,2972 ,2965 ,2958 ,2951,2943 ,2935 ,2927 ,2919 ,2910 ,2901 ,2891 ,2881 ,2871 ,2861 ,2850 ,2838 ,2827,2815 ,2802 ,2790 ,2776 ,2763 ,2749 ,2734 ,2719 ,2704 ,2688 ,2672 ,2656 ,2639,2621 ,2604 ,2586 ,2567 ,2548 ,2529 ,2509 ,2489 ,2468 ,2448 ,2426 ,2405 ,2383,2360 ,2337 ,2314 ,2291 ,2267 ,2243 ,2219 ,2195 ,2170 ,2145 ,2120 ,2094 ,2069,2043 ,2017 ,1991 ,1964 ,1938 ,1911 ,1885 ,1858 ,1831 ,1804 ,1778 ,1751 ,1724,1698 ,1671 ,1644 ,1618 ,1591 ,1565 ,1539 ,1512 ,1486 ,1461 ,1435 ,1409 ,1384,1359 ,1334 ,1310 ,1285 ,1261 ,1237 ,1214 ,1190 ,1167 ,1145 ,1122 ,1101 ,1079,1058 ,1037 ,1016 ,996 ,976 ,956 ,937 ,918 ,899 ,881 ,862 ,845 ,827 ,810 ,793,776 ,760 ,744 ,729 ,713 ,698 ,684 ,669 ,655 ,641};

/*******************************************************************************/

#define INV_ADC_ARRAY_NUM (sizeof(io_adc_inverter_temperature_table)/sizeof(io_adc_inverter_temperature_table[0]))

#defineINV_TEMPER_REF -40

/*reference temperature at array index 0 */

/*******************************************************************************/

static int16io_adc_calc_inv_phase_temp(int16 adc_value)

{

int16 index;

index = search_inv_data(adc_value);

return inv_temp_calc(index, adc_value);

}

/*******************************************************************************/

static int16search_inv_data(Uint16 search_value) //ntc

{

Uint16 max = INV_ADC_ARRAY_NUM - 1;

Uint16 min = 0;

Uint16 mid;

while(min < max)

{

mid = (max + min) / 2;

if (search_value >io_adc_inverter_temperature_table[mid])

{

max = mid;

}

else if (search_value < io_adc_inverter_temperature_table[mid])

{

min = mid + 1;

}

else

{

return mid;

}

}

return min;

}

/**温度线性插值查表*****************************************************************/

static int16inv_temp_calc(int16 index, Uint16 adc_value)

{

if ((index < 0) || (index > INV_ADC_ARRAY_NUM -1))

{

return 0;

}

else

{

int16 temper;

temper = 10 *(adc_value -io_adc_inverter_temperature_table[index]); // enlarged for 10

temper /=(io_adc_inverter_temperature_table[index+1] -io_adc_inverter_temperature_table[index]); // (xn- x1)

temper += 10*(index + INV_TEMPER_REF);

temper /= 10;

return temper;

}

}

/*******************************************************************************/


http://chatgpt.dhexx.cn/article/72LV80lv.shtml

相关文章

MATLAB—FIR数字滤波器设计

目录&#xff1a; 1 FIR滤波器的原理2 FIR滤波器的特点2.1 相位特性2.1.1 偶对称2.1.2 奇对称 2.2 幅度特性 3 几种滤波器函数3.1 fir1()3.2 fir2()3.3 kaiserord()3.4 firpm() 4 仿真实例4.1 代码4.2 仿真分析 本文是基于MATLAB的数字滤波器设计&#xff0c;所有数据基于计算机…

窗函数法设计FIR中,如何选择窗函数和阶数N

在用窗函数法设计FIR滤波器时&#xff0c;给出了滤波器要求的具体指标&#xff0c;包括通带频率fp、阻带频率fs、通带波纹Rp和阻带衰减As等&#xff0c;有了这些指标后&#xff0c;是否什么窗函数都可以选择呢&#xff1f;答案是否定的。那么怎么选择窗函数呢&#xff1f;在本小…

一阶RC低通滤波器(二)

这篇文章补充下前面讲的一阶低通滤波器。在母线电压采样或是在电机的三相端电压采样时&#xff0c;往往是先分压&#xff0c;再经过RC低通滤波器。电路图如下&#xff1a; 1&#xff1a;先求输出和输入的关系&#xff08;Uao/Ua&#xff09; 从上式可以看出系统相当于一个典…

二阶有源滤波器设计

1引入 为什么要用有源二阶滤波器&#xff1f; (1)从有源来说 对于无源二阶低通滤波器&#xff1a; 其幅頻方程为&#xff1a; 我们从中可以看出其通带截止频率为 有其品质因子为0.372。 我们根据上图得到二阶无源低通滤波器的品质因子只有0.372&#xff0c;如果希望Q大于0.5…

滤波算法——均值滤波,中值滤波,一阶(αβ)滤波,卡尔曼滤波

滤波算法——均值滤波&#xff0c;中值滤波&#xff0c;一阶(αβ)滤波&#xff0c;卡尔曼滤波 因工作涉及到数据滤波(滤噪)处理&#xff0c;汇总了一些网上简单的滤波算法&#xff0c;方便日后查看。 滤波算法包括&#xff1a;均值滤波&#xff0c;中值滤波&#xff0c;一阶…

一阶滤波器

1. 一阶滤波算法的原理 一阶滤波&#xff0c;又叫一阶惯性滤波&#xff0c;或一阶低通滤波。是使用软件编程实现普通硬件RC低通滤波器的功能。 一阶低通滤波的算法公式为&#xff1a; Y(n)αX(n) (1-α)Y(n-1) 式中&#xff1a;α滤波系数&#xff1b;X(n)本次采样值&…

FIR数字滤波器设计

今天给大侠带来FIR数字滤波器设计&#xff0c;由于篇幅较长&#xff0c;分三篇。今天带来第三篇&#xff0c;FIR数字滤波器设计&#xff0c;包括窗函数法设计FIR滤波器、频率采样法设计FIR滤波器以及基于firls函数和remez函数的最优化方法设计FIR滤波器。话不多说&#xff0c;上…

一阶二阶数字滤波器笔记

数字滤波器 一阶数字滤波器时域分析频域分析数字化代码示例 二阶巴特沃斯低通滤波器S域和Z域的频率关系分析巴特沃斯滤波器举例说明代码示例 声明&#xff1a;感谢知乎大佬的文章&#xff0c;原文链接 数字滤波器实现方法是把滤波器所要完成的运算编成程序并让计算机执行,也就…

简单二阶滤波器截止频率的计算

最近刚好学习到这了&#xff0c;而我在网上查资料的时候却非常难找&#xff0c;不少资料讲解不够详细&#xff0c;所以经过我努力也为了为大家做点贡献的想法&#xff0c;以自己的见解写下这篇文章。废话不多说&#xff0c;先从一阶滤波器讲起。 一阶低通滤波器&#xff1a; …

如何确定插值滤波器的阶数

在信号处理中&#xff0c;滤波器的系数我们往往都是通过MATLAB来设计&#xff0c;只要我们知道滤波器的通带截止频率和阻带起始频率&#xff0c;就可以通过MATLAB中的fdatool&#xff08;在MATLAB2020中使用filterDesigner&#xff09;来设计滤波器了。 我们使用归一化的参数来…

标识符无效

表中存在该列&#xff0c;插入的时候却显示 标识符无效&#xff0c;使用dbsql插入报错&#xff0c;自己写入数据没有问题&#xff01; 查资料发现可能和列的大小写有关。这里强调sql一定用全大写来写避免不必要的麻烦&#xff01;但是我改过后发现并不是这个问题…… 问题已解…

ORA-00904 ID 标识符无效 解决方案

msg&#xff1a;"数据访问异常" dev&#xff1a;"ORA-00904&#xff1a;"ID"&#xff1a;标识符无效 ORA&#xff1a;即 Oracle 报错。 标识符无效是因为&#xff1a;SQL语句中&#xff0c;列名&#xff08;ID&#xff09;不在表中。解决方案&#x…

PLSQL ORA-00904 标识符无效

问题在于“COMPONET_ID” 是字符串&#xff0c;无法识别&#xff0c;如果不是字符串&#xff0c;就可以识别

Oracle标识符无效

Oracle在创建表的时候提示“ORA-00904&#xff1a;标识符无效” 原因为最后一行列定义多了一个逗号&#xff0c;去掉即可。

【Oracle相关】坑!使用oracle时,发生标识符无效解决办法

–真是个大坑 使用oracle时,发生标识符无效解决办法 一般出现该错误的原因&#xff1a; 1、列名写错导致 2、使用了关键字作为了列名 但是这次遇到的情况有点奇葩 通过dblink直接查询该表&#xff0c;并没有报出问题&#xff0c;但在存储过程中通过dblink访问就一直报标识符…

ORA-00904 标识符无效 解决方案

ORA&#xff1a;即Oracle报错。 标识符无效&#xff1a;SQL语句中&#xff0c;这个字段名不在表中。 解决方案&#xff1a;修改SQL语句中对应的字段或者修改表里面对应的列名。 在这里我想说一下&#xff0c;因为我用的是hibernate内部封装好的save方法&#xff0c;咱也不能去改…

HQL 标识符无效

这是报错 因为刚学HIbernate&#xff0c;很多小问题其实挺折磨人的 这是代码&#xff08;我根据网上搜索的答案还有自己的判断测试&#xff0c;感觉应该可能是字段没有" "的问题&#xff09; Configuration configuration new Configuration().configure();Session…

ORA-00904:标识符无效(太坑了!!)

ORA-00904:标识符无效 解决办法(Oracle字段名区分大小写的坑) 问题描述 我在使用jpa或者mybatis集成Oracle进行where查询的时候发现一直出现&#xff1a; java.sql.SQLSyntaxErrorException: ORA-00904: “USER0_”.“PWD”: 标识符无效 下面是问题代码&#xff1a; Testvoid…

Unity⭐️VideoPlayer

文章目录 &#x1f6a9; 解决安卓视频播放模糊 &#x1f6a9; 解决安卓视频播放模糊 1️⃣ 设置RawImage的size跟原视频一致 2️⃣ RawImage的抗锯齿Anti-Aliasing改为8 3️⃣ 勾选sRGB 4️⃣ 视频编码设为H264 大家还有什么问题&#xff0c;欢迎在下方留言&#xff01; 如…

ᑋᵉᑊᑊᵒ ᵕ̈ᰔᩚ

** ** 第一章 大数据概述 ** ** 1.大数据技术的产生 2.大数据的基本概念 什么是大数据&#xff1f; 定义&#xff1a;大数据是指无法在一定时间内用常规软件工具进行抓取&#xff0c;管理和处理的数据集合 经典案例&#xff1a; (1)啤酒与尿布 (2)谷歌与流感 大数据的范…