专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
msp430单片机中如何设计50Hz陷波器?
2019-03-24 09:37
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
TI MCU
16072
3
1214
msp430前面的ADC采样率大概是300KHz,采样后的数据进入430单片机进行数据处理,但要先滤去50Hz工频干扰,求参考代码
此帖出自
小平头技术问答
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
qiushenghua
1楼-- · 2019-03-24 16:05
木有参考代码,感觉你这是软件滤波的范畴,话说你都已经300k了,还在乎那点50Hz的干扰么?
加载中...
a828378
2楼-- · 2019-03-24 21:43
< :TI_MSP430_内容页_SA7 -->
#ifndef CNTL_2P2Z_F_H_
#define CNTL_2P2Z_F_H_
//*********** Structure Definition ********//
// Second order control law using an IIR filter structure with programmable output saturation.
// This macro uses CNTL_2P2Z_F structures to store coefficients & internal values.
// The structures should be initialized with the supplied CNTL_2P2Z_F_INIT macro.
// Within the structure the Max & Min parameters are the output bounds where as the IMin parameter
// is used for saturating the lower bound while keeping an internal history. The IMin parameter
// should not be lower than -0.9.
typedef struct {
// Coefficients
float32 Coeff_B2;
float32 Coeff_B1;
float32 Coeff_B0;
float32 Coeff_A2;
float32 Coeff_A1;
// Output saturation limits
float32 Max;
float32 IMin;
float32 Min;
} CNTL_2P2Z_F_COEFFS;
typedef struct {
float32 Out1;
float32 Out2;
// Internal values
float32 Errn;
float32 Errn1;
float32 Errn2;
// Inputs
float32 Ref;
float32 Fdbk;
// Output values
float32 Out;
} CNTL_2P2Z_F_VARS;
//*********** Macro Definition ***********//
#define CNTL_2P2Z_F_MACRO(v, k)
/* Calculate error */
k.Errn = k.Ref - k.Fdbk;
k.Out = (v.Coeff_A2*k.Out2) + (v.Coeff_A1 *k.Out1) + (v.Coeff_B2 *k.Errn2)
+ (v.Coeff_B1 * k.Errn1) + (v.Coeff_B0 * k.Errn);
/* Update error values */
k.Errn2 = k.Errn1;
k.Errn1 = k.Errn;
/* Determine new output */
k.Out = (k.Out < v.Max) ? k.Out : v.Max;
k.Out = (k.Out > v.IMin) ? k.Out : v.IMin;
/* Store outputs */
k.Out2 = k.Out1;
k.Out1 = k.Out;
/* Saturated output */
k.Out = ((k.Out > v.Min) ? k.Out : v.Min);
#endif /* CNTL_2P2Z_F_H_ */
复制代码
我用的代码是这样的,来自TI的control SUITE的Solar LIB。
用下面的宏定义函数就可以了。两个结构体一个放了波波器的值一个放滤波参数。用之前记得两个结构体都初始化一下。
然后滤波器参数用MATLAB的fdatool生成一下就可以了。楼主可以试试看。
加载中...
tanzhiying
3楼-- · 2019-03-25 01:50
精彩回答 2 元偷偷看……
加载中...
一周热门
更多
>
相关问题
相关文章
×
关闭
采纳回答
向帮助了您的网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
关闭
您已邀请
15
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
- #ifndef CNTL_2P2Z_F_H_
- #define CNTL_2P2Z_F_H_
- //*********** Structure Definition ********//
- // Second order control law using an IIR filter structure with programmable output saturation.
- // This macro uses CNTL_2P2Z_F structures to store coefficients & internal values.
- // The structures should be initialized with the supplied CNTL_2P2Z_F_INIT macro.
- // Within the structure the Max & Min parameters are the output bounds where as the IMin parameter
- // is used for saturating the lower bound while keeping an internal history. The IMin parameter
- // should not be lower than -0.9.
- typedef struct {
- // Coefficients
- float32 Coeff_B2;
- float32 Coeff_B1;
- float32 Coeff_B0;
- float32 Coeff_A2;
- float32 Coeff_A1;
- // Output saturation limits
- float32 Max;
- float32 IMin;
- float32 Min;
- } CNTL_2P2Z_F_COEFFS;
- typedef struct {
- float32 Out1;
- float32 Out2;
- // Internal values
- float32 Errn;
- float32 Errn1;
- float32 Errn2;
- // Inputs
- float32 Ref;
- float32 Fdbk;
- // Output values
- float32 Out;
- } CNTL_2P2Z_F_VARS;
- //*********** Macro Definition ***********//
- #define CNTL_2P2Z_F_MACRO(v, k)
- /* Calculate error */
- k.Errn = k.Ref - k.Fdbk;
- k.Out = (v.Coeff_A2*k.Out2) + (v.Coeff_A1 *k.Out1) + (v.Coeff_B2 *k.Errn2)
- + (v.Coeff_B1 * k.Errn1) + (v.Coeff_B0 * k.Errn);
- /* Update error values */
- k.Errn2 = k.Errn1;
- k.Errn1 = k.Errn;
- /* Determine new output */
- k.Out = (k.Out < v.Max) ? k.Out : v.Max;
- k.Out = (k.Out > v.IMin) ? k.Out : v.IMin;
- /* Store outputs */
- k.Out2 = k.Out1;
- k.Out1 = k.Out;
- /* Saturated output */
- k.Out = ((k.Out > v.Min) ? k.Out : v.Min);
- #endif /* CNTL_2P2Z_F_H_ */
复制代码我用的代码是这样的,来自TI的control SUITE的Solar LIB。用下面的宏定义函数就可以了。两个结构体一个放了波波器的值一个放滤波参数。用之前记得两个结构体都初始化一下。
然后滤波器参数用MATLAB的fdatool生成一下就可以了。楼主可以试试看。
一周热门 更多>