open-source electrophysiology

We are gauging community interest in adding StimJim to the Open Ephys store. Please let us know if you are interested in purchasing StimJim for your lab.


StimJim : Easy to use, programmable electrical stimulation

simplified-diagram.png
2019-08-31_2097x676_scrot.png

StimJim is a dual-channel electrical stimulator created by Nate Cermak while in Jackie Schiller’s lab at the Technion-Israel Institute of Technology. This device allows the generation of arbitrary current or voltage waveforms for extracellular electrical stimulation or electrode activation. Its galvanically isolated outputs greatly reduce electrical stimulation artifacts during concurrent electrophysiological recordings. The device also features an electrode discharge circuit which is automatically activated between pulses to further further reduce stimulation artifacts and prevent tissue damage due to charge imbalances. Further, integrated circuitry measures all stimulus currents and voltages so that the user can be sure of correct stimulation delivery during experimentation.

Detailed documentation of performance, construction, and usage can be found in the StimJim manuscript. All associated designs are available on the StimJim git repository.

On-the-fly programmable, isolated, charge-balanced stimulation

 
A galvanically isolated stimulation circuit  allows on-the-fly selection of voltage or current stimulation, along with automatic electrode discharge between stimuli.

A galvanically isolated stimulation circuit allows on-the-fly selection of voltage or current stimulation, along with automatic electrode discharge between stimuli.

 
Frequency-dependent responses in an  intracranial self-stimulation  paradigm using StimJim. Electrode is in medial fore-brain bundle.

Frequency-dependent responses in an intracranial self-stimulation paradigm using StimJim. Electrode is in medial fore-brain bundle.

Stimjim can be used for  brain slice stimulation.   (A)  Increasing stimulus intensity through an electrode positioned near the basal dendrites of a pyramidal cell first variably evokes an action potential, and then eventually a second action potential.  (B)  Stimjim’s two channels can be used to provide precise time-delays between different stimulus electrodes. This neuron was stimulated via an electrode positioned in the lateral olfactory tract and another electrode near the basal dendrites. Trials are aligned to the stimulus artifact of the basal stimulating electrode.

Stimjim can be used for brain slice stimulation. (A) Increasing stimulus intensity through an electrode positioned near the basal dendrites of a pyramidal cell first variably evokes an action potential, and then eventually a second action potential. (B) Stimjim’s two channels can be used to provide precise time-delays between different stimulus electrodes. This neuron was stimulated via an electrode positioned in the lateral olfactory tract and another electrode near the basal dendrites. Trials are aligned to the stimulus artifact of the basal stimulating electrode.

StimJim is provided with an Arudino library, which allows low-level control over all circuit functionality and the generation of arbitrary current or voltage waveforms. In addition, the device can be programmed with a high-level sketch that uses this library to produce up to 100 user programmable pulse train waveforms using a simple set of serial commands:

Serial command format for the stimjimPulser.ino script:

[S,T,U,C,D,R] [args...]

where

S - Set pulseTrain parameters. Example:
    S0,1,0,1000,100000; 100,-100,100; -50,50,20;
    1st argument (0) means set parameters for pulseTrain 0.
    2nd argument (1) - mode 1 (voltage) on output channel 0. output modes are as follows:
       0 - voltage
       1 - current
       2 - disconnected (hi-z)
       3 - grounded
    3rd argument (0) - mode 0 (current) on output channel 1
    4th argument (1000) - period of pulse train in microseconds. In the example, generate pulse every 1 ms.
    5th argument (100000) - duration of pulse train in microseconds. In the example, pulse train lasts 100 ms.
    6th, 7th and 8th arguments - pulse stage 0 parameters
        amplitudes for both channels (in uA and mV, depending on mode), and duration in usec.
        In this case, sets amplitudes to 100uA, -100mV, for 100 microseconds
    9th, 10th and 11th arguments - pulse stage 1 parameters
        amplitudes for both channels (in uA and mV, depending on mode), and duration in usec.
        In this case, sets amplitudes to 100uA, -100mV, for 100 microseconds
    etc... for trios of arguments, up to 10 stages total.
T, U - T0 means start PulseTrain[0]. U0 also means start PulseTrain[0]. T and U can be
       used to run two pulse train simultaneously.
C - measure current and voltage offsets by sweeping DAC values and reading output.
D - Print current values of all offsets (ADC, current, voltage)
R - R0,1 means trigger input on channel 0 starts PulseTrain 1.

Licensing

Copyright Nate Cermak & Jonathan P. Newman 2019

This documentation describes Open Hardware and is licensed under the CERN OHL v.1.2.

You may redistribute and modify this documentation under the terms of the CERN OHL v.1.2. (http://ohwr.org/cernohl). This documentation is distributed WITHOUT ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING OF MERCHANTABILITY, SATISFACTORY QUALITY AND FITNESS FOR A PARTICULAR PURPOSE. Please see the CERN OHL v.1.2 for applicable conditions