I know there is probably an easy formula for this, but can someone explain why the formula works?
I have a load cell that reports a voltage -5 to 5 based on force applied and direction. I expect to only really use -2 to +2 on the load cell. I want to scale that up to 0-5V so Arduino can analog read the data with the highest precision.
How would you approach this problem and end up selecting your resistor values?
Yes, I have an amplifier connected to the load cell. My needs range from -300 to +300N which is about -2:+2 volts from the amplifier. (relative to the ground and positive wire comping from the amplifier.)
the Arduino analog input only reads 0:+5 volts. (relative to I need to scale these inputs
I need the Arduino to be able to detect -100, 100, -200, 200, -300 and 300N
This equates to -0.456V, 0.447V, -0.912V, 0.907V, -1.36 ,and 1.37V)
You can use an AC/DC 5V, 2-prong power brick and connect it in reverse to get -5Vdc. You simply connect the +5V output to your system GND and the "GND" becomes the -5Vdc output . It's a no-brainer.
I do it all the time. I've built several bipolar op amp circuits that way.
As a quick and dirty solution, one can use a voltage divider referenced to a positive voltage (rather than ground) to divide and level shift. The circuit below, for instance, takes a zero referenced 5 to -5 Volt input (top green trace) and presents 0 to 5 Volts at "out" (bottom green trace). Any noise on the reference voltage (+5V in this instance) will be reflected on the output, so care must be taken in generating that voltage.
To get full ADC range for a smaller input voltage swing, one could follow "out" with an op amp circuit with appropriate gain.
Thank you all, this was immensely helpful! I think I am going to go with the LM744 route since I will also need to remove some noise after anyway. Thank you all!