def __init__(self, param): """ param - dictionary of parameters for the constant voltage test. It should contain the following items. filename Data log filename port Potentiostat serial port volt_range Output voltage range curr_range Measurement current range sample_dt Sample period (s) volt # Output voltage (V) """ self.param = param self.done = False self.sep = ',' self.pstat = Potentiostat(self.param['port']) self.pstat.set_volt_range(self.param['volt_range']) self.pstat.set_curr_range(self.param['curr_range']) self.pstat.set_volt(self.param['volt']) self.scheduler = sched.scheduler(time.time, time.sleep) self.scheduler_event = None signal.signal(signal.SIGINT, self.sigint_handler)
def fetch_ports(): coms = fetch_coms() pots = {} for c in coms: p = Potentiostat('/dev/{}'.format(c)) if p not in pots: pots['pot{}'.format(p.get_device_id())] = p for k, p in pots.items(): _pot_radio = ttk.Radiobutton(parent, text=p) _pot_radio.grid(row=0, column=1)
def read_pots(): devlist = os.listdir('/dev') coms = [c for c in devlist if c.startswith('ttyACM')] pots = {} for c in coms: p = Potentiostat('/dev/{}'.format(c)) _id = p.get_device_id() if p not in pots: pots['pot{}'.format(_id)] = p return pots
def read_pots(): """ searches the operating system for connected serial ports """ devlist = os.listdir('/dev') coms = [c for c in devlist if c.startswith('ttyACM')] pots = {} for c in coms: p = Potentiostat('/dev/{}'.format(c)) _id = p.get_device_id() if p not in pots: pots['pot{}'.format(_id)] = p return pots
def find_arduino_serial_ports(num_RAAs): _Ard_Address = [[] for x in range(num_RAAs)] ports = list(serial.tools.list_ports.comports()) for p in ports: try: dev = Potentiostat(p[0]) cT = dev.get_device_id() print cT if float(cT) == 1: print 'Connecting RAA 1 to Arduino via port %s.'%(p[0]) _Ard_Address[0] = dev if float(cT) == 2: print 'Connecting RAA 2 to Arduino via port %s.'%(p[0]) _Ard_Address[1] = dev except: print 'Could not connect to arduino' return _Ard_Address
def find_arduino_serial_ports(num_RAAs): _Ard_Address = [[] for x in range(num_RAAs)] ports = list(serial.tools.list_ports.comports()) print 'Looking for ARD port...' for p in ports: try: ## print p dev = Potentiostat(p[0]) cT = dev.get_device_id() if float(cT) == 1: print 'Connecting RAA 1 to Arduino (ID: %s) via port %s.'%(str(cT), p[0]) _Ard_Address[0] = dev if float(cT) == 2: print 'Connecting RAA 2 to Arduino (ID: %s) via port %s.'%(str(cT), p[0]) _Ard_Address[1] = dev except: pass ## print 'Could not connect to arduino (Ln: 140)' if not _Ard_Address[0]: print 'Could not connect RAA 1 to potentiostat' if not _Ard_Address[1]: print 'Could not connect RAA 2 to potentiostat' return _Ard_Address
from potentiostat import Potentiostat import sys if len(sys.argv) > 1: port = sys.argv[1] else: port = '/dev/ttyACM0' dev = Potentiostat(port) dev.set_curr_range('100uA') dev.set_sample_period(10) name = 'constant' param = { 'quietValue' : 0.0, 'quietTime' : 1000, 'value' : 1.0, 'duration' : 5000, } dev.set_param(name,param) t,volt,curr = dev.run_test(name,display='pbar')
from __future__ import print_function from potentiostat import Potentiostat import sys if len(sys.argv) > 1: port = sys.argv[1] else: port = '/dev/ttyACM0' dev = Potentiostat(port) name = 'cyclic' param = { 'quietValue': 0.2, 'quietTime': 1500, 'amplitude': 1.52243432, 'offset': 0.1, 'period': 2000, 'numCycles': 5, 'shift': 0.12, } param_rsp = dev.set_param(name, param) print(param_rsp)
from __future__ import print_function from potentiostat import Potentiostat import sys if len(sys.argv) > 1: port = sys.argv[1] else: port = '/dev/tty.usbmodem65156601' #'/dev/ttyACM0' dev = Potentiostat(port) variant = dev.get_hardware_variant() print('hardware variant: ', variant)
H2O2ValLast , \ _H2O2Conc ,\ _current , \ _Pump]) lastWriteTime = time.time() except: traceback.print_exc() pass finally: GPIO.cleanup() ports = list(serial.tools.list_ports.comports()) for p in ports: try: dev = Potentiostat(p[0]) dev.stop_test() except: pass
from __future__ import print_function from potentiostat import Potentiostat import sys if len(sys.argv) > 1: port = sys.argv[1] else: port = '/dev/ttyACM0' if len(sys.argv) > 2: dev_id = int(sys.argv[2]) else: dev_id = 0 dev = Potentiostat(port) print('setting device id to: {0}'.format(dev_id)) rsp = dev.set_device_id(dev_id)
from __future__ import print_function from potentiostat import Potentiostat import sys if len(sys.argv) > 1: port = sys.argv[1] else: #port = '/dev/ttyACM0' port = '/dev/tty.usbmodem65156601' dev = Potentiostat(port) HV = [0, 100, 200, 0] for v in HV: param_rsp = dev.set_HV(v) print(param_rsp) print(dev.get_HV())
from __future__ import print_function from potentiostat import Potentiostat import sys import time if len(sys.argv) > 1: port = sys.argv[1] else: port = '/dev/ttyACM0' channel_list = [1, 7] num_sample = 10 sleep_dt = 0.25 dev = Potentiostat(port) dev.set_volt_range('5V') dev.set_curr_range('100uA') dev.set_mux_enabled(True) dev.set_enabled_mux_channels(channel_list) dev.set_mux_ref_elect_connected(True) dev.set_mux_ctr_elect_connected(True) print() for channel in channel_list: print('testing channel: ', channel) print('----------------------------------------------') dev.set_mux_wrk_elect_connected(channel)
t0 = 10.0 # Transition start time (s) t1 = 50.0 # Transition stop time (s) v0 = -0.9 # Initial voltage (V) v1 = 1.2 # Final voltage (V) amp = 0.1 # Sinusoid ampliude (V) per = 2.0 # Sinusoid period (s) dt = 0.05 # Time step for setting voltage and measurements t_total = 60.0 # Total experiment duration volt_func = create_sin_linear_func(t0, t1, v0, v1, amp, per) # Create device object, set voltage/current ranges and run test pstat = Potentiostat('/dev/ttyACM0') pstat.set_volt_range('2V') pstat.set_curr_range('100uA') t, volt, curr = run_manual_test(pstat, volt_func, dt, t_total) # Plot results plt.subplot(211) plt.plot(t, volt) plt.ylabel('potential (V)') plt.grid('on') plt.subplot(212) plt.plot(t, curr) plt.xlabel('time (s)') plt.ylabel('current (uA)') plt.grid('on')
'quietTime': 1000, 'step': [(1000, -0.25), (1000, 0.5)], }, # Multistep Test Data { 'quietValue': 0.0, 'quietTime': 1000, 'step': [(1000, -0.5), (1000, -0.2), (1000, -0.3), (1000, -0.0), (1000, -0.1), (1000, 0.3), (1000, 0.2), (1000, 0.5)], }, ] cpp = Potentiostat(port) cpp.set_curr_range(curr_range) cpp.set_sample_rate(sample_rate) print(test_name[int_test], test_data[int_test]) cpp.set_param(test_name[int_test], test_data[int_test]) t, volt, curr = cpp.run_test(test_name[int_test], display='pbar') file = open(datafile[int_test], 'w') file.write('Time \n' + str(t) + '\n' + 'Volt \n' + str(volt) + '\n' 'Curr \n' + str(curr) + '\n') plt.figure(1) plt.subplot(211) plt.plot(t, volt) plt.ylabel('potential (V)') plt.grid('on')
from __future__ import print_function from potentiostat import Potentiostat import sys if len(sys.argv) > 1: port = sys.argv[1] else: #port = '/dev/ttyACM0' port = '/dev/tty.usbmodem65156601' dev = Potentiostat(port) #Vi = dev.get_volt() #print(Vi) samples = 10 param_rsp = dev.set_samples(samples) print(param_rsp)
from __future__ import print_function from potentiostat import Potentiostat import sys if len(sys.argv) > 1: port = sys.argv[1] else: port = '/dev/tty.usbmodem65156601' dev = Potentiostat(port) rsp = dev.set_cell('On') print('cell: {0}'.format(rsp)) rsp = dev.set_cell('Off') print('cell: {0}'.format(rsp))
from __future__ import print_function from potentiostat import Potentiostat import sys if len(sys.argv) > 1: port = sys.argv[1] else: #port = '/dev/ttyACM0' port = '/dev/tty.usbmodem65156601' dev = Potentiostat(port) param_rsp = dev.stop_test() print(param_rsp)
'quietValue': 0.0, #ignored in current version 'quietTime': 0, #ignored in current version 'amplitude': amplitude, 'offset': offset, 'period': period_ms, 'numCycles': num_cycles, #ignored in current version 'shift': shift, 'gain': gain, 'HV': HV, 'measure': measure } # %% # Create potentiostat object and set current range, sample rate and test parameters dev = Potentiostat( port, raw=True, # required for DE firmware debug=True # optionally turn on debug flag, outputs lots of messages ) # %% # Run cyclic voltammetry test, returns a dictionary containing time (t), current (i), voltage, (v), and photocurrent values. testCounter += 1 data = dev.run_test( test_name, # name of test to run test_param, # dictionary of experimental parameters display= 'data', # (data | plot ), plot requires testing, pbar option not implemented filename=dataFileName % testCounter) # %% # Plot combinations of values vontained in argument data.
from __future__ import print_function from potentiostat import Potentiostat import sys if len(sys.argv) > 1: port = sys.argv[1] else: port = '/dev/ttyACM0' dev = Potentiostat(port) # All connected commands print('---------------------------------------') print('get all_connected') rsp = dev.get_all_elect_connected() print('rsp = ', rsp) print() print('set all connected = True') rsp = dev.set_all_elect_connected(True) print('rsp = ', rsp) print() print('get all_connected') rsp = dev.get_all_elect_connected() print('rsp = ', rsp) print() print('set all connected = False') rsp = dev.set_all_elect_connected(False) print('rsp = ', rsp)
from __future__ import print_function from potentiostat import Potentiostat import sys if len(sys.argv) > 1: port = sys.argv[1] else: port = '/dev/ttyACM0' dev = Potentiostat(port) # Enable the multiplexer expansion hardware rsp = dev.set_mux_enabled(True) print('mux enabled: {0}'.format(rsp)) # Get the list of currently enabled mux channels rsp = dev.get_enabled_mux_channels() print('mux channels: {0}'.format(rsp)) # Set the list of enabled mux channels to new values rsp = dev.set_enabled_mux_channels([1, 2]) print('mux channels: {0}'.format(rsp)) # Get the list of currently enabled mux channels (just a check for fun) rsp = dev.get_enabled_mux_channels() print('mux channels: {0}'.format(rsp)) # Disable the multiplexer expansion hardware rsp = dev.set_mux_enabled(False) print('mux enabled: {0}'.format(rsp))
from __future__ import print_function from potentiostat import Potentiostat import sys if len(sys.argv) > 1: port = sys.argv[1] else: #port = '/dev/ttyACM0' port = '/dev/tty.usbmodem65156601' dev = Potentiostat(port, raw=True, debug=True) M = ['IP', 'IV', 'PV'] for m in M: print('Setting measurement to {}...'.format(m)) param_rsp = dev.set_measure(m) print(param_rsp)
potentiostat_ID = 2 curr_range = '10uA' # Name of current range for test [-10uA, +10uA] volt_range = '1V' low_voltage = -0.3 low_time = .5 high_voltage = 0.7 high_time = 2 sample_period = .1 try: dev = [] ports = list(serial.tools.list_ports.comports()) for p in ports: try: dev_temp = Potentiostat(p[0]) cT = dev_temp.get_device_id() if cT == potentiostat_ID: dev = dev_temp except: pass if not dev == []: print 'Running chronoamperometry on potentiostat with device ID: %s'%(str(dev.get_device_id())) dev.set_volt_range(volt_range) dev.set_curr_range(curr_range) ##dev.stop_test() list_length = 1 curr_list = [] while True:
from __future__ import print_function from potentiostat import Potentiostat import sys if len(sys.argv) > 1: port = sys.argv[1] else: port = '/dev/tty.usbmodem65156601' dev = Potentiostat(port) # Get list of all test names test_names = dev.get_test_names() # Get parameters for each test for test in test_names: rsp_dict = dev.get_param(test) print('test =', test) print('rsp =', rsp_dict) print()
from __future__ import print_function from potentiostat import Potentiostat import sys if len(sys.argv) > 1: port = sys.argv[1] else: #port = '/dev/ttyACM0' port = '/dev/tty.usbmodem65156601' dev = Potentiostat(port) #first make it safe to enable HV: dev.set_HV(1.0) param_rsp = dev.set_HVEnable('On') print(param_rsp) param_rsp = dev.get_HVEnable() print(param_rsp) param_rsp = dev.set_HVEnable('Off') print(param_rsp) param_rsp = dev.get_HVEnable() print(param_rsp)
from __future__ import print_function from potentiostat import Potentiostat import sys if len(sys.argv) > 1: port = sys.argv[1] else: port = '/dev/ttyACM0' dev = Potentiostat(port) rsp = dev.get_device_id() print('device id: {0}'.format(rsp))
port = '/dev/ttyACM0' # Serial port for potentiostat device datafile = 'data.txt' # Name of output data file test_name = 'constant' # Name of test to run - constant volate voltammetery curr_range = '100uA' # Name of current range for test [-10uA, +10uA] sample_rate = 100.0 # Rate (samples/sec) at which to collect samples test_param = { 'quietValue': 0.0, # Output voltage during quiet peroid 'quietTime': 1000, # Duration of quiet period (ms) 'value': 2.5, # Output volatage (V) durring constant voltage test 'duration': 4000, # Duration of constant voltage test (ms) } # Create Device object and set sample rate, current range and test parameters dev = Potentiostat(port) dev.set_sample_rate(sample_rate) dev.set_curr_range(curr_range) dev.set_param(test_name, test_param) # Run cyclic voltammetry test t, volt, curr = dev.run_test(test_name, display='pbar', filename=datafile) # plot results using matplotlib plt.subplot(211) plt.title('Voltage and current vs time') plt.plot(t, volt) plt.ylabel('potential (V)') plt.ylim(0, test_param['value'] * 1.1) plt.grid('on')
from potentiostat import Potentiostat import sys import matplotlib.pyplot as plt port = '/dev/ttyACM0' num_pulse = 25 # Number of pulses (max = 25) lo_pulse = (500, -0.5) # Low pulse, 500ms @ -0.5V hi_pulse = (2000, 0.7) # High pulse, 2000ms @ 0.7V dev = Potentiostat(port) hw_variant = dev.get_hardware_variant() dev.set_curr_range('100uA') dev.set_sample_rate(300) step_list = [] # Add pulses to step list for i in range(num_pulse): step_list.append(lo_pulse) step_list.append(hi_pulse) # Test name and test parameters test_name = 'multiStep' test_param = { 'quietValue': 0.0, 'quietTime': 0, 'step': step_list, }
from __future__ import print_function from potentiostat import Potentiostat import sys if len(sys.argv) > 1: port = sys.argv[1] else: port = '/dev/ttyACM0' dev = Potentiostat(port) version = dev.get_firmware_version() print('firmware version: ', version)
from __future__ import print_function from potentiostat import Potentiostat import sys if len(sys.argv) > 1: port = sys.argv[1] else: port = '/dev/ttyACM0' dev = Potentiostat(port) period_new = 20 period_old = dev.get_sample_period() dev.set_sample_period(period_new) period_new_resp = dev.get_sample_period() print('period orig: {0}'.format(period_old)) print('period new (sent): {0}'.format(period_new)) print('period new (resp): {0}'.format(period_new_resp))