This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

ADS1220: Removing Parasitic Effect

Part Number: ADS1220
Other Parts Discussed in Thread: MSP430F5529, , LM2575

Hello,

I designed a custom board using MSP430F5529 microcontroller and ADS1220 ic to measure resistances. Also the board has isolated RS485 lines to send measurement data to PC. I followed the ADS1220 datasheet and MSP430 library on Github to achieve reading resistance values.

I designed the layout of the PCB as shown in ADS1220 datasheet but bottom side is NOT GND covered. Power lines enter the ADS1220 from sides.

ADS1220 works perfectly if nothing is closer to bottom side of the PCB. If I put my finger closer to 5mm (or put it on table) ADS1220 returns "-1" value and it goes into an unstable mode. After leaving the board alone (nothing is closer to bottom of the PCB), it returns back to true values.

I made some tests:

If I only connect  my MSP430G2 launchpad's GND to my custom board's GND, the parasitic effect disappears! I am using MSP430G2 launcpad as a programmer device for my board. 

LM2575 supplies 3.3V for both MSP430F5529 and ADS1220. ADS1220's analog and digital supply voltages is not isolated (for your information).

Can you suggest anything to elminite this parasitic effect? What is the MSP430G2 launchpad's effect?

Best regards,

Onur

  • Onur,


    Without seeing your schematic and the board layout, it is difficult to know where the problem is.

    However, you mentioned that "If I only connect my MSP430G2 launchpad's GND to my custom board's GND, the parasitic effect disappears! I am using MSP430G2 launcpad as a programmer device for my board."

    I suspect that you have some problem in your isolation. Normally, I would expect the ground for the launchpad and the ADS1220 board would be connected together, and any isolation would be between the launchpad and the computer. However, having the isolation between the microcontroller and the ADC is possible.

    If you have problem with this isolation, I would expect that the communication would be similar to what you are seeing. Note that -1 as a data read is FFFFFFh, so the DOUT line is always read high. How do you construct the isolation barrier? By moving your finger over it, you are most certainly disrupting it in some way.

    Regardless, I'll need more data about your circuit to help debug the communications.


    Joseph Wu
  • Hello Joseph,

    Here, you can see parts of the circuit:

    Best regards,

    Onur

  • Onur,

    The schematics in your last post are a bit limited in showing your digital connections. Also, I'm still a bit confused about your system isolation. Just to make sure I understand your setup, I put together this diagram with your nomenclature from the schematics:

    I still think this is a problem in your isolation and that a ground isn't connected on the ADS1220 someplace. I assume that you have the ADS1220 connected to an MSP430F5529, and that connects to U9 as one side of the RS485 line. I would get an oscilloscope to make sure that the communication from the ADS1220 is coming out correctly and being received properly by the MSP430F5529, and then look at the communication coming out of the MSP430F5529 is being sent correctly to the RS485 driver.

    Again, I don't think this is problem with the ADS1220, but rather the isolation you have set up. Using an oscilloscope, you should be able to verify the digital lines coming out of the ADS1220 to see that the device is correctly clocking out data.

    Verify that my diagram is correct. Then use an oscilloscope (or a logic analyzer) and look at the signals coming out of the ADS1220. You can post scope shots back here.

    Joseph Wu

  • Onur,

    For whatever reason, my diagram didn't get embedded in the text. Here it is again:

    Joseph Wu

  • Hello,

    I am in vacation now. I will post here the logic analyzer results.

    The diagram is here:

  • Onur,


    I'll wait for the logic analyzer results. However, it still looks like you're having problems spanning the RS485 isolation. By attaching the launchpad, you alter the relative ground of the MSP430F5529/ADS1220 and you might be pulling the grounds together across the isolation.

    You'll want to check the SPI communication from MSP430F5529 to the ADS1220 and the communication from the MSP430F5529 across the UART to the VCC_3V side of the RS485 isolation. This will help you make sure where the communication if failing. I'd also check that the MSP430F5529 has a common ground with the ADS1220. You probably have it set up correctly, but it's not shown in your diagram.


    Joseph Wu
  • Hello Joseph,

    I have found the problem. 

    I connected SPI lines to logic analyzer and saw that CS pin never goes low! I am using MSPWare and spi.c and spi.h (from another example). And spi.c uses UCB0 and it does not configure the UCB0STE -> P2.7

    Here it is:

    void spi_init()
    {
    	/* Configure ports on MSP430 device for USCI_B */
    	#ifdef __MSP430F5172
    	P1SEL |= BIT3 | BIT4 | BIT5;
    	#endif
    	#ifdef __MSP430F5529
    	P3SEL |= BIT0 | BIT1 | BIT2;
    	#endif
    
    	/* USCI-B specific SPI setup */
    	UCB0CTL1 |= UCSWRST;
    	UCB0CTL0 = UCCKPH | UCMSB | UCMST | UCMODE_0 | UCSYNC;  // SPI mode 0, master
    	UCB0BR0 = 0x01;  // SPI clocked at same speed as SMCLK
    	UCB0BR1 = 0x00;
    	UCB0CTL1 = UCSSEL_2;  // Clock = SMCLK, clear UCSWRST and enables USCI_B module.
    }

    In the main.c I have added these lines:

        spi_init();
        GPIO_setAsOutputPin(GPIO_PORT_P2, GPIO_PIN7);
        GPIO_setOutputLowOnPin(GPIO_PORT_P2, GPIO_PIN7);

    So, CS pin is always low. And it is working.

    Now, the device on the table without any problem. Instead of putting finger close to ADS1220, I am touching it and it works :)

    Solved! Thank you,

    Onur

  • Onur,


    I'm glad you were able to solve your problem. Often, using an oscilloscope or logic analyzer will help debug a problem faster and it looks like it helped in your case. If you have any other questions, feel free to post back.


    Joseph Wu