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.

SD 16 input voltage range and relation to Vref reference voltage

Other Parts Discussed in Thread: MSP430FE4242, LM258

I am trying to read an input voltage in the .3-2V or so range with a higher precision than that offered by the ADC12 module.  I am trying to use the SD16 on the MSP430FE4242, but I have some questions about it.

It appears that the input voltage range is limited to +- Vref/2, this means that I have to shift my input voltage range to this range using some kind of opamp circuit.  Is there any simpler way around this?  Does anyone have a simple opamp circuit to suggest?

In the MSP430x4xx users guide it says "An external voltage reference can be applied to the VREF input when SD16REFON and SD16VMIDON are both reset.".  I would expect that when I use an external reference larger than the 1.5 V max listed on the datasheet it would set itself to the max range, or something like that, but when I try it appears to continue using 1.2 V as the reference (when I input .63 V it maxes out the ADC reading at 65520).  So there is no way to get a larger voltage swing?





  • Doug Jorgesen said:
    It appears that the input voltage range is limited to +- Vref/2

    Not really. The datasheet talks about the differential input voltage and the range applies to (default) signed mode. In common/unsigned input mode, V+ - V- must be in the range of 0V..VRef.
    In your case, when you know that input voltage is never below 0.3V, you can provide 0.3V to V-, so the differential input voltage is 0V..1.7V. Which still is too high, yo you'll need to add a voltage divider (which in turn requires to divide the V- voltage too).
    A simple 1:1 divider would allow you to either use V-=0V and a resulting 1Vmax on V+, wasting the range 0V..0.15V and 1V..1.2V on resolution. Or you use a better adjusted divider that divides the 1.7V signal range to 1.2V (0.706:1)and provide a V- that is an equal fraction of 0.3V (0.212V). Then an SD16 reading of 0 will equal 0.3V input and a reading of 0xffff will equal 2V signal.

    If using the external reference, you'll need to program it properly. Just saying 'I want to use external reference' normally isn't enough. There are port pins to be configured etc.

    I don't have much experience with the SD16, so all I could do is looking for obvious errors in the code - if I knew it.

  • Hi I have a similar issue.

    I need to measure a voltage passing trough a shunt resistor, so what I am using an op LM258 to do it. So what do you suggest ? Should I have it set to out put a higher voltage then use a voltage divider ( two resistor) or just set the gain to the output not to be more then 0.6V ?



  • Adjusting the gain is almost always the better option, as it gives a lower output impedance.
    The tolerance error introduced by the two resistors adjusting the gain is basically the same as you get from the voltage divider, so it makes no difference if you had a gain of 1 originally. If you're allready aplifying, you'll have a smaller error by resistor tolerances too, as you only will have two resistors and not 4 different.