detect 'railed', freeze / calculate uVrms [resolved]
Hi, i'm using an openBCI setup with a cyton + daisy module. My experiment in running in a separate program which also runs a driver for the openBCI. This works fine most of the time, but sometimes data stops coming in. I suspect this has to do with my experiment being quite long (about an hour) and elektrodes railing because of that. I wanted to build a signal checker in the separate program to identify when this happens so i can fix it when it happens. According to this post eeghacker.blogspot.com/2014/04/openbci-measuring-electrode-impedance.html , the uVrms is enough of an indicator of the signal since the current is constant. However, i have some difficulties figuring out how to get the uVrms from the values in the csv file. I see the GUI does have such a runtime feature of the signal, which we use to setup the openBCI. However, the separate program does not allow for the GUI and the experiment to run both at the same time. Also, when exactly does a elektrode get 'railed'? I feel like these two questions are closely related. Thanks in advance.
Comments
Rogier, hi.
Here are some good background posts on 'railed', using the Advanced Search button in the upper right column:
https://openbci.com/forum/index.php?p=/discussion/1481/how-to-become-de-railed
https://www.google.com/search?as_q=railed&as_sitesearch=openbci.com
'Railed' is a separate issue than the "sometimes data stops coming in" you mention. Can you elaborate? The data stream from the Cyton is freezing for you? This was an issue with the V1 firmware, but has been resolved with current firmware.
You mention "My experiment is running in a separate program which also runs a driver for the openBCI." So you are receiving the data stream in Python or some other language or app? Please mention what you are using. If that program is calling a DSP Digital Signal Processing library, it's normal practice to have say a bandpass filter from around .5 Hz to say 45 Hz. This will remove the DC offset and mains noise. All you would need to do to determine 'railed' status, is to check to see if your sample values (in microvolts), exceed say 200 or 400 microvolts. These are out of the normal range of EEG, and would indicate some type of electrode issue. You would not need to calculate uVrms, to detect a bad data / railed situation.
As with the first link above, if you are seeing railed on multiple channels, then suspect your reference electrode is having impedance or contact problems.
Another way you could monitor this in real time, is to have the GUI receive the data stream, then stream it out to your Python program in LabStreamingLayer format. There are library routines to receive such a stream.
Regards, WIlliam