Configuration for universal analog input in AD7124_8

Hi,

!)I want to use AD7124_8 for universal analog input. So that I can connect channel number RTD or TC or 4-20mA or 0-10V.Is that possible with Ad7124_8?

2) AD7124 ADC 8 channel differential input is there so that can use channel one for RTD  application, Channel two for Thermocouple application,channel three for 4-20mA application, and channel four 0-10v application. So is that possible to configure like this way in AD7124_8?

Parents
  • 0
    •  Analog Employees 
    on Aug 28, 2020 4:18 AM 3 months ago

    Hi,

    I believe yes it will definitely possible. Especially the RTD and TC inputs as most of the building blocks needed for this type of sensors are already integrated on the chip. We have a reference circuit that will help you start with the design of TC with RTD as its cold junction. Please see below reference circuit.

     https://www.analog.com/media/en/reference-design-documentation/reference-designs/CN0384.pdf

    For the 4-20mA and 0-10V inputs, this will require an external shunt for the current input and attenuator divider for the voltage input.

    We also have available AD411x family that will also suit your application.

    AD4111/AD4112 are capable of measuring direct 0 to 10V and 4-20mA inputs without the need of any external circuitry. You can use this along with AD7124-4 for your universal input module.

    We also have AD4110-1 that allows all inputs above in a single ADC. However, if you require 4 channels I think an external Mux will be needed here.

    Please see also all available resources that you may find helpful.

    https://www.analog.com/en/applications/markets/industrial-automation-technology-pavilion-home/plc-dcs.html 

    Thanks,

    Jellenie

  • 0
    •  Analog Employees 
    on Aug 28, 2020 6:29 AM 3 months ago in reply to JellenieR

    Also, you can take a look at the CN0414 reference design.

    Regards,
    Mihai

  • Hi 

    Thanks for your revert.

    If I use AD7124_8 and AD4112 then too costly right?. Because of this cost issue only I choose this AD7124_8 otherwise, I would have gone AD4112.

    Ad7124 and ad4112 if use also single-channel how can I configure. I need to use the separate input connector for AD4112 and AD7124.

     Please find out the attachment file. This block diagram for single-channel universal input.If I use AD7124_8/AD4112/1.Can I make two-channel universal analog input like the block diagram?.

  • 0
    •  Analog Employees 
    on Sep 3, 2020 10:14 AM 2 months ago in reply to heatcn

    Hi,

    I see that you mentioned the AD4110-1 application and also Jellenie recommended this device.

    Did you take into consideration to develop a board with a single universal input (modular design), but to have the option to connect/stackup up to four boards like this, with a different SPI address, on a single SPI bus (check-up figure 71 from AD4110-1 datasheet)?

    And if you want even more devices/boards connected, you will just need to switch between SPI busses.
    In this way you will be able to scale your system to your needs, you will have a smaller board with fewer IC components, fewer nonlinearities and errors, and at a lower cost.

    Regards,
    Mihai

  • 0
    •  Analog Employees 
    on Sep 4, 2020 4:23 AM 2 months ago in reply to heatcn

    Hi,

    Thanks for the details. I think this deserves a more detailed discussion to accommodate your needs. Let me check if I can organize something to talk about this offline. Or have you tried to contact our local FAE?

    Regards,

    Jellenie

  • Hi,

    Thanks for your revert.

    No, I didn't contact my local FAE.

  • Hi,

    I developed the PCB for temperature measurements using AD7124-8 part numbers.

    My hardware schematic and code is attached below please have a look.

    my issue is that am not able to interface the ad7124 to my MCU. please check my hardware and code did I done any mistakes in hardware or source code?. Am using Arduino ide and API only. hardware i developed by referring  ad7124-8 application note CN0383&391.

    5756.SCHEMATIC1 - PAGE5.tif

    /*
      AD7124 Voltmeter
    
      Prints out the voltage measured at pins AIN1(+)/AIN0(-)
      Input voltage must be in the range between 0 and 2.5V
    
      For more on AD7124, see
      http://www.analog.com/media/en/technical-documentation/data-sheets/AD7124-4.pdf
    
      The circuit:
      - AD7124 connected on the MOSI, MISO, SCK and /SS pins (pin 10)
      - LED active in low state connected to pin 9.
      
      The conversion times are as follows:
      ----------------------------------------
      | Mode      | Tconv (ms) | Fconv (Sps) |
      +-----------+------------+-------------+
      | LowPower  | 652        | 1.534       |
      | MidPower  | 330        | 3.030       |
      | FullPower | 90         | 11.11       |
      ----------------------------------------
    
      created 2018
      by epsilonrt https://github.com/epsilonrt
    
      This example code is in the public domain.
    
      https://github.com/epsilonrt/ad7124/tree/master/examples
    */
    #include <ad7124.h>
    
    /* constants ================================================================ */
    const int ledPin = 9;
    const int ssPin = 10;
    
    /* public variables ========================================================= */
    Ad7124Chip adc;
    
    /* internal public functions ================================================ */
    
    // -----------------------------------------------------------------------------
    void setup() {
    
      pinMode (ledPin, OUTPUT);
      digitalWrite (ledPin, 1); // clear the LED
    
      //Initialize serial and wait for port to open:
      Serial.begin (38400);
      while (!Serial) {
        ; // wait for serial port to connect. Needed for native USB port only
      }
    
      // prints title with ending line break
      Serial.println ("AD7124 Voltmeter");
    
      // Initializes the AD7124 device, the pin /CS is pin 10 (/SS)
      adc.begin (ssPin);
    
      // Setting the configuration 0:
      // - use of the internal reference voltage 2.5V
      // - gain of 1 for a bipolar measurement +/- 2.5V
      adc.setConfig (0, Ad7124::RefInternal, Ad7124::Pga1, true);
      // Setting channel 0 using pins AIN1(+)/AIN0(-)
      adc.setChannel (0, 0, Ad7124::AIN1Input, Ad7124::AIN0Input);
      // Configuring ADC in Full Power Mode (Fastest)
      adc.setAdcControl (Ad7124::StandbyMode, Ad7124::FullPower, true);
    }
    
    // -----------------------------------------------------------------------------
    void loop() {
      long value;
      double voltage;
    
      // Measuring Voltage on Channel 0 in Single Conversion Mode
      digitalWrite (ledPin, 0);
      value = adc.read (0);
      digitalWrite (ledPin, 1);
    value=1;
      if (value >= 0) {
    
        // If the measurement is successful, the value is converted into voltage
        voltage = Ad7124Chip::toVoltage (value, 1, 2.5, true);
        // Print result
        Serial.println (voltage, 3);
      }
      else {
    
        Serial.println ("FAIL");
      }
    }
    /* ========================================================================== */

    Snapshot for serial monitoring the ADC readings 

Reply
  • Hi,

    I developed the PCB for temperature measurements using AD7124-8 part numbers.

    My hardware schematic and code is attached below please have a look.

    my issue is that am not able to interface the ad7124 to my MCU. please check my hardware and code did I done any mistakes in hardware or source code?. Am using Arduino ide and API only. hardware i developed by referring  ad7124-8 application note CN0383&391.

    5756.SCHEMATIC1 - PAGE5.tif

    /*
      AD7124 Voltmeter
    
      Prints out the voltage measured at pins AIN1(+)/AIN0(-)
      Input voltage must be in the range between 0 and 2.5V
    
      For more on AD7124, see
      http://www.analog.com/media/en/technical-documentation/data-sheets/AD7124-4.pdf
    
      The circuit:
      - AD7124 connected on the MOSI, MISO, SCK and /SS pins (pin 10)
      - LED active in low state connected to pin 9.
      
      The conversion times are as follows:
      ----------------------------------------
      | Mode      | Tconv (ms) | Fconv (Sps) |
      +-----------+------------+-------------+
      | LowPower  | 652        | 1.534       |
      | MidPower  | 330        | 3.030       |
      | FullPower | 90         | 11.11       |
      ----------------------------------------
    
      created 2018
      by epsilonrt https://github.com/epsilonrt
    
      This example code is in the public domain.
    
      https://github.com/epsilonrt/ad7124/tree/master/examples
    */
    #include <ad7124.h>
    
    /* constants ================================================================ */
    const int ledPin = 9;
    const int ssPin = 10;
    
    /* public variables ========================================================= */
    Ad7124Chip adc;
    
    /* internal public functions ================================================ */
    
    // -----------------------------------------------------------------------------
    void setup() {
    
      pinMode (ledPin, OUTPUT);
      digitalWrite (ledPin, 1); // clear the LED
    
      //Initialize serial and wait for port to open:
      Serial.begin (38400);
      while (!Serial) {
        ; // wait for serial port to connect. Needed for native USB port only
      }
    
      // prints title with ending line break
      Serial.println ("AD7124 Voltmeter");
    
      // Initializes the AD7124 device, the pin /CS is pin 10 (/SS)
      adc.begin (ssPin);
    
      // Setting the configuration 0:
      // - use of the internal reference voltage 2.5V
      // - gain of 1 for a bipolar measurement +/- 2.5V
      adc.setConfig (0, Ad7124::RefInternal, Ad7124::Pga1, true);
      // Setting channel 0 using pins AIN1(+)/AIN0(-)
      adc.setChannel (0, 0, Ad7124::AIN1Input, Ad7124::AIN0Input);
      // Configuring ADC in Full Power Mode (Fastest)
      adc.setAdcControl (Ad7124::StandbyMode, Ad7124::FullPower, true);
    }
    
    // -----------------------------------------------------------------------------
    void loop() {
      long value;
      double voltage;
    
      // Measuring Voltage on Channel 0 in Single Conversion Mode
      digitalWrite (ledPin, 0);
      value = adc.read (0);
      digitalWrite (ledPin, 1);
    value=1;
      if (value >= 0) {
    
        // If the measurement is successful, the value is converted into voltage
        voltage = Ad7124Chip::toVoltage (value, 1, 2.5, true);
        // Print result
        Serial.println (voltage, 3);
      }
      else {
    
        Serial.println ("FAIL");
      }
    }
    /* ========================================================================== */

    Snapshot for serial monitoring the ADC readings 

Children