A3041 Implantable Stimulator-Transponder Manual

© 2022-2026, Kevan Hashemi, Open Source Instruments Inc.

Contents

Description
Versions
Set-Up
Stimulus Current
Battery Life
Operation
Command Reception
Design

Description

[16-APR-26] The A3041 Implantable Stimulator-Transponder (IST) receives commands through its crystal radio, interprets these commands and executes them with its own embedded microprocessor, applies stimuli to its two stimulus leads, transmits a synchronizing telemetry signal upon command, and reports its own battery voltage. We ship the A3041 with a magnet attached. The magnet that keeps it in its sleep state, which minimises its current consumption. When we remove the magnet, the A3041 enters its wake state. When the A3041 receives a command, it becomes active. If instructed to do so, the A3041 will generate a stimulus consisting of electrical pulses of current applied to its stimulation leads. The magnitude of the current, the duration of the pulses, their period, their quantity, as well as whether they should be regular or random, are all specified in a single command. By uploading user-programs through its crystal radio and into the memory of its microprocessor, we can configure the A3041 to provide arbitrarily complex stimuli that suit our own experiment.


Figure: A3041C55-DD-D130-A Implantable Stimulator-Transponder. Shown connected to a A3036IL-B Clear-Epoxy Implantable Light-Emitting Diode (CE-LED) through which the stimulator can drive 30 mA continuously for a little over half an hour before its battery is exhausted. The 130-mm D-Leads have combined resistance 50 Ω. The maximum stimulus current is 30 mA and the maximum stimulus voltage is 5.0 V. Mass 2.5 g.

The A3041 Implantable Stimulator-Transponder is equipped with two flexible leads that carry its stimulus current to the stimulus site. At the end of each lead is a pin. The two pins will mate with the sockets on an Implantable Light-Emitting Diodes (ILED), or they can mate with two sockets on a bipolar depth electrode. The A3041 drives its stimulus leads with a current source. We set the magnitude of the current with a code that we transmit to the stimulator. The current source is unidirectional: current flows out of the L+ pin on the end of the orange lead and into the L− pin on the end of the purple lead. The A3041 cannot be used for alternating current stimulation, only for pulsed direct current stimulation. The A3041A34 versions provide currents from 200 μA to 10 mA with a maximum applied voltage of 3.3 V. The A3041F55 provides currents 600 μA to 30 mA with a maximum applied voltage of 5.0 V. The table below gives an example full specification for the A3041A34-DD-B45-D implantable stimulator for mice, which is the smallest version that exists.

PropertyValue
Volume of Implant0.95 ml
Mass of Implant1.7 g
Battery TypeCR1220
Nominal Battery Capacity40 mA·hr
Stimulus Cost1.5 mA·hr/mA·hr
Active Life200 hr
Sleep Current2.2 μA
Sleep Controlsleeps in magnetic field
Wake Current5.5 μA
Active Current140 μA @ 37°C
Stimulus Voltage3.3 V
Stimulus Current Range200 μA to 10 mA
Pulse Length Range2 ms to 60 s
Pulse Period Range4 ms to 60 s
Stimulus Length Range1 to 60k pulses
Operating Range30 cm
Lead Dimensions45 mm long × 0.7 mm dia
Lead TerminationsSoldered D-Pins
Total Lead Resistance56 Ω
Antenna Dimensions30-mm thin stranded loop
Table: A3041A34-DD-B45-D Implantable Stimulator-Transponder (IST) Specification.

The table below lists the A3041 Implantable Stimulator-Transponder configuration options out of which we can create new variants. The battery type dictates the A3041's battery capacity and mass. The lead resistance dictates the diameter of the the lead, and its flexibility. The higher the lead resistance, the thinner and more flexible the lead. Electrical stimulus applications tend to need low currents and require only one or two volts across the target tissue. We can use flexible, high-resistance leads for electrical stimulation. Optogenetic applications need higher currents and at least 3.0 V on the implantable light-emitting diode (ILED). For optogenetic stimulation, we must use short leads, or thick leads, or increase the stimulus voltage to 5.0 V.

OptionUnitChoices
BatteryTypeCR1220 (A), LIR1040 (B), LIR1620 (C), LIR1254 (D), LIR2032(F)
Stimulus VoltageV3.3 (3), 5.0 (5)
Stimulus Current RangemA0.006-0.3 (1), 0.02-1 (2), 0.06-3 (3), 0.2-10 (4), 0.6-30 (5)
Lead Lengthmm30 mm to 260 mm
Lead ResistanceΩ/cm1.6 (D), 6.3 (B), 25 (C)
Lead Diametermm0.8 (D), 0.7 (B), 0.5 (C)
Antenna Lengthmm30 (D), 50 (E)
Table: A3041 Implantable Stimulator-Transponder (IST) Configuration Options. For each option we give a letter or digit code to select the option in the full part number.

The operating range of the IST is the range from its nearest command antenna for which reception of commands is ≥95%. We specify operating life for two reference stimuli. In Battery Life we provide rules for determining whether a particular battery can support a planned experiment.


Figure: Connections to an A3041 Implantable Stimulator and Local Field Potential Sensor for Optogenetic Experiment. We have S+ and S− from an Implantable Stimulator-Transponder (IST) connected to a Fiber-Coupled Light-Emitting Diode (FCLED). We have X+ and X− from a subcutaneous transmitter (SCT) connected to a depth electrode and a skull screw.

The A3041 Implantable Stimulator-Transponder uses its antenna to receive wireless commands and to transmit wireless messages. We transmit commands to an IST with a command transmitter such as a TCB-B16 Telemetry Control Box, which provides both telemetry reception for telemetry sensors and command transmission for implanted stimulators. We control the command transmitter with the Stimulator Tool in our LWDAQ software. The IST can transmit acknowledgements, its version number, and battery measurements. It can identify itself in response to a multicast request. It will transmit a synchronizing signal that shows when its stimulus pulses occur. When the A3041 transmits its synchronizing signal, it uses a telemetry channel that we assign in the transmit command. All A3041 transmissions use our SCT telemetry system protocol. The commands they receive from the command transmitter use the same radio frequency, but a different protocol. The commands consist of slow, high-power pulses, while the transmissions consist of micropower, frequency-modulated bursts.


Figure: A3041A34-DD-B45-EImplantable Stimulator-Transponder (IST). Equipped with CR1220 battery, 45-mm leads, and 50-mm thin stranded antenna. Mass 1.7 g.

In addition to its buit-in stimulator function, the A3041 Implantable Stimulator-Transponder allows us to upload our own programs to run on its embedded OSR8 microprocessor. These programs, written in the OSR8 assembly language, can be up to 2 KBytes long. By means of the user programs we can provide new and complex stimuli as required by particular experiments. See the Stimulator Tool manual for details of how to prepare and upload programs to the A3041 memory. The A3041's user program memory is volatile, so all programs are lost when the device deactivates into its wake or sleep states.

Versions

[16-APR-26] The A3041 Implantable Stimulator-Transponder version table lists some of the possible variants we can compose from the A3041 configuration options. Feel free to suggest other variants for your own use. Each variant has its own unique part number beginning with "A3041", followed by one or two letters specifying the battery, a digit specifying the stimulus voltage, and another digit specifying the maximum stimulus current. The battery letter codes are defined by the table itself. The stimulus

Version Battery
Type
Battery
Capacity
(mA·hr)
Max
Voltage
(V)
Current
Range(mA)
Stimulus
Cost
(mA·hr/mA·hr)
Active
Life (hr)
Wake
Life
(wk)
Shelf
Life
(wk)
Volume
(ml)
Mass
(g)
A3041A34 CR1220 30 3.3 0.2—10 1.5 150 30 9 0.95 1.7
A3041B34 LIR1040 35 3.3 0.2—10 1.1 165 35 10 1.1 2.1
A3041C55 LIR1632 30 5.0 0.6—30 1.7 150 30 9 1.3 2.5
A3041D34 LIR1254 65 3.3 0.2—10 1.1 325 65 20 1.6 3.2
A3041F55 LIR2032H 70 5.0 0.6—30 1.7 350 70 21 2.7 5.5
Table: A3041 Implantable Stimulator-Transponder Version Table. For definitions of "Stimulus Cost", "Active Life", "Wake Life", and "Shelf Life" see paragraphs below.

We specify the lifetime of the A3041 Implantable Stimulator-Transponder in four distinct states: sleeping, waking, delivering a high-power stimulus, and delivering a low-power stimulus. All versions of the A3041 sleep when they are in contact with a magnet, which is how we store A3041s on the shelf. It's shelf life is how long it can sleep before and still have 90% of its battery capacity remaining. An A3041 wakes up when we keep it away from any magnet. When awake, the A3041's crystal radio is powered up and ready to receive commands. It's wake life is how long it can remain awake when starting with a fresh battery. An A3041 Implantable Stimulator-Transponder activates when it receives a command. When active, its logic chip and stimulation voltage are powered up and consuming current. The active life is the minimum length of time the A3041 can remain in its active state while implanted and when starting with a fresh battery. The active life applies to stimuli that use hardly any power, such as 10 ms pulses of 200 μA at 10 Hz, and perhaps transmitting a synchronizing signal as well so that our telemetry system can see when the pulses occur. When we are delivering a significant stimulus current, we must account for the drain on the battery that is due to the stimulus current alone. The stimulus cost is the ratio of the charge a stimulus draws from the battery to the charge delivered by the stimulus to its stimulus leads. The stimulus cost is independent of the nature of the stimulus, except for the A3041A34 stimulator, which is not designed for continuous-current stimuli. The stimulus cost we specify for the A3041A34 is valid only if we deliver maximum current for no more than 100 ms, and for no more than 10% of the time.

We can equip the A3041 Implantable Stimulator-Transponder with any of our flexible leads. By default, we use orange and purple B-Leads. These are 0.7 mm in diameter, contain a spring of stainless steel wire 450-μm in diameter, and present resistance 6.3 Ω/cm. These leads can be anything from 30 mm to 280 mm long. The other lead options are the much more flexible C-Leads, which are 0.5 mm in diameter, contain a 250-μm spring, and present resistance 25 Ω/cm, and the much heavier D-Leads, which are 0.8 mm in diameter, contain a 500-μm diameter spring, but present a resistance of only 1.6 Ω/cm. At the ends of the leads, we can have bares wire for delivering electrical stimulation, or pins to connect to depth electrodes or an A3036IL Implantable Light-Emitting Diode (ILED). See our Catalog of Electrodes and our A3036IL Manual for more details.

Set-Up

[16-APR-26] We transmit commands to the A3041 Implantable Stimulator-Transponders and receive its acknowledgements, battery voltage measurements, and synchronizing signals with with a Telemetry Control Box (TCB), such as the A3042-B16 Sixteen-Antenna TCB. Each A3042-B antenna acts as both a telemetry receiver and a command transmitter. We control the transmission of commands and manage the reception of acknowledgements and battery voltage measurements using the Stimulator Tool, which is included in our LWDAQ Software.


Figure: Control and Recording System for A3041 Implantable Stimulator-Transponders (ISTs), Subcutaneous Transmitters (SCTs) and an Animal Cage Camera (ACC).

All A3042 Telemetry Control Boxes receive their power from the PoE connection, and all communication with an A3042 takes place over the same PoE cable. The burst of power required to transmit on sixteen antennas comes from an internal lithium-polymer battery that recharges in the minutes after command transmission. If our experiment requires stimuli that cannot be defined simply with a pulse period, pulse length, stimulus current, and stimulus duration, we can upload a custom stimulus definition to an A3041 Implantable Stimulator-Transponder with the help of the Stimulator Tool. The custom instructions must be written in the assembler language of the A3041's embedded OSR8 microprocessor and converted into a hexadecimal string by our the LWDAQ software's built-in OSR8 assembler.

Stimulus Current

[16-APR-26] The A3041's stimulus output is limited in both current and voltage: there is a maximum voltage it will apply to the stimulus leads and a maximum current it will allow to flow through the stimulus leads. The maximum voltage is a function of the boost converter we load onto the A3041 circuit. It can be 3.3 V or 5.0 V. In the case of the A3041A34, the maximum voltage is 3.3 V. The current is controlled by a four-bit current code we select in Stimulator Tool. Its value can be 0-15. The magnitude of the current is inversely proportional to the value of a resistor on the circuit (See R6 S3041A_1). In the A3041A34, the maximum current is 10 mA, while the minimum is a little over 200 μA. In all versions, the minimum is roughly 2% of the maximum.


Figure: A3041A34 Stimulus Current versus Current Code. Codes 0-2 generate no current. 0Ω: with stimulus leads shorted. LED: with forward-biased white LED between stimulus leads. For log plot see here. (Calvin Dahlberg).

Each A3041 Implantable Stimulator-Transponder has a maximum voltage that its stimulus current source can apply to the base of its stimulus leads. This maximum is either 3.3 V or 5.0 V depending upon the A3041 version. This maximum cannot be changed by a command, it is a permanent feature of any given A3041 circuit. The A3041A34 is capable of delivering up to 10 mA to a load, but only if 3.3 V is sufficient to drive 10 mA through the load. If the stimulator's leads have combined resistance 50 Ω and we have a green LED at the end with forward voltage 2.8 V at current 10 mA, our load requires exactly 3.3 V, and we should be able to get 10 mA to flow through the LED. But if our lead resistance is 100 Ω, we will instruct the stimulator to deliver 10 mA and find that it delivers only 5 mA.


Figure: A3041A34 Stimulus Voltage versus Current Code. Orange: with stimulus leads open circuit. Blue: with forward-biased white LED connected to two 25-Ω stimulus leads.

If we want to deliver 10 mA to an ILED at the end of 130-mm leads, the resistance of the leads becomes significant. At 30 mA, the resistance of the leads is critical and requires that we use a stimulator with a 5-V stimulus voltage. If we use B-Leads, we have a total of 26 cm of 0.7-mm diameter B-Lead, so total resistance is 26 * 6.3 Ω/cm = 164 Ω. A 10-mA current will drop 50 Ω * 10 mA = 1.6 V in the leads. If we combine this with a blue LED that needs 2.9 V forward voltage at 10 mA, we need a total voltage of 1.6 + 2.9 = 4.5 V. We must use a 5-V version of the A3041. Another option is to use a 3.3-V version, but equip the stimulator with the low-resistance D-Lead instead. The D-Lead is made with thicker wire and wound with fewer coils per unit length. It is less flexible than the B-Lead, but its resistance is only 1.6 Ω/cm. At length 130 mm, two D-Leads combined have resistance 26 cm * 1.6 Ω/cm = 42 Ω, so a 3.3-V stimulator is sufficient. Our stimulus cost will decrease if we use a lower stimulus voltage, so we extend the operating life of our stimulator by using lower-resistance leads and a lower stimulus voltage. If we want to drive 30 mA through a blue LED, the voltage across the LED increases to 3.2 V and the voltage required by the leads increases to 42 Ω * 30 mA = 1.3 V. We need at least 4.5 V, so we must choose a 5-V stimulator.

Battery Life

[16-APR-26] We want be able to estimate before-hand whether or not an A3041 Implantable Stimulator-Transponder has sufficient battery life to complete any given experiment. Because the stimulator can be in a variety of states, and provide a wide range of stimuli, we must calculate separately the battery capacity it consumes in each of these states, and we must repeat this calculation for each new experimental protocol. Each stimulator battery has a nominal capacity, which is the amount of electrical charge it can deliver before it is exhausted. We express battery capacity in milliamp-hours (mA·hr). Each milliamp-hour provides us with a certain amount of time in the sleep state, wake state, and active state. One milliamp-hour of battery current provide us with a certain number of milliamp-hours of stimulus current. But we usually look at these values the other way around: one week of sleep uses a certain amount of battery capacity, one milliamp-hour of stimulus current uses a certain amount of battery capacity, and so on, until we have added together the charge consumption of all parts of our experimental protocol and arrive at a total requirement in milliamp-hours that we must then hope is less than the actual battery capacity of our stimulators.

State Consumption Rule
Sleep (disabled by magnet, sitting on shelf)0.33 mA·hr/wk
Wake (enabled and awaiting commands)1.0 mA·hr/wk
Active (average stimulus current ≤30 μA)0.20 mA·hr/hr
Stimulus Cost (average stimulus current >30 μA) mA·hr/mA·hr
Table: Battery Life Calculation Rules.

The device is asleep when sitting on its magnet. We use 0.33 mA·hr for each week the stimulator spends in its sleep state. The device is awake when it has been removed from its magnet and is doing nothing except for waiting for commands. We use 1.0 mA·hr for each week the stimulator spends in its wake state. The device is active when it is powered up and delivering a low-power stimulus or transmitting a synchronizing signal. We use 0.20 mA·hr for each hour we spend in the active state. When the device is delivering a significant current to its stimulus leads, we calculate the charge drawn from the battery by multiplying the stimulus charge by the stimulator's stimulus cost. The stimulus cost is given for each stimulator in the A3041 Implantable Stimulator-Transponder Version Table. In the case of the A3041A34, which is equipped with a CR1220 battery, the stimulus cost is correct only if we avoid damaging the battery with continuous, high-current stimuli. If we turn on the maximum stimulus current continuously, we must do so for no more than 100 ms and no more than for no more than 10% of the time. In all other A3041s, which are equipped with LIR-series batteries, there is no restriction on the length or frequency of the stimulus. The stimulus current cost for these stimulators is the same for all currents and pulse durations.

Example: We propose to implant A3041A34s in mice, administer an average of twelve stimuli per day, each stimulus being 10-ms pulses of 10 mA at 10 Hz applied to an implantable lamp for one minute. We want the study to continue for at least eight weeks. Our A3041A34s have been sitting on the shelf for 9 weeks with their magnets attached, hibernating. The hibernation used 3 mA·hr. During our experiment, the stimulators will be awake for eight weeks, which uses 8 mA·hr. Each stimulus is 10 ms * 10 Hz * 60 s * 10 mA = 60 mA·s. We want each stimulator to deliver twelve stimuli per day for at least eight weeks, so the stimuli will use 12 * 8 * 7 * 60 mA·s = 11 mA·hr of stimulus charge. The active current of the stimulator is negligible compared to the stimulus current cost, so we will ignore the active current. The A3041A34's stimulus current cost is 1.5 mA·hr/mA·hr, so our stimulus takes 17 mA·hr. Our total use is 3 + 8 + 17 = 28 mA·hr. The A3041A34 battery capacity is 40 mA·hr. We have 12 mA·hr of capacity to spare.


Video: Optical Stimulus After Seven Months Implanted. Click to watch.

All our A3041 Implantable Stimulator-Transponders are equipped with coin cell batteries. The A3041A34 is the smallest. It is equipped with a CR1220 battery that imposes some limits on the length of maximum current pulses. But all the others are powered by LIR-series batteries that can provide their maximum current continuously with ease. The voltage produced by CR-series batteries is 3.0 V for most of the battery's life, provided we measure the voltage during a low-power stimulus. When down to 5% capacity, the voltage will drop to around 2.7 V. The voltage of LIR-series batteries is 3.8 V when it is at 95% capacity and drops to 3.6 V when is is at 5% capacity, so we can get a good idea of where we are in an LIR-series battery's life by looking at the A3041's report of its voltage. When we calculate the stimulus current cost of a stimulator, we use 3.7 V as the battery voltage for LIR-series batteries and 2.7 V for CR-series batteries. Regardless of the battery type, when an A3041's battery voltage drops below 2.4 V, even for a moment, the A3041 circuit will shut down and return to its wake state.


Figure: A3041 Implantable Stimulator-Transponder Active Battery Current (μA) for Various States at 25°C. Add 40 μA for operation at 37°C.

In its sleep state, the A3041 Implantable Stimulator-Transponder consumes 2.0 μA. Without a magnet, the A3041 is awake until it receives a command. While awake, the A3041 consumes 5.5 μA. When it receives a command, it activates, and remains active until it has completed all instructions. The A3041's current consumption increases with stimulation current, pulse length, pulse frequency, synchronizing signal rate, and randomization. The cost of generating timing signals for pulses is 0.28 μA/PPS (microamp per pulse per second). The additional cost of randomizing the production of these pulses is 0.86 μA/PPS. The cost of synchronizing transmission is 0.22 μA/SPS (microamp per sample per second). Furthermore, the active current increases with temperature, see here. To account for this increase, we add a temperature-dependent correction to the active current. At 37°C, an active A3041 consumes roughly 40 μA more than it does at 25°C. In order to simplify our battery life calculations, we just assume that an active, implanted A3041 consumes 200 μA from its battery when it is providing a low-power stimulus. We it is delivering a high-power stimulus, we add the cost of the stimulus current to the active cost to obtain our total current consumption.


Figure: A3041A34 Battery and Stimulus Current versus Current Code. With stimulus leads shorted together we have battery current (blue) and stimulus current (orange). With stimulus leads connected to a blue light-emitting diode we have battery current (yellow) and stimulus current (green). For log plot see here.

As we increase the current code, our stimulus current increases. As the stimulus current increases, so does the battery current. If our stimulus operates on a 10% duty cycle, the battery current drawn by the stimulus will be almost ten times smaller.


Figure: A3041A34 Battery Current versus Current Code. We use a bench top power supply and ammeter in place of a battery, but we use voltages that mimic those produced by the CR1220 battery used in the A3041A. We have stimulus leads connected to a green light-emitting diode. Blue: 2.7 V power supply, 10 ms stimulus pulses, 100 ms period. Orange: 2.7 V power supply, continuous stimulus current. Yellow: 2.5 V power supply, continuous stimulus current.

The current drawn from the battery, IB, is different from our stimulus current, IS, because the stimulus current is produced from the battery voltage by an inductive converter circuit. When the battery voltage, VB, is less than the stimulus voltage, VS, the battery current will be greater. When the battery voltage is less than the stimulus voltage, the battery current will be less. The converter efficiency, η, is approximately 80%. The battery current will be IB = VS / VB * IS / η. But it is not easy to know what the battery voltage will be during a stimulus pulse. In the case of the A3041A34, with its CR1220 battery, the battery voltage drops to about 2.7 V during stimuli, so we estimate that IB = 3.3 / 2.7 * 1 mA / 0.80 = 1.52 mA. We assume that the battery current is 1.5 times the stimulus current for the A3041A34, so that the stimulus current cost is 1.5 mA·hr/mA·hr.


Figure: A3041A34 Battery Current versus Stimulus Current. The nominal voltage of the A3041A34's battery is 3.0 V, but in practice the voltage drops to about 2.7 V during stimulus pulses. Its stimulus voltage is 3.3 V. Blue: with LED load. Orange: with short-circuit load. Slope 1.52 mA/mA, intercept 0.0 mA.

In the case of A3041 Implantable Stimulator-Transponders with LIR-series batteries, the battery voltage does not drop much during a stimulus, but it does drop during the life of the stimulator: from about 3.8 V to start with to 3.6 V when near exhaustion. We obtain our estimate of battery current by assuming battery voltage VB = 3.7 V and converter efficiency η = 80%. The A3041F55 has stimulus voltage VS = 5.0 V and maximum stimulus current IS = 30 mA. The battery current at maximum stimulus current will be 5.0 / 3.7 * 30 mA / 0.80 = 51 mA. The A3041F55's LIR2032 battery is specified for continuous current drain up to 70 mA. We assume the battery current is 1.7 times the stimulus current for all A3041s that provide a 5-V stimulus voltage from an LIR-series battery. Those that supply a 3.3-V stimulus voltage from an LIR-series battery draw 1.1 mA from the battery for each 1.0 mA of stimulus current.

Operation

[18-MAR-26] The A3041 functions are built around an OSR8 microprocessor. The firmware and software running in its logic chip are contained in a single GitHub repository P3041. The main program is ROM.asm. Through its crystal radio, the A3041 receives commands in the form of strings of instructions. Each instruction consists of an operation code, one or more operands, and one or more data bytes. The table below describes the instructions in detail.

OpcodePneumonicNameOperandsDescription
0op_stopStimulus Stop0Stops the main program stimulus.
1op_startStimulus Start8Defines and starts a main program stimulus.
2op_xonSynchronizing Signal2Start sync signal with frequency and channel.
3op_offAcknowledgement1Transmit acknowledgement with key.
4op_battReport Battery Voltage0Measure and transmit battery voltage.
5op_idAnnounce Identity0All stimulators self-identify.
6op_pgldLoad Program1Load a block of user program bytes.
7op_pgonRun Program0Run the user program.
8op_pgoffHalt Program0Halt the user program.
9op_pgrstReset Load Pointer0Reset user program load location.
10op_shdnShutdown0Deactivated the device, forcing it into wake state.
11op_verReport Version0Transmit version number.
Table: A3041 Instructions.

A command consists of two ID bytes to specify the A3041 Implantable Stimulator-Transponder. The identifier 0xFFFF is the multicast ID. All A3041s will respond. We use the multicast ID to get all A3041s to identify themselves. Following the ID are the opcodes and their operands and data bytes. Last of all comes a two-byte checksum. We can see these bytes being listed before transmission in the text window of the Stimulator Tool when we have the Verbose box checked.

The A3041 Implantable Stimulator-Transponder can provide stimuli in one of two ways: a main-program stimulus or a user-program stimulus. The main program stimulus is entirely defined with five parameters: pulse length, pulse interval, number of pulses, pulse current, and randomize flag. The user program stimulus is defined by an OSR8 assembly program we upload to the stimulator. This program is subject to three restrictions: it executes once every 5 ms, it must not take more than 4 ms to execute, and its program size cannot exceed 2 KByte. Aside from these restrictions, the user program can implement any stimulus behavior.

To upload a user program, we use the Stimulator Tool's transmit panel, as described in User Programs. We prepare our user program in a text file containing OSR8 assembler. When we press Run Program, Stimulator Tool uploads and runs our program. It resets the program load location with op_pgrst. It uploads the program in one or more chunks using the op_pgld instructions. This upload takes place at roughly 1 KByte/s. A 100-byte program will take a fraction of a second to upload. A 2-KByte program will take several seconds. Once the upload is complete, the Stimulator starts the program running with op_pgon.

It is easy to freeze the A3041 Implantable Stimulator-Transponder with a user program. We can upload a program with an infinite loop and the A3041 will remain active until its battery runs down. When stuck in a loop running a user program, the A3041 consumes roughly 1.5 mA. Once an A3041 has been frozen by a faulty user program, the only way to unfreeze it is to force it to go to sleep with a magnet. When we remove the magnet, the A3041 will activate again with the user program erased, and we can try again.

A user program can either halt itself, or run until the A3041 receives an op_off instruction. The Halt Program button in the Transmit Panel sends op_off to stop the program. The A3041 has no ability to remember a user program after it deactivates, so we must keep the device in its active state in order to remember a program. When we define a special stimulus, which we want to deliver upon command, the user-program should continue to run, waiting for a stimulus start command. When the A3041 receives a stimulus start, the five parameters of a main-program stimulus will be set, and the stimulus run flag will be set. The user program, seeing that a main program stimulus has commenced, disables the main program stimulus and begins its own stimulus. If the user program stimulus needs to be configured, it can use the five parameters uploaded to the A3041 with the main program stimulus start instruction.

The stimulus current is delivered by a bipolar transistor, 2SC6026. We deliver a current to the base and trust that the current through the collector of the transistor will be proportional to the base current. When we ask this transistor to deliver 10 mA with a base current of 50 μA, we need to allow at least 0.5 V collector-emitter voltage for the current to flow. With a 3.3-V power supply, we are left with only 2.8 V for an LED that requires 2.9 V, hence the reduced LED current for the higher current codes.

Command Reception

[18-MAR-26] The A3041 Implantable Stimulator-Transponder is equipped with a thirty-millimeter, stranded-steel, loop antenna (a D-Antenna). The A3041 uses this antenna for receiving commands, but also for its "transponder" function, which includes transmitting a synchronizing signal, command acknowledgements, and battery measurements. We transmit commands to the implant by turning on and off a 915-MHz power source. The implant's crystal radio generates a logic HI when the power at its antenna is greater than a threshold. It generates a logic LO otherwise. We construct the command out of a pattern of HI and LO levels. Implants like the A3041 are almost always inactive. Their logic chips are disabled. The command transmission begins with an initializing pulse that wakes up the implant and enables the logic chip so that it can receive and interpret the command.


Figure: A3041 Implantable Stimulator-Transponder Command Transmission Protocol. The command transmitter uses on-off amplitude modulation to transmit commands.

The command transmission's initializing pulse lasts for tI ≥5 ms. While the pulse endures, the crystal radio asserts RP (Radio Frequency Power), which powers up the logic chip. As soon as the logic chip has configured itself, it asserts OND, which keeps the logic power supply turned on. The configuration should take tPU < 3 ms so that the initializing pulse will endure for > 2 ms after configuration is complete. When the logic chip has seen ≥2 ms of continuous power on RP, followed by RP going LO, it starts monitoring RP for command reception. This initial LO must last for at least 500 μs to allow time for the A3041 Implantable Stimulator-Transponder to set up for reception. The A3041 samples RP on the rising edges of RCK (Realtime Clock), which runs at 32.768 kHz. It waits for RP to go HI, indicating a start bit, after which it records eight bits of a command byte followed by a stop bit. The stop bit is another LO that must endure for at least 500 μs to give the A3041 time to store the byte and prepare for the next start bit. At the same time, the stop bit must not last more than 5 ms, or else it will be interpreted as a termination pulse. The A3041 waits for another start bit, and so on, until one of the stop bits does extend for 5 ms, which indicates the end of the command.


Figure: Command Transmission by A3042TF Transmitting Feedthrough and Reception by A3041 Implantable Stimulator-Transponder. We have three probes on the A3041 circuit. Blue: Crystal radio output, VR, showing on-off 915-MHz power from Transmitting Feedthrough, 50 mV/div. Yellow: Logic level RP from crystal radio comparator, 1 V/div. Green: OND generated by logic chip, 1 V/div.

In the traces above we see OND going HI when the A3041 Implantable Stimulator-Transponder logic first powers up. This HI lasts for around 2 ms, after which the logic chip starts to load its configuration from memory, and OND goes LO. When the logic chip has completed its configuration, it asserts OND, a total of 3.5 ms from the start of the initiation pulse. This A3041 has 1.5 ms to spare before the 5-ms initiation pulse terminates.

The bytes of a command must themselves follow a protocol. The first two bytes contain the identifier of the A3041 Implantable Stimulator-Transponder, which can be either 0xFFFF for the wildcard selecting all A3041s, or some other sixteen-bit identifier unique to the target stimulator. In order to facilitate the implementation of acknowledgement messages using our existing SCT telemetry system, unique stimulator identifiers must not end with 0x0 or 0xF. Following the identifier are the bytes of the command, and at the end of the command are two further bytes that provide a sixteen-bit checksum for the preceding bytes. The A3041 calculates what the checksum should be and compares its own calculation to the checksum it receives. If they match, the A3041 accepts the command and commences to process its contents. If they do not match, the A3041 ignores the command.


Figure: Reception of Stop Command. Green: receive power (RP) 2 V/div. Yellow: command ready (CMDRDY) 1 V/div. Blue: opcode processing flag on test point two 2 V/div. Red: main loop flag on test point one 2 V/div. Timebase 5 ms/div. The initializing pulse in this command is 10 ms.

In the photograph above we see the A3041 Implantable Stimulator-Transponder receiving a command on RP, then processing the command afterwards. The CPU reads the bytes out of the command memory one by one and executes them. When it's done, it clears CMDRDY.

Design

[09-JUN-25] For design files and development logbook, see the A3041 Implantable Stimulator-Transponder design and development page at D3041.