Does C# run on Arduino? Or is there also a Windows computer involved that is running C#?
You 6517A can be command controlled over RS-232 or GPIB.
I'd suggest the C# program will control the Arduino/16channel relay module to routing signal to the 6517A.
Then C# can also obtain a reading from 6517A.
Will the 6517A measure current or voltage or ?
You have it correct.
Only commands that end in question mark will automatically cause a response to be put into the output queue.
Your VISA read transfers the output queue.
In conventional SCPI there are often query form of commands to interrogate instrument settings.
In TSP, we rely on the print() or printbuffer() to place content in output queue.
There is a status.condition register with a message available bit (MAV) that will be logic 1 if there is content in output queue. Use VISA ReadSTB rather than a visa read after writing print(status.condition) command.
I do not see anything wrong with that you are doing.
Is the LAN connection from Test Script Builder closed? The instrument can accept only one connection at a time.
For future reference, when the LAN connection gets stranded, there is a dead socket recovery port.
If you can connect on the dead socket and then close, it forces any open LXI LAN connection (port 5025) to close.
If my theory about an open connection from Test Script Builder is why you are having troubles, the dead socket would let you take it away.
import pyvisa import time resource_mgr = pyvisa.ResourceManager() #optional print available VISA resources on this computer resource_list = resource_mgr.list_resources() for resource in resource_list: print(resource) try: #get a session/handle for one resource instrument_resource_string = "TCPIP0::192.168.1.55::inst0::INSTR" #resource_list #for me, resource_list = my_instr = resource_mgr.open_resource(instrument_resource_string) except(pyvisa.VisaIOError): #try connect on dead socket on port 5030 print("Attempting Dead Socket recovery.....") my_instr = resource_mgr.open_resource("TCPIP0::192.168.1.55::5030::SOCKET") my_instr.close() time.sleep(0.5) #try again now on normal LXI port my_instr = resource_mgr.open_resource(instrument_resource_string) print("Done attempting Dead Socket recovery.....") my_instr.write("*IDN?\n") print("*****") print(my_instr.read())
My hunch is that the SMU control loop is destabilized by your 100nF.
And evidently the situation is worse for compliance setting of 10mA vs 5mA.
What is the measure range in each case? Is it auto ranging or set to fixed current measure range?
Turning on high C mode should give you the consistent behavior of appx 1mA measured when forcing 5V regardless of current limit setting at 5mA or 10mA.
From data sheet of 2602B: Maximum Load Impedance Normal Mode: 10 nF (typical). High Capacitance Mode: 50 µF (typical).
Since you have 100nF, try enabling the high capacitance mode.
Glad to hear you solved it.
FYI for others, if you turn off auto range for current measure, and set a fixed range, the allowed values of current compliance limit must be within that selected measure range. This is why too small for sense range error is raised.
If auto range is on, then it is possible to have a much higher value for current compliance than the presently in use measure range by the auto range algorithm.
Since your *IDN? query is working well, I'd say your communication is proved.
You are getting a timeout on the other query because it is not a valid command for the 2611B.
Therefore, that command will not cause any response message and your gpib read times out.
I suggest you consider updating the firmware level. You are at 3.0.3. Version 3.4.2 is available for your unit.
You need a login to the tek.com site, but otherwise is a free download.
Also while there, download the reference manual which details the commands that the 2611B does understand.
The user manual offers a subset of that info and some typical use case scenarios.
If you want to know the line frequency you can write a command: print(localnode.linefreq).
Then read the response that is "printed" to the output queue.
Downloads for the 2611B
For your incorrect current measurement, try some manual operation and progressively add cable and probes.
So how low are measurements of current for just instrument?
If nice and small, restore zero check and modify connection to just one cable or connector.
Then measure again.
Some BNC cables can give quite a lot of “popcorn” spurious current noise. Make sure you don’t have that before measuring the sample.
Is your piezo material in a shielded enclosure? If not, then I image you will get a lot of measurable change just due to environment. Wave your hands or walk by while measuring. You can probably detect the motion as charged dust from air impacts the sample surface.
Hi Michael. Great feedback! I’ll make sure the factory/firmware engineers are aware of your report.
So, you will generate V and I data as function of some changing amount of mechanical stress?
For voltage, how high is high? I suspect the sample also has high source impedance. Therefore your volt meter needs input R spec larger than the source R to avoid loading errors. Suggest the electrometer 6514 or 6517B.
Alternatively, a SourceMeter with low current ranges can be put into force 0 amps and limit voltage to some value higher than what you expect to measure. Something like 2636B or 2635B has 1nA source range and offers quite good input R when behaving like volt meter good up to 200V. Use 2657A if you need higher voltages.
By definition, a good v-meter has zero current flowing into or out of the meter. So makes it not feasible to also measure the current on those same connection points with same instrument. Unless the instrument is a SourceMeter, then it can change its configuration and force 0 V with current limit higher than you need to measure.
But understand I am describing two sequential measurements: measuring V when force 0 Amps, then measuring I when forcing 0 V. Can this work for you?
If envisioning two meters, how will you connect them? Seems the amp meter will compete with the V meter for what the charge stored on your sample should do.