TMP36-Guide.pdf

(95 KB) Pobierz
Graphic1
CIRC-10
.:Temperature:.
.:TMP36 Precision Temperature Sensor:.
Code (no need to type everything in just)
CIRC-10
Download the Code from ( http://tinyurl.com/dfj8rs)
(copy the text and paste it into an empty Arduino Sketch)
/* ---------------------------------------------
* | Arduino Experimentation Kit Example Code |
* | CIRC-10 .: Temperature :. |
* ---------------------------------------------
*
* A simple program to output the current temperature
* to the IDE's debug window
* For more details on this circuit:
* http://tinyurl.com/c89tvd */
//TMP36 Pin Variables
int temperaturePin = 0;//the analog pin the TMP36's
//Vout pin is connected to
//the resolution is
//10 mV / degree centigrade
//(500 mV offset) to make
//negative temperatures an option
What We’re Doing:
{
float temperature =
getVoltage(temperaturePin);
//getting the voltage reading from the
//temperature sensor
What's the next phenomena we will measure with our Arduino?
Temperature. To do this we'll use a rather complicated IC
(integrated circuit) hidden in a package identical to our
P2N2222AG transistors. It has three pins ground, signal and +5
volts, and is easy to use. It outputs 10 millivolts per degree centigrade
on the signal pin (to allow measuring temperatures below freezing there is a 500 mV offset
). To convert this from the digital value to degrees we will use some
of the Arduino's maths abilities. Then to display it we'll use one of the IDE's rather powerful
features, the debug window. We'll output the value over a serial connection to display on the
screen. Let's get to it.
One extra note, this circuit uses the Arduino IDE's serial monitor. To open this, first upload the
program then click the button which looks like a square with an antennae.
The TMP36 Ddatasheet:
http://tinyurl.com/plbx38
temperature = (temperature - .5) * 100;//converting from 10 mv
//per degree wit 500 mV
//degrees ((volatge - 500mV) times 100)
Serial.println(temperature); //printing the result
delay(1000);
offset to
//waiting a second
}
/*
* getVoltage() - returns the voltage on the analog input
* defined by pin
*/
float getVoltage(int pin){
return (analogRead(pin) * .004882814);//converting from a 0
//to 1024 digital range
// to 0 to 5 volts
//(each 1 reading equals ~ 5 millivolts
eg.
void setup()
{
25 C = 750 mV, 0 C = 500mV
°
Serial.begin(9600); //Start the serial connection
//with the copmuter
//to view the result open the
//serial monitor
//last button beneath the file
//bar (looks like a box with an
//antenae)
}
}
void loop()
// run over and over
again
Not Working? (3 things to try)
The Circuit:
Nothing Seems to Happen
This program has no outward
indication it is working. To see
the results you must open the
Arduino IDE's serial monitor.
(instructions on previous page)
Gibberish is Displayed
This happens because the serial
monitor is receiving data at a
different speed than expected.
To fix this, click the pull-down
box that reads "*** baud" and
change it to "9600 baud".
Temperature Value is
Unchanging.
Parts:
TMP36
Temperature Sensor
x1
CIRC-10
Breadboard sheet
x1
Try pinching the sensor with
your fingers to heat it up or
pressing a bag of ice against it
to cool it down.
2 Pin Header
x4
Wire
Arduino
analog
pin 0
Schematic:
+5 volts
Making it Better
Outputting voltage:
This is a simple matter of changing one line. Our sensor
outputs 10mv per degree centigrade so to get voltage we
simply display the result of getVoltage().
delete the line temperature = (temperature - .5) * 100;
Outputting degrees Fahrenheit:
this first revert to the original code then change:
Serial.println(temperature);
---->
Serial.print(temperature);
Serial.println(" degrees centigrade");
+5v
signal
TMP36
(precision
temperature
sensor)
The change to the first line means when we next output it will
appear on the same line, then we add the informative text and
a new line.
gnd
the chip will have
TMP36 printed on it
gnd
(ground) (-)
Again this is a simple change requiring only math. to go
degrees C ----> degrees F we use the formula.
( F = C * 1.8) + 32 )
add the line
Changing the serial speed:
If you ever wish to output a lot of data over the serial line time
is of the essence. We are currently transmitting at 9600 baud
but much faster speeds are possible. To change this change
the line:
Upload the sketch turn on the serial monitor, then change the
speed from 9600 baud to 115200 baud in the pull down menu.
You are now transmitting data 12 times faster.
temperature =
(((temperature - .5) * 100)*1.8) + 32;
Serial.println(temperature);
The Internet
before
Serial.begin(9600); ----> Serial.begin(115200);
.:download:.
More informative output:
http://tinyurl.com/ctdjod
breadboard layout sheet
Lets add a message to the serial output to make what is
appearing in the Serial Monitor more informative. To do
.:view:.
assembling video
http://tinyurl.com/d85jyx
More, More, More:
More details, where to buy more parts, where to ask more questions.
http://tinyurl.com/c89tvd
°
741244282.012.png 741244282.013.png 741244282.014.png 741244282.015.png 741244282.001.png 741244282.002.png 741244282.003.png 741244282.004.png 741244282.005.png 741244282.006.png 741244282.007.png 741244282.008.png 741244282.009.png 741244282.010.png 741244282.011.png
Zgłoś jeśli naruszono regulamin