-
RE: Does the 6517B measures pA current by discharging the source
Need you to clarify on connections. Where is the HI and the LO?
Your experiment sounds a little bit like Ion Beam Measurements.
Check out section 4.3.5 in our handbook:
Keithley Low Level Measurements Handbook
You may need to create a bias condition to attract the charge to flow through the amp measure function of the electrometer. -
RE: KITE program displays "KITE has stopped working"
Your reference to KITE tells us you have the older 4200-SCS running on Win7 or earlier.
Evidently some file corruption has occurred.
You could try a reinstall of the KITE environment.
More drastic would be to catch the Acronis restore during boot up. Most of the older 4200 will have an as-shipped image in the Acronis software. Check the manuals on use.
Are you recently using the tool in a new way and encountering this error?
-
RE: Keithley DMM6500 - random jump touch issue
Thanks for the videos.
It behaves like the touch panel is receiving touch to change measure function.
Something is wrong in your display.
What happens if you place the instrument on different screen? Swipe to graph or stats screen? Does it stay there?
-
RE: Direct current overflow issue in Keithley DMM 6500 digital multimeter
Seems you are saying that the DCI measure function returns overflow for the 3A and lower ranges.
Both front and rear. No connections and still get overflow.
However, the 10A range available on rear only, is somewhat functional.
To me, it sounds like a malfunctioning meter.
Firmware unlikely to help such a symptom.
Separate from DCI is the digitize current measure function. Does that still work for the 3A and lower ranges? -
RE: Voltage compliance issue in picoammeter 6487
If you are seeing the OCOMP indicator when you turn the voltage source on, this means the maximum current (current limit) has been encountered.
If this occurs even for open circuit, I suspect some malfunction in the instrument, or your cabling is not what you think it is.From front panel, you can adjust the amount of current limit.
Both the reference and user manuals detail the procedure.
-
RE: Unable to set Source Current for SMU (Four Point Probe Experiment)
See if this application note helps:
Four Point Probe Resistivity with 2450 -
RE: communicate with two keithley via two gpib cables using python
You have two keithleys and two gpib cables.
But how many GPIB interface boards does the computer have?
If only one gpib card in the PC, then only one program can take charge of it at a time.
A single program that sends commands to two different gpib address would be needed for simultaneous use of both keithleys. -
RE: DMM 2701 - Ethernet conection - The web page open but not able to connect to 2701
The model 2701 uses port 1394 for the LAN communication. -
RE: Cannot get 2500 readings per second with Keithley 2700
You can try turning off the display: :DISPLAY:ENABLE:STAT OFF
I found an FAQ on tek.com for this topic. It is indicating that the TRACE buffer is not the fastest one.
Max Reading Rate from 2700, 2701 or 2750
Alternate commands:*RST :SENSE:FUNC 'VOLT:DC' :SENSE:VOLT:NPLC 0.01 :SENSE:VOLT:RANGE 10 :SENSE:VOLT:AVER:STAT OFF :SAMPLE:COUNT 1000 :TRIG:DELAY 0.0 :SYSTEM:AZERO:STAT OFF :DISPLAY:ENABLE:STAT OFF :READ? Now read the data... To check for maximum speed apply a 1V RMS at 2Hz to the input. Run the above command sequence. The 1000 readings should show one complete cycle or less. This shows the meter is taking data at least at a rate of 2000 readings per second.
-
RE: Using Keithley 3706A with a python script
Here is some Python sample code for scanning some channels with model 3706A:import pyvisa import time import matplotlib.pyplot as plt import pandas as pd def check_error(): status = my3706A.read_stb() if int(status) & 4 == 4 : #test if the EAV (error available) bit is set error_response = my3706A.query("print(errorqueue.next())") print(error_response) else: print("No Errors") def get_scanState(): my3706A.write("scanState, scanCount, stepCount, lastReading = scan.state()") return int(float(my3706A.query("print(tonumber(scanState))"))) DEBUG = 0 my3706A = pyvisa.ResourceManager().open_resource('TCPIP0::192.168.1.214::INSTR') #my3706A = pyvisa.ResourceManager().open_resource('USB0::0x05E6::0x3706::04428124::INSTR') # Connect to the keithley and set it to a variable named multimeter. my3706A.timeout = 10000 #number of msec to wait for VISA command completions #my3706A.write("") #put instrument into known state my3706A.write('reset()') my3706A.write('status.reset()') my3706A.write('errorqueue.clear()') #allocate a buffer for the measurements my3706A.write('buf=dmm.makebuffer(1000)') my3706A.write('buf.clear()') my3706A.write('buf.appendmode=1') my3706A.write('buf.collectchannels=1') if DEBUG: check_error() #configure the DMM settings my3706A.write("dmm.func= dmm.DC_VOLTS") # TWO_WIRE_OHMS DC_VOLTS my3706A.write("dmm.range=1") my3706A.write("dmm.autorange=1") my3706A.write("dmm.nplc= 1") #0.0005 to 15 for 60Hz power my3706A.write("dmm.autozero= dmm.ON") my3706A.write("dmm.autodelay= dmm.ON") if DEBUG: check_error() #associate these dmm settings with a configuration name # do not use a factory preset name, e.g., 'dcvolts' # custom settings = requires custom name my3706A.write('dmm.configure.set("my_dcvolts")') if DEBUG: check_error() #associate the dmm config with channels my3706A.write('dmm.setconfig("1001:1008", "my_dcvolts")') #define a scan my3706A.write('scan.measurecount=1') # one reading per scan my3706A.write("scan.create('1001:1008')") my3706A.write("scan.scancount = 10") # 10 scans # now that scan is setup, run the scan my3706A.write("buf.clear()") # just in case, clear the buffer of any content #my3706A.write("scan.execute(buf)") # this one does not return until scan completes my3706A.write("scan.background(buf)") # this one returns; Python needs to coordinate with done. # setup a while loop to exit when scan state goes to 6 = scan.SUCCESS = done script_running = True DEBUG_LOOP = 0 while script_running: present_state = get_scanState() if DEBUG_LOOP: print("Scan State: " + str(present_state)) if present_state == 6: script_running = False time.sleep(0.5) #delay before asking again #ask for the data my3706A.write("printbuffer(1, buf.n, buf.relativetimestamps, buf.readings)") raw_data = my3706A.read() # raw data will be comman delimited string: # time, ch1, time, ch2, time, ch3, time, ch4, time, ch5, time... # parse the data raw_data_array = raw_data.split(",") timestamps = [] chan1001 = [] chan1002 = [] chan1003 = [] chan1008 = [] num_channels = 8 num_elements = num_channels * 2 #time, ch1, time, ch2, time, ch3, time, ch4, time, ch5, time.... for element in range(0, len(raw_data_array), num_elements): timestamps.append(float(raw_data_array[element])) chan1001.append(float(raw_data_array[element+1])) chan1002.append(float(raw_data_array[element+3])) chan1003.append(float(raw_data_array[element+5])) chan1008.append(float(raw_data_array[element+15])) #create dataframe data = {'Timestamp': timestamps, 'Channel 1': chan1001, 'Channel 2': chan1002, 'Channel 3': chan1003, 'Channel 8': chan1008} df = pd.DataFrame(data) # Set 'Timestamp' as the index df.set_index('Timestamp', inplace=True) # Print the DataFrame print(df) # ******************** Simple Graph ****************** plt.figure() plt.subplot(3, 1, 1) # nrows=3, ncols=1, index=1 plt.plot(timestamps, chan1001, 'o-b') plt.subplot(312) plt.plot(timestamps, chan1002, 'x-r') plt.subplot(313) plt.plot(timestamps, chan1003, '.-g') plt.show() my3706A.clear() my3706A.close()