Пример #1
0
    def __init__(self):
        super().__init__(title="Environment")

        # Data series
        self.box_temperature_series = []
        self.chuck_temperature_series = []
        self.box_humidity_series = []

        # Plot
        self.plot = ui.Plot(legend="right")
        self.plot.add_axis("x", align="bottom", type="datetime")
        self.plot.add_axis("y1",
                           align="left",
                           text="Temperature [°C]",
                           color="red")
        self.plot.add_axis("y2",
                           align="right",
                           text="Humidity [%rH]",
                           color="blue")
        self.plot.add_series("box_temperature",
                             "x",
                             "y1",
                             text="Box Temperature",
                             color="red")
        self.plot.add_series("chuck_temperature",
                             "x",
                             "y1",
                             text="Chuck Temperature",
                             color="magenta")
        self.plot.add_series("box_humidity",
                             "x",
                             "y2",
                             text="Box Humidity",
                             color="blue")

        # Inputs
        self.box_temperature_number = ui.Number(suffix="°C",
                                                decimals=1,
                                                readonly=True)
        self.box_humidity_number = ui.Number(suffix="%rH",
                                             decimals=1,
                                             readonly=True)
        self.chuck_temperature_number = ui.Number(suffix="°C",
                                                  decimals=1,
                                                  readonly=True)
        self.box_lux_number = ui.Number(suffix="Lux",
                                        decimals=1,
                                        readonly=True)
        self.box_light_text = ui.Text(readonly=True)
        self.box_door_text = ui.Text(readonly=True)

        # Layout
        self.layout = ui.Column(
            self.plot,
            ui.Label("Box Temperature"), self.box_temperature_number,
            ui.Label("Box Humidity"), self.box_humidity_number,
            ui.Label("Chuck Temperature"), self.chuck_temperature_number,
            ui.Label("Box Light"), self.box_lux_number,
            ui.Label("Box Light State"), self.box_light_text,
            ui.Label("Box Door State"), self.box_door_text, ui.Spacer())
Пример #2
0
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.title = "IV Ramp"

        self.register_vsource()
        self.register_environment()

        self.plot = ui.Plot(height=300, legend="right")
        self.plot.add_axis("x", align="bottom", text="Voltage [V] (abs)")
        self.plot.add_axis("y", align="right", text="Current [uA]")
        self.plot.add_series("hvsrc", "x", "y", text="HV Source", color="red")
        self.plot.add_series("xfit", "x", "y", text="Fit", color="magenta")
        self.data_tabs.insert(0, ui.Tab(title="IV Curve", layout=self.plot))

        self.voltage_start = ui.Number(decimals=3, suffix="V")
        self.voltage_stop = ui.Number(decimals=3, suffix="V")
        self.voltage_step = ui.Number(minimum=0, maximum=200, decimals=3, suffix="V")
        self.waiting_time = ui.Number(minimum=0, decimals=2, suffix="s")

        self.hvsrc_current_compliance = ui.Metric(minimum=0, decimals=3, prefixes='mun', unit="A")

        self.bind("voltage_start", self.voltage_start, 0, unit="V")
        self.bind("voltage_stop", self.voltage_stop, 100, unit="V")
        self.bind("voltage_step", self.voltage_step, 1, unit="V")
        self.bind("waiting_time", self.waiting_time, 1, unit="s")

        self.bind("hvsrc_current_compliance", self.hvsrc_current_compliance, 0, unit="A")

        self.general_tab.layout = ui.Row(
            ui.GroupBox(
                title="Ramp",
                layout=ui.Column(
                    ui.Label(text="Start"),
                    self.voltage_start,
                    ui.Label(text="Stop"),
                    self.voltage_stop,
                    ui.Label(text="Step"),
                    self.voltage_step,
                    ui.Label(text="Waiting Time"),
                    self.waiting_time,
                    ui.Spacer()
                )
            ),
            ui.GroupBox(
                title="HV Source",
                layout=ui.Column(
                    ui.Label(text="Compliance"),
                    self.hvsrc_current_compliance,
                    ui.Spacer()
                )
            ),
            ui.Spacer(),
            stretch=(1, 1, 1)
        )

        ampere = comet.ureg('A')
        volt = comet.ureg('V')

        self.series_transform['hvsrc'] = lambda x, y: ((x * volt).to('V').m, (y * ampere).to('uA').m)
        self.series_transform['xfit'] = self.series_transform.get('hvsrc')
Пример #3
0
def main():
    app = comet.Application()
    app.title = "Plot"
    app.about = "An example plot application."

    def on_reset():
        for series in plot.series.values():
            series.clear()
        plot.fit()

    def on_reading(value):
        time, temp, humid = value
        plot.series.get("temp").append(time, temp)
        plot.series.get("humid").append(time, humid)
        if plot.zoomed:
            plot.update("x")
        else:
            plot.fit()

    plot = ui.Plot(legend="bottom")
    plot.add_axis("x", align="bottom", type="datetime")
    plot.add_axis("y1", align="left", text="Temperature [°C]", color="red")
    plot.add_axis("y2", align="right", text="Humidity [%rH]", color="blue")
    plot.add_series("temp", "x", "y1", text="Temperature", color="red")
    plot.add_series("humid", "x", "y2", text="Humidity", color="blue")

    reset_button = ui.Button(text="Reset", clicked=on_reset)

    app.layout = ui.Column(plot, reset_button)

    process = comet.Process(target=fake_data)
    process.reading = on_reading
    process.failed = ui.show_exception
    process.start()
    app.processes.add("process", process)

    return app.run()
Пример #4
0
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.title = "CV Ramp (V Source)"

        self.register_hvsource()
        self.register_lcr()
        self.register_environment()

        self.plot = ui.Plot(height=300, legend="right")
        self.plot.add_axis("x", align="bottom", text="Voltage [V] (abs)")
        self.plot.add_axis("y", align="right", text="Capacitance [pF]")
        self.plot.add_series("lcr", "x", "y", text="LCR Cp", color="blue")
        self.data_tabs.insert(0, ui.Tab(title="CV Curve", layout=self.plot))

        self.plot2 = ui.Plot(height=300, legend="right")
        self.plot2.add_axis("x", align="bottom", text="Voltage [V] (abs)")
        self.plot2.add_axis("y", align="right", text="1/Capacitance² [1/F²]")
        self.plot2.axes.get("y").qt.setLabelFormat("%G")
        self.plot2.add_series("lcr2", "x", "y", text="LCR Cp", color="blue")
        self.data_tabs.insert(1, ui.Tab(title="1/C² Curve", layout=self.plot2))

        self.voltage_start = ui.Number(decimals=3, suffix="V")
        self.voltage_stop = ui.Number(decimals=3, suffix="V")
        self.voltage_step = ui.Number(minimum=0,
                                      maximum=200,
                                      decimals=3,
                                      suffix="V")
        self.waiting_time = ui.Number(minimum=0, decimals=2, suffix="s")

        self.vsrc_current_compliance = ui.Number(decimals=3, suffix="uA")

        self.lcr_frequency = ui.Number(value=1,
                                       minimum=0.020,
                                       maximum=20e3,
                                       decimals=3,
                                       suffix="kHz")
        self.lcr_amplitude = ui.Number(minimum=0, decimals=3, suffix="mV")

        self.bind("bias_voltage_start", self.voltage_start, 0, unit="V")
        self.bind("bias_voltage_stop", self.voltage_stop, 100, unit="V")
        self.bind("bias_voltage_step", self.voltage_step, 1, unit="V")
        self.bind("waiting_time", self.waiting_time, 1, unit="s")
        self.bind("vsrc_current_compliance",
                  self.vsrc_current_compliance,
                  0,
                  unit="uA")
        self.bind("lcr_frequency", self.lcr_frequency, 1.0, unit="kHz")
        self.bind("lcr_amplitude", self.lcr_amplitude, 250, unit="mV")

        self.general_tab.layout = ui.Row(
            ui.GroupBox(title="V Source Ramp",
                        layout=ui.Column(ui.Label(text="Start"),
                                         self.voltage_start,
                                         ui.Label(text="Stop"),
                                         self.voltage_stop,
                                         ui.Label(text="Step"),
                                         self.voltage_step,
                                         ui.Label(text="Waiting Time"),
                                         self.waiting_time, ui.Spacer())),
            ui.GroupBox(title="V Source",
                        layout=ui.Column(ui.Label(text="Compliance"),
                                         self.vsrc_current_compliance,
                                         ui.Spacer())),
            ui.GroupBox(title="LCR",
                        layout=ui.Column(ui.Label(text="AC Frequency"),
                                         self.lcr_frequency,
                                         ui.Label(text="AC Amplitude"),
                                         self.lcr_amplitude, ui.Spacer())),
            stretch=(1, 1, 1))

        fahrad = comet.ureg('F')
        volt = comet.ureg('V')

        self.series_transform['lcr'] = lambda x, y: ((x * volt).to('V').m,
                                                     (y * fahrad).to('pF').m)
Пример #5
0
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.title = "IV Ramp Bias Elm"

        self.register_vsource()
        self.register_hvsource()
        self.register_electrometer()
        self.register_environment()

        self.plot = ui.Plot(height=300, legend="right")
        self.plot.add_axis("x", align="bottom", text="Voltage [V]")
        self.plot.add_axis("y", align="right", text="Current [uA]")
        self.plot.add_series("elm",
                             "x",
                             "y",
                             text="Electrometer",
                             color="blue")
        self.plot.add_series("xfit", "x", "y", text="Fit", color="magenta")
        self.data_tabs.insert(0, ui.Tab(title="IV Curve", layout=self.plot))

        self.voltage_start = ui.Number(decimals=3, suffix="V")
        self.voltage_stop = ui.Number(decimals=3, suffix="V")
        self.voltage_step = ui.Number(minimum=0,
                                      maximum=200,
                                      decimals=3,
                                      suffix="V")
        self.waiting_time = ui.Number(minimum=0, decimals=2, suffix="s")
        self.bias_voltage = ui.Number(decimals=3, suffix="V")
        self.bias_mode = ui.ComboBox(["constant", "offset"])

        self.hvsrc_current_compliance = ui.Number(decimals=3, suffix="uA")
        self.hvsrc_accept_compliance = ui.CheckBox("Accept Compliance")
        self.vsrc_current_compliance = ui.Number(decimals=3, suffix="uA")
        self.vsrc_accept_compliance = ui.CheckBox("Accept Compliance")

        self.bind("voltage_start", self.voltage_start, 0, unit="V")
        self.bind("voltage_stop", self.voltage_stop, 0, unit="V")
        self.bind("voltage_step", self.voltage_step, 0, unit="V")
        self.bind("waiting_time", self.waiting_time, 1, unit="s")
        self.bind("bias_voltage", self.bias_voltage, 0, unit="V")
        self.bind("bias_mode", self.bias_mode, "constant")
        self.bind("hvsrc_current_compliance",
                  self.hvsrc_current_compliance,
                  0,
                  unit="uA")
        self.bind("hvsrc_accept_compliance", self.hvsrc_accept_compliance,
                  False)
        self.bind("vsrc_current_compliance",
                  self.vsrc_current_compliance,
                  0,
                  unit="uA")
        self.bind("vsrc_accept_compliance", self.vsrc_accept_compliance, False)

        self.general_tab.layout = ui.Row(
            ui.GroupBox(title="HV Source Ramp",
                        layout=ui.Column(ui.Label(text="Start"),
                                         self.voltage_start,
                                         ui.Label(text="Stop"),
                                         self.voltage_stop,
                                         ui.Label(text="Step"),
                                         self.voltage_step,
                                         ui.Label(text="Waiting Time"),
                                         self.waiting_time, ui.Spacer())),
            ui.GroupBox(title="V Source Bias",
                        layout=ui.Column(ui.Label(text="Bias Voltage"),
                                         self.bias_voltage,
                                         ui.Label(text="Bias Compliance"),
                                         self.vsrc_current_compliance,
                                         self.vsrc_accept_compliance,
                                         ui.Label(text="Bias Mode"),
                                         self.bias_mode, ui.Spacer())),
            ui.GroupBox(title="HV Source",
                        layout=ui.Column(ui.Label(text="Compliance"),
                                         self.hvsrc_current_compliance,
                                         self.hvsrc_accept_compliance,
                                         ui.Spacer())),
            stretch=(1, 1, 1))

        ampere = comet.ureg('A')
        volt = comet.ureg('V')

        self.series_transform['elm'] = lambda x, y: ((x * volt).to('V').m,
                                                     (y * ampere).to('uA').m)
        self.series_transform['xfit'] = self.series_transform.get('elm')
Пример #6
0
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.title = "Frequency Scan"

        self.register_vsource()
        self.register_lcr()
        self.register_environment()

        self.plot = ui.Plot(height=300, legend="right")
        self.plot.add_axis("x", align="bottom", text="Voltage [V] (abs)")
        self.plot.add_axis("y", align="right", text="Capacitance [pF]")
        self.plot.add_series("lcr", "x", "y", text="LCR", color="blue")
        self.data_tabs.insert(0, ui.Tab(title="CV Curve", layout=self.plot))

        self.bias_voltage = ui.Number(decimals=3, suffix="V")

        self.hvsrc_current_compliance = ui.Number(decimals=3, suffix="uA")

        self.lcr_frequency_start = ui.Number(minimum=0,
                                             decimals=3,
                                             suffix="Hz")
        self.lcr_frequency_stop = ui.Number(minimum=0,
                                            decimals=3,
                                            suffix="MHz")
        self.lcr_frequency_steps = ui.Number(minimum=1,
                                             maximum=1000,
                                             decimals=0)
        self.lcr_amplitude = ui.Number(minimum=0, decimals=3, suffix="mV")

        self.bind("bias_voltage", self.bias_voltage, 0, unit="V")
        self.bind("hvsrc_current_compliance",
                  self.hvsrc_current_compliance,
                  0,
                  unit="uA")
        self.bind("lcr_frequency_start",
                  self.lcr_frequency_start,
                  0,
                  unit="Hz")
        self.bind("lcr_frequency_stop", self.lcr_frequency_stop, 0, unit="MHz")
        self.bind("lcr_frequency_steps", self.lcr_frequency_steps, 1)
        self.bind("lcr_amplitude", self.lcr_amplitude, 0, unit="mV")

        self.general_tab.layout = ui.Row(
            ui.GroupBox(title="HV Source",
                        layout=ui.Column(ui.Label(text="Bias Voltage"),
                                         self.bias_voltage,
                                         ui.Label(text="Current Compliance"),
                                         self.hvsrc_current_compliance,
                                         ui.Spacer())),
            ui.GroupBox(title="LCR",
                        layout=ui.Column(
                            ui.Label(text="AC Frequency Start"),
                            self.lcr_frequency_start,
                            ui.Label(text="AC Frequency Stop"),
                            self.lcr_frequency_stop,
                            ui.Label(text="AC Frequency Steps (log10)"),
                            self.lcr_frequency_steps,
                            ui.Label(text="AC Amplitude"), self.lcr_amplitude,
                            ui.Spacer())),
            ui.Spacer(),
            stretch=(1, 1, 1))

        fahrad = comet.ureg('F')
        volt = comet.ureg('V')

        self.series_transform['lcr'] = lambda x, y: ((x * volt).to('V').m,
                                                     (y * fahrad).to('pF').m)
        self.series_transform['xfit'] = self.series_transform.get('lcr')