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
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
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. U0 also means start PulseTrain. 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.
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