Programming the DP800 DC Power Supply in Python

This post is a part of a series of posts about instrumentation. Get the full code here. For setup details, see the original post.

DC power supplies can be found in all kinds of different laboratory environments.

Making supplies programmable improves the reproducibility of experiments. In this post, we will look at various features of the DP800 series programmable DC power supply.

Display Modes

The default display mode is not the best. Luckily, there are a few to choose from.

instrument = DP800("192.168.254.101")
instrument.set_display_mode("NORM") # default
instrument.set_display_mode("WAVE") # time series
instrument.set_display_mode("DIAL") # dial
instrument.set_display_mode("CLAS") # classic

Timer & Delayer

The timer and delayer functions are somewhat limited by an update interval of 1 second. This supply is theoretically capable of creating periodic functions with a period of 10 seconds to well over a day.

# Timer
instrument = DP800("192.168.254.101")
instrument.set_timer_cycles("I") # infinite
instrument.set_timer_end_state("LAST") # use last state
instrument.set_timer_groups(2048) # max groups
instrument.enable_timer()

# Delayer
instrument = DP800("192.168.254.101")
instrument.set_delay_cycles(99999)
instrument.set_delay_end_state("OFF")
instrument.set_delay_groups(2048)
instrument.enable_delay()

Monitor & Triggering

This device has overvoltage, overcurrent, overtemperature, subassembly level self testing, monitoring, and 4-bit digital external triggering.

# Monitor
instrument = DP800("192.168.254.101")
instrument.enable_monitor()
instrument.enable_monitor_outoff()
instrument.enable_monitor_warning()
instrument.enable_monitor_beeper()

# Trigger
instrument = DP800("192.168.254.101")
instrument.get_trigger_source_type() == "BUS"
instrument.set_trigger_current(0.001)
instrument.enable_trigger_input()
instrument.set_trigger_response("ON")
instrument.set_trigger_sensitivity("MID")
instrument.set_trigger_input_source(2)
instrument.set_trigger_type("FALL")
instrument.set_trigger_voltage(0, 1)
instrument.set_trigger_condition(">V", 0)
instrument.set_trigger_duty_cycle(90)
instrument.enable_trigger_output()
instrument.set_trigger_period(1)
instrument.set_trigger_polarity("NEGA")
instrument.set_trigger_signal("SQUARE")
instrument.set_trigger_output_source(2)
instrument.set_trigger_delay(1)

Memory functions: Analyzer, Recorder

There is also various recall functions, such as a recorder and analyzer. It’s usually better to offload analysis and instrument setup to the host computer, so not all of these functions were implemented.

# Analyzer
instrument = DP800("192.168.254.101")
instrument.set_record_period(1)
instrument.set_record_destination("RIGOL.ROF", 10)
instrument.enable_record()
time.sleep(1)
instrument.disable_record()
instrument.set_analyzer_file(10)
instrument.set_analyzer_start_time(1)
instrument.set_analyzer_end_time(1)
instrument.run_analyzer()

# Recorder
instrument = DP800("192.168.254.101")
instrument.set_record_destination("RIGOL.ROF", 10)
instrument.set_record_period(10)
instrument.enable_record()

Conclusion

Numeric buttons and rotary dial on the parameter input area. Source: Dave Jones.

I was disappointed with this device as it compares to the DS1000Z series oscilloscope. In some cases, there were many commands to perform the same action (and no simple way to take screenshots)!

On the plus side, this device offers great value for three output channels, 100μV measurement precision, and high performance programmable I/O.


About the author



Hi, I'm Nathan. I'm an electrical engineer in the Los Angeles area. Keep an eye out for more content being posted soon.


Leave a Reply

Your email address will not be published. Required fields are marked *