Hello, everyone!
I'm try to use DC Lead-off method in my ADS1298. Here is my sample code:
SendCmdADS1298(ADS_SDATAC);
WriteADS1298Reg(ADS_LOFF, 0x13);
WriteADS1298Reg(ADS_CONFIG4, 0x02);
WriteADS1298Reg(ADS_LOFF_SENSP, 0xFF);
WriteADS1298Reg(ADS_LOFF_SENSN, 0xFF);
WriteADS1298Reg(ADS_LOFF_FLIP, 0x00);
SendCmdADS1298(ADS_RDATAC);
LeadOff = 0;
PacketCount =0;
while(PacketCount<8)
{
FlgRec = 0 ; while(!FlgRec); // Recieve data from SPI
PacketLeadOff = (SPIRx[0]<<4) | (SPIRx[1]>>4) ; // LeadOff detection
PacketLeadOffF = (SPIRx[1]<<4) | (SPIRx[2]>>4) ;
if (PacketLeadOffF==0xFF) {PacketLeadOff = PacketLeadOffF;}
LeadOff |= PacketLeadOff;
PacketCount++;
}
SendCmdADS1298(ADS_SDATAC);
WriteADS1298Reg(ADS_CONFIG3, 0xDC);
WriteADS1298Reg(ADS_LOFF, 0x00);
WriteADS1298Reg(ADS_CONFIG4, 0x00);
WriteADS1298Reg(ADS_LOFF_SENSP, 0x00);
WriteADS1298Reg(ADS_LOFF_SENSN, 0x00);
SendCmdADS1298(ADS_RDATAC);
if (LeadOff&Channels)
{
SendCharToUART(UART_Device, 0x07);
SendCharToUART(UART_Device, LeadOff&Channels);
return;
}
It's work! I can really detect if electode is off. But when i switch eletrodes to normal mode i see long transient:
On picture - red line - right hand, blue line - chest 1. DC lead-off repeats 8 times switching LOFF_FLIP.
I have to wait much time before i can measure ECG signal! And time of transient process differs for different people!
Is there any ways to stop drift and fast normalize signal ?
Thanks in advance