Dear TI support,
I am currently developing a board for EMG signals acquisition by interfacing
an ADS1198 chip to an Atmega 32u4.
I have a prototype board following the ADS1198 layout guidelines and proper SPI communication
between the chip and the MCU already established.
The power supply is as follows:
- digital 3V3 provided by an MCP1703DB
- analog 3V3 provided by precision regulator ADP7105ARDZ
- analog GND decoupled from DGND
- virtual reference generated with TLE2426ID pI can share the eagle files of the design if it makes it easier to debug.recision virtual ground
- input electrodes use IN118 instrumentation amplifier with differential input and come with a driven shielded cable.
- VREFP is at the internal 2.4V reference
- VREFN is connected to the analog ground
The problems I observed are the following:
Signal acquisition from the electrodes is very noisy, even nonsensical, no EMG can be read from them
Using the internally generated test signals (supposed to be n the 1mV range), the signal seems to oscillate between 0 and negative saturation even though the frequency of the square wave is as according to the settings.
Providing the inputs with a 10mV sinusoidal function from a generator also yields a noisy unreadable signal.
I could not figure out any error in the board that would be responsible for these issues yet.
Here is the setting sequence to test the device with only channel 1 active:
digitalWrite(EMG_SELECT, LOW); //faster than difitalWrite
SPI.transfer(0x41); //write (0x4h) starting from (0x01 == config 1)
SPI.transfer(0x0B); //write 11 registers (number + 1)
SPI.transfer(0x04); //config1 (500kSPS)
SPI.transfer(0x30); //config2
SPI.transfer(0xF0); //config3 -->enable 4V internal reference, config for DRL still to be checked
SPI.transfer(0x00); //Lead off control reg
SPI.transfer(0x60); //CH1 options
SPI.transfer(0x81);
SPI.transfer(0x60);
SPI.transfer(0x81);
SPI.transfer(0x81);
SPI.transfer(0x81);
SPI.transfer(0x81);
SPI.transfer(0x81); //CH8 options (60 is default connected, 81 is disabled)
digitalWrite(EMG_SELECT, HIGH);
digitalWrite(EMG_START,HIGH);
digitalWrite(EMG_SELECT, LOW); //faster than digitalWrite
SPI.transfer(RDATAC);
I can provide you with graphs of the data we obtained if necessary.
Thank you in advance for your help.
Quentin
You can find hereby the eagle files of the prototype. (.sch / .brd and gerber files):