design filter to implement in microcontroller
4 次查看(过去 30 天)
显示 更早的评论
Hello :)
I want to design a filter that attenuate some frequencies and has minimun delay to the signal.
I'm building quacoopter controller, and I want to design a IIR or FIR filter to implement later in C code in the microcontroller.
is there some exaple or explanation on how could i desgin the filter and implement it in C code?
Thank you very much!
0 个评论
采纳的回答
Star Strider
2022-10-17
An IIR filter would be more efficient, and an elliptic filter the most efficient of those. The designfilt function may be the easiest way to create the filter you want, however it outputs a digitalFilter object that is a second-order-section implementation of the filter, not a transfer function, so it would then require the sos2tf function.
Since you want a transfer function, another way to design the filter using command-line functions would be something like this —
Fs = 1000; % Sampling Frequency (Hz)
Fn = Fs/2; % Nyquist Frequency (Hz)
Wp = 100/Fn; % Passband Frequency (Normalised)
Ws = 110/Fn; % Stopband Frequency (Normalised)
Rp = 1; % Passband Ripple (Attenuation)
Rs = 60; % Stopband Ripple (Attenuation)
[n,Wn] = ellipord(Wp,Ws,Rp,Rs); % Calculate Optimal Filter Order
[b,a] = ellip(n,Rp,Rs,Wp,'low') % Transfer Function
figure
freqz(b,a, 2^16, Fs) % Filter Bode Plot
Explore the available options to design the filter you want.
.
4 个评论
Star Strider
2022-10-17
As always, my pleasure!
Congratulations!
If you believe it would be appropriate to share your results, please post them (or a link to them).
更多回答(1 个)
Jan
2022-10-16
You find C code implementation of filter() here: https://www.mathworks.com/matlabcentral/fileexchange/32261-filterm
As M code: https://www.mathworks.com/matlabcentral/answers/9900-use-filter-constants-to-hard-code-filter#comment_2203200 , which can be converted to C easily also.
Do you want to rewrite the tool to design of the filter parameters also?
2 个评论
Jan
2022-10-17
Then you have to insert the code to obtain the next value into the loop for filtering.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Digital Filter Design 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!