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

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.