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.

DRV421 for Magnetic Field Measurement

Other Parts Discussed in Thread: DRV421, DRV425, DRV425EVM

I am currently in a senior design group that is developing a module to regulate magnetic fields inside of an incubator through the use of Helmholtz coils. We hope to be able to sense the magnetic fields, ranging from DC to 20 kHz, inside of an incubator to a precision of +/- 1 microTesla. In order to regulate our magnetic fields in 3-axes. I was wondering if this fluxgate sensor would be adequate for what we are planning to use it for. Or if anybody has any other suggestions. 

  • Hi Michael,

    The DRV421 would need an external compensation coil for this to work properly.  The DRV425 is a new device that just released.  Take a look at that one.

  • How can I go about getting a hold of some of these DRV425 sensors? Hopefully just through samples, but it's not a big deal if we need to buy the sensors. Is there also a way to acquire some evaluation modules? It seems that I can only order one from TI's store and it seems they are all out of stock.
    Are these sensors actually released, or should I be looking elsewhere?
  • Hi Michael,

    Yes, the DRV425 just released the other day. It might take a day or two for the samples and evm's to catch up and be order-able.
  • I just spoke with a representative from TI's support number concerning availability of the part (DRV425) and she said that since it was still in preview, there was no timeline for part availability. Should my senior design group not consider using this part or is there some other way to go about acquiring some samples. At the moment, none of TI's distributors have the part in their databases (much less in stock).
  • Hi Michael,

    Send me a friend request with your shipping information and I'll get you some samples of the DRV425.

  • There are some problems with the datasheet for the DRV425EVM.

    1. There is no specific table with a pinout.

    I believe the pins should be as follows:

    Pin Name
    1 REF_Out
    2 V_OUT
    3 GND
    4 VDD


    2. Equation 1 does not specify units. I believe that  B should be in Gauss, but I am not positive. 

    3. Does the sensor output a negative voltage as well? It is a little ambiguous between the DRV425EVM datasheet and the DRV425 datasheet.

    This is code I am using to test the evaluation module.
    https://developer.mbed.org/users/Krabby127/code/Nucleo_read_analog_value_copy/file/d901038c4bd2/main.cpp

    #include "mbed.h"
    #include <math.h>
     
    AnalogIn analog_value(A0);
     
    DigitalOut led(LED1);
    
    int main() {
        float meas;
        float b;
        float offset;
        printf("\nAnalogIn example\n");
        while(1) {
            meas = analog_value.read(); // Converts and read the analog input value (value from 0.0 to 1.0)
            meas = meas * 3300; // Change the value to be in the 0 to 3300 range (currently to mV)
            printf("meas = %fmV\n\r",meas); // Print out raw measurement in terms of mV
            b=(meas/10000)/(4.0*12.2*100.0); // Based on equation 1
            printf("b = %f Gauss\n\r",b); // Print out b field measure in Gauss
            printf("B = %fuT\n\r", b*10000.0); // Output B field in micro-Tesla
            if (meas > 2000) { // If the value is greater than 2V then switch the LED on
              // greater than 410 microGauss [40 mT]
              led = 1;
            }
            else {
              led = 0;
            }
            wait(1.0); // wait 1 second
        }
    }
    

    slou410a.pdf

  • Hi Michael,

    Yes, the square pad is pin 1 and it is VREF (REF_Out), followed by Vout, GND and VDD - I'll see what we can do to clarify that.  Equation 1 is in Teslas (T), 1 Tesla is equal to 10K Gauss.  The Vout from the DRV425 sensor is 0-VDD with respect to GND, using VRef_out as the reference point Vout will be +/- VDD/2.

  • I'm trying to make sure I understand this correctly.
    Will 0 Tesla give a voltage of 0V and the maximum magnetic field (whatever it is currently configured to be) will give VDD?
    Or does 0 Tesla produce VDD/2?

    My main question is where about the zero point is. Is the output voltage range for negative teslas 0V to VDD/2?
  • Hi Michael,

    It depends on how you reference Vout.  A measurement referenced to GND would give you a reading of Vdd/2 for 0 Tesla, a reading of Vdd for +2mT and 0V for -2mT.  A measurement referenced to REFOut (the preferred method) would give you 0V with 0Tesla field.

  • Is the b calculation on line 16 correct? b should be some value in Tesla? We are assuming the calculations from the slou410a.pdf used volts.

    I take the voltage read and convert it to millivolts. I take that value and subtract VDD/2 (in millivolts).
    I then convert that number back to volts and apply the Equation 1 from the DRV425EVM pdf.

    My calculated value, b, should be the magnetic field read in Teslas.
    Does the code seem like it is reading the values from the DRV425EVM correctly?

    #include "mbed.h"
    #include <math.h>
     
    AnalogIn analog_value(A0);
     
    DigitalOut led(LED1);
    
    int main() {
        float meas;
        float b;
        printf("\nAnalogIn example\n");
        while(1) {
            meas = analog_value.read(); // Converts and read the analog input value (value from 0.0 to 1.0)
            meas = meas * 3300; // Change the value to be in the 0 to 3300 range (currently to mV)
            printf("meas = %fmV\n\r",meas); // Print out raw measurement in terms of mV
            b=(((meas-(3.3/2.0*1000))/1000)/(4.0*12.2*100.0)); // Based on equation 1 from DRV425EVM pdf
            //VVOUT [V] = B × G × RSHUNT × GAMP = B [mT] × 12.2 mA/mT × RSHUNT [Ω] × 4 [V/V]
            //VVOUT is with reference to REFIN
            //0 Tesla is VDD/2
            // 12.2 mA/mT
            printf("b = %f Gauss\n\r",b); // Print out b field measure in milliTesla
            printf("B = %fuT\n\r", b*100.0); // Output B field in micro-Tesla
            if (meas > 2000) { // If the value is greater than 2V then switch the LED on
              // greater than 410 microGauss [40 mT]
              led = 1;
            }
            else {
              led = 0;
            }
            wait(1); // wait 1 second
        }
    }
    

  • Hi Michael,

    How are you getting the value of 'meas' in line 13? Is that a measurement through an ADC?
  • Correct. It's read through an ADC as a float between 0 and 1 (with regards to 3.3V). 

  • Hi Michael,

    Sorry for the delay here - assuming that your ADC conversion provides the right number for MEAS, it looks like your equation would be correct.  The result should be a value in uT.