About Pulse Pal
Pulse Pal is an open source device that generates precise sequences of voltage pulses.
It was developed in a research setting, primarily to control stimuli in neurophysiology and behavioral research.
Pulse Pal offers a set of features that improve upon and complement commercial stimulators (i.e. Master8, PSG-2, Pulsemaster, MultiStim).
As an open source device, Pulse Pal provides a unique combination of technical flexibility and affordability for precise stimulus control.
A paper describing Pulse Pal was published in Frontiers in Neuroengineering. The paper contains measures of performance and reliability.
Channel types
Pulse Pal delivers pulses through four output channels, in response to signals received on two trigger channels.
Output channels can deliver sequences of analog voltage pulses. Each channel can be programmed to deliver a unique pulse sequence, and can be controlled by any set of the two trigger channels.
Trigger channels read a digital voltage trigger (usually 3.3 or 5 volts) and instruct linked output channels to begin playing their pulse sequences. The parameter guide describes several ways Pulse Pal can interpret the voltage signal supplied to the trigger channels.
Pulses
In Pulse Pal, a monophasic pulse has three parameters (fig 1):
1. Pulse time (with respect to sequence trigger)
2. Voltage (-10V to +10V, 70mV resolution)
3. Duration (0.0001s - 3600s, 0.000005s resolution)
Figure 1: Pulse parameters
Pulse duration is always specified parametrically for an entire train of pulses.
Pulse time and voltage can be automated with train parameters, to create common pulse trains used in neurophysiology.
Pulse time and voltage can also be specified explicitly for each pulse, up to the limit of Pulse Pal's internal memory.
Parametric pulse trains
The parameters that define pulse trains are explained in depth in the parameter guide.
In addition to pulse parameters, pulse trains are described by:
Pulse train onset latency (with respect to trigger)
Pulse train duration
Pulse burst duration (a train can be gated to create regular pulse bursts)
Pulse burst interval (time between bursts)
Inter-pulse interval (time between pulses)
Individual pulses in parametric trains can be specified as monophasic or biphasic.
A monophasic pulse (i.e. Figure 1) has a single voltage and pulse duration.
A biphasic pulse follows the first pulse (phase) with an optional inter-phase interval, and then a second phase with independently specified duration and voltage.
Custom pulse trains
Custom pulse trains allow you to specify the onset time and voltage of each pulse instead of an inter-pulse interval and phase voltages that apply to the entire train.
In a custom sequence, pulses that end when the next pulse begins merge into each other to create more complicated waveforms (fig 2).
Figure 2: A train of continuous pulses. Relative voltages for pulses 1-4 are: 1,3,3,-1.
Memory slots are available for 2 custom pulse trains of 1,000 pulses each.
Each custom pulse train can be linked to play on any combination of the four output channels.
Custom pulse times can be used to control parametrically defined bursts of pulses instead of individual pulses.
A custom train can be looped, (played repeatedly) for a specified duration.
Programming interfaces
Pulse Pal appears to its governing computer as a virtual serial port. This permits easy integration with several programming languages. The low level serial interface is documented here.
Pulse Pal's original software client is written for MATLAB. APIs are also provided for C++ and Python. A labview API is scheduled for development in 2014. If you are interested in contributing code this project, please contact us.
Programming: stand-alone
Pulse Pal has a clickable thumb joystick, to control the device when Pulse Pal is used without a governing computer. Menu items are displayed on a high-contrast OLED screen.
The thumb controller can be used to:
Adjust parameters
Trigger channels
Deliver individual example pulses
Abort ongoing stimulation at any time
Reset the device