A couple of posts ago I discussed the reason that the current circuit is AC coupled rather than DC coupled, and managed to get DC coupling briefly working. The advantage of this is that it enables us to measure the absolute voltage across the eyes, rather than just the changing voltage, which gives us more information. Now I am going to address how we can get to a fully DC coupled solution to work all the time.
In the last article I made a PCB that allowed me to easily inject signals from my signal generator into the EOG cables. This allows me to more easily simulate signals without wiring myself up, but also allows me to isolate the effects of the cables. The first thing I wanted to try was to shield the cables.
Now that I have an EOG system working to some extent, it is inconvenient to wire myself up each time I want to take a measurement. Not to mention that the silver chloride electrode pads are single use which is wasteful and expensive (I reuse them multiple times, but the connection and adhesion definitely degrade). On top of this, I don’t like being connected to the system while it is connected to any mains powered device due to risk of an electrical fault being directed straight to my head – I can unplug my laptop, but my oscilloscope isn’t battery powered. So I decided to make an adapter from my signal generator to the snap connectors so I can inject false EOG signals.
As of the last post, the digital aspect of the project is mostly pulling its weight. Although we are filtering the 60Hz noise in the digital domain, I mentioned that it would be ideal to prevent the noise in the first place by improving the analog side. There are three aspects I want to start diving into.
The first is shielding the signal – a lot of the noise is picked up on the long wire from the electrode to the device and this can be improved by shielding the wires (potentially more complex than it sounds). Secondly, I want to better understand the analog signal path that is based on the backyard brains design and where it can be improved to lower noise and provide a larger signal. Finally I want to try and DC couple the signal, rather than using AC coupling as is currently the case. With AC coupling we are only able to detect movements of the eyes, and not absolute positions. Today we will be looking mostly at the second, and skimming the surface of the third.
In the previous article I showed the analog EOG measurement being digitised and sent over USB to my Mac where it was plotted in a python script. While the EOG signal was clear, it was partially obscured by a strong 60Hz signal from the mains interference.
There are multiple ways of reducing this interference, in both software and hardware. A comparison of each of these methods can be found in Effective Biopotential Signal Acquisition: Comparison of Different Shielded Drive Technologies (Y. Jiang, O. Samuel, X. Liu, X. Wang, P. Idowu, P. Li, F. Chen, M. Zhu, Y. Geng, F. Wu, S. Chen, G. Li – Appl. Sci. Basel 8, 276 (2018).
The simplest way is to use a 60Hz notch filter to remove the noise. This has disadvantages of potentially distorting the signal. Furthermore, by allowing additional noise in the analog signal there is a loss of dynamic range. Nonetheless, filtering yields a significant improvement in the signal with minimal investment.
In the first article, I showed the amplified electrooculography signals on my oscilloscope. In the second article I showed the STM32 streaming a synthesised saw-tooth wave over USB to a simple python plotting script on my Mac.
The next step was to enable the ADC on the STM32 to digitise the analog signal and send that over the USB.
The analogue signal I showed in the previous article feeds into the ADC of an STM32. This was the STM32 can digitise the signal and send it over USB to my Mac.