Frequently Asked Questions (FAQ)

What are Primitives?

The core philosophy behind our control concept is breaking down all electrochemical methods into their most basic primitives - primarily ramps and polarizations. These primitive operations serve as fundamental building blocks that you can combine and sequence to create a wide variety of electrochemical experiments, ranging from simple polarizations at different potentials to complex multi-step protocols.

This innovative approach allows researchers to design sophisticated electrochemical experiments by combining these fundamental components. You can assemble these primitives using the Custom Experiment Builder, which provides a visual programming interface that eliminates the need for traditional programming knowledge when designing experiments. For even greater flexibility in assembling primitives, you can use our Python or C++ APIs.

Zahner Lab experiments differ from primitives because they often combine multiple primitives or use preset parameters that aren’t displayed to the user. In contrast, the Custom Experiment Builder and APIs give you direct access to individual primitives. For example, the ramp primitive is available across software components as:

Zahner Lab

At the end of each Zahner Lab method, the blocks/primitives that make up the method are explained so that they can be assembled exactly as in the Zahner Lab with the Custom Experiment Builder.

Custom Experiment Builder

APIs

Potentiostatic & Galvanostatic

The system supports both potentiostatic and galvanostatic operation modes, which you configure when switching on the potentiostat. The potentiostat can only switch between potentiostatic and galvanostatic when the potentiostat is switched on. The potentiostat must be switched off and on again to change the mode. Your choice of mode at switching on determines how all subsequent primitives are executed.

This means that Zahner Lab experiments and primitives differ because Zahner Lab experiments are listed separately for potentiostatic and galvanostatic operation modes with different names.

Important

A concrete example: if you are using galvanostatic mode and execute the Cyclic Voltammetry primitive (zahner_link.meas.CvJob, CV Block), then although it is called CV, it is also executed in galvanostatic mode and the vertexes are currents in amperes. The user must then switch off the potentiostat for a potentiostatic CV if they are using galvanostatic mode and then switch it back on again in potentiostatic mode for a potentiostatic CV.

Primitives vs Wave

The ramp and polarization primitives are designed for slower processes, where they can be executed sequentially without concern for dead time. The polarization primitive has a minimum runtime to prevent execution that’s too fast, where dead time cannot be neglected. For example, pulse methods cannot be combined with polarization because the dead time is too long. For these pulse methods, the wave primitive is used internally.

The wave primitive is designed for fast processes. This method accepts a list of current or voltage values, which are then output at a constant value rate. You can also set the measurement output data rate for the configured channels independently of the value rate.

Since this method is designed for fast processes, autoranging is not supported and all values are either potentiostatic or galvanostatic. This limitation exists because the potentiostat takes too long to change ranges or operating modes, which conflicts with the fast-processing concept of the wave primitive.

Sampling Rate vs Output Data Rate

When working with primitives, you control the output data rate (ODR) - the frequency at which you receive measurement data points from the instrument. The ODR determines how often measurement results are delivered to your application.

Lower ODR settings allow the IM7 to perform more internal averaging between output points, which reduces noise in your measurements. Higher ODR settings provide more frequent data updates but with less internal averaging.

The instrument automatically determines its internal sampling rate based on your configured measurement channels. You can configure these channels via API or Zahner Lab, as described in the Channels chapter. This sampling rate is typically much higher than your specified ODR. The device continuously samples at this high internal rate, averages multiple samples together, and then delivers the averaged result at your chosen ODR. For optimal data quality, you should only measure the channels you actually need rather than all available channels, as enabling unnecessary channels decreases the internal sampling rate and reduces both averaging capability and overall data quality.

Example: During a slow OCV scan with a 10 Hz ODR, the device might sample internally at 100 kHz. In this case, every data point you receive represents the average of 10,000 internal measurements, delivered 10 times per second.

Autoranging

Most primitives support autoranging, which automatically adjusts the current measurement range based on the signal being measured. However, changing current ranges takes time - typically several tens of milliseconds, depending on your specific instrument.

Because of this delay, autoranging only works effectively with slower measurement processes. For fast electrochemical processes, autoranging can actually cause you to miss important data.

Example: Consider Cyclic Voltammetry (CV) with very fast scan rates. When an electrochemical reaction occurs and current begins flowing, the instrument detects this and switches to an appropriate current range. During the range-switching period, the instrument cannot measure current. Meanwhile, the potential scan continues, so by the time the range change is complete, the current peak may have already passed.

Important

If you know the expected current range for your experiment, it is recommended that you disable autoranging and select the appropriate range manually. This approach provides better data quality and prevents missing transient events.

Warm-up & DC Calibration

All Zahner instruments require at least 30 minutes of warm-up time before you begin taking measurements. This warm-up period is essential for the instrument to reach optimal precision and stability.

After the warm-up period, we recommend performing a DC calibration to ensure measurement accuracy. The IM7 performs this internal DC calibration automatically upon execution of the command, no external connections are required. The IM7 never performs automatic calibrations, these must always be triggered manually. This differs from Thales, where automatic calibrations were performed at various points, such as when selecting an EPC device.

Without proper calibration, measurement precision may be compromised. Additionally, performing DC calibration on a cold device will result in lower quality measurement data. Calibration takes approximately three to five minutes, depending on the number of add-on cards used.

EIS Waves & Duration

To optimize measurement time and data quality for each frequency point in EIS, two parameters are used: waves and duration.

  • waves sets the minimum number of sine wave cycles to measure.

  • duration sets the minimum time (in seconds) for the measurement.

There are separate settings for the settling period before measurement and for the actual measurement:

  • pre_waves and pre_duration: Control the settling period before the main measurement.

  • meas_waves and meas_duration: Control the main measurement period.

The instrument always measures at least meas_waves cycles. If the meas_duration has not been reached after those cycles, measurement continues until the time limit is met. At low frequencies, the number of measured waves will often be greater than the duration in seconds.

Examples:

  • 1 Hz measurement frequency, meas_duration = 9, meas_waves = 3 ➡️ 9 waves are measured (since 3 waves would only take 3 seconds)

  • 1 Hz measurement frequency, meas_duration = 0, meas_waves = 3 ➡️ 3 waves are measured

Stop Conditions

Stop conditions allow you to automatically terminate a primitive before its normal completion based on specific criteria you define. This feature adds intelligent control to your experimental protocols, making them more responsive to real-time conditions.

How Stop Conditions Work

Stop conditions are evaluated at each data point according to your specified output data rate (ODR). This means your ODR setting directly affects how quickly a stop condition can be detected and acted upon. For time-sensitive stop conditions, make sure to set an appropriately fast ODR.

Practical Applications

Stop conditions enable sophisticated experimental designs that adapt to your sample’s behavior:

  • Constant current charging: Use a zahner_link.meas.PogaJob with a voltage-based stop condition to automatically end charging when your target voltage is reached

  • Open circuit voltage monitoring: Set up an OCV scan that stops automatically once the voltage stabilizes within your specified tolerance

  • Safety limits: Prevent damage by stopping experiments when current, voltage, or other parameters exceed safe ranges

Available Stop Conditions

Complete documentation for stop conditions is available for each platform:

Impedance and Channel Statistics

The IM7 provides comprehensive statistics for impedance measurement results. Each channel involved in impedance measurements includes total harmonic distortion (THD) and drift metrics.

For impedances and phases calculated using two channels, the system provides standard deviation and drift statistics for each.

THD

Total Harmonic Distortion (THD) quantifies signal distortion caused by harmonics. Using standard signal processing calculations, THD is defined as the ratio of the sum of all harmonic component powers to the fundamental frequency power.

Standard Deviation

Standard deviation measures the variability or dispersion of impedance measurements at a specific frequency point.

This calculation follows standard scientific practices. However, standard deviation can only be determined when multiple waves per impedance point are measured.

Drift - Channels

Calculated as a percentage of the ADC full scale, normalized as drift per period of the applied sine wave. (100% = 1.0 = Full Scale per Period)

Drift - Impedance & Phases

Drift represents the total amount of drift that occurred during the measurement of a single impedance point at a specific frequency, excluding the prewave period.

Values are expressed in Ohms or Degrees of drift per measurement of a single impedance point.