[Programmation] Collecte de données d'un oscilloscope
Répondre à la discussion
Affichage des résultats 1 à 18 sur 18

Collecte de données d'un oscilloscope



  1. #1
    Toxounet

    Collecte de données d'un oscilloscope


    ------

    Bonjour,

    J'ai un projet qui consiste à relever les courbes affichées et les données relevées de l'oscilloscope. L'oscilloscope en question est un Tektronix TDS 3052. J'ai trois capteurs qui délivrent donc un tas de données à l’oscilloscope et je dois faire un programme pour relever ces données et les afficher sur une interface graphique. Je n'en suis qu'au début et en appelle a vos avis quant au langage que je devrais utiliser et surtout à vos idées quant à récupérer les données de l'oscillo et à les incorporer dans mon programme.
    J'avais premièrement pensé à utiliser l'outil d'acquisition de données de Regressi mais cela reste un flou dans mon esprit sur la manière de faire. C'est la première fois que je dois programmer un code qui inclut une acquisition de données.

    Merci pour vos idées!
    Antoine

    -----

  2. #2
    jiherve

    Re : Collecte de données d'un oscilloscope

    Bonjour et bienvenue,
    d'abord lire le manuel utilisateur de l'oscilloscope ensuite voir si ce type de logiciel n'existe déjà pas tout fait chez Tektro ou National Instrument mais pour finir la question est bien trop vague et/ou vaste.
    JR
    l'électronique c'est pas du vaudou!

  3. #3
    Toxounet

    Re : Collecte de données d'un oscilloscope

    Je suis en train de lire le manuel en ce moment, cela prend pas mal de temps à lire
    L'objectif est justement de ne pas utiliser un logiciel déjà fait mais de tout faire de A à Z.
    En gros, la question est: Comment avoir acces aux données fournies par l'oscillo pour ensuite les utiliser dans un programme en C par exemple ? Et secondement comment les exploiter pour que sur mon interface graphique, je puisse les convertir pour avoir de jolies courbes?

    Merci de ta réponse
    Antoine

  4. #4
    penthode

    Re : Collecte de données d'un oscilloscope

    quel est ton niveau d'études ?

    tu comptes faire mieux que les ingés de tektro qui ont tout une culture d'entreprise depuis des années ?
    [b]le bon sens est un fardeau, car il faut s'entendre avec ceux qui ne l'ont pas [/b]

  5. A voir en vidéo sur Futura
  6. #5
    Antoane
    Responsable technique

    Re : Collecte de données d'un oscilloscope

    Bonjour,

    Tu communiques avec l'instrument en usb? Gpib?
    Tu connais matlab? Labview? PYthon ?
    Ou bien tu veux absolument le faire en C ?
    Deux pattes c'est une diode, trois pattes c'est un transistor, quatre pattes c'est une vache.

  7. #6
    Toxounet

    Re : Collecte de données d'un oscilloscope

    Je suis en master, en stage de fin d'étude dans un labo.

    Je ne prétends pas du tout à faire mieux qu'un ingé de tektro qui ont tout une culture d'entreprise depuis des années, non du tout. Mon tuteur veut 'un programme codé par mes petites mains qui n'utilise aucun logiciel extérieur déjà fait. Mon sujet est tel qu'il est.

  8. #7
    Toxounet

    Re : Collecte de données d'un oscilloscope

    Bonjour Antoane,

    Je communique effectivement en USB.
    Niveau langage, je connais le C, le C++, python, matlab, labview, pascal... Le C n'est pas obligatoire, je suis libre de ce point de vue là

  9. #8
    naru2to

    Re : Collecte de données d'un oscilloscope

    [EDIT] Vous avez été plus rapides que moi pour répondre à propos de Matlab, LabView et Python!
    Dernière modification par naru2to ; 09/04/2018 à 12h47.

  10. #9
    micka_ch

    Re : Collecte de données d'un oscilloscope

    Bonjour,

    Il faut regardé du coté de "TEKVISA CONNECTIVITY SOFTWARE" :
    TekVISA offers the following features and benefits:
    Improves ease of use for end users by providing a consistent methodology for using instrument drivers from a variety of vendors
     Provides language interface libraries for programmers using multiple Application Development Environments as shown in Figure 1--1, including:
     Microsoft C/C++
     Microsoft Visual Basic
     LabVIEW graphics software using the G language
     MATLAB analysis software
     Provides an Instrument Manager utility for setting up and searching
    additional VISA resources
     Provides debugging utilities such as TalkerListener and CallMonitor
     Allows software installation on any number of PCs
    Salutations

  11. #10
    Antoane
    Responsable technique

    Re : Collecte de données d'un oscilloscope

    Bonjour,

    C'est dans ce cas assez trivial :
    I faut réussir a dialoguer avec l'instrument, ce qui se fait bien, par exemple avec visa. Il faut installer sur le pc tekVISA, niVISA, keysightVISA... Ou autre.
    Tu peux ensuite envoyer des commandes scpi a l'instrument (cf le programmer guide de l'oscillo).

    Il esr aussi possible de télécharger un driver adapté (e.g sur le site de tektro ou sur le site de matworks) pour simplifier le dialogue avec l'instrument. Tu maitrises moins ce qui se passe au niveau des échanges, mais cela simplifie la gestion d l'ensemble.
    Deux pattes c'est une diode, trois pattes c'est un transistor, quatre pattes c'est une vache.

  12. #11
    Toxounet

    Re : Collecte de données d'un oscilloscope

    D'accord, je vais faire mes petites recherches sur tekVisa et autres alors.
    Merci du coup de main

  13. #12
    lpt1com2

    Re : Collecte de données d'un oscilloscope

    Une solution que j’ai utilisée consistait à récupérer le tableau de données (par GPIB dans mon cas), et de l’exporter dans Excel. Ça a concerné un oscilloscope et un analyseur de spectre mais ça ne date pas d'hier!
    C’est facile et simple du point de vue programmation.
    Il vaut mieux être le deuxième mari d'une veuve, que le premier

  14. #13
    Toxounet

    Re : Collecte de données d'un oscilloscope

    lpt1com2, bonjour,

    Dans mon cas j'ai un oscillo qui prends deux mesures et un capteur de température qui capte lui aussi une mesure, le but du jeu et d'avoir à la fin une interface graphique avec les trois courbes sur le meme graphe et possibilité d'avoir accès aux données. Je vais voir si je peux connecter mon pc en GPIB demain (salle de manip fermée à cette heure).
    Du point de vue de ta programmation, tu avais utilisé quel langage ?

  15. #14
    DAUDET78

    Re : Collecte de données d'un oscilloscope

    Citation Envoyé par Toxounet Voir le message
    Je vais voir si je peux connecter mon pc en GPIB demain
    C'est complétement obsolète le GPIB ! lpt1com2 t'a donné un exemple de qu'il avait fait il y a un quart de siècle .
    J'aime pas le Grec

  16. #15
    lpt1com2

    Re : Collecte de données d'un oscilloscope

    C'est sûr que le GPIB n'est plus guère utilisé de nos jours!
    J’avais utilisé Delphi (version 7 à l’époque). C’est du Pascal. L’avantage, c’est qu’il est très bien documenté sur le web concernant, entre autres, les commandes pour Excel (ça ressemble à du VBA). Sinon, le langage dédié pour l’instrumentation est notoirement Labview, mais il faut aimer la programmation graphique...
    Il vaut mieux être le deuxième mari d'une veuve, que le premier

  17. #16
    Antoane
    Responsable technique

    Re : Collecte de données d'un oscilloscope

    L'usb est bien plus rapide que le gpib ; lorsqu'il faut transmettre des fichiers de quelques centaines de kOctets, voire de Goctets, c'est bien plus pratique.

    C'est petit être du aux instruments que j'ai utilisé mais, d'expérience, l'usb est plus tolérant aux erreurs de comandes
    Deux pattes c'est une diode, trois pattes c'est un transistor, quatre pattes c'est une vache.

  18. #17
    naru2to

    Re : Collecte de données d'un oscilloscope

    C'est petit être du aux instruments que j'ai utilisé mais, d'expérience, l'usb est plus tolérant aux erreurs de comandes
    Je pense que c'est les appareils qui sont plus tolérants

  19. #18
    Antoane
    Responsable technique

    Re : Collecte de données d'un oscilloscope

    Bonsoir,

    Quelques exemples de code Matlab, à tester une fois que tu auras installé VISA :

    Pour trouver l'adresse USB de l'instrument connecté au PC et lui poser une question simple :
    Code:
    resourceStruct = instrhwinfo('visa','ni'); % find all connected instruments using ni-VISA
    str = ['osc = ', resourceStruct.ObjectConstructorName{1}] ; 
    % osc = visa('ni','USB0::0x0957::0x1309::MY49305468::INSTR') % str should look like this 
    eval(str); % buil the instrument
    fopen(osc); % open the instrument
    osc_Id = query(osc, '*IDN?') % ask smth to the oscilloscope
    fclose(osc) % close the instrument
    Récupérer les données sur un channel de l'oscillo :
    Code:
    function [t, V] = wotanMDO4k(nChannel)
    % [t, V] = wotanMDO4k(nChannel)
    %
    % 
    % You may for instance call:
    %       [t, V] = wotanMDO4k('CH1')
    % so as to read the voltage applied to channel_1. 
    %
    % ypa, 08/03/2018
    
    %% Argin
    oscId = 'USB0::0x0699::0x0451::C011642::INSTR' ; % instrument's adress
    osc=visa('ni',oscId);
    
    %%
    try
        osc.Timeout=2 ;
        osc.InputBufferSize=1e7 ;  % one byte per sample 
        
        fopen(osc)
        
        fprintf(osc, [':DATa:SOUrce ', nChannel])
        nPts=str2num(strtrim(query(osc, 'HORIZONTAL:RECORDLENGTH?'))) ;
        fprintf(osc, ':DATa:START 1')
        fprintf(osc, [':DATa:STOP ', num2str(nPts)])
        fprintf(osc, ':WFMOutpre:BYT_Nr 1')
        fprintf(osc, ':HEADer 0')
        % a=query(osc, ':WFMOutpre?')
        fprintf(osc, ':WFMOutpre:ENCdg ASCii')
        
        % qusai-binary data
        b=query(osc, ':curve?') ;
        b1 = str2num(strtrim(b) );
        length(b1)
        
        dt = str2num(strtrim(query(osc, ':WFMOUTPRE:XINCR?'))) ;
        
        % vertical stuff
        offset = str2num(strtrim(query(osc, [nChannel,':offset?']))) ;
        positionDiv = strtrim(query(osc, [nChannel, ':position?'])) ;
        % positionDiv = str2num(positionDiv(14:end))
        positionDiv = str2num(positionDiv) ;
        
        % is inverted ?
        isInv = strtrim(query(osc, [nChannel, ':invert?'])) ;
        isInv = str2num(isInv(end)) ;
        
        % vertical stuuf
        VDiv = strtrim(query(osc, [nChannel, ':scale?'])) ;
        % VDiv = str2num(VDiv(11:end)) ;
        VDiv = str2num(VDiv) ;
        qV = VDiv * 10/256 ; % quantization step
        
        % final scalling
        V = (1-2*isInv) * (qV * b1 - VDiv*positionDiv - offset) ;
        t = (0:length(V)-1)*dt ;
        
        try, fclose(osc); end
        
        figure, plot(t, V)
        
    catch Err
        warning(['An error was caught: "', Err.identifier])
    end
    C'est prévu pour un oscillo de la série MDO4k, il faudra éventuellement, marginalement, adapter le code pour ton instrument.
    J'ai modifié le code pour qu'il soit utilisable en l'état, il se peu que des coquilles s'y soient introduites.
    Il est possible que le code ne soit pas entièrement de moi.
    Dernière modification par Antoane ; 09/04/2018 à 20h48.
    Deux pattes c'est une diode, trois pattes c'est un transistor, quatre pattes c'est une vache.

Discussions similaires

  1. Collecte et traitement des donnees issues d'un anemometre
    Par homer01 dans le forum Électronique
    Réponses: 9
    Dernier message: 07/11/2014, 10h46
  2. Acquisition données/courbes oscilloscope RS232
    Par djavos dans le forum Électronique
    Réponses: 20
    Dernier message: 14/12/2009, 18h50
  3. collecte d'information par usb
    Par adriano21 dans le forum Électronique
    Réponses: 2
    Dernier message: 02/12/2008, 11h47
  4. Collecte des urines des 24h
    Par inviteed4b3f7a dans le forum Santé et médecine générale
    Réponses: 3
    Dernier message: 03/01/2008, 13h10
Découvrez nos comparatifs produits sur l'informatique et les technologies.