# TMP35 voltage offset?

Hi there,

so I have these 20 tmp35's, and I need to get a full range reading, particularly the low end.
with this setup, we output a voltage between -550mv and 1500mv on a single line relative to ground. So my question is this: how can I get this signal to where a 0-5v arduino analog input pin can read it? what is the simplest/cheapest way to offset these voltages?

Thanks!

There certainly is a way using an OpAmp, but before you buy 20 OpAmp plus other stuff for your 20 sensors , it is simplest to replace the TMP35 with a TMP36 which has the offset "built-in"

That's true, but I have found them to be a bit pricey. Is there no way of doing this conversion with basic components?

Make -Vs the ground, then make a vertuial ground for the sensor sitting Vs above this and finally +Vs to 5V.
Check that the sensor is fine with 5V across it. Make the vertuial ground with two resistors and put a capacitor across each.

hmm, I think I understand you (will draw it all out and do the math later ) but why the capacitor?

so this is what I have so far. Can anyone say whether it looks like this might work?

Yes that is half of what I said. The capacitors are to reduce the impedance of the virtual ground.
However I did say:-

Grumpy_Mike:
Check that the sensor is fine with 5V across it.

I have since checked the data sheet and it says:-

Operates from 4 to 30 volts

And as that circuit has only 2.5V powering it then it will not work, sorry.
Have you got a higher voltage you could use?
You would have to adjust the resistor ratio so that you did not get an output higher than 5V though.

The other option is to generate -5V with a device called a voltage mirror. The ICL7760 is one such device.

He only needs to get the low side about 550mv higher....

So he could provide a virtual ground at, say, +0.8V for it, and he'd still have 4.2v on the sensor, and lowest sensor reading would be 250mv above real ground.

in the drawing, I have listed a 10volt source, with a resistor voltage divider. If I am not mistaken, this should put out +5 and -5 as it is wired there, with the ground in the middle, right? By the way, the data sheet says to choose the resistor based on 50 microamps*-Vs, which I take to mean -5v, so V=IR, 5v=.00005*r, r=100K. is the 5v the value to go off?

As for the capacitors: I'm afraid I know very little about impedance (electronics noob here). It is my understanding that it would be to reduce ac noise? I thought the sensor outputted pure DC, so I'm thinking I still do not understand you. If the capacitors are necessary, what kind do I need to get?

It is my understanding that it would be to reduce ac noise?

Yes

I thought the sensor outputted pure DC

Yes, so what, there is still AC noise about. And the IMPEDANCE is lowered. If you don't understand a word look it up.

If I am not mistaken, this should put out +5 and -5 as it is wired there, with the ground in the middle, right?

What are we talking about here?
It will be -5V ONLY if the Arduino's ground is the virtual ground, but due to the high current you can't make it the Arduino's ground.

So this is what I have tried so far. I hope that unpolished diagram is able to be interpreted. Fortunately, the sensors only take 50 microamps to run, so even running 20 at once is something like a milliamp of power from the arduino. As it stands now, if I hook up a multimeter to my arduino ground, and another to the Vout pin, I get the sensor output plus 5 volts, be the output positive or negative voltage (both are working now).
This is an improvement, as all my output is now positive, but obviously the analog input pins support only up to 5 volts, and depending on the temp, the sensor is outputting between 4.45v and 6.5v. For exampe, at room temperature 22C, I read 5.22 volts. trouble is, the arduino reads up to 5v, so I need a way to read about 3/4 of the output voltage. In order to do that, I attempted to create a voltage divider which would do this. It seems to me like this should work, but I'm getting unpredictable results. For instance, at 5.22v I should be getting 3.912 volts, but I may be reading 3.7v or something.

It seems like the voltage should be divided by the ratio of the voltage divider circuit. I have set this circuit up on 3 breadboards with different resistors, and it isn't. Does anyone know why not, and what could be done to fix it?

Thanks

with different resistors,

What tolerance are the resistors?

I have looked at the datasheet, and it seems you just have to lift all the sensor grounds by e.g. 1volt.
That leaves min 4volt supply (datasheet) for the sensors (Sensors are supplied from the 5volt rail).
That can be done with a resistor divider from the 3.3volt rail.
e.g. 100ohm/220ohm (100ohm to ground). I suppose the 3.3v pin can handle 10mA...
A pulldown resistor (22k for ~50uA) to ground is needed at the output of the sensor to pull it's output below the sensor ground to measure negative C temperatures.
Sensor resolution is 10mv/degreeC. The accuracy measured with the analogue inputs is ~0.5C per digital step.
Zero C will have a digital value of about 205 and 100C about 405.
Leo..

olf2012:
There certainly is a way using an OpAmp, but before you buy 20 OpAmp plus other stuff for your 20 sensors , it is simplest to replace the TMP35 with a TMP36 which has the offset "built-in"

rytcd:
That's true, but I have found them to be a bit pricey. Is there no way of doing this conversion with basic components?

I have looked at pricing from DigiKey, it is exactly the same price for 35 and 36.
\$ 1.2 @ 25 pc

Pelle

Hi,
rytcd, if you reply using REPLY rather than QUICK REPLY, you will find at the bottom of the window a provision to ad files and images as attachents, this will make looking at your images easier.

Thanks Tom.....

They are -+1 percent resistors. I'd expect SOME variance, but not the 10 or 15 degree difference in reading I am seeing

Pelleplutt:
I have looked at pricing from DigiKey, it is exactly the same price for 35 and 36.
\$ 1.2 @ 25 pc

Pelle

I actually got mine 20 for \$15 or so, though if I could do it again I might reconsider. Still, work with what you've got, I guess XD.

@Tom, I actually tried that a couple times. It was not wanting to let me do it. Perhaps there is something I am doin wrong