[Numérique] Acquisition et traitement de donnée .csv via scilab
Répondre à la discussion
Affichage des résultats 1 à 3 sur 3

Acquisition et traitement de donnée .csv via scilab



  1. #1
    invitef38fc8a4

    Acquisition et traitement de donnée .csv via scilab


    ------

    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 :
    Code:
    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)
    En espérant avoir détaillé mon problème assez clairement
    Merci et A+

    -----
    Dernière modification par Antoane ; 22/07/2020 à 16h43. Motif: Ajout balises codes

  2. #2
    Vincent PETIT
    Animateur Électronique

    Re : Acquisition et traitement de donnée .csv via scilab

    Salut,
    Pourquoi ne fais tu pas une FFT du signal reçu afin de connaître le contenue spectrale pour trouver la fréquence d'intérêt ? Ensuite tu pourras encadrer cette fréquence par un filtre passe bande ce qui réduira la puissance spectrale du bruit donc améliorera le SNB.
    Là où il n'y a pas de solution, il n'y a pas de problème.

  3. #3
    micka_ch

    Re : Acquisition et traitement de donnée .csv via scilab

    Bonjour,

    Je suis d'accord avec vincent petit, une FFT te servira de base le design de ton filtre.

    Pour filtrer un signal dans un environnement de calcul numérique (scilab, matlab, octave, SciPy) on dois d’abord transformer la fonction de transfert continue H(s) en fonction de transfert discrète H(z).

    Ensuite on récupère les coefficients an et bn du filtre et on utilise la fonction "filter" appliquer le filtre au signal.

    Voici un exemple fait avec octave :

    Code:
    % Données de base
    f0=1000;
    Fs = 50*f0;
    Ts=1/Fs;
    
    % Génération des signaux
    t=0:Ts:10/f0;
    N = length(t);
    s = sin(2*pi*t*f0);
    n = 2*rand(1,N)-1;
    sn = s+n;
    
    % Visualisation
    subplot(3,1,1)
    plot(t,s)
    grid on
    xlabel('t')
    ylabel('s')
    
    subplot(3,1,2)
    plot(t,sn)
    grid on
    xlabel('t')
    ylabel('s+n')
    
    % Filtre passe bande          1/(w0*Q)
    %                   H(s)= ----------------
    %                         (1+s/w0Q+s^2/w0)
    Q=2;
    w0=2*pi*f0;
    H=tf(1/(w0*Q),[1/w0^2 1/(w0*Q) 1]);
    
    Hz=c2d(H,Ts);
    [b,a]=tfdata(Hz,'v');
    y = filter(b,a,sn);
    
    subplot(3,1,3)
    plot(t,sout)
    grid on
    xlabel('t')
    ylabel('s+n filtré')
    Voilà ce que ça donne :
    Nom : untitled.png
Affichages : 343
Taille : 119,6 Ko

    Salutations

Discussions similaires

  1. Acquisition de donnée
    Par invite91285cca dans le forum Électronique
    Réponses: 15
    Dernier message: 03/03/2015, 18h02
  2. Acquisition d'une donnée binaire sur le port série
    Par invite36b20ad7 dans le forum Programmation et langages, Algorithmique
    Réponses: 1
    Dernier message: 22/10/2014, 20h18
  3. INTERFACE: acquisition donnée (type caractére) USB sous Labview
    Par invite5458c417 dans le forum Électronique
    Réponses: 0
    Dernier message: 05/07/2012, 18h33
  4. Pont de résistance, acquisition de donnée
    Par invitedc661e35 dans le forum Électronique
    Réponses: 9
    Dernier message: 09/04/2009, 08h17
  5. Choix carte d'acquisition de donnée
    Par invitee8d92556 dans le forum Électronique
    Réponses: 0
    Dernier message: 27/04/2005, 10h08
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...