Implantable Stimulator-Transponder (A3041)

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

Contents

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

Description

[24-OCT-24] The Implantable Stimulator-Transponder (A3041) 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 on its own battery voltage. All versions of the A3014 stimulator are powered by CR-series lithium primary cell. These batteries are not rechargeable, but provide long life and ample stimulus current. 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: Implantable Stimulator-Transponder (A3041A). Equipped with 50-mm E-Antenna. Mass 1.7 g.

The A3041A-DD provides two pins on the ends of its stimulus leads that we can connect to an Implantable Light-Emitting Diode (ILED) to provide optogenetic stimulation, or to a bipolar electrode to provide direct electrical stimulation. All versions of the A3041 generate stimuli by connecting a current source to its stimulus leads. The current source is programmable by a current code. The A3041A provides currents from 200 μA to 10 mA. The maximum voltage the A3041 can apply to its stimulus leads is fixed for each version of the device. The A3041A can deliver at most 3.3 V. Other voltage options are 3.0 V and 5.0 V. Here is an example specification.

PropertyValue
Volume of Implant0.95 ml
Mass of Implant1.7 g
Outer Dimensions14 mm dia, 6.5 mm thick
Battery TypeCR1220
Nominal Battery Capacity40 mAhr
High Power Stimulus Life40 hr
Low Power Stimulus Life240 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
Table: IST Specification, Version A3041A.

We present the configuration options for the A3041 ISTs in the table below. The battery type dictates the IST's battery capacity and the device's 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 two or three volts across the target tissue, so we can use flexible high-resistance leads for electrical stimulation. But optogenetic applications need higher currents and at least 3.3 V stimulus voltage, so we must use shorter, lower-resistance leads to drive the implantable LEDs.

OptionChoices
Battery (Type)CR1220, CR1616, CR1620, CR2032, CR2330.
Stimulus Voltage (V)3.0, 3.3, 5.0.
Minimum Stimulus Current (μA)20 to 2,000
Maximum Stimulus Current (mA)0.2 to 10
Lead Length (mm)30 mm to 260 mm
Lead Resistance (Ω/cm)1.6, 6.3, 25
Table: IST Configuration Options.

The operating range of the IST is the range from its command antenna for which reception of commands is ≥95%. We specify operating life for two reference stimuli. The high-power stimulus (HPS) is 5-mA pulses, each 10 ms long, at 10 Hz. The HPS life is the number of hours an IST with a fresh battery can sustain the stimulus without pause. The low-power stimulus (LPS) is 200 μA pulses, each 2.5 ms long, at 100 Hz. The LPS life is the number of hours a fresh battery can provide the low-power stimulus. In Battery Life we provide rules for determining whether a particular battery can support a planned experiment.


Figure: Connections to an 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 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 Telemetry Control Box (TCB-B16), 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 IST 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: Implantable Stimulator-Transponder (A3041C-GRN-B130-A). Equipped with encapsulated green LED and 50-mm stranded antenna.

In addition to its buit-in stimulator function, the A3041 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

[24-OCT-24] Here are the versions of the A3041 we have defined so far. Each version has a letter that constrains the battery type, battery mounting, stimulus voltage, and programmable current range. These configuration options dictate the operating life and mass of the resulting device.

Version Battery
Type
Battery
Capacity
(mAhr)
Stim
Voltage
(V)
Stim
Current
(mA)
Sleep
Life
(wk)
Wake
Life
(wk)
HPS
Life
(hr)
LPS
Life
(dy)
Volume
(ml)
Mass
(g)
A3041A CR1220 40 3.3 0.2-10 120 43 40 8 0.95 1.7
A3041B CR1616 60 3.3 0.2-10 180 64 60 12 1.2 2.3
A3041C CR1620 80 3.3 0.2-10 240 87 80 16 1.3 2.5
A3041D CR2032 200 3.3 0.2-10 600 220 200 40 2.5 5.0
A3041E CR2450 600 5.0V 0.5-30 1800 650 600 120 4.0 8.7
Table: Version of the A3041 Implantable Stimulator-Transponder. See text below for definition of "Sleep Life", "Wake Life", "HPS Life", and "LPS Life". We specify guaranteed battery life, typical battery life is 10% greater.

We specify the lifetime of the IST in four distinct states. These are sleeping, waking, delivering a high-power stimulus, and delivering a low-power stimulus. The IST sleeps when it is in contact with a magnet, which is how we store IST on the shelf. It's sleep life is how long it can sleep before exhausting its battery. Note that sleep life is not the same as "shelf life". The "shelf life" might better be defined as the time the IST can spend sleeping and still have almost all of its battery capacity remaining, in which case the "shelf life" would be 10% of the sleep life. An IST wakes up when we keep it away from any magnets.


Figure: Implantable Stimulator-Transponder (IST) States. For each state, we give the battery current.

When awake, the IST'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 IST activates when it receives a command. When active, its logic chip and stimulation voltage are powered up. We do not specify an "active life" because we assume that an active IST is providing a stimulus. We define two stimuli for the purpose of specifying stimulus life. The high-powered stimulus (HPS) consists of 10-ms pulses of 5 mA delivered to an Implantable Light-Emitting Diode (ILED) at 10 Hz. The HPS life is the number of hours of high-powered stimulus the IST can provide with a fresh battery. The low-powered stimulus (LPS) consists of 2.5-ms pulses of 200-μA at 100 Hz, and the LPS life is the number of hours of low-power stimulus the IST can provide with a fresh battery.

We can equip the A3041 with any of our flexible leads. By default, we use orange and purple B-Leads. These are 0.7 mm in diameter, contain a helix of stainless steel wire 450-μm in diameter, and have resistance 6.3 Ω/cm. These leads can be anything from 30 mm to 280 mm long. At the ends of the leads, we can have bares wire for delivering electrical stimulation, or pins to connect to depth electrodes or an implantable light-emitting diode (ILED). See our Catalog of Electrodes and our ILED manual for details.

Set-Up

[24-OCT-24] We operate ISTs with a Telemetry Control Box (TCB). At the moment, the only version of TCB we manufacture that provides command transmission is the TCB-B16, which is equipped with sixteen antenna connections. Each TCB-B16 antenna can act as both telemetry receiver and command transmitter. We operate the TCB with the Stimulator Tool. The Stimulator Tool manual also contains instructions on how to compose and upload your own programs to the IST so that it can implement specialized stimuli.


Figure: IST and SCT Command and Recording System. Soon to be replaced by the Telemetry Control Box (TCB-B16).

The TCB receives its power from the PoE connection, and all communication with the TCB 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.

Stimulus Current

[29-NOV-23] 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.0 V, 3.3 V, or 5.0 V. In the case of the A3041A, 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 A3041A, the maximum current is a little under 10 mA, while the minimum is a little over 200 μA.


Figure: Stimulus Current versus Current Code for Several A3041A. 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).

An ideal current source would deliver the same current to any load. But our current source is not ideal. If we short the stimulus pins together, the maximum current is 9.4 mA. If we connect an LED to the pins the stimulus pins, the maximum current is 5.5 mA. With the stimulus leads open circuit, there is no path for the stimulus current. The stimulus current sink applies the maximum voltage to the leads. With a white LED attached, the stimulus voltage is the forward voltage of the LED, which is roughly 2.9 V.


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

If we want to deliver 10 mA to an ILED at the end of 130-mm leads, the resistance of the B-Lead becomes significant. We have a total of 26 cm of 0.7-mm diameter B-Lead, so total resistance is 26 × 6.3 Ω/cm = 164 Ω. Our 10-mA current will drop 1.6 V. But the LED itself needs around 2.9 V, so our total stimulus voltage must be 4.5 V. We can use a 5.0-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 stiffer than the B-Lead, but its resistance is only 1.6 Ω/cm. A 3.3-V stimulator can drive 10 mA through a 2.9-V LED with 26 cm of D-Lead to deliver the current.

Battery Life

[24-OCT-24] Each battery has a nominal capacity, which is the amount of electrical charge it can deliver before it is exhausted. We express battery capacities in milliamp-hours (mAhr). One milliamp-hour of battery capacity will provide us with a certain amount of sleep, wake, or stimulus. The device is asleep when sitting on its magnet. The device is awake when it has been removed from its magnet and is doing nothing except for waiting for commands. We define a high-power stimulus to be 10-ms, 5-mA pulses delivered to an ILED at 10 Hz, and a low-power stimulus to be 2.5-ms, 200-μA pulses deliverd to a 10-kΩ load at 10 Hz. We use the following guidelines to estimate the battery capacity that will be consumed by our planned use of a stimulator.

State Consumption Rule
Sleep (disabled by magnet, sitting on shelf)20 days per 1 mAhr
Wake (enabled and awaiting commands)7 days per 1 mAhr
Delivering High-Power Stimulus (5 mA, 10 ms, 10 Hz)1 hr per 1 mAhr
Delivering Low-Power Stimulus (100 μA, 2.5 ms, 100 Hz)5 hr per 1 mAhr
Table: Battery Life Calculation Rules.

Example: We propose to implant ISTs in mice, administer an average of 20 high-power stimuli per day, each stimulus lasting for one minute, and continue doing so for six weeks. Our ISTs have been sitting on the shelf for 60 days with their magnets attached, sleeping. The sleep used 3 mAhr. We remove the magnets, and our ISTs wake up. We implant and begin our experiment. The device will be awake for six weeks, which will use 6 mAhr. We want to deliver 20 stim/day × 42 days × 1 min/stim = 14 hr of high-power stimulus, which uses another 14 mAhr of battery capacity. Our total is 23 mAhr. The CR1220 capacity is 40 mAhr. We 17 mAhr of extra capacity.


Figure: Optical Stimulus After Seven Months Implanted. Click to watch video.

We equip all our ISTs with CR-Series lithium primary cells that are specified for high-current and pulse operation, as is required by the stimulator. Lithium cells provide the highest charge density of all existing battery technologies, and of all types of lithium primary cell, the CR-Series cells made by Murata are the most tolerant of pulsed loads. The capacity of lithium batteries decreases significantly if we exceed their rated current. For each battery we provide a maximum current for which our battery life calculations will be accurate.

Battery Capacity
(mAhr)
Diameter
(mm)
Thickness
(mm)
Mass
(g)
Capacity
per Gram
(mAhr/g)
Max Cont
Stimulus
(mA)
CR12204012.52.00.77521.0
CR161660161.61.1541.2
CR162080162.01.3611.4
CR201690201.61.8501.5
CR2025160202.52.6622.0
CR2032200203.23.0672.2
CR245060024.55.06.2974.0
Table: Battery Life Calculation Rules.

The voltage produced by these batteries is 3.0 V for most of the battery's life, provided the load is less than 100 μA. During a stimulus pulse, the battery voltage drops well below 3.0 V. If an A3041's battery voltage drops below 2.4 V, the circuit will shut down. The smallest battery that provides reliable operation of the A3041 is the CR1220 by Murata.


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

The IST can be in one of three states: sleep, wake and active. The IST sleeps when it has a magnet attached to its body. In sleep, it consumes 2.0 μA. Without a magnet, the IST is awake until it receives a command. While awake, the IST consumes 5.5 μA. When it receives a command, it activates, and remains active until it has completed all instructions. The IST'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). 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 IST consumes roughly 40 μA more than it does at 25°C.


Figure: 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: Battery Current versus Current Code. We use a bench top power supply and ammeter in place of a battery. 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.

In a high-power stimulus we have 5 mA pulses with 10% duty cycle. The average stimulus current is 0.5 mA. The current drawing from the battery is higher than our stimulus current. During the pulses, battery current is 7.7 mA. If we deliver the high-power stimulus for ten hours, we draw 7.7 mA from the battery for one hour and 140 μA for nine hours. The average battery current during the high-power stimulus is ≈ 0.90 mA. The high-power stimulus life is roughly one hour per milliamp-hour of nominal battery capacity.


Figure: Battery Current versus Stimulus Current. Blue: with LED load. Orange: with short-circuit load. Slope 1.52 mA/mA, intercept 0.0 mA.

When it comes to determining the lifetime of other stimuli, we first make sure the average stimulus current, IAVE, is less than the maximum continuous stimulus current for our battery, IMAX. When we calculate the average stimulus current, we must do so over a one-second period. If we deliver 10-s pulses of 10 mA once every 100 s, we must regard this as IAVE = 10 mA for 10% of the time, which exceeds IMAX for all our batteries. But if we deliver 10-ms pulses of 10 mA once every 100 ms, IAVE = 1 mA, and this average current is tolerated by all our batteries. Provided that IAVE ≤ IMAX, we get 1 hr × 0.5 mA ÷ IAVE hours of our stimulus for each 1 mAhr of battery capacity. Here we are using the average stimulus current of our high-power stimulus as our reference point for scaling the stimulus lifetime.

Example: Our stimulus consists of 10-mA pulses, 30 ms at 10 Hz. Our average stimulus current is 3.0 mA. We need the CR2450 battery to provide such a stimulus. For 1 mAhr of battery capacity, we get 1/6 hr of stimulus. The battery has capacity 600 mAhr, so it can provide the stimulus for 100 hr.

Operation

[29-DEC-23] 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 IST. The identifier 0xFFFF is the multicast ID. All ISTs will respond. We use the multicast ID to get all ISTs 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 IST 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 4 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 of up to 255 bytes each using op_pgld instructions. This upload takes place at roughly 1 KByte/s. A 4-KByte program broken into 32 chunks of 128 bytes each will take roughly ten seconds to upload. Once the upload is complete, the Stimulator starts it running with op_pgon.

A user program can either halt itself, or run until the IST 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 IST 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 IST 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

[20-MAY-24] The Implantable Stimulator-Transponder (A3041) is equipped with a thirty-millimeter, stranded-steel, loop antenna (a D-Antenna). The IST uses this antenna for receiving commands, but also for its "transponding" 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 IST 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: Command Transmission Protocol.

The 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 IST to set up for reception. The IST 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 IST 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 IST 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 Transmitting Feedthrough (A3042TF) and Reception by Implantable Stimulator-Transponder (A3041). We have three probes on an A3041 IST 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 IST 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 IST 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 IST, which can be either 0xFFFF for the wildcard selecting all ISTs, or some other sixteen-bit identifier unique to the target IST. In order to facilitate the implementation of acknowledgement messages using our existing SCT telemetry system, unique IST 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 IST calculates what the checksum should be and compares its own calculation to the checksum it receives. If they match, the IST accepts the command and commences to process its contents. If they do not match, the IST 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 IST 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

[10-APR-24] The following files define the A3041 design. Note that we distribute all these files under the GNU Public License. Any design that incorporates any part of our work must itself be distributed under the same GNU Public License.

S3041A_1.gif: Crystal radio, logic, stimulator, version A.
A304101A_Top.svg: Model top view of A304101A.
A304101A_Bottom.svg: Model bottom view of A304101A.
A304101A_Top.gif: Top overlay view of A304101A.
A304101A_Bottom.gif: Bottom overlay view of A304101A.
A304101AR1.zip: Gerber files for A304101A Revision 1.
A3041AV1.ods: Bill of materials for A3041AV1.
A3041AV2.ods: Bill of materials for A3041AV2, does not include R15.
S3041B_1.gif: Crystal radio, logic, stimulator, version B.
P3041: Firmware and software repository.
ROM.asm: Embedded microprocessor program.
OSR8: Open-Source Reconfigurable Eight-Bit (OSR8) Processor.

Modifications

[23-NOV-23] The A3041AV1 as received from our assembly house needs the following modifications.

  1. Replace C9 with 100 nF.
  2. Power-Up Oscillation Fix: Load R15, 2.0 MΩ P0402 from R8 to U6-5.


  3. Figure: Power-Up Oscillation Fix for A3041AV1. Load R15, 2.0 MΩ from R8 to U6-5, a pull-down resistor on OND to stop power-up oscillations.

  4. Power-Up Failure Fix, Part I: Replace C1 with 22 μF.
  5. Power-Up Failure Fix, Part II: Replace C8 with 4.7 μF P0402.
  6. Slow Relaps Fix: Replace R4 with 16 kΩ.

The A3041AV2 as received from the assembly house needs the following modifications.

  1. Power-Up Oscillation Fix: Load R15, 2.0 MΩ P0402 from R8 to U6-5, see photo above.

The A3041BV1 will power U6 from VS rather than VH, and it will use the MCP1711-12 regulator. To make the A304101B printed circuit board for the A3041BV1, we must modify the A304101A like this:

  1. Add R15 from OND to 0V.
  2. Connect U6-3 and L1 to VS rather than VH.
  3. Change P4-3 name to TP3.
  4. Change U2 to MCP1711Y-12I in UQFN-5 package.

Development

[24-OCT-24] For details of the development and production of the A3041, see its Developement page.