Building a TENS device from scratch & scraps

I’ve always been fascinated by the intersection of electronics and the human body – how a few carefully shaped pulses can interact with nerves and muscles. Recently, I created a monophasic TENS (transcutaneous electrical nerve stimulation) device for a family member, which is specifically designed for the hand.


tens pcb

🔋Power Stage

The heart of any exciter is its power supply. i started with one 3.7V LiPo Battery As an energy source, managed by mcp73831 charger icThis gave me a simple USB-C charging interface and secure single-cell management,

From there, I needed two rails:

  • +3.3V logic rail For microcontrollers and digital circuitry
  • High-voltage rail (~32V) for excitation pulses

TPS55340 boost converter Taking over the heavy lifting, boosting the battery voltage to 32V. Careful selection of inductors (100 µH for boost stage).

While the boost converter gave me high-voltage excitation rails, the digital brain needed a clean and stable 3.3V supplyFor that, I used this TPS63001 buck-boost converter From TI.

Why this option?

  • Hand-held device powered by a Li-ion cell, which can swing 4.2V (fully charged) all the way down ~3.0V (discharge),
  • A simple LDO won’t cut it, because once the battery drops below 3.3V, the logic rails will collapse.
  • TPS63001 solves this buck-raising: This can step the voltage up or down as needed, keeping the microcontroller happy at 3.3V over the entire discharge curve.

This ensured that the ATmega32U4 and other logic devices always had a reliable rail, independent of battery status.

control stage

For sans sake, I went with this ATmega32U4It’s a familiar workhorse, USB-enabled, and has enough timers and PWM channels to generate excitation waveforms,

Key Features in Control Block:

  • 10 bit pwm output Mapped to finger electrodes (thumb, index, middle, ring, pinky)
  • adc input Reserved for sensing or responding (although not strictly necessary in monophasic mode)
  • internal clock for constant time
  • Reset and ISP Header (TC2030) For easy firmware flashing

I wrote firmware to generate monophasic pulses with adjustable frequency and duty cycle. The microcontroller essentially functions as a programmable waveform generator, with parameters tuned for therapeutic comfort.

output stage

The output stage is where the magic happens. Here, the gate is applied by the boosted 32V rail N-channel MOSFET (DMN6075S) Controlled by MCU and BJT (FZT853, MMBT2222) To give a limited controlled current. Inspired by: https://electronics.stackexchange.com/questions/288388/help-dimensioning-resistors-in-a-two-npn-transistor-current-limiter-circuit

Each electrode channel is tied to a finger pad, with the palm acting as a common base. The design ensures that the current flows in a monophasic fashion – only one direction – avoiding the complexity of dipole balancing but still being effective for local excitation.

electrode layout

The electrodes were arranged to match the anatomy of the hand:

  • Thumb, index, middle, ring, pinky each get their own channel, which are “on.”
  • The PAM is the common ground reference, which is switched via the MOSFET and the MCU at a fixed frequency, for example 14Hz.

This layout allows selective stimulation of different fingers, which is useful for rehabilitation exercises.


tens pcb2d

🧩Putting it all together

So the blocks look like this:

block key components Celebration
Power MCP73831, TPS55340, TPS63001 Battery charging, 32V, 3.3V boost rail
Control ATmega32U4, crystal, ISP header Generate pwm pulse, manage timing
Production MOSFETs, BJTs, TVS diodes Gate high-voltage pulse to electrode
electrode finger pad + palm pad provide stimulation to arm muscles

some thoughts

This project was equal parts electronics design and human-centered engineering. The monophasic approach kept things simple, and by breaking the design into clear blocks – power, controls, outputs – I could iterate quickly.

Most importantly, it is not just a gadget. Total cost of the project is <$100.



Leave a Comment