|
Functional electrical Stimulator "COMPEX MOTION" |
|
T. Keller\, M. R. Popovic**,
|
|
*ParaCare -
Institute for Rehabilitation and Research, |
SUMMARY
|
Research groups in the field of
Functional Electrical Stimulation (FES) are often confronted with the fact that
existing and commercially available
This paper presents a newly developed firmware and programming software for the commercial Compex 2 stimulator that enhances the stimulator's versatility and capabilities from a medical and therapeutic device to a neuroprosthesis and research tool. With the new firmware and a new graphical user interface software the stimulator can now be used to develop various custom-made neuroprostheses, neurological assessment devices, muscle exercise systems, and experimental setups for physiological studies. The new stimulator, called "Compex Motion", can be programmed to generate any arbitrary stimulation sequence that can be controlled or regulated by various external sensors, sensory systems or laboratory equipment. By interconnecting two or more Compex Motion stimulators the number of stimulation channels can be increased to multiples of four channels (8,12,16,20,…). The stimulation sequences and the control strategies are stored on exchangeable credit-card sized memory chip-cards read by the stimulator. The chip-cards are programmed using a standard PC. The function of the stimulator is changed instantaneously by simply inserting a different chip-card. The stimulator has four biphasic current regulated stimulation channels and two general purpose analog input channels that can be configured to measure the output voltage of a variety of sensor systems like goniometers, inclinometers, gyroscopes, or EMG sensors. For real-time EMG control of the stimulation patterns an EMG processing algorithm with software stimulation artifact blanking was implemented. The Compex Motion stimulator is manufactured by the Swiss company Compex SA and is currently undergoing clinical trials.
Several portable microprocessor or microcontroller FES stimulators for transcutaneous stimulation have been developed to improve upper and lower limb functions in spinal cord injured (SCI) and stroke subjects /1-4/. Most of these systems were built for one specific application and did not have an open architecture. In general the setup options were limited, device dependent and the control options were fixed. The preprogrammed stimulation patterns were stored internally. A fixed set of sensors combined with a control algorithm triggered the preprogrammed stimulation sequences. Some systems allowed changes of the stimulation intensity either during the initialization phase or during stimulation on-line. In some cases, a separate PC software allowed one to download new settings for trigger levels and stimulation sequences.
In this article we are describing a new generation of transcutaneous electric stimulators called "Compex Motion". This stimulator represents further evolution and expansion of the already existing ETHZ-ParaCare FES system /5,6/. The new portable stimulator "Compex Motion" exceeds the limitation of other systems by providing to the user a high flexibility in the programming of the stimulation sequences, the control schemes, and the choice of the man-machine interfaces.
"Compex Motion" is a microcontroller based electric stimulator with four stimulation channels (see Table 1) used for transcutaneous electrical stimulation of selected muscles or muscle groups. The stimulator can deliver current regulated stimulation pulses of maximal 100 mA with a rise time of 3 ms. It has two input channels A and B, and a special purpose port C. A and B can be configured either as analog or digital input channels with a voltage range of 0-5 V. The special purpose port C is used to interconnect two or more stimulators, to serially communicate with a PC, or to trigger the stimulator using a push button. By interconnecting two or more stimulators the number of stimulation channels can be increased from four to multiples of four channels (8,12,16,…). In such an arrangement, one of the stimulators operates as a master stimulator and all other stimulators operate as slave stimulators. The master stimulator ensures that all interconnected stimulators operate synchronously.


|
Figure 1: Compex Motion
electric stimulator: 1) stimulator; 2) keypad with 9 push
buttons; 3) three memory chip-cards; 4) two EMG sensors; and 5) two
stimulation electrodes |
Figure 2: Main window
of the Compex Motion GUI software. It shows four horizontal timelines
associated with each stimulation channel (center and right), pulse amplitude
and pulse width safety limits (left), pulse type settings (center bottom),
memory chip-card functions (right bottom), and setup functions (left bottom). |
The Compex Motion stimulator has a rechargeable NiMH battery that provides eight hours of continuous stimulation and is recharged in less than two hours. The stimulator also has a dot matrix LED display that provides a visual interface between the user and the stimulator. The user can interact with the stimulator via nine push buttons on the stimulator (see Figure 1) or via any other user interfaces that are connected to port A, B and C. Currently, EMG sensors and a push button can be purchased with the stimulator. These interfaces can be used to control the stimulation sequences and to regulate the stimulation intensities. Additional stimulator features, accessories, and hardware data are provided in Table 1.
The Compex Motion stimulator is programmed with a Graphical User Interface (GUI) software that is installed on a PC (see Figure 2). The GUI software used a “drag-and-drop” technique to program the stimulation sequences. This is done by sequentially placing icons called primitives on a timeline that describes the chronological sequence of the tasks that will be carried out by a stimulation channel. There are four such time lines, one for each stimulation channel. A total of 56 primitives are available in order to take the full advantage of the full flexibility of the system (see Table 2). There are two classes of primitives: global and local. Global primitives represent tasks that affect all active stimulation channels while local primitives affect only the specified channel. The drag-and-drop technique make it easy to compose rapidly precisely timed stimulation sequences including customized pulse width ramps, loops, branches, pauses, user interaction rules, and text display.
The primitives used for user interactions define how a subject must interact with the stimulator and can be customized to individual needs. For example the user can initiate or terminate a stimulation sequence via a predetermined analog or digital sensor signal curve profile detected at the input port A or B. Two different sensor signal curve profiles can be used to select between two different stimulation sequences. Sensors such as EMG sensors, force sensitive resistors, gyroscopes, foot switches, and push buttons have already been successfully applied with the user interaction primitives.
Continuous regulation of the stimulation intensity can be achieved in real-time using an analog input signal, i.e. the pulse amplitude depends on the voltage level of the input signal. This dependence can be arbitrarily defined by a lookup table that can be imported as an ASCII file and can be edited both graphically and numerically. Each stimulation channel has its own lookup table. Thus far sensors such as EMG sensors, sliding resistors, and potentiometers have already been successfully used with this control strategy.
Table 1 shows the specification of the Compex Motion hardware. Table 2 lists the available primitive types. Using the drag-and-drop technique these primitives are stacked by the programmer in any desired chronological order in a timeline, which form the stimulation sequences.
|
Feature |
Characteristics |
||
|
4
stimulation channels |
Current
regulated |
|
|
|
|
Pulse
amplitude |
Range: 0-100 mA |
resolution: 1 mA
(8 Bit) |
|
|
Pulse
width |
Range: 0-16 ms |
resolution: 500 hs (14 Bit) |
|
|
Stimulation
frequency |
Range: 1-100 Hz |
resolution: 1 Hz (8 Bit) |
|
2
digital input ch. (A & B) |
|
Range: 0-5 V TTL |
|
|
2
analog input ch. (A & B) |
Max sampl.
freq.: 8
kHz |
Range: 0-5 V |
resolution: 20 mV (8 Bit) |
|
1
special purpose port (C) |
Push
button, serial port communication, and stimulator interconnection |
||
|
Working
regimes |
Master/slave |
||
|
Stimulation
pulses |
Monophasic/biphasic;
monopolar/bipolar; and alternating/non-alternating |
||
|
Microcontroller |
Motorola
HC11 |
||
|
dot
matrix LED display |
No. pixels: 165 x 64 |
|
dimensions: 72 mm x 30 mm |
|
chip-card |
Can store up to 255
primitives per channel and all relevant stimulation parameters |
||
|
NiMH battery |
Rechargeable,
8 h of continuous stimulation |
||
|
Stimulator
dimensions |
148
mm x 80 mm x 30 mm & 420 g |
||
|
Accessories |
AC/DC
adapter, push button, 4 cables, self-adhesive electrodes, EMG sensor, ... |
||
Table 1: Compex Motion
data sheet specifications
|
Pulse Width Primitives: |
||
|
Icon |
Name |
Description |
|
|
constant
pulse width |
Generates
a pulse with a constant width (4 different values are available per channel) |
|
|
pulse
width ramp-up |
Profile
for changing the pulse width (2 different profiles are available per
channel; profiles are described with 16 values) |
|
|
pulse
width ramp-down |
Profile
for changing the pulse width (2 different profiles are available per
channel; profiles are described with 16 values) |
|
|
no
stim |
Pulse
width equal to 0 |
|
|
delay |
Keeps
the actual pulse width at the previous level for the given time interval |
|
Pulse Amplitude Primitives: |
||
|
Icon |
Name |
Description |
|
|
change
amplitude |
Changes
the amplitude from previous to new value in a specified time period (change
is linear) |
|
Pulse Frequency Primitives: |
||
|
Icon |
Name |
Description |
|
|
change
frequency |
Changes
stimulation frequency (4 different values are available and they apply to all
stimulation channels) |
|
Primitive Sequence Control: |
||
|
Icon |
Name |
Description |
|
|
jump
back |
Program
jumps back n times in the sequence
to the marker primitive, where n=1-255,
or n is infinite (n=0). |
|
|
synchronize |
Synchronizes
otherwise independent stimulation sequences in all 4 stimulation channels |
|
Human Interaction
Primitives: |
||
|
Icon |
Name |
Description |
|
|
user
interaction |
This
primitive waits for a specific user action to trigger a stimulation sequence.
One can use an arbitrary triggering profile and a sensor. |
|
|
user
branch |
Two
trigger criteria set with the user
interaction primitive are used to generate branching. If criterion 1 is
fulfilled the program proceeds with the next primitive in the line. If
criterion 2 is fulfilled the program jumps to a predefined marker and
proceeds with the next primitive after the marker. |
|
|
user
interrupt |
One
trigger criterion set in user
interaction primitive is used to generate interrupt. If this criterion is
fulfilled between markers ON and OFF the program jumps to a predefined marker
and proceeds with the next primitive after the marker. |
|
General Primitives: |
||
|
Icon |
Name |
Description |
|
|
end |
Terminates
stimulation in the specified channel – time line |
|
|
turn
off |
Turns
off the stimulator |
|
|
display
text |
Displays
two text lines with 8 characters in each text line |
|
|
generate
sound |
Generates
a melody (2 different short melodies are available) |
|
Special Primitives: |
||
|
Icon |
| |