How to filter my ADC output ?

4 Ansichten (letzte 30 Tage)
bianchi
bianchi am 2 Sep. 2019
Bearbeitet: bianchi am 2 Sep. 2019
Dear Members,
I got a filter coefficient from matlab :
/* General type conversion for MATLAB generated C-code */
#include "tmwtypes.h"
/*
* Expected path to tmwtypes.h
* C:\Program Files\MATLAB\R2018b\extern\include\tmwtypes.h
*/
const int BL = 252;
const real64_T B[252] = {
6.509489485376e-06,8.270468373576e-06,7.064827126383e-06,2.035036566381e-06,
-6.199144943968e-06,-1.530430577156e-05,-2.170369436731e-05,-2.174427733836e-05,
-1.324304616624e-05,3.149084058685e-06,2.339035331051e-05,4.073809420116e-05,
4.771598033019e-05, 3.88749823869e-05,1.343292994109e-05,-2.328007613973e-05,
-6.040768693408e-05,-8.440733005252e-05,-8.353908676759e-05,-5.263877917656e-05,
3.573508475597e-06,7.018851252303e-05,0.0001255118884919, 0.000147627918814,
0.0001222953867957,4.952226525078e-05,-5.382154786297e-05,-0.0001570052393388,
-0.0002239403811517,-0.0002250586264019,-0.000148863525125,-8.971673748049e-06,
0.0001565921278752,0.0002948202746476,0.0003538868289885,0.0003013760703547,
0.0001384716510019,-9.546804025625e-05,-0.0003309454428265,-0.0004879684402625,
-0.0005020986841372,-0.000348744552471,-5.704216636268e-05,0.0002928736706498,
0.0005904665632932,0.0007285044131239,0.0006399792716264, 0.000325987210871,
-0.0001361070302262,-0.0006094448304161, -0.00093670421378,-0.0009907704066022,
-0.0007211998800203,-0.0001802110032807,0.0004829797264755, 0.001061180750259,
0.001352190579092, 0.001227129264082,0.0006816976957453,-0.0001487550665314,
-0.0010193333099,-0.001645588235867,-0.001794153121802,-0.001365824774668,
-0.0004425130028242,0.0007213421897964, 0.001765671644857, 0.002333570437864,
0.002189935617387, 0.001311451978109,-8.479801395671e-05,-0.001589583874628,
-0.002718070358089,-0.003062598285136,-0.002434585940507,-0.0009475929608268,
0.0009914380896389, 0.002788470577278, 0.00384022894245, 0.00373166167708,
0.002389832564894,0.0001396368407159,-0.002365947536661,-0.004329634042112,
-0.005057755292929,-0.004196967869377,-0.001881265667525, 0.001266880368926,
0.004294843744221, 0.006200435613341, 0.006254439807294, 0.00426393327023,
0.0006854015379761,-0.003462805399825, -0.00687871151427,-0.008373150891941,
-0.007267200985151,-0.003662419169445, 0.001515171799773, 0.006732980928894,
0.01028679430541, 0.01083449837216, 0.007867746323399, 0.001965125316513,
-0.005275587183862, -0.01163742062178, -0.01492483266663, -0.01366929215605,
-0.007686544451677, 0.001703476697994, 0.01189919209156, 0.01966422424027,
0.02205153049026, 0.01736115274647, 0.005854450632269, -0.01000807742441,
-0.0259235455839, -0.03665900395193, -0.03732268145457, -0.02468377261547,
0.001805107035604, 0.03957199855514, 0.08322774168024, 0.1255731326557,
0.159094765642, 0.1776005452962, 0.1776005452962, 0.159094765642,
0.1255731326557, 0.08322774168024, 0.03957199855514, 0.001805107035604,
-0.02468377261547, -0.03732268145457, -0.03665900395193, -0.0259235455839,
-0.01000807742441, 0.005854450632269, 0.01736115274647, 0.02205153049026,
0.01966422424027, 0.01189919209156, 0.001703476697994,-0.007686544451677,
-0.01366929215605, -0.01492483266663, -0.01163742062178,-0.005275587183862,
0.001965125316513, 0.007867746323399, 0.01083449837216, 0.01028679430541,
0.006732980928894, 0.001515171799773,-0.003662419169445,-0.007267200985151,
-0.008373150891941, -0.00687871151427,-0.003462805399825,0.0006854015379761,
0.00426393327023, 0.006254439807294, 0.006200435613341, 0.004294843744221,
0.001266880368926,-0.001881265667525,-0.004196967869377,-0.005057755292929,
-0.004329634042112,-0.002365947536661,0.0001396368407159, 0.002389832564894,
0.00373166167708, 0.00384022894245, 0.002788470577278,0.0009914380896389,
-0.0009475929608268,-0.002434585940507,-0.003062598285136,-0.002718070358089,
-0.001589583874628,-8.479801395671e-05, 0.001311451978109, 0.002189935617387,
0.002333570437864, 0.001765671644857,0.0007213421897964,-0.0004425130028242,
-0.001365824774668,-0.001794153121802,-0.001645588235867, -0.0010193333099,
-0.0001487550665314,0.0006816976957453, 0.001227129264082, 0.001352190579092,
0.001061180750259,0.0004829797264755,-0.0001802110032807,-0.0007211998800203,
-0.0009907704066022, -0.00093670421378,-0.0006094448304161,-0.0001361070302262,
0.000325987210871,0.0006399792716264,0.0007285044131239,0.0005904665632932,
0.0002928736706498,-5.704216636268e-05,-0.000348744552471,-0.0005020986841372,
-0.0004879684402625,-0.0003309454428265,-9.546804025625e-05,0.0001384716510019,
0.0003013760703547,0.0003538868289885,0.0002948202746476,0.0001565921278752,
-8.971673748049e-06,-0.000148863525125,-0.0002250586264019,-0.0002239403811517,
-0.0001570052393388,-5.382154786297e-05,4.952226525078e-05,0.0001222953867957,
0.000147627918814,0.0001255118884919,7.018851252303e-05,3.573508475597e-06,
-5.263877917656e-05,-8.353908676759e-05,-8.440733005252e-05,-6.040768693408e-05,
-2.328007613973e-05,1.343292994109e-05, 3.88749823869e-05,4.771598033019e-05,
4.073809420116e-05,2.339035331051e-05,3.149084058685e-06,-1.324304616624e-05,
-2.174427733836e-05,-2.170369436731e-05,-1.530430577156e-05,-6.199144943968e-06,
2.035036566381e-06,7.064827126383e-06,8.270468373576e-06,6.509489485376e-06
};
I use STM32
HAL_ADC_Start_DMA (&hadc, (uint32_t *) adc_buf, 4); // data to be converted = 4
HAL_Delay(10);
printf("ADC value 3 %u \r\n",adc_val[3]);
.
.
.
I want to filter adc_val[3] ...
How can I attach it to my ADC result ? and then print the result out to compare ?
Thanks

Antworten (1)

bianchi
bianchi am 2 Sep. 2019
Bearbeitet: bianchi am 2 Sep. 2019
Is it possible that I do :
for(int i=0;i<BL;i++)
{
y =y + x[i]*B[BL-i];
}
for(int i=0;i<BL-1;i++)
{
x[i] = x[i+1];
}
x[251]=Vdd[3];
printf("Filtered value %u",(int)y);

Kategorien

Mehr zu MATLAB finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by