0
\$\begingroup\$

I am designing a temperature controller system using TMP36 as a sensor and Arduino UNO as a microcontroller. I am using 3.3V with AREF pin. I am working in the range of 10-40 °C.

How can I change the original temperature range (-40 °C to 125 °C) to (10 °C - 40 °C)? How does it help the resolution?

\$\endgroup\$
3
  • 3
    \$\begingroup\$ It's not clear to me that you need to do anything. \$\endgroup\$ May 2, 2016 at 18:38
  • \$\begingroup\$ I found that the PV is oscillating by 0.32 degree celsius around my setpoint, while designing an on/off controller & PI controller. But it is not smooth, so I doubt it could be an effect due to the digitization error. Thus if I could improve its resolution by changing its range, I could figure out something about the digitization / quantization error. I measured the ac rms value of sensor to find the sensor noise. Is this process alright? I am having problem to understand about the quantization error and noise error in my system. Could you please help me \$\endgroup\$
    – Dinesh
    May 4, 2016 at 4:26
  • \$\begingroup\$ It might be a wierd question; I'm a beginner in this field so. What is the frequency range of the signal coming out from the TMP36 sensor? I m trying to plot the data obtained using matlab. But don't know the sampling rate of my data;I want to discuss the errors related problems like: digitization error coming due to the digitization of the analogue symbol? Can I post my circuit and codes, so that I can get some hints where I am going \$\endgroup\$
    – Dinesh
    May 4, 2016 at 4:54

2 Answers 2

3
\$\begingroup\$

If you connect it directly you will get a resolution of (assuming a 10 bit ADC with 3.3V reference) of 3.3V/\$2^{10}\$ = 3.22mV, which represents 0.32°C for the TMP36, which has an output sensitivity of 10mv/°C. The range will include your working range and a good deal more.

You can scale it digitally to whatever you like.

If you actually require better resolution you can add a non-inverting amplifier ahead of the ADC. For example, you could amplify and shift it so that 5°C is nominally 0V out, and 45°C is nominally 3.3V out (leaving a bit of headroom at each end). That would give you a resolution of 40°C/\$2^{10}\$ = 0.039°C, about 8x better.

You would need a rail-to-rail low-voltage op-amp and a reference such as the 3.3V, and three resistors.

\$\endgroup\$
2
  • \$\begingroup\$ Serial.begin(9600); pinMode(3, OUTPUT); \$\endgroup\$
    – Dinesh
    May 4, 2016 at 4:31
  • \$\begingroup\$ I am using CoolTerm to store the temperature measured of a sample using temperature sensor with Arduino Uno; at what rate I am measuring the data I am not sure , I guess I am measuring it with the updating frequency of arduino? Do you know what is the updating frequency of arduino uno, but i am printing the temperature only every 10 seconds. I have listed some commands from my code related to the timing and sampling: Serial.begin(9600); {pinMode (3, OUTPUT); analogReference (EXTERNAL); }analogWrite(10,0); delay(10); Serial.println(Input); delay(10000); \$\endgroup\$
    – Dinesh
    May 4, 2016 at 4:45
2
\$\begingroup\$

Based on the TMP36 datasheet, the range of the sensor is NOT reconfigurable (except for an extension of the temperature range if a 5V supply is used).

However, a different part, the TMP37 has a larger temperature coefficient with a smaller range (5 to 100 C), which may be more appropriate for your application.

The key for having the best resolution is that the range of the sensor output should match the range of the analog input.

The Arduino Uno can be reconfigured to use a 1.1V AREF. With the TMP36, a voltage divider could be used to reduce the voltage to have 1.1V as the full-scale value. But, the TMP35 or TMP37 would still be better choices since their outputs are closer to 0 V at the low end of the required temperature range.

TMP3? temperature characteristics (from its datasheet)

\$\endgroup\$
2
  • \$\begingroup\$ Nice idea. Setting AREF at 1.1V, which includes the intended range, would triple the resolution. You're still not using the full range, but 0.1degC resolution may be good enough (well, so might 0.3) \$\endgroup\$ May 2, 2016 at 20:40
  • \$\begingroup\$ Thanks so much.I am trying to design a temperature controller. I am getting an oscillation about 0.32C below and above the setpoint. Is that effect coming due to digitization? Can you help me understand digitization error and sensor error for my project? \$\endgroup\$
    – Dinesh
    May 4, 2016 at 3:56

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.