top of page

Electrohaptic Stimulation Hardware: Shockingly Difficult

Creating a device that can send pulses of electricity through the skin is in theory quite a simple task. You have a control circuit and microcontroller which sends the pulses and the electrode that’s in contact with the skin. Two simple components which are both made much more complicated because of the home to the nerves we are trying to stimulate: the skin.

The skin is an incredibly complex and individual medium that we’re using to push our pulses of electricity, or current, through. It consists of layers of tissue, each with different properties and host to different nerves depending on which layer you look at. Going from one individual to another (or even one fingertip to another) can result in wildly different skin thicknesses and as a result, further variation in the properties of the skin. Skin can be hot or cold, wet or dry, rough or smooth; all factors which influence the electrical properties of the skin and therefore the way that current is pushed between the electrodes and because of this, our control circuit needs to be robust enough to handle all of these different scenarios.

As a starting point, it can be assumed that the resistance between two adjacent dry electrodes (no gel or special interface material) with the skin as a conductor between is anywhere from 100kΩ to 10MΩ. For reference, to drive just 1mA through these electrodes, it would require a minimum of 100V which is approaching dangerous levels if someone using the device was trying to hurt themselves. Thankfully, 1mA has been found across a few different studies to be all that is needed to create some kind of sensory stimulation of the fingertip and the risk of someone using the device incorrectly is low due to the small area where stimulation should be happening.

After my initial research, I created a rough layout for the electrode array that would attach to the fingertip. I decided on a 4x4 array so that the electrodes would still have a large enough contact area with the skin while also giving more room to play with different textures when it came time for testing. As I was designing the electrode array, it became clear that it was going to be difficult to route traces to all of the electrodes on just a single-sided flexible circuit board. I initially considered using one of the Chinese PCB manufacturers, but as well as being hugely more expensive and having a fairly lengthy wait time for flexible substrates, I thought the presence of vias (holes from one layer of the board to another) could pose issues for the contact area. Thinking about the facilities available to me, I started designing around using the Voltera V-One PCB printer which I have access to through my University. This would allow me to iterate on my designs quickly and (relatively) easily rather than having the boards ordered from China. It also gave me the opportunity to play with a piece of equipment that I’d been seeing on my YouTube feed for years from creators like GreatScott! The process I’ll be using will be the subject of a future post on this blog as it involves some more unusual techniques and deserves its own post.

Another way to enhance the electrode array and lower the skin-electrode resistance is to use some kind of interface material to bridge the gap between skin and electrode, not unlike using thermal interface material between a computer processor and its cooler. Traditionally for electrodes, this would be an electroconductive gel that is applied directly to the electrode before attaching it to the skin which decreases impedance and signal variability. However, this method has some drawbacks, including the tendency of the gel to dry out, diminishing its effectiveness over time, it can trigger allergic reactions and is an extra step making using the electrodes at all a more time-consuming task. Alternatively, a dry-electrode can be used, but this eliminates the advantages of the electroconductive gel. Recent research has highlighted some materials which may be able to bridge the gap between wet and dry electrodes giving the best of both technologies.

Now that there are some parameters to work from for the control circuit, that’s what I focused on next. There are 16 electrodes, all of which must be able to be switched on and off individually with current control of each electrode. The most complex part is where I started first, the switching of the electrodes between a high-voltage source and ground. I assumed that to achieve lower dry electrode impedance, I would need to work with voltages in the range of up to 200V (with the goal of using a lower voltage) and up to 5mA per channel since the materials I mentioned could potentially lower impedance have not yet been tested. This current came from other studies looking at electro-tactile stimulation finding that participants required between only 0.5mA and 1mA for sensations on the fingertip. Ideally, there would be a chip that fits all of these requirements, or at least an easy way to make something like this. I did find the HV507 from Microchip that could work, but it has limitations. It can only handle up to 1mA of current per channel, and it doesn't offer control over the current for each individual channel. Alternatively, I could build an array of push-pull amplifiers, each with its own current control circuit. However, this approach is complex and could require a lot of time to troubleshoot. HV507 it is!

The HV507 is a low-voltage to high-voltage serial-to-parallel converter with 64 push-pull outputs. It can handle up to 300V and is CMOS-compatible (uses 5V logic). In conjunction with the ESP32-WROOM that I will be using for the microcontroller in this project and a 3.3V-to-5V logic level converter, the HV507 is a great choice for simplicity. Another benefit of this IC is that it has 64 channels which gives room for either higher-resolution electrode arrays or the potential for the stimulation of multiple fingers without having to reconfigure the entire control circuit. Either way, more electrodes!

The constant current circuit that I’ll be using is a simple voltage-controlled current source (VCCS) circuit and consists of an op-amp, shunt resistor and N-channel MOSFET. I’ve used this design since the very first ideas about the circuit and it’s been pretty reliable and simple to use. In a typical VCCS circuit, an op-amp is used to compare the input voltage with the output voltage across a shunt resistor. The op-amp then adjusts the output voltage to ensure that the current flowing through the shunt resistor is proportional to the input voltage. The output voltage of the op-amp is then sent to a MOSFET that acts like a switch to control the flow of current through the circuit. The MOSFET's drain is connected to the load and its source is connected to the shunt resistor. By adjusting the output voltage of the op-amp, the VCCS circuit maintains a constant current through the load, which in turn ensures that the current flowing through the circuit is proportional to the input voltage. I think this is a case where a picture (or schematic) speaks a thousand words…

For the brains of my project, I'm using an ESP32-WROOM as I mentioned earlier. I had one lying around and it turned out to be a great choice because of its built-in WIFI and Bluetooth capabilities. Plus, it's really easy to get started with! Right now, I'm writing the code for the project in Arduino, but I'm planning to switch over to the Espressif-IDF framework soon. This will give me more control over the hardware and allow me to customize things even further.

The circuit I’ve ended up with looks pretty good and seems to cater to my needs quite well. I’m sure there are lots of little improvements that can be made, but for initial testing, I think my design will work to show the potential of electrotactile haptic feedback.


bottom of page