Electrochemical Impedance Spectroscopy
pypalmsens.ElectrochemicalImpedanceSpectroscopy
flowchart TD
pypalmsens.ElectrochemicalImpedanceSpectroscopy[ElectrochemicalImpedanceSpectroscopy]
pypalmsens._methods.base.BaseTechnique[BaseTechnique]
pypalmsens._methods.mixins.CurrentRangeMixin[CurrentRangeMixin]
pypalmsens._methods.mixins.PotentialRangeMixin[PotentialRangeMixin]
pypalmsens._methods.mixins.PretreatmentMixin[PretreatmentMixin]
pypalmsens._methods.mixins.VersusOCPMixin[VersusOCPMixin]
pypalmsens._methods.mixins.PostMeasurementMixin[PostMeasurementMixin]
pypalmsens._methods.mixins.MeasurementTriggersMixin[MeasurementTriggersMixin]
pypalmsens._methods.mixins.EquilibrationTriggersMixin[EquilibrationTriggersMixin]
pypalmsens._methods.mixins.MultiplexerMixin[MultiplexerMixin]
pypalmsens._methods.mixins.GeneralMixin[GeneralMixin]
pypalmsens._methods.base_model.BaseModel[BaseModel]
pypalmsens._methods.base.BaseTechnique --> pypalmsens.ElectrochemicalImpedanceSpectroscopy
pypalmsens._methods.base_model.BaseModel --> pypalmsens._methods.base.BaseTechnique
pypalmsens._methods.mixins.CurrentRangeMixin --> pypalmsens.ElectrochemicalImpedanceSpectroscopy
pypalmsens._methods.base_model.BaseModel --> pypalmsens._methods.mixins.CurrentRangeMixin
pypalmsens._methods.mixins.PotentialRangeMixin --> pypalmsens.ElectrochemicalImpedanceSpectroscopy
pypalmsens._methods.base_model.BaseModel --> pypalmsens._methods.mixins.PotentialRangeMixin
pypalmsens._methods.mixins.PretreatmentMixin --> pypalmsens.ElectrochemicalImpedanceSpectroscopy
pypalmsens._methods.base_model.BaseModel --> pypalmsens._methods.mixins.PretreatmentMixin
pypalmsens._methods.mixins.VersusOCPMixin --> pypalmsens.ElectrochemicalImpedanceSpectroscopy
pypalmsens._methods.base_model.BaseModel --> pypalmsens._methods.mixins.VersusOCPMixin
pypalmsens._methods.mixins.PostMeasurementMixin --> pypalmsens.ElectrochemicalImpedanceSpectroscopy
pypalmsens._methods.base_model.BaseModel --> pypalmsens._methods.mixins.PostMeasurementMixin
pypalmsens._methods.mixins.MeasurementTriggersMixin --> pypalmsens.ElectrochemicalImpedanceSpectroscopy
pypalmsens._methods.base_model.BaseModel --> pypalmsens._methods.mixins.MeasurementTriggersMixin
pypalmsens._methods.mixins.EquilibrationTriggersMixin --> pypalmsens.ElectrochemicalImpedanceSpectroscopy
pypalmsens._methods.base_model.BaseModel --> pypalmsens._methods.mixins.EquilibrationTriggersMixin
pypalmsens._methods.mixins.MultiplexerMixin --> pypalmsens.ElectrochemicalImpedanceSpectroscopy
pypalmsens._methods.base_model.BaseModel --> pypalmsens._methods.mixins.MultiplexerMixin
pypalmsens._methods.mixins.GeneralMixin --> pypalmsens.ElectrochemicalImpedanceSpectroscopy
pypalmsens._methods.base_model.BaseModel --> pypalmsens._methods.mixins.GeneralMixin
click pypalmsens.ElectrochemicalImpedanceSpectroscopy href "" "pypalmsens.ElectrochemicalImpedanceSpectroscopy"
click pypalmsens._methods.base.BaseTechnique href "" "pypalmsens._methods.base.BaseTechnique"
click pypalmsens._methods.mixins.CurrentRangeMixin href "" "pypalmsens._methods.mixins.CurrentRangeMixin"
click pypalmsens._methods.mixins.PotentialRangeMixin href "" "pypalmsens._methods.mixins.PotentialRangeMixin"
click pypalmsens._methods.mixins.PretreatmentMixin href "" "pypalmsens._methods.mixins.PretreatmentMixin"
click pypalmsens._methods.mixins.VersusOCPMixin href "" "pypalmsens._methods.mixins.VersusOCPMixin"
click pypalmsens._methods.mixins.PostMeasurementMixin href "" "pypalmsens._methods.mixins.PostMeasurementMixin"
click pypalmsens._methods.mixins.MeasurementTriggersMixin href "" "pypalmsens._methods.mixins.MeasurementTriggersMixin"
click pypalmsens._methods.mixins.EquilibrationTriggersMixin href "" "pypalmsens._methods.mixins.EquilibrationTriggersMixin"
click pypalmsens._methods.mixins.MultiplexerMixin href "" "pypalmsens._methods.mixins.MultiplexerMixin"
click pypalmsens._methods.mixins.GeneralMixin href "" "pypalmsens._methods.mixins.GeneralMixin"
click pypalmsens._methods.base_model.BaseModel href "" "pypalmsens._methods.base_model.BaseModel"
Create potentiometry method parameters.
Electrochemical Impedance Spectroscopy (EIS) is an electrochemical technique to measure the impedance of a system in dependence of the AC potentials frequency.
Although "spectroscopy" implies a frequency sweep, which is the most common measurement, this class provide the flexibility to set the frequency and vary other parameters, such as DC potential and time.
Available modes of EIS measurements:
- a frequency scan at a fixed dc-potential (default EIS)
- frequency scans at each dc-potential in a potential scan
- frequency scans at specified time intervals (time scan)
- a single frequency applied at each dc potential in a potential scan (Mott-Schottky)
- a repeated single frequency at specified time intervals
Methods:
-
from_dict–Structure technique instance from dict.
-
from_method_id–Create new instance of appropriate technique from method ID.
-
to_dict–Return the technique instance as a new key/value dictionary mapping.
Attributes:
-
ac_potential(float) –AC potential in V RMS.
-
begin_potential(float) –The dc-potential at which the measurement starts in V (potential scan only).
-
current_range(CurrentRange) –Set the autoranging current.
-
dc_potential(float) –DC-potential applied during the EIS scan in V.
-
end_potential(float) –The dc-potential at which the scan ends in V (potential scan only).
-
equilibration_time(float) –Equilibration time in s.
-
equilibrion_triggers(EquilibrationTriggers) –Set the trigger at equilibration settings.
-
fixed_frequency(float) –Fixed frequency in Hz (fixed frequency only).
-
frequency_type(Literal['fixed', 'scan']) –Whether to measure a single frequency or scan over a range of frequencies.
-
general(General) –Sets general/other settings.
-
interval_time(float) –The interval at which a measurement iteration should be performed (time scan only).
-
max_equilibration_time(float) –Max equilibration time in s.
-
max_frequency(float) –Maximum frequency in Hz (frequency scan only).
-
measurement_triggers(MeasurementTriggers) –Set the trigger at measurement settings.
-
min_frequency(float) –Minimum frequency in Hz (frequency scan only).
-
min_sampling_time(float) –Minimum sampling time in s.
-
multiplexer(Multiplexer) –Set the multiplexer settings.
-
n_frequencies(int) –Number of frequencies (frequency scan only).
-
post_measurement(PostMeasurement) –Set the post measurement settings.
-
potential_range(PotentialRange) –Set the autoranging potential.
-
pretreatment(Pretreatment) –Set the pretreatment settings.
-
run_time(float) –Minimal run time in seconds (time scan only).
-
scan_type(Literal['potential', 'time', 'fixed']) –Whether a single or multiple frequency scans are performed.
-
step_potential(float) –Potential step size in V (potential scan only).
-
versus_ocp(VersusOCP) –Set the versus OCP settings.
ac_potential
class-attribute
instance-attribute
ac_potential: float = 0.01
AC potential in V RMS.
The amplitude of the ac potential signal has a range of 0.001 V to 0.25 V (RMS). In many applications, a value of 0.010 V (RMS) is used.
begin_potential
class-attribute
instance-attribute
begin_potential: float = 0.0
The dc-potential at which the measurement starts in V (potential scan only).
I.e. the DC potential of the applied sine wave to start the series of iterative measurements at.
current_range
class-attribute
instance-attribute
current_range: CurrentRange = Field(default_factory=CurrentRange)
Set the autoranging current.
dc_potential
class-attribute
instance-attribute
dc_potential: float = 0.0
DC-potential applied during the EIS scan in V.
Also called DC Bias or level. The most common setting for this parameter is 0 V vs. OCP.
end_potential
class-attribute
instance-attribute
end_potential: float = 0.0
The dc-potential at which the scan ends in V (potential scan only).
I.e. the DC potential of the applied sine wave at which the series of iterative measurements ends.
equilibration_time
class-attribute
instance-attribute
equilibration_time: float = 0.0
Equilibration time in s.
equilibrion_triggers
class-attribute
instance-attribute
equilibrion_triggers: EquilibrationTriggers = Field(default_factory=EquilibrationTriggers)
Set the trigger at equilibration settings.
fixed_frequency
class-attribute
instance-attribute
fixed_frequency: float = 1000
Fixed frequency in Hz (fixed frequency only).
frequency_type
class-attribute
instance-attribute
frequency_type: Literal['fixed', 'scan'] = 'scan'
Whether to measure a single frequency or scan over a range of frequencies.
Possible values: 'scan', 'fixed'.
- Scan: a frequency scan is performed starting at the given
max_frequencyto themin_frequency. - Fixed: a single frequency given by 'fixed_frequencya is applied for the given duration or at each potential step or time interval.
general
class-attribute
instance-attribute
Sets general/other settings.
interval_time
class-attribute
instance-attribute
interval_time: float = 0.1
The interval at which a measurement iteration should be performed (time scan only).
The minimum interval time between each data point (frequency_type='fixed') or
between each frequency scan (frequency_type='scan').
We recommend a time higher than the required time to measure the data point or perform the
frequency scan + overhead time. While it's possible to use a shorter time, doing so may
lead to incorrect impedance calculations.
If a measurement iteration takes longer than the interval time the next measurement will not be triggered until after it has been completed.
max_equilibration_time
class-attribute
instance-attribute
max_equilibration_time: float = 5.0
Max equilibration time in s.
The EIS measurement requires a stationary state.
This means that before the actual measurement starts, the sine wave is
applied during max_equilibration_time only to reach the stationary state.
The maximum number of equilibration sine waves is however 5.
The minimum number of equilibration sines is set to 1, but for very
low frequencies, this time is limited by max_equilibration_time.
The maximum time to wait for stationary state is determined by the value of this parameter. A reasonable value might be 5 seconds. In this case this parameter is only relevant when the lowest frequency is less than 1/5 s so 0.2 Hz.
max_frequency
class-attribute
instance-attribute
max_frequency: float = 10000
Maximum frequency in Hz (frequency scan only).
measurement_triggers
class-attribute
instance-attribute
measurement_triggers: MeasurementTriggers = Field(default_factory=MeasurementTriggers)
Set the trigger at measurement settings.
min_frequency
class-attribute
instance-attribute
min_frequency: float = 5.0
Minimum frequency in Hz (frequency scan only).
min_sampling_time
class-attribute
instance-attribute
min_sampling_time: float = 0.5
Minimum sampling time in s.
Each measurement point of the impedance spectrum is performed
during the period specified by min_sampling_time.
This means that the number of measured sine waves is equal to min_sampling_time * frequency.
If this value is less than 1 sine wave, the sampling is extended to 1 / frequency.
So for a measurement at a frequency, at least one complete sine wave is measured.
Reasonable values for the sampling are in the range of 0.1 to 1 s.
multiplexer
class-attribute
instance-attribute
multiplexer: Multiplexer = Field(default_factory=Multiplexer)
Set the multiplexer settings.
n_frequencies
class-attribute
instance-attribute
n_frequencies: int = 11
Number of frequencies (frequency scan only).
Defines the range of frequencies to apply between the max_frequency and
min_frequency. For example, a value of 11 will measure at 11 frequencies,
including both end points.
post_measurement
class-attribute
instance-attribute
post_measurement: PostMeasurement = Field(default_factory=PostMeasurement)
Set the post measurement settings.
potential_range
class-attribute
instance-attribute
potential_range: PotentialRange = Field(default_factory=PotentialRange)
Set the autoranging potential.
pretreatment
class-attribute
instance-attribute
pretreatment: Pretreatment = Field(default_factory=Pretreatment)
Set the pretreatment settings.
run_time
class-attribute
instance-attribute
run_time: float = 10.0
Minimal run time in seconds (time scan only).
For example, if a frequency scan takes 18 seconds and is measured
at an interval of 19 seconds for a run_time of 40 seconds, then
three iterations will be performed.
scan_type
class-attribute
instance-attribute
scan_type: Literal['potential', 'time', 'fixed'] = 'fixed'
Whether a single or multiple frequency scans are performed.
Possible values: 'potential', 'time', 'fixed'.
- Fixed scan: perform a single scan (default).
- Time scan: scans are repeated for a specific amount of time at a specific interval.
- Potential scan: scans are repeated over a range of DC potential values. A potential scan should not be performed versus the OCP.
step_potential
class-attribute
instance-attribute
step_potential: float = 0.01
Potential step size in V (potential scan only).
This sets the increment to be used between begin_potential and end_potential.
versus_ocp
class-attribute
instance-attribute
Set the versus OCP settings.
from_dict
classmethod
Structure technique instance from dict.
Opposite of .to_dict()
Source code in src/pypalmsens/_methods/base.py
35 36 37 38 39 40 | |
from_method_id
classmethod
from_method_id(id: str) -> BaseTechnique
Create new instance of appropriate technique from method ID.
Source code in src/pypalmsens/_methods/base.py
42 43 44 45 46 | |