Bonjour,
Le projet sur lequel je travail en ce moment me pose une petite difficulté et j'aimerai résoudre le problème proprement. Je n'ai pas trouvé de réponse qui me plaît sur le web, et il faut savoir que le traitement de donnée n'est pas vraiment ma spécialité...
J'ai un signal analogique bien bruité comme il faut sur une carte électronique que je développe. Le signal est reçu à partir d'une antenne. Je veux filtrer tout le bruit, mais malheureusement je n'ai pas toutes les données pour concevoir un filtre directement (On ne connait pas exactement la fréquence du signal reçu.)
J'aimerais numériser le signal, puis tester pleins de filtre passe-bas Rauch différents (modifier fréquence de coupure, bande passante etc...) pour voir lequel me permet de récupérer le meilleur RSB possible. Le meilleur filtre numérique aura ensuite pour but d'être un filtre analogique car à l'avenir le signal récupéré sera interprété par un microcontrôleur.
Dans un premier temps, j'ai numérisé mon signal bruité et j'ai récupéré les données dans un fichier.csv. Grâce à scilab, j'ai vectorisé ces données.
Dans un second temps, j'ai écris un script scilab me permettant de faire le design d'un filtre passe-bas RAUCH avec n'importe quelles valeurs de composants.
Mes problèmes sont :
Pour le moment, mon filtre balaye toutes les fréquences et on regarde son comportement pour chaque fréquence. Or ce que je veux c'est mettre mon signal en entrée et voir à quoi ressemblerait mon signal en sortie du filtre. Est-ce possible et comment faire ?
Voila mon code :
En espérant avoir détaillé mon problème assez clairementCode:clear clc //----------------------------------------------------------------------------// // ACQUISITION FICHIER CSV // //----------------------------------------------------------------------------// // Create a file with some data separated with ;. filename1 = fullfile("\\Electronique\commun\Sauvegarde Maugan\Mémoire 2020\2 - Etude\Demodulation\FDX\Scilab\20200722-0003", "20200722-0003_01 - Copie.csv"); // read csv file M = csvRead(filename1,ascii(59), ',', 'double'); taille = size(M); vectTaille = 1:taille(1,1) disp("---------------M---------------") disp(M) disp("-------------Freq-------------") disp(M(vectTaille,1)) disp("-------------Gain-------------") disp(M(vectTaille,2)) disp("------------------------------") //----------------------------------------------------------------------------// // FILTRAGE // //----------------------------------------------------------------------------// R1 = 1930; R2 = 1430; R3 = 5500; C1 = 0.0000000091; //9.1nF C2 = 0.000000000730; //951pF f_min = 1; f_max = 10000000; f = [f_min:10:f_max] /* Rauch Filter */ jw=%s; num = -R3/R1; den = 1+jw*R2*R3*C2*(1/R1+1/R2+1/R3+jw*C1); A=num/den; /* Plot Bode Filter */ FT=syslin('c',A); xgrid(5); bode(FT,f)
Merci et A+
-----