Tips Automation av Oscilloskop & Signalgenerator

mts
Inlägg: 223
Blev medlem: 30 april 2014, 20:20:18

Tips Automation av Oscilloskop & Signalgenerator

Inlägg av mts »

Hej,
Jag ska försöka automatisera mitt labb, Rigol DS1074z och Rigol DG1022A.

För att kunna:
1. Utföra tester snabbare, men också för att
2. Få ner inställningar i text, så jag kan repetera tester efter ett halvår (det kommer alltid sidoprojekt som får högre prioritet.)
3. Få ut samplingsdata för att kunna göra bättre FFT analyser.

Har någon gjort det här tidigare?
Vad har fungerat för dig? PyVISA? USBTMC?

Målet är att få igång det här på OSX med python. Jag har försökt med python-usbtmc under Linux, vilket känns som det snabbaste sättet, men då i VirtualBox, vilket inte har varit pålitligt. USB uppkopplingen har kommit och gått. Så nu tänkte jag se om PyVISA fungerar under OSX.
mts
Inlägg: 223
Blev medlem: 30 april 2014, 20:20:18

Re: Tips Automation av Oscilloskop & Signalgenerator

Inlägg av mts »

Litet framsteg! :tumupp:

Jag har lyckats få ut ett block av data!
Mitt oscilloscop är för nytt, det är inte så många som har tankat över data från ett ds1074z.
Jag antog att det var ds1000 program manual som skulle användas, men det är ds2000 som fungerar. Inte vad man väntar sig direkt.

Nu måste jag bara lista ut hur jag får ut rå data, mer än 1200. så det blir att gräva ner sig i PyVISA dokumentationen..

:roll:
H.O
Inlägg: 5914
Blev medlem: 19 mars 2007, 10:11:27
Ort: Ronneby

Re: Tips Automation av Oscilloskop & Signalgenerator

Inlägg av H.O »

Den nya DS1000Z-serien är nog mer likt DS2000 än det gammla DS1000 men menar du att DS1000Z programming guide inte är korrekt? För inte är det så att du försökt använda programmeringsmanualen till det gamla DS1000?

Det här är inget jag pysslat med personligen men om jag tittar i manualen ovan så verkar det som att när WAV:MODE=NORM så returneras data från display-minnet (max 1200 punkter). För att accessa sample-minnet måste man sätta WAV:MODE RAW och skopet måste vara i STOP-mode.
mts
Inlägg: 223
Blev medlem: 30 april 2014, 20:20:18

Re: Tips Automation av Oscilloskop & Signalgenerator

Inlägg av mts »

Tackar H.O.

Den manualen har jag missat.
Nu har jag testat att ta ut data och allt fungerar fint. :tumupp:
mts
Inlägg: 223
Blev medlem: 30 april 2014, 20:20:18

Re: Tips Automation av Oscilloskop & Signalgenerator

Inlägg av mts »

Jag stötte på ett bra exempel som plottar frekvens-svar med hjälp av signalgenerator och oscilloskop.

Jag tror att det här är samma kurva som en "Tracking generator" kan plotta på en frekvensanalysator.
Någon som vet?

http://www.eevblog.com/forum/projects/c ... nse-graph/
limpan4all
Inlägg: 8445
Blev medlem: 15 april 2006, 18:57:29
Ort: Typ Nyköping

Re: Tips Automation av Oscilloskop & Signalgenerator

Inlägg av limpan4all »

Ja det är det. Fast denna är bättre, då du har två ingångskanaler så kan du ha en yttre förstärkare och ta din referenssignal efter förstärkaren det kan du inte med en spektrumanalysator med tracking generator. Dvs det är dessutom ett vektoranalysinstrument också.
Jag har en sådan och den är skitbra på att mäta upp grejor upp till några 100kHz.
Så redan innan min spektrumanalysator har hunnit starta (9kHz till 1GHz) så har denna redan gjort jobbet.
Jag rekommenderar den varmt som enda instrument för nybörjare, eller som komplement till en redan för stor instrumentpark...
mts
Inlägg: 223
Blev medlem: 30 april 2014, 20:20:18

Re: Tips Automation av Oscilloskop & Signalgenerator

Inlägg av mts »

@limpan4all Det låter ju helt underbart.

Jag har lyckats scripta mitt oscilloskop nu,
det här blev resultatet med en 1000KHz fyrkantsvåg.

Jag behöver få kläm på hur jag ska plotta log-skalan på frekvens plotten också (nr2).
Det blev väldigt mycket kod. Det borde finnas något som gör allt det här automatiskt i numpy, eller? :humm:
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
mts
Inlägg: 223
Blev medlem: 30 april 2014, 20:20:18

Re: Tips Automation av Oscilloskop & Signalgenerator

Inlägg av mts »

De här stegen var jag tvungen att gå igenom för att plotta ett frekvens diagram.

Installera python, ipython,matplotlib och PyVISA
Man behöver också installera NI-VISA 14.0.2 från National Instruments. http://www.ni.com/download/ni-visa-14.0.2/5075/en/

Kod: Markera allt

defaults write com.apple.versioner.python Prefer-64-Bit -bool yes
sudo easy_install pip
pip install ipython
pip install matplotlib
pip install PyVISA
Enkel test för att se att allt fungerar.

Kod: Markera allt

### Connect
ipython --pylab
import visa
rm = visa.ResourceManager()
rm.list_resources()
instr = rm.open_resource(u'USB0::0x1AB1::0x04CE::DS1ZA155203234::INSTR')
print(instr.query('*IDN?'))

# Document settings
instr.write(":TIM:SCAL 0.01")
instr.write(":TIM:OFFS 0.0")
instr.write(":CHAN1:SCAL 1.0")
instr.write(":CHAN1:OFFS 0.0")
Ställ in för att hämta 24MB data.

Kod: Markera allt

instr.write(":RUN")
instr.write(":ACQ:MDEP 24000000")
instr.write(":WAV:MODE RAW")
instr.write(":WAV:FORM BYTE")
Börja tanka data från Oscilloskop.

Kod: Markera allt

def load(start,stop):
    global rawdata
    stop=mem_dep if mem_dep < stop else stop
    instr.write(":WAV:START " + str(start))
    instr.write(":WAV:STOP " + str(stop))
    newdata=instr.query_binary_values(":WAV:DATA? CHAN1", datatype=u'B')
    rawdata=np.append(rawdata, newdata)
    print '\b.', ; sys.stdout.flush()
    return len(rawdata)

# Load memory dump
instr.write(":STOP")
rawdata=np.array([])
mem_dep=int(instr.ask(":ACQ:MDEP?"))
start=1
while start < mem_dep:
    start=1+load(start,start+1000000-1)

Beräkna FFT

Kod: Markera allt

import time
import numpy as np
import matplotlib.pyplot as plt

# Prepare and scale
sample_rate = float(instr.ask(":ACQ:SRAT?"))
data = (1.0*rawdata - 122)/244 * voltscale * 10
time = np.linspace(-0.5 * mem_dep/sample_rate, +0.5 * mem_dep/sample_rate, num=len(data))

# Calculate power spectrum of FFT
Hn = np.fft.fft(data)
freq = np.fft.fftfreq(len(time)+1,1/sample_rate)
ind_freq=arange(1,len(time)/2+1)
psd=np.log(abs(Hn[ind_freq])**2+abs(Hn[-ind_freq])**2)
Plotta resultat.

Kod: Markera allt

ax = subplot(211)
grid()
ax.set_title('Raw data (memory=%g) (Sa/s=%g)'%(mem_dep,sample_rate))
ax.set_ylabel("Amp(volt)")
ax.set_xlabel("Time (sec)")
plot(time,data,'-')

bx = subplot(212)
bx.grid()
bx.set_ylabel("Power spectrum (log)")
bx.set_xlabel("Freq (Hz)")
bx.set_xlim(0,50000)
bx.set_ylim(-4,30)
plot(freq[ind_freq],psd,'-')
Puh! Finns det en enklare metod? :humm:
mts
Inlägg: 223
Blev medlem: 30 april 2014, 20:20:18

Re: Tips Automation av Oscilloskop & Signalgenerator

Inlägg av mts »

Data is beautiful... :happy:

69 sekunder tar det att ladda över 24MB från Oscilloscopet över USB.

Det jag har plottat är en 27MHz kristall.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
mts
Inlägg: 223
Blev medlem: 30 april 2014, 20:20:18

Re: Tips Automation av Oscilloskop & Signalgenerator

Inlägg av mts »

Signalgeneratorn fungerar till hälften.
Jag kan skicka kommandon men jag kan inte fråga den om inställningar. :(
Det kommer bara ut en tom sträng (u'').
Jag funderar på om jag ska nedgradera NI-VISA till version 5.

Kod: Markera allt

### Connect
ipython --pylab
import visa
rm = visa.ResourceManager()
rm.list_resources()
sig = rm.open_resource(u'USB0::0x0400::0x09C4::DG1F162550164::INSTR')

## Generate sinus
sig.write("APPL:SIN 1000,5,0.0")
sig.write("OUTP ON")
## Set oscilloscope to 1x and autoset
osc.write("CHAN1:PROB 1")
osc.write("AUT")
Skriv svar