Git Product home page Git Product logo

unofficial-labview-driver-for-ec-lab-biologic-potentiostats's Introduction

Unofficial LabVIEW Driver for EC-Lab BioLogic Potentiostats

Unoffcial LabVIEW driver for BioLogic potentiostats/galvanostats designed for ease of intergration to LV projects. I stress that this is designed for intergration and thus it is not a complete LabVIEW out of the box solution. This means you will need the EC-Lab OEM Development Package along side you as well as an understanding of the documentation provided with it to get up and running.

With that said, getting started is fairly straightforward. The driver follows this pattern:

Connect ➡ Set Channel ➡ Load Technique ➡ Start ➡ Acquire Data ➡ Process Data ➡ Stop ➡ Disconnect

You can open the Main.vi VI to see an example of how it works at a higher level.

Connect.vi handles initalisation and connects to the instrument.

Loading a Technique is also fairly simple. Just set the channel you want to work on using Set Channel.vi, connect the type-def associated with the technique you wish to use to the Technique Parameters terminal of the Load Technique.vi VI and select your technique on the enum. The Load Technique.vi VI will check to see if you connected a valid and supported technique then format the parameters accordingly, if the check is passed. If your device fails the check, an error will be produced and will propagate throughout the error wire.

Start Channel.vi starts the aquisition on the specified channel.

The Acquie Data.vi VI will return the channel data with minimal processing. This data is hard to read unless you have the documention located on the EC-Lab OEM Development Package . The output is a cluster containing the meta-data for the data (Data Information), Current Values and Process Data. This is for you to implement you own custom processing solution. There is a built-in processing solution in the form of a VI called Process Data.vi. This VI will not only output the column header text, but it will also do additional maths such as producing extra columns for -Im(Z) and Re(Z) used for Nyquist plots in the PEIS technique.

Stop Channel.vi stops the aquisition on the specified channel.

Disconnet.vi cleans and disconnects the instrument.

NOTE: Not all devices and techniques are supported.

Minimum Requirements

NOTE: 64-bit LabVIEW is not supported. See Issue #1 for further details

Supported Techniques

  • OCV - Open Circuit Voltage
  • CV - Cyclic Voltammetry
  • CA - Chronoamperometry
  • CP - Chronopotentiometry
  • PEIS - Potentio Electrochemical Impedance Spectroscopy
  • GEIS - Galvano Electrochemical Impedance Spectroscopy

Supported Devices

  • VMP3 series - theoretically should be supported
  • SP-300 series - not supported, a little extra work is needed to add support for these. I don't have access to this hardware. The Connect.vi VI will detect these and produce an error.

Developer Notes

Please feel free to contribute to the project. For unsupported Techniques/Devices I am happy to try and add them on request. However, I will do this on my spare time and will not adhere to any deadlines, nor will I accept any form of payment. This is just a hobby 😊.

I am also happy to answer any questions regarding the software architecture of this driver to the best of my knowledge.

Showcase

Showcase

Example 1 - Single Channel Acquisition

Single Channel Acquisition.vi:

Block Diagram Front Panel

Example 2 - Multi-Channel Aquisition

Multi-Channel Acquisition.vi:

Block Diagram

Acquiring data from more than 1 channel takes advantage of LabVIEW's data flow model and OOP. Each branch is a copy of the object at that point. For more information on OOP and Dataflow see NI's documentation titled LabVIEW Object-Oriented Programming: The Decisions Behind the Design.

You can wrap the duplicate code on the block diagram above in a reentrant SubVI and launch it asynchronously. This will achieve the same results.

In the future I wish to create an abstraction layer for multi-channel aquisition. I have a few ideas I'm mulling over.

Example 3 - Application (WIP)

Application (WIP).vi:

Block Diagram

This a the front panel of an example VI that I will be building over sometime to serve as a proper showcase on how to properly utilise the drivers. As long as the (WIP) flag is showing on the VI's name, the VI will not be complete. Currently it's just front panel controls. There is no date I can supply as to when it will be finished.

As always, feel free to contribute.


unofficial-labview-driver-for-ec-lab-biologic-potentiostats's People

Contributors

fisothemes avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Forkers

mlackner

unofficial-labview-driver-for-ec-lab-biologic-potentiostats's Issues

Error Code -6 (function failed) with `BL_LOADTECHNIQUE_LV`

Hi,

I use the example Main.vi with an SP-200 connected via USB. Connecting the instrument seems to work fine (I can retrieve the Device Information). However, the Load Technique VI throws an error (error code -6, function failed). The cause is the call to BL_LOADTECHNIQUE_LV. Happens for every supported technique.

Do you have any idea what could cause this?

Here are the technique parameters for the CA technique (flattened to json):

[
    {
        "Parameter Label": "tb",
        "Parameter Type": 2,
        "Parameter Value": 936490775,
        "Parameter Index": 0
    },
    {
        "Parameter Label": "vs_initial",
        "Parameter Type": 1,
        "Parameter Value": 1,
        "Parameter Index": 0
    },
    {
        "Parameter Label": "Voltage_step",
        "Parameter Type": 2,
        "Parameter Value": 0,
        "Parameter Index": 0
    },
    {
        "Parameter Label": "Duration_step",
        "Parameter Type": 2,
        "Parameter Value": 1065353216,
        "Parameter Index": 0
    },
    {
        "Parameter Label": "vs_initial",
        "Parameter Type": 1,
        "Parameter Value": 1,
        "Parameter Index": 1
    },
    {
        "Parameter Label": "Voltage_step",
        "Parameter Type": 2,
        "Parameter Value": 1036831949,
        "Parameter Index": 1
    },
    {
        "Parameter Label": "Duration_step",
        "Parameter Type": 2,
        "Parameter Value": 1065353216,
        "Parameter Index": 1
    },
    {
        "Parameter Label": "vs_initial",
        "Parameter Type": 1,
        "Parameter Value": 1,
        "Parameter Index": 2
    },
    {
        "Parameter Label": "Voltage_step",
        "Parameter Type": 2,
        "Parameter Value": 1045220557,
        "Parameter Index": 2
    },
    {
        "Parameter Label": "Duration_step",
        "Parameter Type": 2,
        "Parameter Value": 1065353216,
        "Parameter Index": 2
    },
    {
        "Parameter Label": "Step_number",
        "Parameter Type": 0,
        "Parameter Value": 2,
        "Parameter Index": 0
    },
    {
        "Parameter Label": "N_Cycles",
        "Parameter Type": 0,
        "Parameter Value": 0,
        "Parameter Index": 0
    },
    {
        "Parameter Label": "Record_every_dI",
        "Parameter Type": 2,
        "Parameter Value": 925353388,
        "Parameter Index": 0
    },
    {
        "Parameter Label": "Record_every_dT",
        "Parameter Type": 2,
        "Parameter Value": 1008981770,
        "Parameter Index": 0
    },
    {
        "Parameter Label": "I_Range",
        "Parameter Type": 0,
        "Parameter Value": 8,
        "Parameter Index": 0
    },
    {
        "Parameter Label": "E_Range",
        "Parameter Type": 0,
        "Parameter Value": 3,
        "Parameter Index": 0
    },
    {
        "Parameter Label": "Bandwidth",
        "Parameter Type": 0,
        "Parameter Value": 5,
        "Parameter Index": 0
    },
    {
        "Parameter Label": "em",
        "Parameter Type": 0,
        "Parameter Value": 0,
        "Parameter Index": 0
    },
    {
        "Parameter Label": "ce",
        "Parameter Type": 0,
        "Parameter Value": 0,
        "Parameter Index": 0
    }
]

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.