Hello all. A bit of a detailed question, but lots of details included! We do a demonstration in our group of how rocks are really springs (linearly elastic). There is a 4 gauge bridge attached to a block of granite (or my coffee cup) and it gets powered from a 9V battery. Attached photos show my coffee mug and a plot of it contracting as the coffee cools. The gauges are 120 ohm. Traditionally we have shown guests this demo on a strip chart recorder. It's very sensitive and visual, but seems a bit odd telling them how advanced the lab is, then whipping a strip chart out

.
I've successfully put the bridge output into a 16 bit ADC on an Arduino with some internal amplification and got an electronic strip chart that can be projected on a classroom projector. The signal was still small and that ADC board is overkill for what we need. I'm going to build up a little amplifier to use the 10-bit ADC already on the Arduino. This ADC goes by default from gnd to 5V, but can be modified with the analog reference pin. The whole setup will be run on a 9V battery.
My idea (drawing attached) is to use the AD620 as the differential amp, and an OP177 providing a buffered divider offset for single rail operation. The low-pass on the AD620 is from the datasheet with values calculated for about 26Hz Fc. This setup does work, but has a few bumps. First, the bridge is never perfectly balanced, so there is some offset. With a very large gain, I end up saturating. We are talking about changes of mV at the most... students are squeezing a block of granite, so the strain is very small!
My questions are:
1) Am I going about this totally backwards, or is this the right idea?
2) Should I just use unity gain, then offset again?
3) Should I power the amps from 5V on the Arduino, or from 9V and change the analog reference input on the Arduino?
4) Is the AD620 the right chip for the job?
Thank you in advance for your help!