@@ -40,36 +40,36 @@ The measurement process uses three amplifier states:
4040
4141All electrodes actively drive the calibration signal onto the scalp:
4242
43- | Setting | Value | Description |
44- | ---------| -------| -------------|
45- | All 10K Resistors | OFF | Electrodes not connected to reference |
46- | All Drive Signals | ON | All electrodes driving calibration signal |
47- | Oscillator Gate | ON | Enable 20 Hz sine wave generator |
48- | Calibration Frequency | 20 Hz | Low frequency for skin penetration |
49- | Calibration Amplitude | 4095 | Maximum (12-bit DAC) |
50- | Wave Shape | Sine (0) | Clean sinusoidal signal |
51- | Subject Ground | OFF | Not grounded during measurement |
52- | Current Source | OFF | Voltage mode measurement |
43+ | Setting | Value | Description |
44+ | ----------------------- | ---------- | ------------------------------ -------------|
45+ | All 10K Resistors | OFF | Electrodes not connected to reference |
46+ | All Drive Signals | ON | All electrodes driving calibration signal |
47+ | Oscillator Gate | ON | Enable 20 Hz sine wave generator |
48+ | Calibration Frequency | 20 Hz | Low frequency for skin penetration |
49+ | Calibration Amplitude | 4095 | Maximum (12-bit DAC) |
50+ | Wave Shape | Sine (0) | Clean sinusoidal signal |
51+ | Subject Ground | OFF | Not grounded during measurement |
52+ | Current Source | OFF | Voltage mode measurement |
5353
5454### Measurement State (Per-Channel)
5555
5656For the channel being measured:
5757
58- | Setting | Value | Description |
59- | ---------| -------| -------------|
60- | Channel Drive Signal | OFF | Stop driving this electrode |
61- | Channel 10K Resistor | ON | Connect to reference resistor |
58+ | Setting | Value | Description |
59+ | ---------------------- | -------- | ------------------ -------------|
60+ | Channel Drive Signal | OFF | Stop driving this electrode |
61+ | Channel 10K Resistor | ON | Connect to reference resistor |
6262
6363All other channels remain in excitation state, creating the voltage divider.
6464
6565### Reset State
6666
6767After measurement, return channel to excitation state:
6868
69- | Setting | Value | Description |
70- | ---------| -------| -------------|
71- | Channel Drive Signal | ON | Resume driving |
72- | Channel 10K Resistor | OFF | Disconnect reference |
69+ | Setting | Value | Description |
70+ | ---------------------- | -------- | --------- -------------|
71+ | Channel Drive Signal | ON | Resume driving |
72+ | Channel 10K Resistor | OFF | Disconnect reference |
7373
7474## Measurement Algorithm
7575
@@ -91,14 +91,12 @@ After measurement, return channel to excitation state:
9191
9292## Timing Parameters
9393
94- From EGI's Net Station implementation:
95-
96- | Parameter | Value | Description |
97- | -----------| -------| -------------|
98- | Command Time | 30 ms | Time for command to reach amplifier |
99- | Settle Time | 0 ms | Additional settling (Net Station uses 0) |
100- | Filter Time | 1.0 s | Duration for filter/measurement |
101- | Peak-to-Peak Samples | 51 | Samples for amplitude calculation |
94+ | Parameter | Value | Description |
95+ | ----------------------| --------| -------------------------------------|
96+ | Command Time | 30 ms | Time for command to reach amplifier |
97+ | Settle Time | 0 ms | Additional settling |
98+ | Filter Time | 1.0 s | Duration for filter/measurement |
99+ | Peak-to-Peak Samples | 51 | Samples for amplitude calculation |
102100
103101Total time per channel: ~ 1.03 seconds
104102
@@ -142,14 +140,14 @@ Coordinates are on a unit sphere:
142140
143141### Key Source Files
144142
145- | File | Description |
146- | ------| -------------|
147- | [ ImpedanceMeasurement.h] ( src/core/include/egiamp/ImpedanceMeasurement.h ) | Class declaration and timing structures |
148- | [ ImpedanceMeasurement.cpp] ( src/core/src/ImpedanceMeasurement.cpp ) | Measurement algorithm implementation |
149- | [ LSLStreamer.cpp] ( src/core/src/LSLStreamer.cpp ) | LSL outlet creation with electrode positions |
150- | [ ElectrodePositions.h] ( src/core/include/egiamp/ElectrodePositions.h ) | Electrode coordinate definitions |
151- | [ ElectrodePositions.cpp] ( src/core/src/ElectrodePositions.cpp ) | Geodesic position generation |
152- | [ EGIAmpClient.cpp] ( src/core/src/EGIAmpClient.cpp ) | Integration with streaming client |
143+ | File | Description |
144+ | -------------------------------------------------------------------------- | --------------------------------- -------------|
145+ | [ ImpedanceMeasurement.h] ( src/core/include/egiamp/ImpedanceMeasurement.h ) | Class declaration and timing structures |
146+ | [ ImpedanceMeasurement.cpp] ( src/core/src/ImpedanceMeasurement.cpp ) | Measurement algorithm implementation |
147+ | [ LSLStreamer.cpp] ( src/core/src/LSLStreamer.cpp ) | LSL outlet creation with electrode positions |
148+ | [ ElectrodePositions.h] ( src/core/include/egiamp/ElectrodePositions.h ) | Electrode coordinate definitions |
149+ | [ ElectrodePositions.cpp] ( src/core/src/ElectrodePositions.cpp ) | Geodesic position generation |
150+ | [ EGIAmpClient.cpp] ( src/core/src/EGIAmpClient.cpp ) | Integration with streaming client |
153151
154152### Key Classes
155153
@@ -166,17 +164,17 @@ Coordinates are on a unit sphere:
166164
167165### AmpServer Commands
168166
169- | Command | Description |
170- | ---------| -------------|
171- | ` cmd_TurnAll10KOhms ` | Set all 10K resistors (0=off, 1=on) |
172- | ` cmd_TurnAllDriveSignals ` | Set all drive signals (0=off, 1=on) |
173- | ` cmd_TurnChannel10KOhms ` | Set single channel 10K resistor |
174- | ` cmd_TurnChannelDriveSignals ` | Set single channel drive signal |
175- | ` cmd_SetOscillatorGate ` | Enable/disable calibration oscillator |
176- | ` cmd_SetCalibrationSignalFreq ` | Set frequency (20 Hz for impedance) |
177- | ` cmd_SetCalibrationSignalAmplitude ` | Set amplitude (0-4095) |
178- | ` cmd_SetWaveShape ` | Set waveform (0=sine, 1=square) |
179- | ` cmd_DefaultAcquisitionState ` | Reset to normal EEG acquisition |
167+ | Command | Description |
168+ | ------------------------------------- | -------------------------- -------------|
169+ | ` cmd_TurnAll10KOhms ` | Set all 10K resistors (0=off, 1=on) |
170+ | ` cmd_TurnAllDriveSignals ` | Set all drive signals (0=off, 1=on) |
171+ | ` cmd_TurnChannel10KOhms ` | Set single channel 10K resistor |
172+ | ` cmd_TurnChannelDriveSignals ` | Set single channel drive signal |
173+ | ` cmd_SetOscillatorGate ` | Enable/disable calibration oscillator |
174+ | ` cmd_SetCalibrationSignalFreq ` | Set frequency (20 Hz for impedance) |
175+ | ` cmd_SetCalibrationSignalAmplitude ` | Set amplitude (0-4095) |
176+ | ` cmd_SetWaveShape ` | Set waveform (0=sine, 1=square) |
177+ | ` cmd_DefaultAcquisitionState ` | Reset to normal EEG acquisition |
180178
181179## Usage
182180
@@ -201,18 +199,6 @@ pip install -r requirements.txt
201199python impedance_viewer.py --threshold 50
202200```
203201
204- ## Impedance Thresholds
205-
206- Recommended thresholds for EGI saline-based nets:
207-
208- | Quality | Impedance (kΩ) | Color |
209- | ---------| ----------------| -------|
210- | Excellent | < 20 | Green |
211- | Good | 20 - 50 | Yellow-Green |
212- | Acceptable | 50 - 100 | Yellow |
213- | Poor | 100 - 200 | Orange |
214- | Bad | > 200 | Red |
215-
216202Values of 1000 kΩ indicate:
217203- Electrode not yet measured
218204- No contact with scalp
@@ -221,4 +207,5 @@ Values of 1000 kΩ indicate:
221207## References
222208
223209- EGI AmpServer SDK Documentation
210+ - Net Station Acquisition source code (NSAAmpSettings.m, ImpedancesController.m)
224211- EGI Geodesic Sensor Net Technical Manual
0 commit comments