GPIB via LAN spectrum analyser (Toestel of techniek)

door leemhuis01 @, Coevorden, 15-07-2024, 11:27 (130 dagen geleden)
Gewijzigd door leemhuis01, 15-07-2024, 11:35

Beste Forumgebruikers,

Voor een project ben ik bezig om GPIB te gebruiken.
Dit is voor mij helemaal nieuw.
Maar wellicht zijn er hier mensen die dit ook wel eens gebruiken.

Ik ben bezig met het maken van een stukje software (Python) voor een R&S FSL3.
User Manual R&S FSL3

Nu heb ik alleen problemen met het uitlezen van de powers op bepaalde frequenties.
Ik zou graag een soort peak detector willen maken.
Dus dat als er een piek in het spectrum zit,
Mijn Python script deze weergeeft door middel van een frequentie en een niveau in dB's.

Maar ik zou er al heel erg blij mee zijn als ik de power van een bepaalde frequentie kan uitlezen.
Of van 1 van de markers.

Wie heeft de gouden tip voor mij voor de power uitlezing.

*Tevens is software niet mijn grootste talent:-D
Dus vandaar dat het wat moeizaam gaat

--
Met vriendelijke groet,
Nick Leemhuis

GPIB via LAN spectrum analyser

door leemhuis01 @, Coevorden, 15-07-2024, 11:32 (130 dagen geleden) @ leemhuis01

Dit is de code die ik tot nu toe gebruik.
De instellingen die ik doe, worden keurig ingesteld door het apparaat.
En ook de frequenties worden netjes geprint in de terminal.

-----------------------------------------------------------

import pyvisa
import time
from time import sleep
import os

#Detection for connected devices
rm = pyvisa.ResourceManager()
print("Resources detected\n{}\n".format(rm.list_resources()))

#set up the spectrum analyser to initial standard
power_meter = rm.open_resource("TCPIP::192.168.82.28::INSTR",)
power_meter.write("*RST;*CLS")

#settings for the spectrum analyser
power_meter.write('FREQ:CENT 868MHz')
power_meter.write('FREQ:SPAN 10MHz')
power_meter.write('DISP:TRAC:Y:RLEV 0dBm')

power_meter.write('CALC:MARK2:MAX')
power_meter.write('CALC:MARK1:MIN')

#Measurements with the spectrum analyser
power_meter.write('SENSe:FREQuency:CENTer?')
Freq = float(power_meter.read())
print(Freq/1e6, "MHz")
power_meter.write('SENSe:FREQuency:STOP?')
End = float(power_meter.read())
print(End/1e6, "MHz")

--
Met vriendelijke groet,
Nick Leemhuis

GPIB via LAN spectrum analyser

door loek @, Exloo (Drenthe), 16-07-2024, 14:06 (129 dagen geleden) @ leemhuis01
Gewijzigd door loek, 16-07-2024, 14:08

Hallo Leemhuis01 ?? (altijd beter als ook echte naam bekend is),


Ik werk veel met aansturing via HPIB interface. Als programmeer taal gebruik ik VBA via Excel van Microsoft. En de besturing gaat ook volledig via Excel. Ik heb wel diverse andere programmering uitgeprobeerd ook Python. Maar je was dan meer bezig om de taal te begrijpen dan aan je project te werken. Er zijn ook diverse pakketten te koop die bijna alle apparaten kunnen aansturen maar die zijn weer erg duur.

Ik heb even naar de handleiding gekeken van jouw apparaat en deze is zeer uitgebreid (1700 pagina's). Als voorbeeld taal gebruiken zij ook VBA.

Na wat snel scannen van de documentatie zie ik veel mogelijkheden om wat jij wil bereiken ook te kunnen uitvoeren.

Om piek detectie te kunnen uitvoeren zal je na iedere scan op de frequentie die jij wilt met het niveau moeten opvragen en vast leggen. En bij elke volgende scan zou je dan moeten vergelijken welke weer hoger is. Je zou ook in moeten stellen hoeveel scans je wilt maken voor een eind meting. Kortom al deze mogelijkheden zag ik in de instructie zet aanwezig.

Veel succes met je project met vriendelijke groet,

Loek

GPIB via LAN spectrum analyser

door leemhuis01 @, Coevorden, 16-07-2024, 14:22 (129 dagen geleden) @ loek
Gewijzigd door leemhuis01, 16-07-2024, 14:26

Beste Loek,

Bedankt voor je bericht.
Inmiddels heb ik ook al een oplossing voor mijn probleem gevonden.
Ik ben geen programmeer wonder, dus software duurt altijd wat langer bij mij.

Maar ik heb een soort van peakdetector geprogrammeerd op de volgende manier:

def Peak():
power_meter.write('CALC:MARK1:MAX')

power_meter.write('CALC:MARK1:Y?')
marker1_ampl = float(power_meter.read()) + 19.6 + 2.853
#Attenuator 19.6 dB and 2.853 dB deviation signal generator
print("Peak Amplitude:", marker1_ampl, "dBm")

power_meter.write('CALC:MARK1:X?')
marker1_freq = float(power_meter.read())
print("Peak Frequency:", marker1_freq / 1e6, "MHz")

Op dit moment is meerdere scans maken niet belangrijk.
Ik moet alleen voor een hele grote reeks makkelijk de waardes van de piek kunnen bepalen.
Dus voor iedere nieuwe scan, laat ik gewoon de marker opnieuw het maximum opzoeken.

--
Met vriendelijke groet,
Nick Leemhuis

GPIB via LAN spectrum analyser

door hanswal @, Hoorn, 16-07-2024, 23:36 (128 dagen geleden) @ loek

Hallo Leemhuis01 ?? (altijd beter als ook echte naam bekend is),

Loek,

Nick zet al tijden zijn naam in de footer van zijn berichten; zijn echte naam is dus bekend. De 01 achter zijn achternaam doe er niet toe.

Hans

--
scoper apestaart quicknet punt nl

powered by my little forum