In [ ]:
%matplotlib inline
from matplotlib import pyplot as plt
import numpy as np
import time
import visa
In [ ]:
rm = visa.ResourceManager()
In [ ]:
rm.list_resources()
In [ ]:
osci = rm.open_resource('USB0::0x1AB1::0x0588::DS1K00005888::INSTR')
osci.query('*IDN?')
In [ ]:
# Cambia a modo RAW (lee todo los puntos)
osci.write(':WAV:POIN:MODE RAW')
# Frena la adquisicion
osci.write(':STOP')
In [ ]:
# Si vas a repetir la adquisicion muchas veces sin cambiar la escala
# es util definir una funcion que mida y haga las cuentas
def medir(inst):
# Escala de voltaje
voltscale = float(inst.query(":CHAN1:SCAL?"))
# Offset de voltaje
voltoffset = float(inst.query(":CHAN1:OFFS?"))
# Escala de tiempo
timescale = float(inst.query(":TIM:SCAL?"))
# Offset de tiempo
timeoffset = float(inst.query(":TIM:OFFS?"))
# Adquiere los datos del canal 1 y los devuelve en un array de numpy
data = inst.query_binary_values(':WAV:DATA? CHAN1', datatype='B', container=np.array)
#Divisiones de tiempo
divisions = 12 * 6
tiempo = timeoffset + np.linspace(-timescale * divisions / 2 , timescale * divisions /2, num=len(data))
# Convierte los datos de Unidades digitales a Volts
data = (125 - data) * voltscale / 25 - voltoffset
return tiempo, data
In [ ]:
N = 100
for n in range(N): #Tomo N mediciones cada 1s
tiempo, data = medir(osci) #mido
plt.figure()
plt.plot(tiempo, data);
plt.xlabel('Tiempo [s]');
plt.ylabel('Voltaje [V]');
time.sleep(1) #Espero 1s
In [ ]:
osci.close()