Getting Started
This section provides a short guide to help you begin using your Rodeostat with the iorodeo-potentiostat library.
Creating a device object
The first step to controlling your Rodeostat is creating a device object. In order to do this you will need to know the name of the port on the computer which is associated with the Rodeostat. The name of this port will vary depending on your operating system, what other devices are connected to your computer, etc. On linux this port will be named something like /dev/ttyACM0, /dev/ttyACM1, …, etc. On Windows it will be named something like COM1, COM2, etc.
A device object can be created as follows
from potentiostat import Potentiostat
pstat = Potentiostat('/dev/ttyACM0')
This will open a connection which can be used to communicate with the Rodeostat.
Note
In order to reduce repetition, in all of the examples which follow, we will assume that you have already created a Potentiostat device object, named pstat, using the above command.
Getting list of voltametric tests
A list of all of the voltammetric tests supported by the current firmware on
the Rodeostat can be obtained using the
get_test_names()
method.
test_names = pstat.get_test_names()
This method will return a list, such as that given below.
test_names = ['cyclic', 'sinusoid', 'constant', 'squareWave', 'linearSweep', 'chronoamp', 'multiStep']
Each string in the list is name of a voltammetric test which can be run by the firmware on the Rodeostat.
Getting voltammetric test parameters
The current parameter values used for a particular voltammetric test are stored
in memory on the potentiostat. You can retrieve the current values for these
parameters from the device using the get_param()
method.
For example, you can get the current parameter values for the linearSweep test using the following command.
param = pstat.get_param('linearSweep')
This method returns a dictionary containing the all of the the parameters for the specified test and their current values. For example, for the linearSweep test result would be something like the dictionary shown below.
param = {'quietTime': 0, 'quietValue': 0.0, 'finalValue': 0.5, 'startValue': -0.5, 'duration': 2000}
In the above output all time values, such as quietTime and duration, are given in (ms) and all output voltages, such as quietValue, startValue and finalValue, are given in (V). For a complete description of the parameters for all voltammetric see the Voltametric Tests section of the documentation.
Setting voltammetric test parameters
The set_param()
method can be used to set the
parameters used for a specific voltammetric test. The parameters are stored in
RAM (voltile memory) on the Rodeostat. They will retain their value, for the
specified test, as long as the Rodeostat has power or until changed via
another call to the set_param()
method.
The following example demonstrates how to set the parameters for the linearSweep test.
param = {'quietTime': 0, 'quietValue': 0.0, 'finalValue': 0.5, 'startValue': -0.5, 'duration': 2000}
pstat.set_param('linearSweep',param)
In the param dictionary above all time values, such as quietTime and duration, are given in (ms) and all output voltages, such as quietValue, startValue and finalValue, are given in (V). For a complete description of the parameters for all voltammetric see the Voltametric Tests section of the documentation.
Note
The parameter values for all voltammetric test are stored in volatile memory. Because of this, after a power cycle of the Rodeostat, all parameters will revert to their default values.
Getting/setting measurement current range
The Rodeostat has four programmable current measurement ranges. The
exact values for the avialable ranges is determined by the hardware variant of
the device you are using. The library will automatically
detect the hardware variant of the device for you and you can retrieve the
current ranges available on your device using the
get_all_curr_range()
method.
curr_range_list = pstat.get_all_curr_range()
This will return a list of strings representing the available current ranges such as that given below.
curr_range_list = ['1uA', '10uA', '100uA', '1000uA']
To get the current measurement range which your device is currently using
you can use the the get_curr_range()
method.
curr_range = pstat.get_curr_range()
This will return a string representation of the current measurement range.
curr_range = '10uA'
In order to set the desired current measurement range on your device you can
use the set_curr_range()
method. For example,
to change the current range to 100uA you could do the following.
pstat.set_curr_range('100uA')
Note
All current ranges supported by the device are bipolar and measure both positive and negative currents. For example, the 10uA current range can measure current in the range -10uA to +10uA.
Getting/setting sample rate
When running a test the device returns measurements at a specified rate
(samples/sec) for the duration of the test. You can use the
get_sample_rate()
method to retrieve the
current value of sample rate used for measurements.
sample_rate = pstat.get_sample_rate()
This method will return the current sample rate, in samples/sec, as floating point number.
If you want to change the sample rate used for measurements you can use the
set_sample_rate()
method. For example, to set the
current sample rate to 50 samples/sec you would do the following.
pstat.set_sample_rate(50.0)
As an alternative you can also set/get the time between samples or sample
period. The sample period will alwasy be equal to 1/sample_rate. The
get_sample_period()
method returns the
sample_period in seconds.
sample_period = pstat.get_sample_period()
Similarly, the set_sample_period()
method sets
the sample period (given in seconds).
pstat.set_sample_period(0.02)
Running voltammetric tests
Voltammetric tests can be run using the
run_test()
method. For example, in order to
run the cyclic voltammetry test you could do the following.
t, volt, curr = pstat.run_test('cyclic')
This method will return lists which contain the measurement times (s), voltages (V) and currents (uA) respectively. The test will be run with the parameter values set in the potentiostat’s memory for the specified test.
This method takes several optional keyword arguments. For example, if you want to save the data to a file while the test proceeds you can specify the file name using the filename keyword.
t, volt, curr = pstat.run_test('cyclic', filename='data.txt')
The param keyword argument lets you specify the value of the parameters to use for the test. In this case the parameter values will first be set to the values specified and then the Rodeostat will run the test.
my_param = {
'quietValue' : 0.0,
'quietTime' : 1000,
'amplitude' : 2.0,
'offset' : 0.0,
'period' : 1000,
'numCycles' : 5,
'shift' : 0.0,
}
t, volt, curr = pstat.run_test('cyclic', param=my_param)
For more complete documentation on the
run_test()
method see the API Reference
section. For a more complete description of the various voltammetric tests see
Voltametric Tests section.
Note
Note, when running tests with the run_test()
method the output voltage range is automatically be selected by the firmware
prior to running the test. Thus you do not need to specifically select the
output voltage range before using this method.
Setting output voltage range
Under certain circumstances, such as when using manual/direct control rather
than a pre-programmed test proceedure, you may want set the output voltage
range of the Rodeostat directly. This can be done using the
set_volt_range()
method.
You can retrieve the list of available output voltage ranges supported by the
device using the get_all_volt_range()
method.
volt_range_list = pstat.get_all_volt_range()
This will return a list of strings representing the available voltage ranges like that below
volt_range_list = ['1V', '2V', '5V', '10V']
To set set the voltage range you can use the
set_volt_range()
method. For example, to set
the voltage range to ‘2V’ you would do the following.
pstat.set_volt_range('2V')
Note
The output voltage ranges supported by the potentiostat are bipolar i.e., they including both negative and positive voltages. For example the 2V voltage range allows output voltages from -2V to +2V.
Manual/direct operation
When operating the potentiostat manually you set the output voltage directly
using the set_volt()
method rather than using
a pre-programmed voltammetric test. For example, the following command will set
the output voltage (potential between working and reference electrodes) to 0.75V
pstat.set_volt(0.75)
The potentiostat will maintain this output voltage until you change it with
another call to set_volt()
or you run a test
with the run_test()
method. In a similar
manner, during manual operation, you can use the
get_curr()
method to get a single immediate
measurement of the current
curr = pstat.get_curr()
The current is returned as floating point number with units of (uA).
Using these two methods described above,
set_volt()
and
get_curr()
, you can easily program simple time
varying voltametric tests - provided that the timing requirements are not too
demanding. For a more detialed example demonstrating manual control see the
Worked Examples section.
Note
Prior to operating the potentiostat manually/directly you will want to set the output voltage range such that it spans all voltages will will occur during your test. Setting the output voltage outside of the range will result in clipping of the output to the maximum/minimum value in the voltage range. Also, changing the output voltage range during a test is inadvisable as it may cause glitch in the output voltage as the Rodeostat switches from one range to the other.
Setting device identification number
An identifying number can be assigned to the Rodeostat using the
set_device_id()
method. For example, the
following command will set the device identification number to 5.
pstat.set_device_id(5)
This idenitfying number is stored in non-volatile memory and thus will maintain its value even when the device loses power. This is useful in situations where a program controlling more than one Rodeostat at a given time and needs a simple mechanism to disambiguate them.
The device identification number can be read using the
get_device_id()
method as shown below.
device_id = pstat.get_device_id()