• RE: 2400 SMU range compliance

    Okay, yeah, that squares with the behavior I'm seeing.

    For most of the other instruments I use, I put them back into local mode after issuing remote commands, so that the displays continue to update and they're easy to use interactively, but doing that on the SMU seems to cause other side-effects, which is too bad because I think it would solve this problem.

    I think I'm just going to embed a command in my voltage measurement routine that manually sets the current sense range to something large before setting the voltage. That should eliminate the range compliance without any real side effects: any current measurement will auto-range before it takes the measurement anyhow. Seems strange that this is necessary, but it's not hard to do.

    I did try querying ":stat:meas:cond?" but that must only respond to real compliance, because it stayed at 0 in and out of range compliance. Thanks for the suggestion though. I'll probably use that as a safety check to make sure I'm not hitting my actual compliance limit. 
  • RE: 2400 SMU range compliance

    Configuring and running sweeps through the trace subsystem doesn't really work for most of my applications, but point taken that there are more sophisticated ways to take measurements than :MEASURE:[FUNCTION]?, with more control over the relevant parameters.

    When you say " the :MEASure:[FUNCtion]? command is a less precise measurement command" what do you mean by that? It's not actually a less precise measurement, right? It just gives you less manual control, right? My understanding is that you still get the full precision of the instrument with :measure, you just use the default settings for things like ranging and averaging.

    I'm still interested in a way around the current sensing range compliance limiting my voltage settings, but maybe the answer is just that I need more complicated code to reset the range after every measurement.

  • 2400 SMU range compliance

    I've been fighting this for the better part of two days, and I finally think I understand what's going on, but not how to prevent it.

    So, my setup:

    2400 SMU, communicating over GPIB

    Let's say I'm in source voltage, sense current mode.

    I take a current measurement with the "MEASURE:CURRENT? " command.

    This, as far as I can tell, autoranges the current sensing range to make the most accurate current measurement, and as far as I can tell, there's no way to manually specify a range, or at least I don't see it in the manual.

    This is all well and good, except that the current sensing range imposes a current compliance limit (separate from the explicit compliance limit that I set). So if I try and change the voltage to something that exceeds that limit, it will go into compliance, and not give me the voltage I asked for. The manual (section 6-2) claims that "range compliance" won't occur in auto range, but that's not what I've had happen. Maybe that's only true for interactive measurements from the front panel, not using GPIB.

    So, for example, if I have a 460ohm resistor across the terminals:

    Set a 10mV voltage
    Measure the current: 22uA (sense current range auto-sets to 105uA)
    Attempt to set a 1V voltage
    Current clamps at 105uA, actual voltage is only 49mV

    If I take another current measurement with the 1V setting, it autoranges the current sense range again, brings it up to 10.5mA, and I get the 1V I was asking for.

    Is there something I'm missing here? Am I just using the instrument wrong? I can work around this, I guess. I can either force a current measurement every time I set the voltage, even if I don't need it, or I can manually turn off auto ranging and set the current range to something big after every current measurement, but both of those things seem kind of like a kludge.

    "I want to be able to set an arbitrary voltage after measuring an arbitrary current" doesn't seem like a particularly exotic thing to want to do.