# How to change analog sensor signal to appropriate levels for microcontrollers?

I have a FUTEK CSG110 amplifier, conditioning a signal provided from a load cell, providing a -3V to 3V signal. I can change this range to my liking, however I will be stuck with a +- voltage representing the compression and tension of the load cell.

I want to use the ADC of the Teensy 3.1 to measure this voltage, by modulate the sensor signal accordingly to provide 0 - 3.3V, the operating range of the ADC.

I was wondering how I can do this? I am sure there is a clever resistor configuration that will enable this.

Thanks, Daniel

Yes, you can do this with a resistor divider. We usually think of a resistor divider as multiplying a voltage by some value less than 1, meaning scaling relative to ground. However, a resistor divider can be set up to scale relative to any particular voltage.

In your case, you can scale the voltage about the 3.3 V supply instead of about ground. Overall, you want to scale a 6 V range down to a 3 V range, so the divider scale factor needs to be 1/2, meaning the two resistors must be equal. For example, one 10 kΩ resistor to the 3.3 V supply, another to the ±3 V signal, and the two other ends connected to the A/D input. That will load the signal by the sum of the resistors (20 kΩ) and provide a output impedance for driving the A/D by the parallel combinations of the two resistors (5 kΩ). If 5 kΩ is not low enough to drive your A/D, then lower the two resistor values so that each is twice the required impedance.

Note that this method requires that the 3.3 V supply is well regulated. That would be the case, for example, if it is driven by a linear regulator from a higher voltage.

You can do this with two or three resistors- one to the reference for your ADC and one to the input, and perhaps one to ground.

However, it's important to realize that the result (and your ADC accuracy, both zero and span in this case) will depend on the accuracy and stability of that reference. If the reference drifts a few percent you'll get a much different reading, even at 0V from the amplifier. Since the Teensy 3.1 (based on a Kinetis processor) has a 16 bit SAR ADC you need a pretty good reference to get full performance out of the system- using the power supply as a reference may lead to disappointing results. The internal regulator in the chip has a +/-10% tolerance and no drift spec.

If you supply an external reference of (say) 2.500V then you'd use resistor values 10K to Vref, 12K to input and 60K to ground. That will give you mid scale for 0V.

No, there is not any clever resistor configuration to achieve your goal.

The simpler solution is to put a series capacitor and bias the following circuit but this can work if your signal band is far enough from DC, and that does not seem the case to me with strain gauges.

It seems to me the FUTEK piece you have is an industry standard strain gauge amplifier, I don't really understand why you would use it with a crappy ADC. Your best option is to buy an external ADC that can handle negative voltages and hook it to the teensy. If possible you should search for a wide input ADC: the wider the available signal swing the higer the precision you can get.

Alternatively you can shift your signal up as needed, I see from the datasheet you can sum up to 10%FS to your output with the FUTEK alone but that's not enough. You will probably need a nice INAMP (instrumentation amplifier) to shift your input. Doing so will provide you with a 0..6V signal and you will need to attenuate it, and that might or might not be bad depending on your required resolution.