Table des matières PDF

Enregistrement d'un signal

1. Dispositif expérimental

Dans cet exemple, un capteur de force est placé sur la voie EA0 de la centrale SysamSP5. Un pendule à deux masses et trois ressorts est suspendu au capteur de force. Il s'agit d'enregistrer le signal fourni par le capteur de force au cours de l'oscillation du pendule.

2. Acquisition

On commence par importer tous les modules nécessaires :

import pycan.main as pycan
import pylab
import numpy
import numpy.fft
import math
            

On ouvre l'interface avec la centrale Sysam SP5 et on configure l'entrée 0 (EA0) avec une tension maximale de 5 V :

sys = pycan.Sysam("SP5")
sys.config_entrees([0],[5])
            

Choix de la période d'échantillonnage et du nombre d'échantillons :

te=0.01
fe=1/te
ne=10000 
duree=ne*te
sys.config_echantillon(te*10**6,ne)
            

Le pendule est lancé puis on lance l'acquisition :

sys.acquerir() 
            

Enfin on récupère les temps et les tensions puis on ferme l'interface :

t=sys.temps()
u=sys.entrees()
sys.fermer()
            

3. Tracé du signal

Les temps et les tensions de la première voie (la seule dans le cas présent) :

u1=u[0]
t1=t[0]
            

Les données doivent être enregistrées dans un fichier texte afin de la traiter ultérieurement :

numpy.savetxt('pendule-4.txt',[t1,u1])
            

La lecture du fichier se fait de la manière suivante :

[t1,u1] = numpy.loadtxt('pendule-4.txt')
            

On trace le signal :

numpy.savetxt('pendule-4.txt',[t1,u1])
p1=pylab.plot(t1,u1)
pylab.axis([0.0,10.0,0.0,5.0])
pylab.grid()
pylab.xlabel("t (s)")
pylab.ylabel("u (V)")
            
Tension en fonction du temps

4. Analyse spectrale

Transformée de Fourier discrète des tensions et spectre:

tfd1=numpy.fft.fft(u1)
spectre1=numpy.absolute(tfd1)
            

Calcul des fréquences :

f1=range(ne)
for k in range(ne):
    f1[k] = 1.0*k/duree
            

Tracé du spectre :

pylab.figure()
pylab.plot(f1,spectre1)
pylab.axis([0,20,0,numpy.amax(spectre1)])
pylab.grid()
pylab.xlabel("f (Hz)")
pylab.ylabel("A")
            
Spectre
Creative Commons LicenseTextes et figures sont mis à disposition sous contrat Creative Commons.